summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndy Clement <andrew.clement@gmail.com>2013-01-21 10:46:15 -0800
committerAndy Clement <andrew.clement@gmail.com>2013-01-21 10:46:15 -0800
commit96ebaaed65fe5d507cae3d56126d76f217a9f13a (patch)
tree38321d9e9b8417f452434752a97c6e46fdbeabfa /tests
parentefef2f31fe1b535e156332909d3e5ef47ab4a1d9 (diff)
downloadaspectj-96ebaaed65fe5d507cae3d56126d76f217a9f13a.tar.gz
aspectj-96ebaaed65fe5d507cae3d56126d76f217a9f13a.zip
398588 fix
Diffstat (limited to 'tests')
-rw-r--r--tests/bugs172/pr398588/Anno.java7
-rw-r--r--tests/bugs172/pr398588/Anno2.java7
-rw-r--r--tests/bugs172/pr398588/AspectA.java5
-rw-r--r--tests/bugs172/pr398588/AspectB.java3
-rw-r--r--tests/bugs172/pr398588/AspectC.java5
-rw-r--r--tests/bugs172/pr398588/AspectD.java5
-rw-r--r--tests/bugs172/pr398588/Blah.java6
-rw-r--r--tests/bugs172/pr398588/Code.java10
-rw-r--r--tests/bugs172/pr398588/Code2.java11
-rw-r--r--tests/bugs172/pr398588/META-INF/aop.xml9
-rw-r--r--tests/src/org/aspectj/systemtest/ajc172/Ajc172Tests.java27
-rw-r--r--tests/src/org/aspectj/systemtest/ajc172/ajc172.xml34
12 files changed, 118 insertions, 11 deletions
diff --git a/tests/bugs172/pr398588/Anno.java b/tests/bugs172/pr398588/Anno.java
new file mode 100644
index 000000000..f298cf761
--- /dev/null
+++ b/tests/bugs172/pr398588/Anno.java
@@ -0,0 +1,7 @@
+package a.b.c;
+
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Anno {
+}
diff --git a/tests/bugs172/pr398588/Anno2.java b/tests/bugs172/pr398588/Anno2.java
new file mode 100644
index 000000000..16abf0957
--- /dev/null
+++ b/tests/bugs172/pr398588/Anno2.java
@@ -0,0 +1,7 @@
+package a.b.c;
+
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Anno2 {
+}
diff --git a/tests/bugs172/pr398588/AspectA.java b/tests/bugs172/pr398588/AspectA.java
new file mode 100644
index 000000000..95919fa8f
--- /dev/null
+++ b/tests/bugs172/pr398588/AspectA.java
@@ -0,0 +1,5 @@
+import a.b.c.Anno;
+
+public aspect AspectA {
+ before(): execution(@Anno * *(..)) {System.out.println("A");}
+}
diff --git a/tests/bugs172/pr398588/AspectB.java b/tests/bugs172/pr398588/AspectB.java
new file mode 100644
index 000000000..6f6ac8e62
--- /dev/null
+++ b/tests/bugs172/pr398588/AspectB.java
@@ -0,0 +1,3 @@
+public aspect AspectB {
+ before():staticinitialization(!Aspect*) { System.out.println("staticinitialization");}
+}
diff --git a/tests/bugs172/pr398588/AspectC.java b/tests/bugs172/pr398588/AspectC.java
new file mode 100644
index 000000000..143cd974e
--- /dev/null
+++ b/tests/bugs172/pr398588/AspectC.java
@@ -0,0 +1,5 @@
+import a.b.c.Blah;
+
+public aspect AspectC {
+ before(): execution(@Blah * *(..)) {System.out.println("C");}
+}
diff --git a/tests/bugs172/pr398588/AspectD.java b/tests/bugs172/pr398588/AspectD.java
new file mode 100644
index 000000000..5c14845ee
--- /dev/null
+++ b/tests/bugs172/pr398588/AspectD.java
@@ -0,0 +1,5 @@
+import a.b.c.Anno2;
+
+public aspect AspectD {
+ before(): execution(@Anno2 * *(..)) {System.out.println("D");}
+}
diff --git a/tests/bugs172/pr398588/Blah.java b/tests/bugs172/pr398588/Blah.java
new file mode 100644
index 000000000..6288a2734
--- /dev/null
+++ b/tests/bugs172/pr398588/Blah.java
@@ -0,0 +1,6 @@
+package a.b.c;
+
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Blah {}
diff --git a/tests/bugs172/pr398588/Code.java b/tests/bugs172/pr398588/Code.java
new file mode 100644
index 000000000..a11192728
--- /dev/null
+++ b/tests/bugs172/pr398588/Code.java
@@ -0,0 +1,10 @@
+import java.lang.annotation.*;
+import a.b.c.Blah;
+
+@Blah
+public class Code {
+ @Blah
+ public static void main(String[] argv) {
+ System.out.println("abcde");
+ }
+}
diff --git a/tests/bugs172/pr398588/Code2.java b/tests/bugs172/pr398588/Code2.java
new file mode 100644
index 000000000..bb48df62a
--- /dev/null
+++ b/tests/bugs172/pr398588/Code2.java
@@ -0,0 +1,11 @@
+import java.lang.annotation.*;
+import a.b.c.*;
+
+@Anno
+public class Code2 {
+ @Anno
+ public static void main(String[] argv) {
+ System.out.println("abcde");
+ }
+}
+
diff --git a/tests/bugs172/pr398588/META-INF/aop.xml b/tests/bugs172/pr398588/META-INF/aop.xml
new file mode 100644
index 000000000..a1157bb15
--- /dev/null
+++ b/tests/bugs172/pr398588/META-INF/aop.xml
@@ -0,0 +1,9 @@
+<aspectj>
+ <aspects>
+ <aspect name="AspectA" requires="a.b.c.Anno"/>
+ <aspect name="AspectB"/>
+ <aspect name="AspectC" requires="a.b.c.Blah"/>
+ <aspect name="AspectD" requires="a.b.c.Anno2"/>
+ </aspects>
+ <weaver options="-showWeaveInfo -verbose"/>
+</aspectj>
diff --git a/tests/src/org/aspectj/systemtest/ajc172/Ajc172Tests.java b/tests/src/org/aspectj/systemtest/ajc172/Ajc172Tests.java
index 88094cba6..292efcbee 100644
--- a/tests/src/org/aspectj/systemtest/ajc172/Ajc172Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc172/Ajc172Tests.java
@@ -18,13 +18,17 @@ import org.aspectj.testing.XMLBasedAjcTestCase;
/**
* @author Andy Clement
- */
+ */
public class Ajc172Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
-
+
+ public void testOptionalAspects_pr398588() {
+ runTest("optional aspects");
+ }
+
public void testInconsistentClassFile_pr389750() {
runTest("inconsistent class file");
}
-
+
public void testInconsistentClassFile_pr389750_2() {
runTest("inconsistent class file 2");
}
@@ -44,13 +48,16 @@ public class Ajc172Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void testAnnotationValueError_pr389752_2() {
runTest("annotation value error 2");
}
-
- // this needs some cleverness to fix... the annotation value is parsed as a string and then not checked
- // to see if the user is accidentally supplying, for example, an enum value. Due to the use of strings, it
- // is hard to check. The verification code might go here: WildAnnotationTypePattern, line 205 (the string case)
-// public void testAnnotationValueError_pr389752_3() {
-// runTest("annotation value error 3");
-// }
+
+ // this needs some cleverness to fix... the annotation value is parsed as a
+ // string and then not checked
+ // to see if the user is accidentally supplying, for example, an enum value.
+ // Due to the use of strings, it
+ // is hard to check. The verification code might go here:
+ // WildAnnotationTypePattern, line 205 (the string case)
+ // public void testAnnotationValueError_pr389752_3() {
+ // runTest("annotation value error 3");
+ // }
// ---
diff --git a/tests/src/org/aspectj/systemtest/ajc172/ajc172.xml b/tests/src/org/aspectj/systemtest/ajc172/ajc172.xml
index d6a2897ad..81217b60f 100644
--- a/tests/src/org/aspectj/systemtest/ajc172/ajc172.xml
+++ b/tests/src/org/aspectj/systemtest/ajc172/ajc172.xml
@@ -1,7 +1,39 @@
<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[]>
<suite>
-
+ <ajc-test dir="bugs172/pr398588" title="optional aspects">
+ <compile files="Anno.java Anno2.java" outjar="anno.jar" options="-1.5"/>
+ <compile files="AspectA.java" classpath="anno.jar" outjar="aspect.jar" options="-Xlint:ignore -1.5"/>
+ <compile files="AspectB.java" outjar="aspect2.jar" options="-Xlint:ignore -1.5"/>
+ <compile files="Code.java Blah.java" classpath="code.jar;aspect.jar;aspect2.jar" options="-1.5"/>
+ <compile files="AspectC.java" classpath="$sandbox" outjar="aspect3.jar" options="-Xlint:ignore -1.5"/>
+ <compile files="AspectD.java" classpath="anno.jar" outjar="aspect4.jar" options="-Xlint:ignore -1.5"/>
+
+ <file deletefile="anno.jar"/>
+ <run class="Code" ltw="META-INF/aop.xml" classpath=".;aspect.jar;aspect2.jar;aspectj3.jar;aspect4.jar">
+ <stderr>
+ <line text="AspectJ Weaver Version"/>
+ <line text="register classloader"/>
+ <line text="using configuration"/>
+ <line text="register aspect AspectA"/>
+ <line text="deactivating aspect"/>
+ <line text="register aspect AspectB"/>
+ <line text="register aspect AspectC"/>
+ <line text="register aspect AspectD"/>
+ <line text="deactivating aspect 'AspectD' as it requires type 'a.b.c.Anno2' which cannot be found on the classpath"/>
+ <line text="Join point 'method-execution(void Code.main(java.lang.String[]))' in Type 'Code' (Code.java:7) advised by before advice from 'AspectC'"/>
+ <line text="Join point 'staticinitialization(void Code.&lt;clinit&gt;())' in Type 'Code' (Code.java) advised by before advice from 'AspectB'"/>
+ <line text="processing reweavable"/>
+ <line text="processing reweavable"/>
+ </stderr>
+ <stdout>
+ <line text="staticinitialization"/>
+ <line text="C"/>
+ <line text="abcde"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
<ajc-test dir="bugs172/pr389750" title="inconsistent class file">
<compile files="Code.aj" options="-1.5">
</compile>