Skip to content

Commit

Permalink
GroovyParser handles Jenkinsfile, and fix inside parentheses of terna…
Browse files Browse the repository at this point in the history
…ry/binary/literal
  • Loading branch information
jkschneider committed Sep 24, 2023
1 parent 4d74818 commit 55634c9
Show file tree
Hide file tree
Showing 6 changed files with 269 additions and 175 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
/*
* Copyright 2023 the original author or authors.
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* https://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openrewrite.groovy;

import org.junit.jupiter.api.Test;
import org.openrewrite.test.RewriteTest;

import static org.openrewrite.groovy.Assertions.groovy;

public class GroovyParserTest implements RewriteTest {

@Test
void jenkinsfile() {
// the Jenkinsfile from spring-projects/spring-data-release
rewriteRun(
groovy(
"""
def p = [:]
node {
checkout scm
p = readProperties interpolate: true, file: 'ci/release.properties'
}
pipeline {
agent none
triggers {
pollSCM 'H/10 * * * *'
}
options {
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '14'))
}
stages {
stage('Build the Spring Data release tools container') {
when {
anyOf {
changeset 'ci/Dockerfile'
changeset 'ci/java-tools.properties'
}
}
agent {
label 'data'
}
steps {
script {
def image = docker.build("springci/spring-data-release-tools:0.12", "ci")
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
image.push()
}
}
}
}
stage('Ship It') {
when {
branch 'release'
}
agent {
docker {
image 'springci/spring-data-release-tools:0.12'
}
}
options { timeout(time: 4, unit: 'HOURS') }
environment {
GITHUB = credentials('3a20bcaa-d8ad-48e3-901d-9fbc941376ee')
GITHUB_TOKEN = credentials('7b3ebbea-7001-479b-8578-b8c464dab973')
REPO_SPRING_IO = credentials('repo_spring_io-jenkins-release-token')
ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
STAGING_PROFILE_ID = credentials('spring-data-release-deployment-maven-central-staging-profile-id')
MAVEN_SIGNING_KEY = credentials('spring-gpg-private-key')
MAVEN_SIGNING_KEY_PASSWORD = credentials('spring-gpg-passphrase')
GIT_SIGNING_KEY = credentials('spring-gpg-github-private-key-jenkins')
GIT_SIGNING_KEY_PASSWORD = credentials('spring-gpg-github-passphrase-jenkins')
SONATYPE = credentials('oss-login')
}
steps {
script {
sh "ci/build-spring-data-release-cli.bash"
sh "ci/build-and-distribute.bash ${p['release.version']}"
slackSend(
color: (currentBuild.currentResult == 'SUCCESS') ? 'good' : 'danger',
channel: '#spring-data-dev',
message: (currentBuild.currentResult == 'SUCCESS')
? "`${env.BUILD_URL}` - Build and distribute ${p['release.version']} passed! Release the build (if needed)."
: "`${env.BUILD_URL}` - Build and distribute ${p['release.version']} failed!")
}
}
}
}
post {
changed {
script {
slackSend(
color: (currentBuild.currentResult == 'SUCCESS') ? 'good' : 'danger',
channel: '#spring-data-dev',
message: "${currentBuild.fullDisplayName} - `${currentBuild.currentResult}`\\n${env.BUILD_URL}")
emailext(
subject: "[${currentBuild.fullDisplayName}] ${currentBuild.currentResult}",
mimeType: 'text/html',
recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']],
body: "<a href=\\"${env.BUILD_URL}\\">${currentBuild.fullDisplayName} is reported as ${currentBuild.currentResult}</a>")
}
}
}
}
""",
spec -> spec.path("Jenkinsfile")
)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,19 @@
@SuppressWarnings({"GroovyUnusedAssignment", "GrUnnecessarySemicolon", "UnnecessaryQualifiedReference"})
class BinaryTest implements RewriteTest {

@SuppressWarnings("GroovyConstantConditional")
@Test
void insideParentheses() {
rewriteRun(
groovy("(1 + 1)"),
groovy("((1 + 1))"),

// NOT inside parentheses, but verifies the parser's
// test for "inside parentheses" condition
groovy("(1) + 1")
);
}

@Test
void equals() {
rewriteRun(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@
@SuppressWarnings("GroovyUnusedAssignment")
class LiteralTest implements RewriteTest {

@SuppressWarnings("GroovyConstantConditional")
@Test
void insideParentheses() {
rewriteRun(
groovy("(1)"),
groovy("((1))")
);
}

@Test
void string() {
rewriteRun(
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,23 @@

class TernaryTest implements RewriteTest {

@SuppressWarnings("GroovyConstantConditional")
@Test
void insideParentheses() {
rewriteRun(
groovy("(true ? 1 : 2)"),
groovy("((true ? 1 : 2))"),

// NOT inside parentheses, but verifies the parser's
// test for "inside parentheses" condition
groovy("(true) ? 1 : 2")
);
}

@Test
void ternary() {
rewriteRun(
groovy(
"""
1 == 2 ? /no it isn't/ : /yes it is/
"""
)
groovy("1 == 2 ? /no it isn't/ : /yes it is/")
);
}

Expand Down

0 comments on commit 55634c9

Please sign in to comment.