aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kriegisch <Alexander@Kriegisch.name>2023-08-22 07:54:19 +0700
committerAlexander Kriegisch <Alexander@Kriegisch.name>2023-08-22 07:57:02 +0700
commit2af1b06b6a9439109520b249b5e44dfc1375c199 (patch)
treef4fe949ae43f661c744b731d903f5c601d9d6183
parent41849751a83203a89d8cc982951887ee2ffec9c6 (diff)
downloadaspectj-2af1b06b6a9439109520b249b5e44dfc1375c199.tar.gz
aspectj-2af1b06b6a9439109520b249b5e44dfc1375c199.zip
Improve bridge method test, bootstrapping ASM usage
Instead of using a pre-generated JAR, the source code generating the class with reordered methods (bridge method first) is now compiled directly before usage. This is possible, because in the previous commit ASM was put on the Ajc classpath for tests. Relates to #256. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
-rw-r--r--tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java7
-rw-r--r--tests/bugs1921/gh_spring_27761/JpaRepository_bridge_first.jarbin456 -> 0 bytes
-rw-r--r--tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml7
3 files changed, 11 insertions, 3 deletions
diff --git a/tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java b/tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java
index a007abe96..b70330bff 100644
--- a/tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java
+++ b/tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java
@@ -3,12 +3,15 @@ import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
+import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-class JpaRepositoryDump implements Opcodes {
+public class JpaRepositoryDump implements Opcodes {
public static void main(String[] args) throws IOException {
- try (FileOutputStream outputStream = new FileOutputStream("JpaRepository.class")) {
+ // Write class file to test sandbox directory
+ String classFile = args[0] + File.separator + "JpaRepository.class";
+ try (FileOutputStream outputStream = new FileOutputStream(classFile)) {
outputStream.write(dump());
}
}
diff --git a/tests/bugs1921/gh_spring_27761/JpaRepository_bridge_first.jar b/tests/bugs1921/gh_spring_27761/JpaRepository_bridge_first.jar
deleted file mode 100644
index 47aa5c053..000000000
--- a/tests/bugs1921/gh_spring_27761/JpaRepository_bridge_first.jar
+++ /dev/null
Binary files differ
diff --git a/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml b/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml
index db47e073d..89c9b5f41 100644
--- a/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml
+++ b/tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml
@@ -420,7 +420,12 @@
<!-- https://github.com/spring-projects/spring-framework/issues/27761 -->
<ajc-test dir="bugs1921/gh_spring_27761" vm="8" title="do not match bridge methods">
- <compile files="RepositoryAspect.aj" inpath="JpaRepository_bridge_first.jar" options="-8"/>
+ <!-- (1) Use ASM to generate JpaRepository class with reordered methods -->
+ <compile files="JpaRepositoryDump.java" options="-8"/>
+ <run class="JpaRepositoryDump" options="$sandbox"/>
+ <file deletefile="JpaRepositoryDump.class"/>
+ <!-- (2) Use AJC to compile the remaining classes and run the test -->
+ <compile files="RepositoryAspect.aj" options="-8"/>
<run class="RepositoryAspect">
<stdout>
<line text="execution(List RepositoryImpl.saveAll(Iterable))"/>