diff --git a/plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java b/plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java index 026e0b4a..1426caf2 100644 --- a/plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java +++ b/plexus-compiler-test/src/main/java/org/codehaus/plexus/compiler/AbstractCompilerTest.java @@ -310,4 +310,20 @@ protected String getJavaVersion() { return javaVersion; } + + /** + * Returns the feature version of the running JDK: 8 for {@code 1.8.x}, otherwise the leading number of + * {@code java.version}, such as 17 or 27. + */ + protected int getJavaFeatureVersion() { + String javaVersion = System.getProperty("java.version"); + if (javaVersion.startsWith("1.")) { + javaVersion = javaVersion.substring(2); + } + int end = 0; + while (end < javaVersion.length() && Character.isDigit(javaVersion.charAt(end))) { + end++; + } + return Integer.parseInt(javaVersion.substring(0, end)); + } } diff --git a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerErrorsAsWarningsTest.java b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerErrorsAsWarningsTest.java index 86e118d0..505c1bbe 100644 --- a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerErrorsAsWarningsTest.java +++ b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerErrorsAsWarningsTest.java @@ -36,11 +36,8 @@ protected int expectedWarnings() { @Override protected Collection expectedOutputFiles() { - String javaVersion = getJavaVersion(); - if (javaVersion.contains("11") - || javaVersion.contains("17") - || javaVersion.contains("21") - || javaVersion.contains("25")) { + // assert is a keyword since Java 1.4, so ReservedWord does not compile on a modern source level + if (getJavaFeatureVersion() >= 9) { return Arrays.asList( "org/codehaus/foo/Deprecation.class", "org/codehaus/foo/ExternalDeps.class", diff --git a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java index 6dc10e0c..2058b38f 100644 --- a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java +++ b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java @@ -29,12 +29,8 @@ protected int expectedWarnings() { @Override protected Collection expectedOutputFiles() { - String javaVersion = getJavaVersion(); - if (javaVersion.contains("9.0") - || javaVersion.contains("11") - || javaVersion.contains("17") - || javaVersion.contains("21") - || javaVersion.contains("25")) { + // assert is a keyword since Java 1.4, so ReservedWord does not compile on a modern source level + if (getJavaFeatureVersion() >= 9) { return Arrays.asList( "org/codehaus/foo/Deprecation.class", "org/codehaus/foo/ExternalDeps.class", diff --git a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerTest.java b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerTest.java index e8422d8e..4082d701 100644 --- a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerTest.java +++ b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerTest.java @@ -62,12 +62,8 @@ protected int expectedWarnings() { @Override protected Collection expectedOutputFiles() { - String javaVersion = getJavaVersion(); - if (javaVersion.contains("9.0") - || javaVersion.contains("11") - || javaVersion.contains("17") - || javaVersion.contains("21") - || javaVersion.contains("25")) { + // assert is a keyword since Java 1.4, so ReservedWord does not compile on a modern source level + if (getJavaFeatureVersion() >= 9) { return Arrays.asList( "org/codehaus/foo/Deprecation.class", "org/codehaus/foo/ExternalDeps.class", diff --git a/plexus-compilers/plexus-compiler-javac-errorprone/src/test/java/org/codehaus/plexus/compiler/javac/JavacErrorProneCompilerTest.java b/plexus-compilers/plexus-compiler-javac-errorprone/src/test/java/org/codehaus/plexus/compiler/javac/JavacErrorProneCompilerTest.java index 553e06af..aba9e12d 100644 --- a/plexus-compilers/plexus-compiler-javac-errorprone/src/test/java/org/codehaus/plexus/compiler/javac/JavacErrorProneCompilerTest.java +++ b/plexus-compilers/plexus-compiler-javac-errorprone/src/test/java/org/codehaus/plexus/compiler/javac/JavacErrorProneCompilerTest.java @@ -17,7 +17,7 @@ protected int expectedWarnings() { String javaVersion = getJavaVersion(); if (javaVersion.startsWith("1.8")) { return 1; - } else if (Runtime.version().feature() >= 21) { + } else if (getJavaFeatureVersion() >= 21) { // javac 21 and later also warn that -source 8 and -target 8 are obsolete return 5; } diff --git a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java index b6d3293a..b3c6a4bf 100644 --- a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java +++ b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java @@ -61,16 +61,12 @@ protected String getRoleHint() { @Override protected int expectedErrors() { - String javaVersion = getJavaVersion(); - if (javaVersion.contains("11") - || javaVersion.contains("17") - || javaVersion.contains("21") - || javaVersion.contains("25")) { + if (getJavaFeatureVersion() >= 11) { return 5; } // javac output changed for misspelled modifiers starting in 1.6...they now generate 2 errors per occurrence, // not one. - if ("1.5".compareTo(javaVersion) < 0) { + if ("1.5".compareTo(getJavaVersion()) < 0) { return 4; } else { return 3; @@ -79,103 +75,46 @@ protected int expectedErrors() { @Override protected int expectedWarnings() { - String javaVersion = getJavaVersion(); - if (javaVersion.contains("11") - || javaVersion.contains("17") - || javaVersion.contains("21") - || javaVersion.contains("25")) { + if (getJavaFeatureVersion() >= 11) { return 1; } + String javaVersion = getJavaVersion(); if (javaVersion.contains("1.8")) { // lots of new warnings about obsoletions for future releases return 30; } - if ("1.6".compareTo(javaVersion) < 0) { // with 1.7 some warning with bootstrap class path not set in conjunction with -source 1.3 return 9; } - return 2; } @Override public String getTargetVersion() { - String javaVersion = getJavaVersion(); - if (javaVersion.contains("9.0")) { + int javaFeatureVersion = getJavaFeatureVersion(); + if (javaFeatureVersion >= 11) { + return Integer.toString(javaFeatureVersion); + } else if (getJavaVersion().contains("9.0")) { return "1.7"; - } else if (javaVersion.contains("11")) { - return "11"; - } else if (javaVersion.contains("14")) { - return "14"; - } else if (javaVersion.contains("15")) { - return "15"; - } else if (javaVersion.contains("16")) { - return "16"; - } else if (javaVersion.contains("17")) { - return "17"; - } else if (javaVersion.contains("18")) { - return "18"; - } else if (javaVersion.contains("19")) { - return "19"; - } else if (javaVersion.contains("20")) { - return "20"; - } else if (javaVersion.contains("21")) { - return "21"; - } else if (javaVersion.contains("22")) { - return "22"; - } else if (javaVersion.contains("23")) { - return "23"; - } else if (javaVersion.contains("24")) { - return "24"; - } else if (javaVersion.contains("25")) { - return "25"; } return super.getTargetVersion(); } @Override public String getSourceVersion() { - String javaVersion = getJavaVersion(); - if (javaVersion.contains("9.0")) { + int javaFeatureVersion = getJavaFeatureVersion(); + if (javaFeatureVersion >= 11) { + return Integer.toString(javaFeatureVersion); + } else if (getJavaVersion().contains("9.0")) { return "1.7"; - } else if (javaVersion.contains("11")) { - return "11"; - } else if (javaVersion.contains("14")) { - return "14"; - } else if (javaVersion.contains("15")) { - return "15"; - } else if (javaVersion.contains("16")) { - return "16"; - } else if (javaVersion.contains("17")) { - return "17"; - } else if (javaVersion.contains("18")) { - return "18"; - } else if (javaVersion.contains("19")) { - return "19"; - } else if (javaVersion.contains("20")) { - return "20"; - } else if (javaVersion.contains("21")) { - return "21"; - } else if (javaVersion.contains("22")) { - return "22"; - } else if (javaVersion.contains("23")) { - return "23"; - } else if (javaVersion.contains("24")) { - return "24"; - } else if (javaVersion.contains("25")) { - return "25"; } return super.getSourceVersion(); } @Override protected Collection expectedOutputFiles() { - String javaVersion = getJavaVersion(); - if (javaVersion.contains("11") - || javaVersion.contains("17") - || javaVersion.contains("21") - || javaVersion.contains("25")) { + if (getJavaFeatureVersion() >= 11) { return Arrays.asList( "org/codehaus/foo/Deprecation.class", "org/codehaus/foo/ExternalDeps.class",