diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ProjectVersion.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ProjectVersion.java index a4b24b7b5d..9b9367c02d 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ProjectVersion.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ProjectVersion.java @@ -167,10 +167,7 @@ class ProjectVersion implements Comparable, Serializable { return ReleaseType.SNAPSHOT; } - /* - * E.g. 1.0.1.RELEASE is more mature than 1.0.2.RC2 - */ - boolean isMoreMature(ProjectVersion that) { + int isMoreMature(ProjectVersion that) { SplitVersion thisSplit = assertVersion(); SplitVersion thatSplit = that.assertVersion(); int releaseTypeComparison = this.releaseType.compareTo(that.releaseType); @@ -179,16 +176,30 @@ class ProjectVersion implements Comparable, Serializable { && that.isReleaseOrServiceRelease(); // 1.0.1.M2 vs 1.0.0.RELEASE (x) if (thisReleaseTypeHigher && !bothGa) { - return true; + return 1; } - int versionComparison = thisSplit.gav().compareTo(thatSplit.gav()); - if (versionComparison == 0) { - // 1.0.0.SR1 vs 1.0.1.RELEASE (x) - // Finchley.RELEASE vs Finchley.SR1 (x) - return thisReleaseTypeHigher; + int majorComparison = compare(thisSplit.major, thatSplit.major); + if (majorComparison != 0) { + return majorComparison; + } + int minorComparison = compare(thisSplit.minor, thatSplit.minor); + if (minorComparison != 0) { + return minorComparison; + } + int patchComparison = compare(thisSplit.patch, thatSplit.patch); + if (patchComparison != 0) { + return patchComparison; + } + return releaseTypeComparison; + } + + private int compare(String thisString, String thatString) { + try { + return Integer.valueOf(thisString).compareTo(Integer.valueOf(thatString)); + } + catch (NumberFormatException ex) { + return thisString.compareTo(thatString); } - // 1.0.0.SR1 vs 1.0.1.RELEASE (x) - return versionComparison > 0; } boolean isSameWithoutSuffix(ProjectVersion that) { @@ -223,7 +234,6 @@ class ProjectVersion implements Comparable, Serializable { @Override public int compareTo(ProjectVersion o) { - // very simple comparison return this.version.compareTo(o.version); } diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ScmStubDownloaderBuilder.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ScmStubDownloaderBuilder.java index 5a81b259c5..3e709df2f1 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ScmStubDownloaderBuilder.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/ScmStubDownloaderBuilder.java @@ -403,8 +403,6 @@ class FileWalker extends SimpleFileVisitor { class DefaultArtifactVersionWrapper implements Comparable { - private static final String SNAPSHOT_SUBSTRING = "snapshot"; - final DefaultArtifactVersion version; final File file; @@ -427,8 +425,7 @@ class DefaultArtifactVersionWrapper implements Comparable 1522062299 +0200 clone: from git@github.com:marcingrzejszczak/contract-git.git 0b36113e5fa9713025d50f046e8fd209fc8d9597 3bd42890d5105a30abd82d0205b63cbf20a59e83 Marcin Grzejszczak 1547107982 +0100 commit: Added more versions +3bd42890d5105a30abd82d0205b63cbf20a59e83 49c8705a4409b1a4bd0f767665632c6ae11b5b90 Marcin Grzejszczak 1581521766 +0100 commit: Issue 1305 diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/logs/refs/heads/master b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/logs/refs/heads/master index abed8dd31c..ce0663ddbc 100644 --- a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/logs/refs/heads/master +++ b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/logs/refs/heads/master @@ -1,2 +1,3 @@ 0000000000000000000000000000000000000000 0b36113e5fa9713025d50f046e8fd209fc8d9597 Marcin Grzejszczak 1522062299 +0200 clone: from git@github.com:marcingrzejszczak/contract-git.git 0b36113e5fa9713025d50f046e8fd209fc8d9597 3bd42890d5105a30abd82d0205b63cbf20a59e83 Marcin Grzejszczak 1547107982 +0100 commit: Added more versions +3bd42890d5105a30abd82d0205b63cbf20a59e83 49c8705a4409b1a4bd0f767665632c6ae11b5b90 Marcin Grzejszczak 1581521766 +0100 commit: Issue 1305 diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/04/f59ff38f1c76629d41d71f38dcb87afecdf9ab b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/04/f59ff38f1c76629d41d71f38dcb87afecdf9ab new file mode 100644 index 0000000000..b0dfc0b00f Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/04/f59ff38f1c76629d41d71f38dcb87afecdf9ab differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/0a/124cc494496bf3574617f02e505975e8d64e5c b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/0a/124cc494496bf3574617f02e505975e8d64e5c new file mode 100644 index 0000000000..dd2f353d3a Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/0a/124cc494496bf3574617f02e505975e8d64e5c differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/0b/b008b1d235cb760e13408f10662dda01027d1d b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/0b/b008b1d235cb760e13408f10662dda01027d1d new file mode 100644 index 0000000000..9fef121906 Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/0b/b008b1d235cb760e13408f10662dda01027d1d differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/0f/c31c163430ef5913e1a85b3a6c4e36bcbf32e1 b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/0f/c31c163430ef5913e1a85b3a6c4e36bcbf32e1 new file mode 100644 index 0000000000..659754a795 Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/0f/c31c163430ef5913e1a85b3a6c4e36bcbf32e1 differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/1e/bb28e0982e1e497fe57311c4f8f34bae6f382f b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/1e/bb28e0982e1e497fe57311c4f8f34bae6f382f new file mode 100644 index 0000000000..46cdecb609 Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/1e/bb28e0982e1e497fe57311c4f8f34bae6f382f differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/35/c8489a4e3d4761ae82a8606ea82e0e52b05376 b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/35/c8489a4e3d4761ae82a8606ea82e0e52b05376 new file mode 100644 index 0000000000..660b0fba8e Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/35/c8489a4e3d4761ae82a8606ea82e0e52b05376 differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/46/ea77fbb81bcd831368a980a2c296014be94bf8 b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/46/ea77fbb81bcd831368a980a2c296014be94bf8 new file mode 100644 index 0000000000..6dab19f9f1 Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/46/ea77fbb81bcd831368a980a2c296014be94bf8 differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/49/c8705a4409b1a4bd0f767665632c6ae11b5b90 b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/49/c8705a4409b1a4bd0f767665632c6ae11b5b90 new file mode 100644 index 0000000000..f684debe0e --- /dev/null +++ b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/49/c8705a4409b1a4bd0f767665632c6ae11b5b90 @@ -0,0 +1,2 @@ +x1N1ajbzhl^ t{a "Yp^Y[[8OedE$j E%gJGJ曻,K3 +Y$YtH9CY7kweåe_;]|m|^Rl "CCe̼mCz$)Tz \ No newline at end of file diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/4d/48d4d56d4bf80700498dcb29d326c0ab35cb19 b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/4d/48d4d56d4bf80700498dcb29d326c0ab35cb19 new file mode 100644 index 0000000000..c1cbce1fd0 Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/4d/48d4d56d4bf80700498dcb29d326c0ab35cb19 differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/4e/5ffb7085c01081f98321985b6663f64939cdb2 b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/4e/5ffb7085c01081f98321985b6663f64939cdb2 new file mode 100644 index 0000000000..e064506abc Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/4e/5ffb7085c01081f98321985b6663f64939cdb2 differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/57/4590052afef4af132f7b8c5b92682401635807 b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/57/4590052afef4af132f7b8c5b92682401635807 new file mode 100644 index 0000000000..5308a6f92e Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/57/4590052afef4af132f7b8c5b92682401635807 differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/5b/0ae7cddbd14fc6ced6f87f4b9587afd6b0bd18 b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/5b/0ae7cddbd14fc6ced6f87f4b9587afd6b0bd18 new file mode 100644 index 0000000000..81af1360ef Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/5b/0ae7cddbd14fc6ced6f87f4b9587afd6b0bd18 differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/5f/25f6f934c0e7e5dcc18e1bd831dd288fa6ad8a b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/5f/25f6f934c0e7e5dcc18e1bd831dd288fa6ad8a new file mode 100644 index 0000000000..b36fe165e7 --- /dev/null +++ b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/5f/25f6f934c0e7e5dcc18e1bd831dd288fa6ad8a @@ -0,0 +1,4 @@ +xQN0ܯ,I@VjoIN2!PU+$󛷌BGWcJl<( MexN_m_l˅ |/Sz߸ɤLəŤr|:>ZWX*K7; ɒbCb+>Eyò;NXdrުMֻrq +>NWՈןk^]M +W0[.rAO0]|q6$f|l,;6*yBc8]Rm$khEPAVH`Β*U+/|z /4c|υ +]AqL3X*LVͳ)2Y-~w*mV5,c$I|'Z) ѾV$zn-`5q\ԧq$ GĪP( 1WXS 'vVVPv@3&ECY#/:qk+H'tj=7& ?)<1pmv`Azw<>vwHt8+Q1tD?yz`:ߴh͏|KzL9jfpH y(E>BT#d(z%'Ԋ^YWp5y+ `)2 \ No newline at end of file diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/fc/a3d789524348301d622344c8375d89b40f8b5d b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/fc/a3d789524348301d622344c8375d89b40f8b5d new file mode 100644 index 0000000000..b5c4d4136d Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/fc/a3d789524348301d622344c8375d89b40f8b5d differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/fe/2d022c3d254c5c7a5a65783e6976fac499d9c6 b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/fe/2d022c3d254c5c7a5a65783e6976fac499d9c6 new file mode 100644 index 0000000000..d5eb98f9e0 Binary files /dev/null and b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/objects/fe/2d022c3d254c5c7a5a65783e6976fac499d9c6 differ diff --git a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/refs/heads/master b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/refs/heads/master index 7bfe38929e..73fc07ed64 100644 --- a/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/refs/heads/master +++ b/spring-cloud-contract-stub-runner/src/test/resources/git_samples/contract-git/git/refs/heads/master @@ -1 +1 @@ -3bd42890d5105a30abd82d0205b63cbf20a59e83 +49c8705a4409b1a4bd0f767665632c6ae11b5b90 diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java index 3ef43f10c0..cde070ea33 100644 --- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java +++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java @@ -157,7 +157,11 @@ public class WireMockConfiguration implements SmartLifecycle { void resetMappings() { if (this.server.isRunning()) { this.server.resetAll(); + this.server.resetRequests(); + this.server.resetScenarios(); WireMock.reset(); + WireMock.resetAllRequests(); + WireMock.resetAllScenarios(); registerStubs(); logRegisteredMappings(); }