From 427311778fbeceae02470aa0b1c4a09184fb331b Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 7 Mar 2017 14:32:54 +0100 Subject: [PATCH] Fixed support for project with root project having parent suffix --- .../cloud/release/internal/PomUpdater.java | 2 +- .../cloud/release/internal/Versions.java | 16 +- .../release/internal/PomUpdaterTests.java | 12 + .../cloud/release/internal/VersionsTests.java | 7 +- .../projects/spring-cloud-contract/pom.xml | 440 ++++++++++++++++++ .../pom.xml | 233 ++++++++++ .../spring-cloud-contract-tools/pom.xml | 27 ++ .../spring-cloud-contract-converters/pom.xml | 78 ++++ 8 files changed, 811 insertions(+), 4 deletions(-) create mode 100644 releaser-core/src/test/resources/projects/spring-cloud-contract/pom.xml create mode 100644 releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-dependencies/pom.xml create mode 100644 releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-tools/pom.xml create mode 100644 releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-tools/spring-cloud-contract-converters/pom.xml diff --git a/releaser-core/src/main/java/org/springframework/cloud/release/internal/PomUpdater.java b/releaser-core/src/main/java/org/springframework/cloud/release/internal/PomUpdater.java index 934ab8c2..5ce42034 100644 --- a/releaser-core/src/main/java/org/springframework/cloud/release/internal/PomUpdater.java +++ b/releaser-core/src/main/java/org/springframework/cloud/release/internal/PomUpdater.java @@ -87,7 +87,7 @@ class PomUpdater { return new ModelWrapper(this.pomReader.readPom(pom)); } - /** + /**q * Updates the root / child module model * * @param rootProject - root project model diff --git a/releaser-core/src/main/java/org/springframework/cloud/release/internal/Versions.java b/releaser-core/src/main/java/org/springframework/cloud/release/internal/Versions.java index 7cf6baec..5d21ccf1 100644 --- a/releaser-core/src/main/java/org/springframework/cloud/release/internal/Versions.java +++ b/releaser-core/src/main/java/org/springframework/cloud/release/internal/Versions.java @@ -43,7 +43,7 @@ class Versions { String versionForProject(String projectName) { return this.projects.stream() - .filter(project -> project.name.equals(projectName)) + .filter(project -> nameMatches(projectName, project)) .findFirst() .orElse(Project.EMPTY_PROJECT) .version; @@ -51,13 +51,25 @@ class Versions { boolean shouldBeUpdated(String projectName) { return this.projects.stream() - .anyMatch(project -> project.name.equals(projectName)); + .anyMatch(project -> nameMatches(projectName, project)); } boolean shouldSetProperty(Properties properties) { return this.projects.stream() .anyMatch(project -> properties.containsKey(project.name + ".version")); } + + private boolean nameMatches(String projectName, Project project) { + if (project.name.equals(projectName)) { + return true; + } + boolean containsParent = projectName.endsWith("-parent"); + if (!containsParent) { + return false; + } + String withoutParent = projectName.substring(0, projectName.indexOf("-parent")); + return project.name.equals(withoutParent); + } } /** diff --git a/releaser-core/src/test/java/org/springframework/cloud/release/internal/PomUpdaterTests.java b/releaser-core/src/test/java/org/springframework/cloud/release/internal/PomUpdaterTests.java index 2b928408..e16f5a91 100644 --- a/releaser-core/src/test/java/org/springframework/cloud/release/internal/PomUpdaterTests.java +++ b/releaser-core/src/test/java/org/springframework/cloud/release/internal/PomUpdaterTests.java @@ -202,8 +202,20 @@ public class PomUpdaterTests { then(asString(processedPom)).isEqualTo(asString(beforeProcessing)); } + @Test + public void should_update_the_model_when_root_project_has_parent_suffix() throws Exception { + File pom = pom("/projects/spring-cloud-contract"); + + ModelWrapper model = this.pomUpdater.updateModel(model("spring-cloud-contract-parent"), pom, this.versions); + + then(model.isDirty()).isTrue(); + then(new ListOfChanges(model)) + .newParentVersionIsEqualTo("org.springframework.cloud", "spring-cloud-contract-parent", "0.0.2.BUILD-SNAPSHOT"); + } + Set projects() { Set projects = new HashSet<>(); + projects.add(new Project("spring-cloud-contract", "0.0.2.BUILD-SNAPSHOT")); projects.add(new Project("spring-cloud-sleuth", "0.0.3.BUILD-SNAPSHOT")); projects.add(new Project("spring-cloud-vault", "0.0.4.BUILD-SNAPSHOT")); return projects; diff --git a/releaser-core/src/test/java/org/springframework/cloud/release/internal/VersionsTests.java b/releaser-core/src/test/java/org/springframework/cloud/release/internal/VersionsTests.java index 7b04c5e4..edd3fab2 100644 --- a/releaser-core/src/test/java/org/springframework/cloud/release/internal/VersionsTests.java +++ b/releaser-core/src/test/java/org/springframework/cloud/release/internal/VersionsTests.java @@ -42,6 +42,11 @@ public class VersionsTests { then(this.versions.shouldBeUpdated("foo")).isTrue(); } + @Test + public void should_return_true_when_project_has_a_parent_suffix_and_project_is_on_the_list() { + then(this.versions.shouldBeUpdated("foo-parent")).isTrue(); + } + @Test public void should_return_false_when_project_is_not_on_the_list() { then(this.versions.shouldBeUpdated("missing")).isFalse(); @@ -63,7 +68,7 @@ public class VersionsTests { } @Test - public void should_return_False_if_properties_does_not_contain_project_key() { + public void should_return_false_if_properties_does_not_contain_project_key() { then(this.versions.shouldSetProperty(missingProps())).isFalse(); } diff --git a/releaser-core/src/test/resources/projects/spring-cloud-contract/pom.xml b/releaser-core/src/test/resources/projects/spring-cloud-contract/pom.xml new file mode 100644 index 00000000..30717fad --- /dev/null +++ b/releaser-core/src/test/resources/projects/spring-cloud-contract/pom.xml @@ -0,0 +1,440 @@ + + + 4.0.0 + + + org.springframework.cloud + spring-cloud-build + 1.3.1.BUILD-SNAPSHOT + + + + spring-cloud-contract-parent + pom + 1.1.0.BUILD-SNAPSHOT + + Spring Cloud Contract + Spring Cloud Contract + + https://github.com/spring-cloud/spring-cloud-contract + + 2016 + + + 5.12.1 + 2.17.0 + 1.5.2.BUILD-SNAPSHOT + 2.17 + 1.3.1.BUILD-SNAPSHOT + 1.1.0.BUILD-SNAPSHOT + Chelsea.BUILD-SNAPSHOT + 1.3.0.BUILD-SNAPSHOT + 1.2.0.BUILD-SNAPSHOT + 1.2.0.BUILD-SNAPSHOT + + + + spring-cloud-contract-dependencies + docs + spring-cloud-contract-wiremock + spring-cloud-contract-verifier + spring-cloud-contract-spec + spring-cloud-contract-stub-runner + spring-cloud-contract-starters + spring-cloud-contract-tools + tests + samples + + + + + + org.springframework.cloud + spring-cloud-commons-dependencies + ${spring-cloud-commons.version} + pom + import + + + org.apache.camel + camel-spring + ${camel.version} + + + org.apache.camel + camel-spring-boot-starter + ${camel.version} + + + org.apache.camel + camel-jackson + ${camel.version} + + + org.apache.camel + camel-jms + ${camel.version} + + + org.apache.activemq + activemq-camel + ${activemq.version} + + + org.apache.activemq + activemq-pool + ${activemq.version} + + + net.sf.jopt-simple + jopt-simple + 4.9 + + + cglib + cglib + 3.2.4 + + + org.spockframework + spock-spring + 1.0-groovy-2.4 + + + org.spockframework + spock-core + 1.0-groovy-2.4 + + + info.solidsoft.spock + spock-global-unroll + 0.5.0 + + + org.springframework.amqp + spring-rabbit + 1.6.2.RELEASE + + + org.mockito + mockito-core + 1.10.19 + + + io.specto + hoverfly-junit + 0.1.8 + + + org.apache.commons + commons-lang3 + 3.4 + + + au.com.dius + pact-jvm-model + 2.4.18 + + + com.github.jknack + handlebars + 4.0.6 + + + org.springframework.cloud + spring-cloud-contract-dependencies + ${project.version} + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-netflix-dependencies + ${spring-cloud-netflix.version} + pom + import + + + org.springframework.cloud + spring-cloud-stream-dependencies + ${spring-cloud-stream.version} + pom + import + + + org.springframework.cloud + spring-cloud-zookeeper-dependencies + ${spring-cloud-zookeeper.version} + pom + import + + + org.springframework.cloud + spring-cloud-consul-dependencies + ${spring-cloud-consul.version} + pom + import + + + + + + [3.2.1,) + + + + Spring + https://spring.io/ + + + + + mariuszs + Mariusz Smykula + mariuszs@gmail.com + + + marcingrzejszczak + Marcin Grzejszczak + mgrzejszczak@pivotal.io + + + dsyer + David Syer + dsyer@pivotal.io + + + + + scm:git:https://github.com/spring-cloud/spring-cloud-contract.git + scm:git:git@github.com:spring-cloud/spring-cloud-contract.git + https://github.com/spring-cloud/spring-cloud-contract + HEAD + + + + GitHub + https://github.com/spring-cloud/spring-cloud-contract/issues + + + + CircleCi + https://circleci.com/gh/spring-cloud/spring-cloud-contract + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*Spec.* + **/*Tests.* + **/*Test.* + + plain + + + + org.codehaus.plexus + plexus-component-metadata + 1.6 + + + maven-plugin-plugin + ${maven.plugin.plugin.version} + + + io.takari.maven.plugins + takari-lifecycle-plugin + 1.12.0 + + + org.eluder.coveralls + coveralls-maven-plugin + 4.1.0 + + + org.codehaus.gmavenplus + gmavenplus-plugin + 1.5 + + + + + + org.apache.maven.plugins + maven-clean-plugin + 3.0.0 + + + + target + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${checkstyle.version} + + + org.springframework.cloud + spring-cloud-build-tools + ${spring-cloud-build.version} + + + + + validate + validate + + checkstyle.xml + LICENSE.txt + true + true + ${project.build.directory}/** + + + check + + + + + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${checkstyle.version} + + checkstyle.xml + LICENSE.txt + ${project.build.directory}/** + + + + + + + + spring + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/libs-release-local + + false + + + + + + sonar + + + + org.jacoco + jacoco-maven-plugin + + + pre-unit-test + + prepare-agent + + + surefireArgLine + ${project.build.directory}/jacoco.exec + + + + post-unit-test + test + + report + + + + ${project.build.directory}/jacoco.exec + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + ${surefireArgLine} + + + + + + + + diff --git a/releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-dependencies/pom.xml b/releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-dependencies/pom.xml new file mode 100644 index 00000000..2ea7e734 --- /dev/null +++ b/releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-dependencies/pom.xml @@ -0,0 +1,233 @@ + + + 4.0.0 + + spring-cloud-dependencies-parent + org.springframework.cloud + 1.3.1.BUILD-SNAPSHOT + + + spring-cloud-contract-dependencies + 1.1.0.BUILD-SNAPSHOT + pom + spring-cloud-contract-dependencies + Spring Cloud Contract Dependencies + + 2.5.1 + 0.4.8 + 1.0.2.v20150114 + + + + + org.springframework.cloud + spring-cloud-contract-wiremock + ${project.version} + + + org.springframework.cloud + spring-cloud-contract-spec + ${project.version} + + + org.springframework.cloud + spring-cloud-contract-verifier + ${project.version} + + + org.springframework.cloud + spring-cloud-contract-converters + ${project.version} + + + org.springframework.cloud + spring-cloud-contract-spec-pact + ${project.version} + + + org.springframework.cloud + spring-cloud-contract-stub-runner + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-contract-verifier + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-contract-stub-runner + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-contract-stub-runner-jetty + ${project.version} + + + org.springframework.cloud + spring-cloud-contract-maven-plugin + ${project.version} + + + org.springframework.cloud + spring-cloud-contract-gradle-plugin + ${project.version} + + + com.github.tomakehurst + wiremock + ${wiremock.version} + + + org.mortbay.jetty + jetty + + + org.apache.httpcomponents + httpclient + + + com.jayway.jsonpath + json-path + + + net.sf.jopt-simple + jopt-simple + + + jetty-server + org.eclipse.jetty + + + jetty-servlet + org.eclipse.jetty + + + jetty-servlets + org.eclipse.jetty + + + jetty-webapp + org.eclipse.jetty + + + + + com.toomuchcoding.jsonassert + jsonassert + ${jsonassert.version} + + + com.jayway.restassured + spring-mock-mvc + 2.9.0 + + + spring-web + org.springframework + + + spring-webmvc + org.springframework + + + spring-test + org.springframework + + + + + org.eclipse.aether + aether-api + ${aether.version} + + + org.eclipse.aether + aether-impl + ${aether.version} + + + org.eclipse.aether + aether-transport-file + ${aether.version} + + + org.eclipse.aether + aether-transport-http + ${aether.version} + + + org.eclipse.aether + aether-connector-basic + ${aether.version} + + + org.apache.maven + maven-aether-provider + 3.2.1 + + + org.apache.maven + maven-settings-builder + 3.2.1 + + + + + + spring + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + spring-releases + Spring Releases + https://repo.spring.io/release + + false + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/libs-snapshot-local + + true + + + false + + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone-local + + false + + + + + + diff --git a/releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-tools/pom.xml b/releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-tools/pom.xml new file mode 100644 index 00000000..67ce9f8f --- /dev/null +++ b/releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-tools/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + + org.springframework.cloud + spring-cloud-contract-parent + + .. + + + spring-cloud-contract-tools + pom + + Spring Cloud Contract Tools + Spring Cloud Contract Tools + + + spring-cloud-contract-converters + spring-cloud-contract-spec-pact + spring-cloud-contract-maven-plugin + spring-cloud-contract-gradle-plugin + + + diff --git a/releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-tools/spring-cloud-contract-converters/pom.xml b/releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-tools/spring-cloud-contract-converters/pom.xml new file mode 100644 index 00000000..7873089a --- /dev/null +++ b/releaser-core/src/test/resources/projects/spring-cloud-contract/spring-cloud-contract-tools/spring-cloud-contract-converters/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-contract-tools + + .. + + spring-cloud-contract-converters + jar + Spring Cloud Contract Converters + Spring Cloud Contract Converters + 1.8 + + + org.springframework + spring-context + + + org.springframework.cloud + spring-cloud-contract-spec + + + org.springframework.cloud + spring-cloud-contract-verifier + + + org.springframework.boot + spring-boot-starter-logging + + + org.codehaus.groovy + groovy + + + org.codehaus.groovy + groovy-nio + + + com.github.tomakehurst + wiremock + + + org.spockframework + spock-core + test + + + org.springframework.boot + spring-boot-starter-test + test + + + info.solidsoft.spock + spock-global-unroll + test + + + + + + org.codehaus.gmavenplus + gmavenplus-plugin + + + + addSources + compile + testCompile + + + + + + +