]> source.dussan.org Git - aspectj.git/commitdiff
Deactivate Java 18 preview language feature tests
authorAlexander Kriegisch <Alexander@Kriegisch.name>
Mon, 3 Oct 2022 14:36:33 +0000 (16:36 +0200)
committerAlexander Kriegisch <Alexander@Kriegisch.name>
Mon, 3 Oct 2022 15:07:39 +0000 (17:07 +0200)
and enable LangUtil to parse Java versions like '19+36-2238'.

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
tests/src/test/java/org/aspectj/systemtest/ajc196/AllTestsAspectJ196.java
tests/src/test/java/org/aspectj/systemtest/ajc199/AllTestsAspectJ199.java
util/src/main/java/org/aspectj/util/LangUtil.java

index c2e13b550edfb076c8873793edfd4078cdfa28ce..d3cbfb9ab9400c8d8c7f8be1d2a3bbdfd7ad0040 100644 (file)
@@ -26,7 +26,7 @@ public class AllTestsAspectJ196 {
                // Do not run tests using a previous compiler's preview features anymore. They would all fail.
                /*
                if (LangUtil.is14VMOrGreater() && !LangUtil.is15VMOrGreater()) {
-                       suite.addTest(Ajc196PreviewFeaturesTests.suite());
+                       suite.addTest(Java14PreviewFeaturesTests.suite());
                }
                */
                return suite;
index 6ff7adee40bbdb4b3d9faa191c46c4bc3efcb010..6b77073bea0fc3b97e4caafe63fce76642347edd 100644 (file)
@@ -23,9 +23,12 @@ public class AllTestsAspectJ199 {
                        suite.addTest(SanityTestsJava18.suite());
                        suite.addTest(Ajc199TestsJava.suite());
                }
+               // Do not run tests using a previous compiler's preview features anymore. They would all fail.
+               /*
                if (LangUtil.is18VMOrGreater() && !LangUtil.is19VMOrGreater()) {
                        suite.addTest(Java18PreviewFeaturesTests.suite());
                }
+               */
                return suite;
        }
 }
index 944e95040ddbe30157540605d0d8e39e08341b0d..02aa7d94b3cc1259d9791a370d3829c0b27e67b5 100644 (file)
@@ -57,6 +57,8 @@ public class LangUtil {
        static {
                // http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html
                // http://openjdk.java.net/jeps/223 "New Version-String Scheme"
+               // TODO: Use java.lang.Runtime class (since Java 9, now AspectJ needs Java 11+ due to JDT Core anyway)
+               final String JAVA_VERSION_NOT_FOUND = "System properties appear damaged, cannot find: java.version/java.runtime.version/java.vm.version";
                try {
                        String vm = System.getProperty("java.version"); // JLS 20.18.7
                        if (vm == null) {
@@ -66,15 +68,12 @@ public class LangUtil {
                                vm = System.getProperty("java.vm.version");
                        }
                        if (vm == null) {
-                               new RuntimeException(
-                                               "System properties appear damaged, cannot find: java.version/java.runtime.version/java.vm.version")
-                               .printStackTrace(System.err);
+                               new RuntimeException(JAVA_VERSION_NOT_FOUND).printStackTrace(System.err);
                                vmVersion = 1.5;
                        } else {
-                               // Version: [1-9][0-9]*((\.0)*\.[1-9][0-9]*)*
                                // Care about the first set of digits and second set if first digit is 1
                                try {
-                                       List<Integer> numbers = getFirstNumbers(vm);
+                                       List<Integer> numbers = getJavaMajorMinor(vm);
                                        if (numbers.get(0) == 1) {
                                                // Old school for 1.0 > 1.8
                                                vmVersion = numbers.get(0)+(numbers.get(1)/10d);
@@ -89,18 +88,19 @@ public class LangUtil {
                                }
                        }
                } catch (Throwable t) {
-                       new RuntimeException(
-                                       "System properties appear damaged, cannot find: java.version/java.runtime.version/java.vm.version", t)
-                       .printStackTrace(System.err);
+                       new RuntimeException(JAVA_VERSION_NOT_FOUND, t).printStackTrace(System.err);
                        vmVersion = 1.5;
                }
        }
 
-       private static List<Integer> getFirstNumbers(String vm) {
+       private static List<Integer> getJavaMajorMinor(String vm) {
                List<Integer> result = new ArrayList<>();
-               StringTokenizer st = new StringTokenizer(vm,".-_");
+               // Can be something like '1.5', '11.0.16.1', '19+36-2238'
+               StringTokenizer st = new StringTokenizer(vm,".-_+");
                try {
                        result.add(Integer.parseInt(st.nextToken()));
+                       // FIXME: The minor will be wrong for version strings like '19+36-2238'.
+                       // The minor is only relevant for Java <= 1.8. Even so, this is super ugly.
                        result.add(Integer.parseInt(st.nextToken()));
                } catch (Exception e) {
                        // NoSuchElementException if no more tokens