From 47db35bb48a1ef0919dff62521ca38cd7cf3ccec Mon Sep 17 00:00:00 2001 From: Alexander Kriegisch Date: Mon, 19 Feb 2024 22:01:05 +0700 Subject: [PATCH] New abstract class JavaVersionSpecificXMLBasedAjcTestCase Replaces now obsolete base classes - XMLBasedAjcTestCaseForJava[n]OrLater, - XMLBasedAjcTestCaseForJava[n]Only. The new class is parametrised with minimum and maximum Java version and hence can replace all the other classes. This does not only apply the DRY principle, but also makes adding tests for new Java versions less tedious. By chance, I also noticed missing sanity tests for Java 12, which I added as a little drive-by benefit. Signed-off-by: Alexander Kriegisch --- .../aspectj/tools/ant/taskdefs/AjcTask.java | 4 +- ...avaVersionSpecificXMLBasedAjcTestCase.java | 48 ++++++++++ .../XMLBasedAjcTestCaseForJava10OrLater.java | 30 ------ .../XMLBasedAjcTestCaseForJava11OrLater.java | 30 ------ .../XMLBasedAjcTestCaseForJava12OrLater.java | 30 ------ .../XMLBasedAjcTestCaseForJava13OrLater.java | 30 ------ .../XMLBasedAjcTestCaseForJava14Only.java | 38 -------- .../XMLBasedAjcTestCaseForJava14OrLater.java | 27 ------ .../XMLBasedAjcTestCaseForJava15Only.java | 38 -------- .../XMLBasedAjcTestCaseForJava15OrLater.java | 27 ------ .../XMLBasedAjcTestCaseForJava16Only.java | 40 -------- .../XMLBasedAjcTestCaseForJava16OrLater.java | 27 ------ .../XMLBasedAjcTestCaseForJava17Only.java | 40 -------- .../XMLBasedAjcTestCaseForJava17OrLater.java | 27 ------ .../XMLBasedAjcTestCaseForJava18Only.java | 40 -------- .../XMLBasedAjcTestCaseForJava18OrLater.java | 27 ------ .../XMLBasedAjcTestCaseForJava19Only.java | 40 -------- .../XMLBasedAjcTestCaseForJava19OrLater.java | 27 ------ .../XMLBasedAjcTestCaseForJava20Only.java | 40 -------- .../XMLBasedAjcTestCaseForJava20OrLater.java | 27 ------ .../XMLBasedAjcTestCaseForJava21Only.java | 42 --------- .../XMLBasedAjcTestCaseForJava21OrLater.java | 27 ------ .../XMLBasedAjcTestCaseForJava9OrLater.java | 30 ------ .../systemtest/ajc190/Ajc190Tests.java | 10 +- .../systemtest/ajc190/AllTestsAspectJ190.java | 2 - .../systemtest/ajc190/ModuleTests.java | 10 +- .../systemtest/ajc190/SanityTests19.java | 2 +- .../systemtest/ajc191/Ajc191Tests.java | 10 +- .../systemtest/ajc191/AllTestsAspectJ191.java | 2 - .../systemtest/ajc191/SanityTestsJava10.java | 3 +- .../systemtest/ajc1919/Ajc1919TestsJava.java | 7 +- .../ajc1919/AllTestsAspectJ1919.java | 14 ++- .../ajc1919/Java19PreviewFeaturesTests.java | 8 +- .../systemtest/ajc1919/SanityTestsJava19.java | 9 +- .../systemtest/ajc192/Ajc192Tests.java | 9 +- .../systemtest/ajc192/AllTestsAspectJ192.java | 2 - .../systemtest/ajc192/SanityTestsJava11.java | 11 ++- .../systemtest/ajc1920/Ajc1920TestsJava.java | 8 +- .../ajc1920/AllTestsAspectJ1920.java | 13 ++- .../ajc1920/Java20PreviewFeaturesTests.java | 8 +- .../systemtest/ajc1920/SanityTestsJava20.java | 8 +- .../systemtest/ajc1921/Ajc1921TestsJava.java | 24 +++-- .../ajc1921/AllTestsAspectJ1921.java | 14 ++- .../ajc1921/Java21PreviewFeaturesTests.java | 8 +- .../systemtest/ajc1921/SanityTestsJava21.java | 8 +- .../systemtest/ajc193/Ajc193Tests.java | 12 ++- .../systemtest/ajc193/AllTestsAspectJ193.java | 7 +- .../systemtest/ajc193/Java13Tests.java | 31 ------- .../systemtest/ajc193/SanityTestsJava12.java | 93 +++++++++++++++++++ .../systemtest/ajc195/AllTestsAspectJ195.java | 3 +- .../systemtest/ajc195/SanityTestsJava13.java | 8 +- .../systemtest/ajc196/Ajc196Tests.java | 11 ++- .../systemtest/ajc196/AllTestsAspectJ196.java | 16 ++-- .../ajc196/Java14PreviewFeaturesTests.java | 11 ++- .../systemtest/ajc196/SanityTestsJava14.java | 11 ++- .../systemtest/ajc197/Ajc197TestsJava.java | 24 +++-- .../systemtest/ajc197/AllTestsAspectJ197.java | 15 ++- .../ajc197/Java16PreviewFeaturesTests.java | 8 +- .../systemtest/ajc197/SanityTestsJava15.java | 8 +- .../systemtest/ajc197/SanityTestsJava16.java | 8 +- .../systemtest/ajc198/Ajc198TestsJava.java | 18 ++-- .../systemtest/ajc198/AllTestsAspectJ198.java | 16 ++-- .../systemtest/ajc198/Bugs198Java11Tests.java | 9 +- .../ajc198/CompileWithReleaseTests.java | 7 +- .../ajc198/Java17PreviewFeaturesTests.java | 8 +- .../systemtest/ajc198/SanityTestsJava17.java | 8 +- .../systemtest/ajc199/Ajc199TestsJava.java | 7 +- .../systemtest/ajc199/AllTestsAspectJ199.java | 15 +-- .../ajc199/Java18PreviewFeaturesTests.java | 8 +- .../systemtest/ajc199/SanityTestsJava18.java | 8 +- .../systemtest/ajc193/sanity-tests-12.xml | 69 ++++++++++++++ .../main/java/org/aspectj/util/LangUtil.java | 10 +- 72 files changed, 505 insertions(+), 870 deletions(-) create mode 100644 testing/src/test/java/org/aspectj/testing/JavaVersionSpecificXMLBasedAjcTestCase.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava17Only.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava17OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava18Only.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava18OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava19Only.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava19OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava20Only.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava20OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava21Only.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava21OrLater.java delete mode 100644 testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java delete mode 100644 tests/src/test/java/org/aspectj/systemtest/ajc193/Java13Tests.java create mode 100644 tests/src/test/java/org/aspectj/systemtest/ajc193/SanityTestsJava12.java create mode 100644 tests/src/test/resources/org/aspectj/systemtest/ajc193/sanity-tests-12.xml diff --git a/taskdefs/src/main/java/org/aspectj/tools/ant/taskdefs/AjcTask.java b/taskdefs/src/main/java/org/aspectj/tools/ant/taskdefs/AjcTask.java index 777c76517..d6b938b5c 100644 --- a/taskdefs/src/main/java/org/aspectj/tools/ant/taskdefs/AjcTask.java +++ b/taskdefs/src/main/java/org/aspectj/tools/ant/taskdefs/AjcTask.java @@ -251,9 +251,9 @@ public class AjcTask extends MatchingTask { public static final String COMMAND_EDITOR_NAME = AjcTask.class.getName() + ".COMMAND_EDITOR"; // AspectJ_JDK_Update: Check minimum supported ECJ version, currently 1.3 - static final int JAVA_VERSION_MIN = 3; + public static final int JAVA_VERSION_MIN = 3; // AspectJ_JDK_Update: Check maximum supported ECJ version - static final int JAVA_VERSION_MAX = 21; + public static final int JAVA_VERSION_MAX = 21; static final String[] SOURCE_INPUTS; static final String[] TARGET_INPUTS; diff --git a/testing/src/test/java/org/aspectj/testing/JavaVersionSpecificXMLBasedAjcTestCase.java b/testing/src/test/java/org/aspectj/testing/JavaVersionSpecificXMLBasedAjcTestCase.java new file mode 100644 index 000000000..a4f5ce7ff --- /dev/null +++ b/testing/src/test/java/org/aspectj/testing/JavaVersionSpecificXMLBasedAjcTestCase.java @@ -0,0 +1,48 @@ +/* ******************************************************************* + * Copyright (c) 2024 Contributors + * All rights reserved. + * This program and the accompanying materials are made available + * under the terms of the Eclipse Public License v 2.0 + * which accompanies this distribution and is available at + * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + * ******************************************************************/ +package org.aspectj.testing; + +import static org.aspectj.util.LangUtil.isVMGreaterOrEqual; +import static org.aspectj.util.LangUtil.isVMLessOrEqual; + +/** + * A test case which only runs on specific Java versions + * + * @author Alexander Kriegisch + */ +public abstract class JavaVersionSpecificXMLBasedAjcTestCase extends XMLBasedAjcTestCase { + private final int minimumJavaVersion; + private final int maximumJavaVersion; + + protected JavaVersionSpecificXMLBasedAjcTestCase(int minimumJavaVersion) { + this(minimumJavaVersion, Integer.MAX_VALUE); + } + + protected JavaVersionSpecificXMLBasedAjcTestCase(int minimumJavaVersion, int maximumJavaVersion) { + this.minimumJavaVersion = minimumJavaVersion; + this.maximumJavaVersion = maximumJavaVersion; + } + + @Override + public void setUp() throws Exception { + boolean withinBounds = isVMGreaterOrEqual(minimumJavaVersion) && isVMLessOrEqual(maximumJavaVersion); + if (!withinBounds) { + String errorMessage = "These tests must run on Java version "; + if (maximumJavaVersion == Integer.MAX_VALUE) + errorMessage += minimumJavaVersion + " or greater"; + else if (maximumJavaVersion == minimumJavaVersion) + errorMessage += minimumJavaVersion + " only"; + else + errorMessage += "range " + minimumJavaVersion + " to " + maximumJavaVersion; + throw new IllegalStateException(errorMessage); + } + super.setUp(); + } + +} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java deleted file mode 100644 index c7d67e4ab..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava10OrLater.java +++ /dev/null @@ -1,30 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2018 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * - * Contributors: - * Andy Clement - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Ensure sure tests are running on the right level of JDK. - * - * @author Andy Clement - */ -public abstract class XMLBasedAjcTestCaseForJava10OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(10)) - throw new IllegalStateException("These tests should be run on Java 10 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java deleted file mode 100644 index 08f0e0d78..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava11OrLater.java +++ /dev/null @@ -1,30 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2018 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * - * Contributors: - * Andy Clement - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Andy Clement - */ -public abstract class XMLBasedAjcTestCaseForJava11OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(11)) - throw new IllegalStateException("These tests should be run on Java 11 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java deleted file mode 100644 index fdd94de51..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava12OrLater.java +++ /dev/null @@ -1,30 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2018 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * - * Contributors: - * Andy Clement - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Ensure sure tests are running on the right level of JDK. - * - * @author Andy Clement - */ -public abstract class XMLBasedAjcTestCaseForJava12OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(12)) - throw new IllegalStateException("These tests should be run on Java 12 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java deleted file mode 100644 index 635785c20..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava13OrLater.java +++ /dev/null @@ -1,30 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2019 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * - * Contributors: - * Andy Clement - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Andy Clement - */ -public abstract class XMLBasedAjcTestCaseForJava13OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(13)) - throw new IllegalStateException("These tests should be run on Java 13 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java deleted file mode 100644 index e4c864049..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14Only.java +++ /dev/null @@ -1,38 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2021 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava14Only extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - // Activate this block after upgrading to JDT Core Java 15 - throw new IllegalStateException( - "These tests need a Java 14 level AspectJ compiler " + - "(e.g. because they use version-specific preview features). " + - "This compiler does not support preview features of a previous version anymore." - ); - // Activate this block before upgrading to JDT Core Java 15 - /* - if (!LangUtil.isVMGreaterOrEqual(14) || LangUtil.isVMGreaterOrEqual(15)) { - throw new IllegalStateException( - "These tests should be run on Java 14 only " + - "(e.g. because they use version-specific preview features)" - ); - } - super.setUp(); - */ - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java deleted file mode 100644 index 7f6b7c7d3..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava14OrLater.java +++ /dev/null @@ -1,27 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2020 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Andy Clement - */ -public abstract class XMLBasedAjcTestCaseForJava14OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(14)) - throw new IllegalStateException("These tests should be run on Java 14 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java deleted file mode 100644 index dd6ef21e5..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15Only.java +++ /dev/null @@ -1,38 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2021 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava15Only extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - // Activate this block after upgrading to JDT Core Java 16 - throw new IllegalStateException( - "These tests need a Java 15 level AspectJ compiler " + - "(e.g. because they use version-specific preview features). " + - "This compiler does not support preview features of a previous version anymore." - ); - // Activate this block before upgrading to JDT Core Java 16 - /* - if (!LangUtil.isVMGreaterOrEqual(15) || LangUtil.isVMGreaterOrEqual(16)) { - throw new IllegalStateException( - "These tests should be run on Java 15 only " + - "(e.g. because they use version-specific preview features)" - ); - } - super.setUp(); - */ - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java deleted file mode 100644 index ad5f3e108..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava15OrLater.java +++ /dev/null @@ -1,27 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2021 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava15OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(15)) - throw new IllegalStateException("These tests should be run on Java 15 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java deleted file mode 100644 index 794d5276d..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16Only.java +++ /dev/null @@ -1,40 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2021 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava16Only extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - // Activate this block after upgrading to JDT Core Java 17 - throw new IllegalStateException( - "These tests need a Java 16 level AspectJ compiler " + - "(e.g. because they use version-specific preview features). " + - "This compiler does not support preview features of a previous version anymore." - ); - // Activate this block before upgrading to JDT Core Java 17 - /* - if (!LangUtil.isVMGreaterOrEqual(16) || LangUtil.isVMGreaterOrEqual(17)) { - throw new IllegalStateException( - "These tests should be run on Java 16 only " + - "(e.g. because they use version-specific preview features)" - ); - } - super.setUp(); - */ - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java deleted file mode 100644 index 3a763af47..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava16OrLater.java +++ /dev/null @@ -1,27 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2021 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava16OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(16)) - throw new IllegalStateException("These tests should be run on Java 16 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava17Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava17Only.java deleted file mode 100644 index eeb681b6d..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava17Only.java +++ /dev/null @@ -1,40 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2021 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava17Only extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - // Activate this block after upgrading to JDT Core Java 18 - throw new IllegalStateException( - "These tests need a Java 17 level AspectJ compiler " + - "(e.g. because they use version-specific preview features). " + - "This compiler does not support preview features of a previous version anymore." - ); - // Activate this block before upgrading to JDT Core Java 18 - /* - if (!LangUtil.isVMGreaterOrEqual(17) || LangUtil.isVMGreaterOrEqual(18)) { - throw new IllegalStateException( - "These tests should be run on Java 17 only " + - "(e.g. because they use version-specific preview features)" - ); - super.setUp(); - } - */ - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava17OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava17OrLater.java deleted file mode 100644 index bb32898b1..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava17OrLater.java +++ /dev/null @@ -1,27 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2021 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava17OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(17)) - throw new IllegalStateException("These tests should be run on Java 17 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava18Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava18Only.java deleted file mode 100644 index 21c1dce4f..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava18Only.java +++ /dev/null @@ -1,40 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2022 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava18Only extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - // Activate this block after upgrading to JDT Core Java 19 - throw new IllegalStateException( - "These tests need a Java 18 level AspectJ compiler " + - "(e.g. because they use version-specific preview features). " + - "This compiler does not support preview features of a previous version anymore." - ); - // Activate this block before upgrading to JDT Core Java 19 - /* - if (!LangUtil.isVMGreaterOrEqual(18) || LangUtil.isVMGreaterOrEqual(19)) { - throw new IllegalStateException( - "These tests should be run on Java 18 only " + - "(e.g. because they use version-specific preview features)" - ); - } - super.setUp(); - */ - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava18OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava18OrLater.java deleted file mode 100644 index 65fcc325e..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava18OrLater.java +++ /dev/null @@ -1,27 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2022 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava18OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(18)) - throw new IllegalStateException("These tests should be run on Java 18 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava19Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava19Only.java deleted file mode 100644 index e931bc3f9..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava19Only.java +++ /dev/null @@ -1,40 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2022 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava19Only extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - // Activate this block after upgrading to JDT Core Java 20 - throw new IllegalStateException( - "These tests need a Java 19 level AspectJ compiler " + - "(e.g. because they use version-specific preview features). " + - "This compiler does not support preview features of a previous version anymore." - ); - // Activate this block before upgrading to JDT Core Java 20 - /* - if (!LangUtil.isVMGreaterOrEqual(19) || LangUtil.isVMGreaterOrEqual(20)) { - throw new IllegalStateException( - "These tests should be run on Java 19 only " + - "(e.g. because they use version-specific preview features)" - ); - } - super.setUp(); - */ - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava19OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava19OrLater.java deleted file mode 100644 index e33862f32..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava19OrLater.java +++ /dev/null @@ -1,27 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2022 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava19OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(19)) - throw new IllegalStateException("These tests should be run on Java 19 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava20Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava20Only.java deleted file mode 100644 index 43b50a6bc..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava20Only.java +++ /dev/null @@ -1,40 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2022 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava20Only extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - // Activate this block after upgrading to JDT Core Java 21 - throw new IllegalStateException( - "These tests need a Java 20 level AspectJ compiler " + - "(e.g. because they use version-specific preview features). " + - "This compiler does not support preview features of a previous version anymore." - ); - // Activate this block before upgrading to JDT Core Java 21 - /* - if (!LangUtil.isVMGreaterOrEqual(20) || LangUtil.isVMGreaterOrEqual(21)) { - throw new IllegalStateException( - "These tests should be run on Java 20 only " + - "(e.g. because they use version-specific preview features)" - ); - } - super.setUp(); - */ - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava20OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava20OrLater.java deleted file mode 100644 index 1289d9672..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava20OrLater.java +++ /dev/null @@ -1,27 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2022 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava20OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(20)) - throw new IllegalStateException("These tests should be run on Java 20 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava21Only.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava21Only.java deleted file mode 100644 index 3014e1a96..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava21Only.java +++ /dev/null @@ -1,42 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2023 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava21Only extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - // AspectJ_JDK_Update - // Activate this block after upgrading to JDT Core Java 22 - /* - throw new IllegalStateException( - "These tests need a Java 21 level AspectJ compiler " + - "(e.g. because they use version-specific preview features). " + - "This compiler does not support preview features of a previous version anymore." - ); - */ - // AspectJ_JDK_Update - // Activate this block before upgrading to JDT Core Java 22 - if (!LangUtil.isVMGreaterOrEqual(21) || LangUtil.isVMGreaterOrEqual(22)) { - throw new IllegalStateException( - "These tests should be run on Java 21 only " + - "(e.g. because they use version-specific preview features)" - ); - } - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava21OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava21OrLater.java deleted file mode 100644 index 11fc3ba7f..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava21OrLater.java +++ /dev/null @@ -1,27 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2023 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Alexander Kriegisch - */ -public abstract class XMLBasedAjcTestCaseForJava21OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(21)) - throw new IllegalStateException("These tests should be run on Java 21 or later"); - super.setUp(); - } - -} diff --git a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java b/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java deleted file mode 100644 index d5decf8b9..000000000 --- a/testing/src/test/java/org/aspectj/testing/XMLBasedAjcTestCaseForJava9OrLater.java +++ /dev/null @@ -1,30 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2018 Contributors - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - * - * Contributors: - * Andy Clement - * ******************************************************************/ -package org.aspectj.testing; - -import org.aspectj.util.LangUtil; - -/** - * Makes sure tests are running on the right level of JDK. - * - * @author Andy Clement - */ -public abstract class XMLBasedAjcTestCaseForJava9OrLater extends XMLBasedAjcTestCase { - - @Override - public void setUp() throws Exception { - if (!LangUtil.isVMGreaterOrEqual(9)) - throw new IllegalStateException("These tests should be run on Java 9 or later"); - super.setUp(); - } - -} diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc190/Ajc190Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc190/Ajc190Tests.java index 129cfaad8..14bd4ff12 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc190/Ajc190Tests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc190/Ajc190Tests.java @@ -10,15 +10,17 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc190; -import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava9OrLater; - import junit.framework.Test; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; +import org.aspectj.testing.XMLBasedAjcTestCase; /** * @author Andy Clement */ -public class Ajc190Tests extends XMLBasedAjcTestCaseForJava9OrLater { +public class Ajc190Tests extends JavaVersionSpecificXMLBasedAjcTestCase { + public Ajc190Tests() { + super(9); + } public void testParamAnnosNegative() { runTest("param annos negative"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java b/tests/src/test/java/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java index 19e50688f..7a6982912 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc190/AllTestsAspectJ190.java @@ -17,13 +17,11 @@ public class AllTestsAspectJ190 { public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.0 tests"); - // $JUnit-BEGIN$ suite.addTest(Ajc190Tests.suite()); suite.addTest(SanityTests19.suite()); suite.addTest(EfficientTJPTests.suite()); suite.addTest(ModuleTests.suite()); suite.addTest(Annotations.suite()); - // $JUnit-END$ return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc190/ModuleTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc190/ModuleTests.java index a73c75077..3c53d53ca 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc190/ModuleTests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc190/ModuleTests.java @@ -7,16 +7,15 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc190; +import junit.framework.Test; import org.aspectj.apache.bcel.classfile.Attribute; import org.aspectj.apache.bcel.classfile.Code; import org.aspectj.apache.bcel.classfile.JavaClass; import org.aspectj.apache.bcel.classfile.Method; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava9OrLater; import org.aspectj.util.LangUtil; -import junit.framework.Test; - /** * Building and weaving with modules in the picture. * @@ -25,7 +24,10 @@ import junit.framework.Test; * @author Andy Clement * */ -public class ModuleTests extends XMLBasedAjcTestCaseForJava9OrLater { +public class ModuleTests extends JavaVersionSpecificXMLBasedAjcTestCase { + public ModuleTests() { + super(9); + } public void testBuildAModule() { runTest("build a module"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc190/SanityTests19.java b/tests/src/test/java/org/aspectj/systemtest/ajc190/SanityTests19.java index 38678b750..3dafa7f31 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc190/SanityTests19.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc190/SanityTests19.java @@ -20,7 +20,7 @@ import junit.framework.Test; * These are a copy of the earlier Sanity Tests created for 1.6 but these supply the -1.9 option * to check code generation and modification with that version specified. */ -public class SanityTests19 extends org.aspectj.testing.XMLBasedAjcTestCase { +public class SanityTests19 extends XMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(9).MAJOR; // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc191/Ajc191Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc191/Ajc191Tests.java index 3158a954e..f4995a326 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc191/Ajc191Tests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc191/Ajc191Tests.java @@ -10,15 +10,17 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc191; -import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava10OrLater; - import junit.framework.Test; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; +import org.aspectj.testing.XMLBasedAjcTestCase; /** * @author Andy Clement */ -public class Ajc191Tests extends XMLBasedAjcTestCaseForJava10OrLater { +public class Ajc191Tests extends JavaVersionSpecificXMLBasedAjcTestCase { + public Ajc191Tests() { + super(10); + } public void testVar1() { runTest("var 1"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc191/AllTestsAspectJ191.java b/tests/src/test/java/org/aspectj/systemtest/ajc191/AllTestsAspectJ191.java index 482d61270..bd6666466 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc191/AllTestsAspectJ191.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc191/AllTestsAspectJ191.java @@ -17,10 +17,8 @@ public class AllTestsAspectJ191 { public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.1 tests"); - // $JUnit-BEGIN$ suite.addTest(Ajc191Tests.suite()); suite.addTest(SanityTestsJava10.suite()); - // $JUnit-END$ return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc191/SanityTestsJava10.java b/tests/src/test/java/org/aspectj/systemtest/ajc191/SanityTestsJava10.java index 79c6ba1ae..f01e07835 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc191/SanityTestsJava10.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc191/SanityTestsJava10.java @@ -19,7 +19,7 @@ import junit.framework.Test; * * @author Andy Clement */ -public class SanityTestsJava10 extends org.aspectj.testing.XMLBasedAjcTestCase { +public class SanityTestsJava10 extends XMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(10).MAJOR; // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) @@ -74,7 +74,6 @@ public class SanityTestsJava10 extends org.aspectj.testing.XMLBasedAjcTestCase { checkVersion("A", Constants.ClassFileVersion.of(5).MAJOR, 0); } - // /////////////////////////////////////// public static Test suite() { return XMLBasedAjcTestCase.loadSuite(SanityTestsJava10.class); } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1919/Ajc1919TestsJava.java b/tests/src/test/java/org/aspectj/systemtest/ajc1919/Ajc1919TestsJava.java index 5f471490d..df59b1136 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1919/Ajc1919TestsJava.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1919/Ajc1919TestsJava.java @@ -8,13 +8,16 @@ package org.aspectj.systemtest.ajc1919; import junit.framework.Test; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava19OrLater; /** * @author Alexander Kriegisch */ -public class Ajc1919TestsJava extends XMLBasedAjcTestCaseForJava19OrLater { +public class Ajc1919TestsJava extends JavaVersionSpecificXMLBasedAjcTestCase { + public Ajc1919TestsJava() { + super(19); + } public void testDummyJava19() { //runTest("dummy Java 19"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1919/AllTestsAspectJ1919.java b/tests/src/test/java/org/aspectj/systemtest/ajc1919/AllTestsAspectJ1919.java index 22e7b6184..1865cd765 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1919/AllTestsAspectJ1919.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1919/AllTestsAspectJ1919.java @@ -9,6 +9,7 @@ package org.aspectj.systemtest.ajc1919; import junit.framework.Test; import junit.framework.TestSuite; +import org.aspectj.tools.ant.taskdefs.AjcTask; import org.aspectj.util.LangUtil; /** @@ -16,19 +17,22 @@ import org.aspectj.util.LangUtil; */ public class AllTestsAspectJ1919 { + private static final int JAVA_VERSION = 19; + public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.19 tests"); suite.addTest(Bugs1919Tests.suite()); - if (LangUtil.isVMGreaterOrEqual(19)) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) { suite.addTest(SanityTestsJava19.suite()); suite.addTest(Ajc1919TestsJava.suite()); } + // Do not run tests using a previous compiler's preview features anymore. They would all fail. - /* - if (LangUtil.isVMGreaterOrEqual(19) && !LangUtil.isVMGreaterOrEqual(20)) { - suite.addTest(Java19PreviewFeaturesTests.suite()); + if (AjcTask.JAVA_VERSION_MAX == JAVA_VERSION) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION) && LangUtil.isVMLessOrEqual(JAVA_VERSION)) { + suite.addTest(Java19PreviewFeaturesTests.suite()); + } } - */ return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1919/Java19PreviewFeaturesTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc1919/Java19PreviewFeaturesTests.java index 1207f5cc6..c579ad3d1 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1919/Java19PreviewFeaturesTests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1919/Java19PreviewFeaturesTests.java @@ -9,15 +9,19 @@ package org.aspectj.systemtest.ajc1919; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava19Only; /** * @author Alexander Kriegisch */ -public class Java19PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava19Only { +public class Java19PreviewFeaturesTests extends JavaVersionSpecificXMLBasedAjcTestCase { private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(19); + public Java19PreviewFeaturesTests() { + super(19, 19); + } + public void testSwitchPatternMatchingPreview3Java() { runTest("switch pattern matching preview 3 java"); checkVersion("SwitchPatternPreview3OK", classFileVersion.MAJOR, classFileVersion.PREVIEW_MINOR); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1919/SanityTestsJava19.java b/tests/src/test/java/org/aspectj/systemtest/ajc1919/SanityTestsJava19.java index 9f70c3ff2..4110f17b8 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1919/SanityTestsJava19.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1919/SanityTestsJava19.java @@ -9,8 +9,8 @@ package org.aspectj.systemtest.ajc1919; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava19OrLater; /* * Some very trivial tests that help verify things are OK. @@ -19,10 +19,13 @@ import org.aspectj.testing.XMLBasedAjcTestCaseForJava19OrLater; * * @author Alexander Kriegisch */ -public class SanityTestsJava19 extends XMLBasedAjcTestCaseForJava19OrLater { - +public class SanityTestsJava19 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(19).MAJOR; + public SanityTestsJava19() { + super(19); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc192/Ajc192Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc192/Ajc192Tests.java index 4a227ab05..e01d5e88f 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc192/Ajc192Tests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc192/Ajc192Tests.java @@ -10,23 +10,22 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc192; +import junit.framework.Test; import org.aspectj.apache.bcel.classfile.JavaClass; import org.aspectj.apache.bcel.classfile.NestHost; import org.aspectj.apache.bcel.classfile.NestMembers; import org.aspectj.testing.XMLBasedAjcTestCase; -import junit.framework.Test; - /** * @author Andy Clement */ public class Ajc192Tests extends XMLBasedAjcTestCase { - public void testITDLambdas() throws Exception { + public void testITDLambdas() { runTest("itd lambdas"); } - public void test11Flags() throws Exception { + public void test11Flags() { runTest("11flags"); } @@ -82,8 +81,6 @@ public class Ajc192Tests extends XMLBasedAjcTestCase { runTest("ptw - privileged same package"); } - // --- - public static Test suite() { return XMLBasedAjcTestCase.loadSuite(Ajc192Tests.class); } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc192/AllTestsAspectJ192.java b/tests/src/test/java/org/aspectj/systemtest/ajc192/AllTestsAspectJ192.java index ef6db6278..c8972ff1c 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc192/AllTestsAspectJ192.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc192/AllTestsAspectJ192.java @@ -17,10 +17,8 @@ public class AllTestsAspectJ192 { public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.2 tests"); - // $JUnit-BEGIN$ suite.addTest(Ajc192Tests.suite()); suite.addTest(SanityTestsJava11.suite()); - // $JUnit-END$ return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc192/SanityTestsJava11.java b/tests/src/test/java/org/aspectj/systemtest/ajc192/SanityTestsJava11.java index e0b9034f8..af00c3ab3 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc192/SanityTestsJava11.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc192/SanityTestsJava11.java @@ -7,11 +7,10 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc192; +import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava11OrLater; - -import junit.framework.Test; /* * Some very trivial tests that help verify things are OK. @@ -20,9 +19,13 @@ import junit.framework.Test; * * @author Andy Clement */ -public class SanityTestsJava11 extends XMLBasedAjcTestCaseForJava11OrLater { +public class SanityTestsJava11 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(11).MAJOR; + public SanityTestsJava11() { + super(11); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1920/Ajc1920TestsJava.java b/tests/src/test/java/org/aspectj/systemtest/ajc1920/Ajc1920TestsJava.java index cc2770412..d00544b23 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1920/Ajc1920TestsJava.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1920/Ajc1920TestsJava.java @@ -8,13 +8,17 @@ package org.aspectj.systemtest.ajc1920; import junit.framework.Test; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava20OrLater; /** * @author Alexander Kriegisch */ -public class Ajc1920TestsJava extends XMLBasedAjcTestCaseForJava20OrLater { +public class Ajc1920TestsJava extends JavaVersionSpecificXMLBasedAjcTestCase { + + public Ajc1920TestsJava() { + super(20); + } public void testDummyJava20() { //runTest("dummy Java 20"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1920/AllTestsAspectJ1920.java b/tests/src/test/java/org/aspectj/systemtest/ajc1920/AllTestsAspectJ1920.java index ae80c49bc..72fc857ab 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1920/AllTestsAspectJ1920.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1920/AllTestsAspectJ1920.java @@ -9,26 +9,29 @@ package org.aspectj.systemtest.ajc1920; import junit.framework.Test; import junit.framework.TestSuite; +import org.aspectj.tools.ant.taskdefs.AjcTask; import org.aspectj.util.LangUtil; /** * @author Alexander Kriegisch */ public class AllTestsAspectJ1920 { + private static final int JAVA_VERSION = 20; public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.20 tests"); suite.addTest(Bugs1920Tests.suite()); - if (LangUtil.isVMGreaterOrEqual(20)) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) { suite.addTest(SanityTestsJava20.suite()); suite.addTest(Ajc1920TestsJava.suite()); } + // Do not run tests using a previous compiler's preview features anymore. They would all fail. - /* - if (LangUtil.isVMGreaterOrEqual(20) && !LangUtil.isVMGreaterOrEqual(21)) { - suite.addTest(Java20PreviewFeaturesTests.suite()); + if (AjcTask.JAVA_VERSION_MAX == JAVA_VERSION) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION) && LangUtil.isVMLessOrEqual(JAVA_VERSION)) { + suite.addTest(Java20PreviewFeaturesTests.suite()); + } } - */ return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1920/Java20PreviewFeaturesTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc1920/Java20PreviewFeaturesTests.java index 1a305bce1..78ea35b88 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1920/Java20PreviewFeaturesTests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1920/Java20PreviewFeaturesTests.java @@ -9,15 +9,19 @@ package org.aspectj.systemtest.ajc1920; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava20Only; /** * @author Alexander Kriegisch */ -public class Java20PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava20Only { +public class Java20PreviewFeaturesTests extends JavaVersionSpecificXMLBasedAjcTestCase { private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(20); + public Java20PreviewFeaturesTests() { + super(20, 20); + } + public void testSwitchPatternMatchingPreview4Java() { runTest("switch pattern matching preview 4 java"); checkVersion("SwitchPatternPreview4OK", classFileVersion.MAJOR, classFileVersion.PREVIEW_MINOR); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1920/SanityTestsJava20.java b/tests/src/test/java/org/aspectj/systemtest/ajc1920/SanityTestsJava20.java index 6cd0fd6b7..cafdff62a 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1920/SanityTestsJava20.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1920/SanityTestsJava20.java @@ -9,8 +9,8 @@ package org.aspectj.systemtest.ajc1920; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava20OrLater; /* * Some very trivial tests that help verify things are OK. @@ -19,10 +19,14 @@ import org.aspectj.testing.XMLBasedAjcTestCaseForJava20OrLater; * * @author Alexander Kriegisch */ -public class SanityTestsJava20 extends XMLBasedAjcTestCaseForJava20OrLater { +public class SanityTestsJava20 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(20).MAJOR; + public SanityTestsJava20() { + super(20); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1921/Ajc1921TestsJava.java b/tests/src/test/java/org/aspectj/systemtest/ajc1921/Ajc1921TestsJava.java index 466135dc2..e221df46e 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1921/Ajc1921TestsJava.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1921/Ajc1921TestsJava.java @@ -9,17 +9,23 @@ package org.aspectj.systemtest.ajc1921; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava21OrLater; /** * @author Alexander Kriegisch */ -public class Ajc1921TestsJava extends XMLBasedAjcTestCaseForJava21OrLater { +public class Ajc1921TestsJava extends JavaVersionSpecificXMLBasedAjcTestCase { + + private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(21); + + public Ajc1921TestsJava() { + super(21); + } public void testSwitchPatternMatchingPreview4Java() { runTest("switch pattern matching preview 4 java"); - checkVersion("SwitchPatternPreview4OK", Constants.ClassFileVersion.of(21).MAJOR, Constants.ClassFileVersion.of(21).MINOR); + checkVersion("SwitchPatternPreview4OK", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testSwitchPatternMatchingPreview4Error() { @@ -28,10 +34,10 @@ public class Ajc1921TestsJava extends XMLBasedAjcTestCaseForJava21OrLater { public void testSwitchPatternMatchingPreview3Aspect() { runTest("switch pattern matching preview 3 aspect"); - checkVersion("SwitchPatternPreview3Aspect", Constants.ClassFileVersion.of(21).MAJOR, Constants.ClassFileVersion.of(21).MINOR); - checkVersion("Application", Constants.ClassFileVersion.of(21).MAJOR, Constants.ClassFileVersion.of(21).MINOR); - checkVersion("Shape", Constants.ClassFileVersion.of(21).MAJOR, Constants.ClassFileVersion.of(21).MINOR); - checkVersion("S", Constants.ClassFileVersion.of(21).MAJOR, Constants.ClassFileVersion.of(21).MINOR); + checkVersion("SwitchPatternPreview3Aspect", classFileVersion.MAJOR, classFileVersion.MINOR); + checkVersion("Application", classFileVersion.MAJOR, classFileVersion.MINOR); + checkVersion("Shape", classFileVersion.MAJOR, classFileVersion.MINOR); + checkVersion("S", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testSwitchPatternMatchingCaseLabelDominatedByPrecedingError() { @@ -54,8 +60,8 @@ public class Ajc1921TestsJava extends XMLBasedAjcTestCaseForJava21OrLater { public void testRecordPatternsPreview1Error() { // https://github.com/eclipse-jdt/eclipse.jdt.core/issues/450 (fixed for preview 2 in Eclipse 2023-03, 4.27) runTest("record patterns error"); - checkVersion("RecordPatternsPreview1Error", Constants.ClassFileVersion.of(21).MAJOR, Constants.ClassFileVersion.of(21).MINOR); - checkVersion("Box", Constants.ClassFileVersion.of(21).MAJOR, Constants.ClassFileVersion.of(21).MINOR); + checkVersion("RecordPatternsPreview1Error", classFileVersion.MAJOR, classFileVersion.MINOR); + checkVersion("Box", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testRecordPatternsPreview1ExhaustivenessOK1() { diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1921/AllTestsAspectJ1921.java b/tests/src/test/java/org/aspectj/systemtest/ajc1921/AllTestsAspectJ1921.java index 56e8b963a..a8166995b 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1921/AllTestsAspectJ1921.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1921/AllTestsAspectJ1921.java @@ -9,6 +9,7 @@ package org.aspectj.systemtest.ajc1921; import junit.framework.Test; import junit.framework.TestSuite; +import org.aspectj.tools.ant.taskdefs.AjcTask; import org.aspectj.util.LangUtil; // AspectJ_JDK_Update @@ -28,18 +29,21 @@ import org.aspectj.util.LangUtil; */ public class AllTestsAspectJ1921 { + private static final int JAVA_VERSION = 21; + public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.21 tests"); suite.addTest(Bugs1921Tests.suite()); - if (LangUtil.isVMGreaterOrEqual(21)) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) { suite.addTest(SanityTestsJava21.suite()); suite.addTest(Ajc1921TestsJava.suite()); } - // AspectJ_JDK_Update + // Do not run tests using a previous compiler's preview features anymore. They would all fail. - // TODO: Comment out the following block when upgrading JDT Core to Java 22 - if (LangUtil.isVMGreaterOrEqual(21) && !LangUtil.isVMGreaterOrEqual(22)) { - suite.addTest(Java21PreviewFeaturesTests.suite()); + if (AjcTask.JAVA_VERSION_MAX == JAVA_VERSION) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION) && LangUtil.isVMLessOrEqual(JAVA_VERSION)) { + suite.addTest(Java21PreviewFeaturesTests.suite()); + } } return suite; } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1921/Java21PreviewFeaturesTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc1921/Java21PreviewFeaturesTests.java index 255583efd..2fd5e8ef8 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1921/Java21PreviewFeaturesTests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1921/Java21PreviewFeaturesTests.java @@ -9,13 +9,17 @@ package org.aspectj.systemtest.ajc1921; import junit.framework.Test; import org.aspectj.systemtest.ajc10x.Ajc10xTests; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava21Only; /** * @author Alexander Kriegisch */ -public class Java21PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava21Only { +public class Java21PreviewFeaturesTests extends JavaVersionSpecificXMLBasedAjcTestCase { + + public Java21PreviewFeaturesTests() { + super(21, 21); + } public void testStringPatterns() { runTest("string patterns"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc1921/SanityTestsJava21.java b/tests/src/test/java/org/aspectj/systemtest/ajc1921/SanityTestsJava21.java index 2f4810e4e..0115abec8 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc1921/SanityTestsJava21.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc1921/SanityTestsJava21.java @@ -9,8 +9,8 @@ package org.aspectj.systemtest.ajc1921; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava21OrLater; /* * Some very trivial tests that help verify things are OK. @@ -19,10 +19,14 @@ import org.aspectj.testing.XMLBasedAjcTestCaseForJava21OrLater; * * @author Alexander Kriegisch */ -public class SanityTestsJava21 extends XMLBasedAjcTestCaseForJava21OrLater { +public class SanityTestsJava21 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(21).MAJOR; + public SanityTestsJava21() { + super(21); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc193/Ajc193Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc193/Ajc193Tests.java index 4f7bd8047..e8d3c5e1c 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc193/Ajc193Tests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc193/Ajc193Tests.java @@ -7,19 +7,21 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc193; -import java.io.File; - +import junit.framework.Test; import org.aspectj.apache.bcel.classfile.JavaClass; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava10OrLater; import org.aspectj.weaver.WeaverStateInfo; -import junit.framework.Test; +import java.io.File; /** * @author Andy Clement */ -public class Ajc193Tests extends XMLBasedAjcTestCaseForJava10OrLater { +public class Ajc193Tests extends JavaVersionSpecificXMLBasedAjcTestCase { + public Ajc193Tests() { + super(10); + } public void testNestedAroundProceed() { runTest("nested around proceed"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc193/AllTestsAspectJ193.java b/tests/src/test/java/org/aspectj/systemtest/ajc193/AllTestsAspectJ193.java index 364136be9..403af7b9a 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc193/AllTestsAspectJ193.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc193/AllTestsAspectJ193.java @@ -12,13 +12,18 @@ package org.aspectj.systemtest.ajc193; import junit.framework.Test; import junit.framework.TestSuite; +import org.aspectj.util.LangUtil; public class AllTestsAspectJ193 { + private static final int JAVA_VERSION = 12; public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.3 tests"); suite.addTest(Ajc193Tests.suite()); - // suite.addTest(Java13Tests.suite()); + // suite.addTest(Java12Tests.suite()); + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) { + suite.addTest(SanityTestsJava12.suite()); + } return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc193/Java13Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc193/Java13Tests.java deleted file mode 100644 index 801d99291..000000000 --- a/tests/src/test/java/org/aspectj/systemtest/ajc193/Java13Tests.java +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2019 Contributors - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt - *******************************************************************************/ -package org.aspectj.systemtest.ajc193; - -import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava13OrLater; - -import junit.framework.Test; - -/** - * @author Andy Clement - */ -public class Java13Tests extends XMLBasedAjcTestCaseForJava13OrLater { - - // --- - - public static Test suite() { - return XMLBasedAjcTestCase.loadSuite(Java13Tests.class); - } - - @Override - protected java.net.URL getSpecFile() { - return getClassResource("ajc193.xml"); - } - -} diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc193/SanityTestsJava12.java b/tests/src/test/java/org/aspectj/systemtest/ajc193/SanityTestsJava12.java new file mode 100644 index 000000000..f3bf166a2 --- /dev/null +++ b/tests/src/test/java/org/aspectj/systemtest/ajc193/SanityTestsJava12.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright (c) 2024 Contributors + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + *******************************************************************************/ +package org.aspectj.systemtest.ajc193; + +import junit.framework.Test; +import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; +import org.aspectj.testing.XMLBasedAjcTestCase; + +/* + * Some very trivial tests that help verify things are OK. + * These are a copy of the earlier Sanity Tests created for 1.6 but these supply the -12 option + * to check code generation and modification with that version specified. + * + * @author Alexander Kriegisch + */ +public class SanityTestsJava12 extends JavaVersionSpecificXMLBasedAjcTestCase { + + public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(12).MAJOR; + + public SanityTestsJava12() { + super(12); + } + + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) + public void testSimpleJava_A() { + runTest("simple - a"); + } + + public void testSimpleJava_B() { + runTest("simple - b"); + } + + public void testSimpleCode_C() { + runTest("simple - c"); + } + + public void testSimpleCode_D() { + runTest("simple - d"); + } + + public void testSimpleCode_E() { + runTest("simple - e"); + } + + public void testSimpleCode_F() { + runTest("simple - f"); + } + + public void testSimpleCode_G() { + runTest("simple - g"); + } + + public void testSimpleCode_H() { + runTest("simple - h", true); + } + + public void testSimpleCode_I() { + runTest("simple - i"); + } + + public void testVersionCorrect1() throws ClassNotFoundException { + runTest("simple - j"); + checkVersion("A", bytecode_version_for_JDK_level, 0); + } + + public void testVersionCorrect2() throws ClassNotFoundException { + runTest("simple - k"); + checkVersion("A", bytecode_version_for_JDK_level, 0); + } + + public void testVersionCorrect4() throws ClassNotFoundException { // check it is 49.0 when -1.5 is specified + runTest("simple - m"); + checkVersion("A", Constants.ClassFileVersion.of(5).MAJOR, 0); + } + + + // /////////////////////////////////////// + public static Test suite() { + return XMLBasedAjcTestCase.loadSuite(SanityTestsJava12.class); + } + + @Override + protected java.net.URL getSpecFile() { + return getClassResource("sanity-tests-12.xml"); + } + +} diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc195/AllTestsAspectJ195.java b/tests/src/test/java/org/aspectj/systemtest/ajc195/AllTestsAspectJ195.java index 092160565..093247b62 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc195/AllTestsAspectJ195.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc195/AllTestsAspectJ195.java @@ -16,11 +16,12 @@ import junit.framework.Test; import junit.framework.TestSuite; public class AllTestsAspectJ195 { + private static final int JAVA_VERSION = 13; public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.5 tests"); suite.addTest(Ajc195Tests.suite()); - if (LangUtil.isVMGreaterOrEqual(13)) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) { suite.addTest(SanityTestsJava13.suite()); } return suite; diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc195/SanityTestsJava13.java b/tests/src/test/java/org/aspectj/systemtest/ajc195/SanityTestsJava13.java index 34901eb00..f90fd3d3e 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc195/SanityTestsJava13.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc195/SanityTestsJava13.java @@ -8,8 +8,8 @@ package org.aspectj.systemtest.ajc195; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava13OrLater; import junit.framework.Test; @@ -20,10 +20,14 @@ import junit.framework.Test; * * @author Andy Clement */ -public class SanityTestsJava13 extends XMLBasedAjcTestCaseForJava13OrLater { +public class SanityTestsJava13 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(13).MAJOR; + public SanityTestsJava13() { + super(13); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java index 5659b2931..60fe9e5ab 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc196/Ajc196Tests.java @@ -7,16 +7,19 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc196; +import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava14OrLater; - -import junit.framework.Test; /** * @author Andy Clement */ -public class Ajc196Tests extends XMLBasedAjcTestCaseForJava14OrLater { +public class Ajc196Tests extends JavaVersionSpecificXMLBasedAjcTestCase { + + public Ajc196Tests() { + super(14); + } public void testNPE_558995() { runTest("early resolution of supporting interfaces"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc196/AllTestsAspectJ196.java b/tests/src/test/java/org/aspectj/systemtest/ajc196/AllTestsAspectJ196.java index 8e19afc14..34d02d8d2 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc196/AllTestsAspectJ196.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc196/AllTestsAspectJ196.java @@ -7,6 +7,7 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc196; +import org.aspectj.tools.ant.taskdefs.AjcTask; import org.aspectj.util.LangUtil; import junit.framework.Test; @@ -16,19 +17,22 @@ import junit.framework.TestSuite; * @author Andy Clement */ public class AllTestsAspectJ196 { + private static final int JAVA_VERSION = 14; public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.6 tests"); - if (LangUtil.isVMGreaterOrEqual(14)) { - suite.addTest(Ajc196Tests.suite()); + //suite.addTest(Bugs196Tests.suite()); + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) { suite.addTest(SanityTestsJava14.suite()); + suite.addTest(Ajc196Tests.suite()); } + // Do not run tests using a previous compiler's preview features anymore. They would all fail. - /* - if (LangUtil.isVMGreaterOrEqual(14) && !LangUtil.isVMGreaterOrEqual(15)) { - suite.addTest(Java14PreviewFeaturesTests.suite()); + if (AjcTask.JAVA_VERSION_MAX == JAVA_VERSION) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION) && LangUtil.isVMLessOrEqual(JAVA_VERSION)) { + suite.addTest(Java14PreviewFeaturesTests.suite()); + } } - */ return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc196/Java14PreviewFeaturesTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc196/Java14PreviewFeaturesTests.java index 24b02101e..0d468f7f7 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc196/Java14PreviewFeaturesTests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc196/Java14PreviewFeaturesTests.java @@ -7,18 +7,21 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc196; +import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava14Only; - -import junit.framework.Test; /** * @author Alexander Kriegisch */ -public class Java14PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava14Only { +public class Java14PreviewFeaturesTests extends JavaVersionSpecificXMLBasedAjcTestCase { private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(14); + public Java14PreviewFeaturesTests() { + super(14, 14); + } + public void testRecords() { runTest("simple record"); checkVersion("Person", classFileVersion.MAJOR, classFileVersion.PREVIEW_MINOR); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc196/SanityTestsJava14.java b/tests/src/test/java/org/aspectj/systemtest/ajc196/SanityTestsJava14.java index 13094e048..6fa8c06bb 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc196/SanityTestsJava14.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc196/SanityTestsJava14.java @@ -7,11 +7,10 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc196; +import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava14OrLater; - -import junit.framework.Test; /* * Some very trivial tests that help verify things are OK. @@ -20,10 +19,14 @@ import junit.framework.Test; * * @author Andy Clement */ -public class SanityTestsJava14 extends XMLBasedAjcTestCaseForJava14OrLater { +public class SanityTestsJava14 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(14).MAJOR; + public SanityTestsJava14() { + super(14); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java index 8a1f794f4..4150ea8b7 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc197/Ajc197TestsJava.java @@ -9,47 +9,53 @@ package org.aspectj.systemtest.ajc197; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava16OrLater; /** * @author Alexander Kriegisch */ -public class Ajc197TestsJava extends XMLBasedAjcTestCaseForJava16OrLater { +public class Ajc197TestsJava extends JavaVersionSpecificXMLBasedAjcTestCase { + + private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(16); + + public Ajc197TestsJava() { + super(16); + } public void testHiddenClass() { runTest("hidden class"); - checkVersion("HiddenClassDemo", Constants.ClassFileVersion.of(16).MAJOR, Constants.ClassFileVersion.of(16).MINOR); + checkVersion("HiddenClassDemo", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testTextBlock1() { runTest("textblock 1"); - checkVersion("Code", Constants.ClassFileVersion.of(16).MAJOR, Constants.ClassFileVersion.of(16).MINOR); + checkVersion("Code", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testTextBlock2() { runTest("textblock 2"); - checkVersion("Code2", Constants.ClassFileVersion.of(16).MAJOR, Constants.ClassFileVersion.of(16).MINOR); + checkVersion("Code2", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testRecords() { runTest("simple record"); - checkVersion("Person", Constants.ClassFileVersion.of(16).MAJOR, Constants.ClassFileVersion.of(16).MINOR); + checkVersion("Person", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testRecords2() { runTest("using a record"); - checkVersion("UsingPersonRecord", Constants.ClassFileVersion.of(16).MAJOR, Constants.ClassFileVersion.of(16).MINOR); + checkVersion("UsingPersonRecord", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testAdvisingRecords() { runTest("advising records"); - checkVersion("TraceRecordComponents", Constants.ClassFileVersion.of(16).MAJOR, Constants.ClassFileVersion.of(16).MINOR); + checkVersion("TraceRecordComponents", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testInstanceofPatterns() { runTest("instanceof patterns"); - checkVersion("Jep305", Constants.ClassFileVersion.of(16).MAJOR, Constants.ClassFileVersion.of(16).MINOR); + checkVersion("Jep305", classFileVersion.MAJOR, classFileVersion.MINOR); } public static Test suite() { diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java index 7feccc2e2..999071a9f 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc197/AllTestsAspectJ197.java @@ -9,6 +9,7 @@ package org.aspectj.systemtest.ajc197; import junit.framework.Test; import junit.framework.TestSuite; +import org.aspectj.tools.ant.taskdefs.AjcTask; import org.aspectj.util.LangUtil; /** @@ -16,21 +17,25 @@ import org.aspectj.util.LangUtil; */ public class AllTestsAspectJ197 { + private static final int JAVA_VERSION = 16; + public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.7 tests"); + //suite.addTest(Bugs197Tests.suite()); if (LangUtil.isVMGreaterOrEqual(15)) { suite.addTest(SanityTestsJava15.suite()); } - if (LangUtil.isVMGreaterOrEqual(16)) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) { suite.addTest(SanityTestsJava16.suite()); suite.addTest(Ajc197TestsJava.suite()); } + // Do not run tests using a previous compiler's preview features anymore. They would all fail. - /* - if (LangUtil.isVMGreaterOrEqual(16) && !LangUtil.isVMGreaterOrEqual(17)) { - suite.addTest(Java16PreviewFeaturesTests.suite()); + if (AjcTask.JAVA_VERSION_MAX == JAVA_VERSION) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION) && LangUtil.isVMLessOrEqual(JAVA_VERSION)) { + suite.addTest(Java16PreviewFeaturesTests.suite()); + } } - */ return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/Java16PreviewFeaturesTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/Java16PreviewFeaturesTests.java index f2c04e08c..7a8a61fd6 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc197/Java16PreviewFeaturesTests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc197/Java16PreviewFeaturesTests.java @@ -9,15 +9,19 @@ package org.aspectj.systemtest.ajc197; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava16Only; /** * @author Alexander Kriegisch */ -public class Java16PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava16Only { +public class Java16PreviewFeaturesTests extends JavaVersionSpecificXMLBasedAjcTestCase { private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(16); + public Java16PreviewFeaturesTests() { + super(16, 16); + } + public void testSealedClassWithLegalSubclasses() { runTest("sealed class with legal subclasses"); checkVersion("Employee", classFileVersion.MAJOR, classFileVersion.PREVIEW_MINOR); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava15.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava15.java index d244ebea7..570b86511 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava15.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava15.java @@ -9,8 +9,8 @@ package org.aspectj.systemtest.ajc197; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava15OrLater; /* * Some very trivial tests that help verify things are OK. @@ -19,10 +19,14 @@ import org.aspectj.testing.XMLBasedAjcTestCaseForJava15OrLater; * * @author Alexander Kriegisch */ -public class SanityTestsJava15 extends XMLBasedAjcTestCaseForJava15OrLater { +public class SanityTestsJava15 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(15).MAJOR; + public SanityTestsJava15() { + super(15); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java b/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java index 1e42ce6d7..d86264a91 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc197/SanityTestsJava16.java @@ -9,8 +9,8 @@ package org.aspectj.systemtest.ajc197; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava16OrLater; /* * Some very trivial tests that help verify things are OK. @@ -19,10 +19,14 @@ import org.aspectj.testing.XMLBasedAjcTestCaseForJava16OrLater; * * @author Alexander Kriegisch */ -public class SanityTestsJava16 extends XMLBasedAjcTestCaseForJava16OrLater { +public class SanityTestsJava16 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(16).MAJOR; + public SanityTestsJava16() { + super(16); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc198/Ajc198TestsJava.java b/tests/src/test/java/org/aspectj/systemtest/ajc198/Ajc198TestsJava.java index 4df003921..b8f28f56e 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc198/Ajc198TestsJava.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc198/Ajc198TestsJava.java @@ -9,28 +9,34 @@ package org.aspectj.systemtest.ajc198; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava17OrLater; /** * @author Alexander Kriegisch */ -public class Ajc198TestsJava extends XMLBasedAjcTestCaseForJava17OrLater { +public class Ajc198TestsJava extends JavaVersionSpecificXMLBasedAjcTestCase { + + private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(17); + + public Ajc198TestsJava() { + super(17); + } public void testSealedClassWithLegalSubclasses() { runTest("sealed class with legal subclasses"); - checkVersion("Employee", Constants.ClassFileVersion.of(17).MAJOR, Constants.ClassFileVersion.of(17).MINOR); - checkVersion("Manager", Constants.ClassFileVersion.of(17).MAJOR, Constants.ClassFileVersion.of(17).MINOR); + checkVersion("Employee", classFileVersion.MAJOR, classFileVersion.MINOR); + checkVersion("Manager", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testSealedClassWithIllegalSubclass() { runTest("sealed class with illegal subclass"); - checkVersion("Person", Constants.ClassFileVersion.of(17).MAJOR, Constants.ClassFileVersion.of(17).MINOR); + checkVersion("Person", classFileVersion.MAJOR, classFileVersion.MINOR); } public void testWeaveSealedClass() { runTest("weave sealed class"); - checkVersion("PersonAspect", Constants.ClassFileVersion.of(17).MAJOR, Constants.ClassFileVersion.of(17).MINOR); + checkVersion("PersonAspect", classFileVersion.MAJOR, classFileVersion.MINOR); } public static Test suite() { diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc198/AllTestsAspectJ198.java b/tests/src/test/java/org/aspectj/systemtest/ajc198/AllTestsAspectJ198.java index 8e84af9fd..12c80cd10 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc198/AllTestsAspectJ198.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc198/AllTestsAspectJ198.java @@ -9,6 +9,7 @@ package org.aspectj.systemtest.ajc198; import junit.framework.Test; import junit.framework.TestSuite; +import org.aspectj.tools.ant.taskdefs.AjcTask; import org.aspectj.util.LangUtil; /** @@ -16,25 +17,28 @@ import org.aspectj.util.LangUtil; */ public class AllTestsAspectJ198 { + private static final int JAVA_VERSION = 17; + public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.8 tests"); - suite.addTest(Bugs198Tests.suite()); + suite.addTest(Bugs198Tests.suite()); if (LangUtil.isVMGreaterOrEqual(9)) { suite.addTest(CompileWithReleaseTests.suite()); } if (LangUtil.isVMGreaterOrEqual(11)) { suite.addTest(Bugs198Java11Tests.suite()); } - if (LangUtil.isVMGreaterOrEqual(17)) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) { suite.addTest(SanityTestsJava17.suite()); suite.addTest(Ajc198TestsJava.suite()); } + // Do not run tests using a previous compiler's preview features anymore. They would all fail. - /* - if (LangUtil.isVMGreaterOrEqual(17) && !LangUtil.isVMGreaterOrEqual(18)) { - suite.addTest(Java17PreviewFeaturesTests.suite()); + if (AjcTask.JAVA_VERSION_MAX == JAVA_VERSION) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION) && LangUtil.isVMLessOrEqual(JAVA_VERSION)) { + suite.addTest(Java17PreviewFeaturesTests.suite()); + } } - */ return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Java11Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Java11Tests.java index 7e99b7d9f..bbf224e29 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Java11Tests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Java11Tests.java @@ -8,15 +8,18 @@ package org.aspectj.systemtest.ajc198; import junit.framework.Test; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava11OrLater; /** * @author Alexander Kriegisch */ -public class Bugs198Java11Tests extends XMLBasedAjcTestCaseForJava11OrLater { +public class Bugs198Java11Tests extends JavaVersionSpecificXMLBasedAjcTestCase { + public Bugs198Java11Tests() { + super(11); + } - public void testGitHub_68() { + public void testGitHub_68() { runTest("correctly weave code using constant-dynamic"); } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc198/CompileWithReleaseTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc198/CompileWithReleaseTests.java index b0fb2745b..fb21de1fb 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc198/CompileWithReleaseTests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc198/CompileWithReleaseTests.java @@ -11,15 +11,18 @@ import junit.framework.Test; import org.aspectj.apache.bcel.Constants; import org.aspectj.apache.bcel.classfile.JavaClass; import org.aspectj.apache.bcel.classfile.Method; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava9OrLater; import java.util.Objects; /** * @author Alexander Kriegisch */ -public class CompileWithReleaseTests extends XMLBasedAjcTestCaseForJava9OrLater { +public class CompileWithReleaseTests extends JavaVersionSpecificXMLBasedAjcTestCase { + public CompileWithReleaseTests() { + super(9); + } /** * In order to avoid a complicated test involving two different JDKs (9+ for compilation, 8 for runtime), we inspect diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc198/Java17PreviewFeaturesTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc198/Java17PreviewFeaturesTests.java index abd9213f4..51f158f5e 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc198/Java17PreviewFeaturesTests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc198/Java17PreviewFeaturesTests.java @@ -9,15 +9,19 @@ package org.aspectj.systemtest.ajc198; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava17Only; /** * @author Alexander Kriegisch */ -public class Java17PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava17Only { +public class Java17PreviewFeaturesTests extends JavaVersionSpecificXMLBasedAjcTestCase { private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(17); + public Java17PreviewFeaturesTests() { + super(17, 17); + } + public void testSwitchPatternMatchingCaseLabelDominatedByPrecedingError() { runTest("switch pattern matching error"); } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc198/SanityTestsJava17.java b/tests/src/test/java/org/aspectj/systemtest/ajc198/SanityTestsJava17.java index 10363e965..0bfb33c7b 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc198/SanityTestsJava17.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc198/SanityTestsJava17.java @@ -9,8 +9,8 @@ package org.aspectj.systemtest.ajc198; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava17OrLater; /* * Some very trivial tests that help verify things are OK. @@ -19,10 +19,14 @@ import org.aspectj.testing.XMLBasedAjcTestCaseForJava17OrLater; * * @author Alexander Kriegisch */ -public class SanityTestsJava17 extends XMLBasedAjcTestCaseForJava17OrLater { +public class SanityTestsJava17 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(17).MAJOR; + public SanityTestsJava17() { + super(17); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc199/Ajc199TestsJava.java b/tests/src/test/java/org/aspectj/systemtest/ajc199/Ajc199TestsJava.java index 2b3ad813a..6f89edf8d 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc199/Ajc199TestsJava.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc199/Ajc199TestsJava.java @@ -8,13 +8,16 @@ package org.aspectj.systemtest.ajc199; import junit.framework.Test; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava18OrLater; /** * @author Alexander Kriegisch */ -public class Ajc199TestsJava extends XMLBasedAjcTestCaseForJava18OrLater { +public class Ajc199TestsJava extends JavaVersionSpecificXMLBasedAjcTestCase { + public Ajc199TestsJava() { + super(18); + } public void testDummyJava18() { //runTest("dummy Java 18"); diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc199/AllTestsAspectJ199.java b/tests/src/test/java/org/aspectj/systemtest/ajc199/AllTestsAspectJ199.java index 724fcdf62..76289ed44 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc199/AllTestsAspectJ199.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc199/AllTestsAspectJ199.java @@ -9,26 +9,29 @@ package org.aspectj.systemtest.ajc199; import junit.framework.Test; import junit.framework.TestSuite; +import org.aspectj.tools.ant.taskdefs.AjcTask; import org.aspectj.util.LangUtil; /** * @author Alexander Kriegisch */ public class AllTestsAspectJ199 { + private static final int JAVA_VERSION = 18; public static Test suite() { TestSuite suite = new TestSuite("AspectJ 1.9.9 tests"); - suite.addTest(Bugs199Tests.suite()); - if (LangUtil.isVMGreaterOrEqual(18)) { + suite.addTest(Bugs199Tests.suite()); + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION)) { 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.isVMGreaterOrEqual(18) && !LangUtil.isVMGreaterOrEqual(19)) { - suite.addTest(Java18PreviewFeaturesTests.suite()); + if (AjcTask.JAVA_VERSION_MAX == JAVA_VERSION) { + if (LangUtil.isVMGreaterOrEqual(JAVA_VERSION) && LangUtil.isVMLessOrEqual(JAVA_VERSION)) { + suite.addTest(Java18PreviewFeaturesTests.suite()); + } } - */ return suite; } } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc199/Java18PreviewFeaturesTests.java b/tests/src/test/java/org/aspectj/systemtest/ajc199/Java18PreviewFeaturesTests.java index 078a47671..d7f06b14a 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc199/Java18PreviewFeaturesTests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc199/Java18PreviewFeaturesTests.java @@ -9,15 +9,19 @@ package org.aspectj.systemtest.ajc199; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava18Only; /** * @author Alexander Kriegisch */ -public class Java18PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava18Only { +public class Java18PreviewFeaturesTests extends JavaVersionSpecificXMLBasedAjcTestCase { private static final Constants.ClassFileVersion classFileVersion = Constants.ClassFileVersion.of(18); + public Java18PreviewFeaturesTests() { + super(18, 18); + } + public void testSwitchPatternMatchingCaseLabelDominatedByPrecedingError() { runTest("switch pattern matching error"); } diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc199/SanityTestsJava18.java b/tests/src/test/java/org/aspectj/systemtest/ajc199/SanityTestsJava18.java index e2d308ab5..85608cb07 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc199/SanityTestsJava18.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc199/SanityTestsJava18.java @@ -9,8 +9,8 @@ package org.aspectj.systemtest.ajc199; import junit.framework.Test; import org.aspectj.apache.bcel.Constants; +import org.aspectj.testing.JavaVersionSpecificXMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase; -import org.aspectj.testing.XMLBasedAjcTestCaseForJava18OrLater; /* * Some very trivial tests that help verify things are OK. @@ -19,10 +19,14 @@ import org.aspectj.testing.XMLBasedAjcTestCaseForJava18OrLater; * * @author Alexander Kriegisch */ -public class SanityTestsJava18 extends XMLBasedAjcTestCaseForJava18OrLater { +public class SanityTestsJava18 extends JavaVersionSpecificXMLBasedAjcTestCase { public static final int bytecode_version_for_JDK_level = Constants.ClassFileVersion.of(18).MAJOR; + public SanityTestsJava18() { + super(18); + } + // Incredibly trivial test programs that check the compiler works at all (these are easy-ish to debug) public void testSimpleJava_A() { runTest("simple - a"); diff --git a/tests/src/test/resources/org/aspectj/systemtest/ajc193/sanity-tests-12.xml b/tests/src/test/resources/org/aspectj/systemtest/ajc193/sanity-tests-12.xml new file mode 100644 index 000000000..b91cce256 --- /dev/null +++ b/tests/src/test/resources/org/aspectj/systemtest/ajc193/sanity-tests-12.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/util/src/main/java/org/aspectj/util/LangUtil.java b/util/src/main/java/org/aspectj/util/LangUtil.java index baf8d440e..f686cd1a3 100644 --- a/util/src/main/java/org/aspectj/util/LangUtil.java +++ b/util/src/main/java/org/aspectj/util/LangUtil.java @@ -115,7 +115,15 @@ public class LangUtil { } public static boolean isVMGreaterOrEqual(double javaVersion) { - return javaVersion <= vmVersion; + return vmVersion >= javaVersion; + } + + public static boolean isVMLessOrEqual(int javaVersion) { + return isVMLessOrEqual((double) javaVersion); + } + + public static boolean isVMLessOrEqual(double javaVersion) { + return vmVersion <= javaVersion; } /** -- 2.39.5