|
36 | 36 | import java.util.Locale; |
37 | 37 | import java.util.Map; |
38 | 38 | import java.util.Set; |
| 39 | +import java.util.stream.Collectors; |
39 | 40 |
|
40 | 41 | import static org.elasticsearch.Version.V_5_3_0; |
41 | 42 | import static org.elasticsearch.Version.V_6_0_0_beta1; |
@@ -340,11 +341,38 @@ public void testIsCompatible() { |
340 | 341 | assertFalse(isCompatible(Version.fromId(2000099), Version.V_5_0_0)); |
341 | 342 | assertFalse(isCompatible(Version.fromString("6.0.0"), Version.fromString("7.0.0"))); |
342 | 343 | assertFalse(isCompatible(Version.fromString("6.0.0-alpha1"), Version.fromString("7.0.0"))); |
343 | | - final boolean buildSnapshot = Booleans.parseBoolean(System.getProperty("build.snapshot", "true")); |
| 344 | + |
| 345 | + final Version currentMajorVersion = Version.fromId(Version.CURRENT.major * 1000000 + 99); |
| 346 | + final Version currentOrNextMajorVersion; |
| 347 | + if (Version.CURRENT.after(currentMajorVersion)) { |
| 348 | + currentOrNextMajorVersion = Version.fromId((Version.CURRENT.major + 1) * 1000000 + 99); |
| 349 | + } else { |
| 350 | + assert Version.CURRENT.minor == 0; |
| 351 | + currentOrNextMajorVersion = Version.CURRENT; |
| 352 | + } |
| 353 | + final List<Version> previousMajorVersions = |
| 354 | + VersionUtils |
| 355 | + .allVersions() |
| 356 | + .stream() |
| 357 | + .filter(v -> v.before(currentOrNextMajorVersion)) |
| 358 | + .collect(Collectors.toList()); |
| 359 | + final Version lastReleasedVersionFromPreviousMajor = previousMajorVersions.get(previousMajorVersions.size() - 1); |
| 360 | + final Version previousMinorVersion = VersionUtils.getPreviousMinorVersion(); |
| 361 | + assert lastReleasedVersionFromPreviousMajor.major == previousMinorVersion.major; |
| 362 | + |
| 363 | + boolean isCompatible = previousMinorVersion.minor == lastReleasedVersionFromPreviousMajor.minor; |
| 364 | + |
| 365 | + final String message = String.format( |
| 366 | + Locale.ROOT, |
| 367 | + "[%s] should %s be compatible with [%s]", |
| 368 | + previousMinorVersion, |
| 369 | + isCompatible ? "" : " not", |
| 370 | + currentOrNextMajorVersion); |
344 | 371 | assertThat( |
345 | | - "[" + VersionUtils.getPreviousMinorVersion() + "] should" + (!buildSnapshot ? " not" : "") + " be compatible with 7.0.0", |
346 | | - isCompatible(VersionUtils.getPreviousMinorVersion(), Version.fromString("7.0.0")), |
347 | | - equalTo(!buildSnapshot)); |
| 372 | + message, |
| 373 | + isCompatible(VersionUtils.getPreviousMinorVersion(), currentOrNextMajorVersion), |
| 374 | + equalTo(isCompatible)); |
| 375 | + |
348 | 376 | assertFalse(isCompatible(Version.V_5_0_0, Version.fromString("6.0.0"))); |
349 | 377 | assertFalse(isCompatible(Version.V_5_0_0, Version.fromString("7.0.0"))); |
350 | 378 |
|
|
0 commit comments