diff options
author | Alexander Kriegisch <Alexander@Kriegisch.name> | 2022-02-23 21:48:04 +0700 |
---|---|---|
committer | Alexander Kriegisch <Alexander@Kriegisch.name> | 2022-02-23 21:48:04 +0700 |
commit | 0fb70c99cfc6432ceb8357f211722ca0be2dc9c4 (patch) | |
tree | f31833d8edd43ce50743ed047a3e8cc1b2763825 /tests/src/test/java | |
parent | 133685a5429967aca56f24ddf667e718d2f90097 (diff) | |
download | aspectj-0fb70c99cfc6432ceb8357f211722ca0be2dc9c4.tar.gz aspectj-0fb70c99cfc6432ceb8357f211722ca0be2dc9c4.zip |
Regression test for #125: Bugs198Tests.testGitHub_125
This test fails when run against AspectJ 1.9.8 with JDT Core 1.9.8.RC3.
It passes when using the latest JDT Core 1.9.9-SNAPSHOT. It sets system
property 'org.aspectj.weaver.openarchives=20', provoking open classpath
JAR file exhaustion when compiling a simple class with AJC, i.e. JARs
are being forcibly closed and automatically re-opened, as soon as they
are needed. Before the JDT Core bugfix, this test causes:
java.lang.NullPointerException
at ....compiler.batch.ClasspathJmod.getModulesDeclaringPackage
With the bugfix incorporated into AspectJ Tools, the problem is gone.
Note: New test dependency 'io.github.bmuskalla:scoped-system-properties'
helps to test compilation with the temporarily changed global system
property in isolation, saving the environment in a thread-local
variable and later cleanly restoring the original values again. If we
ever switch to parallel test execution, this would otherwise influence
other tests and potentially cause weird side effects. Better safe than
sorry.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'tests/src/test/java')
-rw-r--r-- | tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java index 5ca8619fb..7982ec630 100644 --- a/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java +++ b/tests/src/test/java/org/aspectj/systemtest/ajc198/Bugs198Tests.java @@ -7,6 +7,8 @@ *******************************************************************************/ package org.aspectj.systemtest.ajc198; +import io.bmuskalla.system.properties.PropertyEnvironment; +import io.bmuskalla.system.properties.ScopedSystemProperties; import junit.framework.Test; import org.aspectj.testing.XMLBasedAjcTestCase; @@ -15,9 +17,9 @@ import org.aspectj.testing.XMLBasedAjcTestCase; */ public class Bugs198Tests extends XMLBasedAjcTestCase { - public void testGitHub_105() { - runTest("ITD annotation with mandatory parameter via aspectpath"); - } + public void testGitHub_105() { + runTest("ITD annotation with mandatory parameter via aspectpath"); + } public void testAnnotationStyleSpecialIfClauses() { runTest("annotation style A"); @@ -39,6 +41,13 @@ public class Bugs198Tests extends XMLBasedAjcTestCase { runTest("annotation style negated if"); } + public void testGitHub_125() { + try (PropertyEnvironment env = ScopedSystemProperties.newPropertyEnvironment()) { + env.setProperty("org.aspectj.weaver.openarchives", "20"); + runTest("compiler can re-open closed JARs"); + } + } + public static Test suite() { return XMLBasedAjcTestCase.loadSuite(Bugs198Tests.class); } |