aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/bugs/pointcutdoctor-bug193065/Aspect.aj18
-rw-r--r--tests/bugs/pointcutdoctor-bug193065/Bar.java6
-rw-r--r--tests/bugs/pointcutdoctor-bug193065/Foo.java9
-rw-r--r--tests/src/org/aspectj/systemtest/ajc154/AllTestsAspectJ154.java2
-rw-r--r--tests/src/org/aspectj/systemtest/ajc154/CustomMungerExtensionTest.java124
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java1
6 files changed, 160 insertions, 0 deletions
diff --git a/tests/bugs/pointcutdoctor-bug193065/Aspect.aj b/tests/bugs/pointcutdoctor-bug193065/Aspect.aj
new file mode 100644
index 000000000..60766b74f
--- /dev/null
+++ b/tests/bugs/pointcutdoctor-bug193065/Aspect.aj
@@ -0,0 +1,18 @@
+
+public aspect Aspect {
+ //:method-call(void Foo.method1())=real
+ //:(virtual) method-call(void Foo.method2())=virtual
+ pointcut calls(): call(* Foo.*(..));
+
+ //:(virtual) method-call(void Bar.bar())=virtual
+ pointcut callBar():call(* Bar.*(..));
+
+ //:method-call(void Foo.method1())=real
+ //:(virtual) method-call(void Foo.method2())=virtual
+ pointcut callsWithin(): call(* Foo.*(..)) && within(Bar);
+
+ //:method-call(void Foo.method1())=real
+ //:(virtual) method-call(void Foo.method2())=virtual
+ pointcut callsWithincode(): call(* Foo.*(..))&&withincode(* Bar.*(..));
+
+}
diff --git a/tests/bugs/pointcutdoctor-bug193065/Bar.java b/tests/bugs/pointcutdoctor-bug193065/Bar.java
new file mode 100644
index 000000000..6cad1511f
--- /dev/null
+++ b/tests/bugs/pointcutdoctor-bug193065/Bar.java
@@ -0,0 +1,6 @@
+public class Bar {
+ public void bar() {
+ Foo f = new Foo();
+ f.method1();
+ }
+}
diff --git a/tests/bugs/pointcutdoctor-bug193065/Foo.java b/tests/bugs/pointcutdoctor-bug193065/Foo.java
new file mode 100644
index 000000000..e49e33e7c
--- /dev/null
+++ b/tests/bugs/pointcutdoctor-bug193065/Foo.java
@@ -0,0 +1,9 @@
+public class Foo {
+ public void method1() {
+
+ }
+
+ public void method2() {
+
+ }
+}
diff --git a/tests/src/org/aspectj/systemtest/ajc154/AllTestsAspectJ154.java b/tests/src/org/aspectj/systemtest/ajc154/AllTestsAspectJ154.java
index 71f6d1820..751ceeef1 100644
--- a/tests/src/org/aspectj/systemtest/ajc154/AllTestsAspectJ154.java
+++ b/tests/src/org/aspectj/systemtest/ajc154/AllTestsAspectJ154.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.aspectj.systemtest.ajc154;
+
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -19,6 +20,7 @@ public class AllTestsAspectJ154 {
TestSuite suite = new TestSuite("AspectJ 1.5.4 tests");
//$JUnit-BEGIN$
suite.addTest(Ajc154Tests.suite());
+ //suite.addTestSuite(CustomMungerExtensionTest.class);
//$JUnit-END$
return suite;
}
diff --git a/tests/src/org/aspectj/systemtest/ajc154/CustomMungerExtensionTest.java b/tests/src/org/aspectj/systemtest/ajc154/CustomMungerExtensionTest.java
new file mode 100644
index 000000000..89fcad90b
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc154/CustomMungerExtensionTest.java
@@ -0,0 +1,124 @@
+/* *******************************************************************
+ * Copyright (c) 2007 Contributors
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Linton Ye https://bugs.eclipse.org/bugs/show_bug.cgi?id=193065
+ * ******************************************************************/
+
+package org.aspectj.systemtest.ajc154;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.aspectj.ajde.core.AjCompiler;
+import org.aspectj.bridge.ISourceLocation;
+import org.aspectj.systemtest.incremental.tools.AjdeInteractionTestbed;
+import org.aspectj.weaver.Advice;
+import org.aspectj.weaver.Checker;
+import org.aspectj.weaver.ConcreteTypeMunger;
+import org.aspectj.weaver.CustomMungerFactory;
+import org.aspectj.weaver.Member;
+import org.aspectj.weaver.ResolvedType;
+import org.aspectj.weaver.ResolvedTypeMunger;
+import org.aspectj.weaver.Shadow;
+import org.aspectj.weaver.ShadowMunger;
+import org.aspectj.weaver.World;
+import org.aspectj.weaver.AjAttribute.AdviceAttribute;
+import org.aspectj.weaver.patterns.DeclareErrorOrWarning;
+import org.aspectj.weaver.patterns.IfPointcut;
+import org.aspectj.weaver.patterns.Pointcut;
+
+public class CustomMungerExtensionTest extends AjdeInteractionTestbed {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ sandboxDir = new File(".");
+ }
+
+ public void testExtension() {
+ String testFileDir = "bugs/pointcutdoctor-bug193065";
+ AjCompiler compiler = getCompilerForProjectWithName(testFileDir);
+ compiler.setCustomMungerFactory(new DumbCustomMungerFactory());
+
+ doBuild(testFileDir);
+
+ CustomMungerFactory factory = (CustomMungerFactory)compiler.getCustomMungerFactory();
+ assertTrue(factory.getAllCreatedCustomShadowMungers().size()>0);
+ for (Iterator i = factory.getAllCreatedCustomShadowMungers().iterator(); i.hasNext();)
+ assertTrue(((DumbShadowMunger)i.next()).called);
+
+ assertTrue(factory.getAllCreatedCustomTypeMungers().size()>0);
+ for (Iterator i = factory.getAllCreatedCustomTypeMungers().iterator(); i.hasNext();)
+ assertTrue(((DumbTypeMunger)i.next()).called);
+ }
+
+ class DumbCustomMungerFactory implements CustomMungerFactory {
+ Collection allShadowMungers = new ArrayList();
+ Collection allTypeMungers = new ArrayList();
+ public Collection createCustomShadowMungers(ResolvedType aspectType) {
+ List/* ShadowMunger */ mungers = new ArrayList/*ShadowMunger*/();
+ Pointcut pointcut = new IfPointcut("abc");
+ mungers.add(new DumbShadowMunger(new DeclareErrorOrWarning(false, pointcut, "")));
+ allShadowMungers.addAll(mungers);
+ return mungers;
+ }
+
+ public Collection createCustomTypeMungers(ResolvedType aspectType) {
+ List/*ConcreteTypeMunger*/ mungers = new ArrayList/*ShadowMunger*/();
+ mungers.add(new DumbTypeMunger(null, aspectType));
+ allTypeMungers.addAll(mungers);
+ return mungers;
+ }
+
+ public Collection getAllCreatedCustomShadowMungers() {
+ return allShadowMungers;
+ }
+
+ public Collection getAllCreatedCustomTypeMungers() {
+ return allTypeMungers;
+ }
+ }
+
+ class DumbShadowMunger extends Checker {
+ public DumbShadowMunger(DeclareErrorOrWarning deow) {
+ super(deow);
+ }
+
+ public ISourceLocation getSourceLocation() {
+ return ISourceLocation.EMPTY;
+ }
+
+ boolean called;
+
+ public boolean match(Shadow shadow, World world) {
+ called = true;
+ return false;
+ }
+ }
+
+ class DumbTypeMunger extends ConcreteTypeMunger {
+ boolean called;
+
+ public DumbTypeMunger(ResolvedTypeMunger munger, ResolvedType aspectType) {
+ super(munger, aspectType);
+ }
+
+ public ConcreteTypeMunger parameterizedFor(ResolvedType targetType) {
+ return null;
+ }
+
+ public boolean matches(ResolvedType onType) {
+ called = true;
+ return false;
+ }
+ }
+}
diff --git a/tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java b/tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java
index fbecd0c92..bf663e5c1 100644
--- a/tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java
+++ b/tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java
@@ -255,6 +255,7 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
public void testAjStateDeleteResourcesInInputDir() {
// temporary problem with this on linux, think it is a filesystem lastmodtime issue
if (System.getProperty("os.name","").toLowerCase().equals("linux")) return;
+ if (System.getProperty("os.name","").toLowerCase().indexOf("mac")!=-1) return;
AjBuildManager.COPY_INPATH_DIR_RESOURCES = true;
try {