Fix all tests for Java 15 runtimetags/java16-add-opens
@@ -1,11 +1,11 @@ | |||
/******************************************************************** | |||
* 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* Helen Hawkins - initial version | |||
*******************************************************************/ | |||
package org.aspectj.ajde.core; | |||
@@ -61,7 +61,7 @@ public class TestCompilerConfiguration implements ICompilerConfiguration { | |||
public String getClasspath() { | |||
StringBuilder classpath = new StringBuilder(); | |||
classpath.append(projectPath); | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
classpath.append(File.pathSeparator).append(LangUtil.getJrtFsFilePath()); | |||
} else { | |||
classpath.append(File.pathSeparator).append(System.getProperty("sun.boot.class.path")); |
@@ -1,11 +1,11 @@ | |||
/******************************************************************** | |||
* 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* Helen Hawkins - initial version (bug 148190) | |||
*******************************************************************/ | |||
package org.aspectj.ajde.ui.utils; | |||
@@ -67,7 +67,7 @@ public class TestCompilerConfiguration implements ICompilerConfiguration { | |||
public String getClasspath() { | |||
String cp = projectPath + File.pathSeparator + System.getProperty("sun.boot.class.path") + File.pathSeparator | |||
+ TestUtil.aspectjrtClasspath(); | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
cp = LangUtil.getJrtFsFilePath()+File.pathSeparator+cp; | |||
} | |||
return cp; |
@@ -35,13 +35,11 @@ | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<!-- enables easy dependency on tools.jar --> | |||
<groupId>com.github.olivergondza</groupId> | |||
<artifactId>maven-jdk-tools-wrapper</artifactId> | |||
<version>0.1</version> | |||
</dependency> | |||
<!-- enables easy dependency on tools.jar --> | |||
<groupId>com.github.olivergondza</groupId> | |||
<artifactId>maven-jdk-tools-wrapper</artifactId> | |||
<version>0.1</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>asm</groupId> | |||
<artifactId>asm</artifactId> | |||
@@ -49,5 +47,45 @@ | |||
<scope>system</scope> | |||
<systemPath>${project.basedir}/../lib/asm/asm-8.0.1.renamed.jar</systemPath> | |||
</dependency> | |||
<!-- Dependencies needed for running tests in this module independently of complete reactor build --> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>org.eclipse.jdt.core</artifactId> | |||
<version>1.0</version> | |||
<scope>system</scope> | |||
<systemPath>${project.basedir}/../org.eclipse.jdt.core/jdtcore-for-aspectj.jar</systemPath> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>org.aspectj.matcher</artifactId> | |||
<version>${project.version}</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>weaver</artifactId> | |||
<version>${project.version}</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>bcel-builder</artifactId> | |||
<version>${project.version}</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>runtime</artifactId> | |||
<version>${project.version}</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>testing-util</artifactId> | |||
<version>${project.version}</version> | |||
<scope>test</scope> | |||
</dependency> | |||
</dependencies> | |||
</project> |
@@ -31,6 +31,7 @@ import org.aspectj.asm.AsmManager; | |||
import org.aspectj.asm.HierarchyWalker; | |||
import org.aspectj.asm.IProgramElement; | |||
import org.aspectj.asm.IRelationship; | |||
import org.aspectj.util.LangUtil; | |||
import org.aspectj.util.TypeSafeEnum; | |||
/** | |||
@@ -38,6 +39,10 @@ import org.aspectj.util.TypeSafeEnum; | |||
*/ | |||
class HtmlDecorator { | |||
public static final String TYPE_NAME_LABEL = LangUtil.is15VMOrGreater() | |||
? "type-name-label" | |||
: (LangUtil.is1dot8VMOrGreater() ? "typeNameLabel" : "strong"); | |||
private static final String POINTCUT_DETAIL = "Pointcut Detail"; | |||
private static final String ADVICE_DETAIL = "Advice Detail"; | |||
private static final String DECLARE_DETAIL = "Declare Detail"; | |||
@@ -267,19 +272,14 @@ class HtmlDecorator { | |||
} | |||
} | |||
else { | |||
// Java8: | |||
// <pre>static class <span class="typeNameLabel">ClassA.InnerAspect</span> | |||
classStartIndex = fileContents.toString().indexOf("class <span class=\"typeNameLabel\">"); | |||
if (classStartIndex == -1) { | |||
// Java7: 464604 | |||
// <pre>public class <span class="strong">Azpect</span> | |||
classStartIndex = fileContents.toString().indexOf("class <span class=\"strong\">"); | |||
} | |||
// Java15: <pre>static class <span class="type-name-label">ClassA.InnerAspect</span> | |||
// Java8: <pre>static class <span class="typeNameLabel">ClassA.InnerAspect</span> | |||
// Java7 (464604): <pre>public class <span class="strong">Azpect</span> | |||
classStartIndex = fileContents.toString().indexOf("class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">"); | |||
int classEndIndex = fileContents.toString().indexOf("</span>", classStartIndex); | |||
if (classEndIndex != -1) { | |||
// Convert it to "aspect <span class="typeNameLabel">ClassA.InnerAspect</span>" | |||
String classLine = fileContents.toString().substring(classStartIndex, classEndIndex); | |||
String aspectLine = "aspect"+fileContents.substring(classStartIndex+5,classEndIndex); | |||
// Convert it to "aspect <span class="TYPE_NAME_LABEL">ClassA.InnerAspect</span>" | |||
String aspectLine = "aspect" + fileContents.substring(classStartIndex + 5, classEndIndex); | |||
fileContents.delete(classStartIndex, classEndIndex); | |||
fileContents.insert(classStartIndex, aspectLine); | |||
} |
@@ -1,11 +1,11 @@ | |||
/******************************************************************** | |||
* Copyright (c) 2005 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* Copyright (c) 2005 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* Helen Hawkins - iniital version | |||
*******************************************************************/ | |||
package org.aspectj.tools.ajdoc; | |||
@@ -25,8 +25,8 @@ import org.aspectj.util.LangUtil; | |||
public class AjdocOutputChecker { | |||
/** | |||
* Checks whether the given html file contains the required String. | |||
* | |||
* Checks whether the given html file contains the required String. | |||
* | |||
* @param htmlFile | |||
* @param requiredString | |||
* @return true if the file contains the given string or | |||
@@ -53,12 +53,12 @@ public class AjdocOutputChecker { | |||
/** | |||
* Returns those strings from the given array which aren't in the html file. | |||
* | |||
* | |||
* @param htmlFile | |||
* @param an array of requiredStrings | |||
* @return a List of those strings not found | |||
* @throws Exception | |||
*/ | |||
*/ | |||
public static List<String> getMissingStringsInFile(File htmlFile, String[] requiredStrings) throws Exception { | |||
List<String> missingStrings = new ArrayList<>(); | |||
for (String string : requiredStrings) { | |||
@@ -68,16 +68,16 @@ public class AjdocOutputChecker { | |||
} | |||
return missingStrings; | |||
} | |||
/** | |||
* Checks whether the section of the html file contains the | |||
* required String | |||
* | |||
* | |||
* @param htmlFile | |||
* @param requiredString | |||
* @param sectionHeader | |||
* @return true if the file contains the given string within the | |||
* required section or false otherwise (or if the file is null or | |||
* @return true if the file contains the given string within the | |||
* required section or false otherwise (or if the file is null or | |||
* not an html file) | |||
* @throws Exception | |||
*/ | |||
@@ -91,7 +91,7 @@ public class AjdocOutputChecker { | |||
while (line != null) { | |||
if (line.contains(sectionHeader)) { | |||
String nextLine = reader.readLine(); | |||
while (nextLine != null && | |||
while (nextLine != null && | |||
(!nextLine.contains("========"))) { | |||
if (nextLine.contains(requiredString)) { | |||
reader.close(); | |||
@@ -107,11 +107,11 @@ public class AjdocOutputChecker { | |||
reader.close(); | |||
return false; | |||
} | |||
/** | |||
* Returns those strings from the given array which aren't in the | |||
* ajdoc html file | |||
* | |||
* ajdoc html file | |||
* | |||
* @param htmlFile | |||
* @param an array of requiredStrings | |||
* @param sectionHeader | |||
@@ -130,10 +130,10 @@ public class AjdocOutputChecker { | |||
} | |||
/** | |||
* Returns whether the class data section has the expected | |||
* relationship and target i.e. have the relationships been | |||
* Returns whether the class data section has the expected | |||
* relationship and target i.e. have the relationships been | |||
* applied to the type. | |||
* | |||
* | |||
* @param the ajdoc html file | |||
* @param the detail sectionHeader, for example "DECLARE DETAIL SUMMARY" | |||
* @param the source of the relationship, for example "Point()" | |||
@@ -143,7 +143,7 @@ public class AjdocOutputChecker { | |||
* false otherwise | |||
*/ | |||
public static boolean classDataSectionContainsRel(File htmlFile, | |||
HtmlDecorator.HtmlRelationshipKind relationship, | |||
HtmlDecorator.HtmlRelationshipKind relationship, | |||
String target) throws Exception { | |||
if (((htmlFile == null) || !htmlFile.getAbsolutePath().endsWith("html"))) { | |||
return false; | |||
@@ -154,7 +154,7 @@ public class AjdocOutputChecker { | |||
if (line.contains("START OF CLASS DATA")) { | |||
// found the required class data section | |||
String subLine = reader.readLine(); | |||
while(subLine != null | |||
while(subLine != null | |||
&& (!subLine.contains("========"))){ | |||
int relIndex = subLine.indexOf(relationship.toString()); | |||
int targetIndex = subLine.indexOf(target); | |||
@@ -175,11 +175,11 @@ public class AjdocOutputChecker { | |||
reader.close(); | |||
return false; | |||
} | |||
/** | |||
* Returns whether the supplied source has the expected | |||
* Returns whether the supplied source has the expected | |||
* relationship and target within the given detail section | |||
* | |||
* | |||
* @param the ajdoc html file | |||
* @param the detail sectionHeader, for example "DECLARE DETAIL SUMMARY" | |||
* @param the source of the relationship, for example "Point()" | |||
@@ -188,9 +188,9 @@ public class AjdocOutputChecker { | |||
* @return true if the section contains the expected source/relationship/target, | |||
* false otherwise | |||
*/ | |||
public static boolean detailSectionContainsRel(File htmlFile, | |||
String sectionHeader, String source, | |||
HtmlDecorator.HtmlRelationshipKind relationship, | |||
public static boolean detailSectionContainsRel(File htmlFile, | |||
String sectionHeader, String source, | |||
HtmlDecorator.HtmlRelationshipKind relationship, | |||
String target) throws Exception { | |||
if (((htmlFile == null) || !htmlFile.getAbsolutePath().endsWith("html"))) { | |||
return false; | |||
@@ -210,9 +210,9 @@ public class AjdocOutputChecker { | |||
nextLine.contains("NAME=\"" + source + "\"") || nextLine.contains("name=\"" + source + "\"")) { | |||
// found the required subsection | |||
String subLine = reader.readLine(); | |||
while(subLine != null | |||
while(subLine != null | |||
&& (!subLine.contains("========")) | |||
&& (!subLine.contains("NAME") && !subLine.contains("name"))) { | |||
&& (!subLine.contains("NAME=") && !subLine.contains("name="))) { | |||
int relIndex = subLine.indexOf(relationship.toString()); | |||
int targetIndex = subLine.indexOf(target); | |||
if ((relIndex != -1) && (targetIndex != -1)) { | |||
@@ -239,9 +239,9 @@ public class AjdocOutputChecker { | |||
} | |||
/** | |||
* Returns whether the supplied source has the expected | |||
* Returns whether the supplied source has the expected | |||
* relationship and target within the given summary section | |||
* | |||
* | |||
* @param the ajdoc html file | |||
* @param the detail sectionHeader, for example "DECLARE SUMMARY" | |||
* @param the source of the relationship, for example "Point()" | |||
@@ -251,10 +251,10 @@ public class AjdocOutputChecker { | |||
* false otherwise | |||
*/ | |||
public static boolean summarySectionContainsRel( | |||
File htmlFile, | |||
String sectionHeader, | |||
String source, | |||
HtmlDecorator.HtmlRelationshipKind relationship, | |||
File htmlFile, | |||
String sectionHeader, | |||
String source, | |||
HtmlDecorator.HtmlRelationshipKind relationship, | |||
String target) throws Exception { | |||
if (((htmlFile == null) || !htmlFile.getAbsolutePath().endsWith("html"))) { | |||
return false; | |||
@@ -272,7 +272,7 @@ public class AjdocOutputChecker { | |||
if (nextLine.contains(source)) { | |||
// found the required subsection | |||
String subLine = nextLine; | |||
while(subLine != null | |||
while(subLine != null | |||
&& (!subLine.contains("========")) | |||
&& (!subLine.contains("<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">"))) { | |||
int relIndex = subLine.indexOf(relationship.toString()); | |||
@@ -299,5 +299,5 @@ public class AjdocOutputChecker { | |||
reader.close(); | |||
return false; | |||
} | |||
} |
@@ -1,11 +1,11 @@ | |||
/******************************************************************** | |||
* Copyright (c) 2005 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* Copyright (c) 2005 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* Helen Hawkins - iniital version | |||
*******************************************************************/ | |||
package org.aspectj.tools.ajdoc; | |||
@@ -160,12 +160,12 @@ public abstract class AjdocTestCase extends TestCase { | |||
if (inputFiles.length == 0) { | |||
fail("need to pass some files into ajdoc"); | |||
} | |||
if (!sourceLevel.equals("1.3") && | |||
!sourceLevel.equals("1.4") && | |||
!sourceLevel.equals("1.5") && | |||
!sourceLevel.equals("1.6") && | |||
!sourceLevel.equals("1.7") && | |||
!sourceLevel.equals("1.8") && | |||
if (!sourceLevel.equals("1.3") && | |||
!sourceLevel.equals("1.4") && | |||
!sourceLevel.equals("1.5") && | |||
!sourceLevel.equals("1.6") && | |||
!sourceLevel.equals("1.7") && | |||
!sourceLevel.equals("1.8") && | |||
!sourceLevel.equals("1.9") && | |||
!sourceLevel.equals("10")) { | |||
fail("need to pass ajdoc '1.3' > '1.9' as the source level"); | |||
@@ -191,12 +191,12 @@ public abstract class AjdocTestCase extends TestCase { | |||
if (!visibility.equals("public") && !visibility.equals("protected") && !visibility.equals("private")) { | |||
fail("need to pass 'public','protected' or 'private' visibility to ajdoc"); | |||
} | |||
if (!sourceLevel.equals("1.3") && | |||
!sourceLevel.equals("1.4") && | |||
!sourceLevel.equals("1.5") && | |||
!sourceLevel.equals("1.6") && | |||
!sourceLevel.equals("1.7") && | |||
!sourceLevel.equals("1.8") && | |||
if (!sourceLevel.equals("1.3") && | |||
!sourceLevel.equals("1.4") && | |||
!sourceLevel.equals("1.5") && | |||
!sourceLevel.equals("1.6") && | |||
!sourceLevel.equals("1.7") && | |||
!sourceLevel.equals("1.8") && | |||
!sourceLevel.equals("1.9") && | |||
!sourceLevel.startsWith("9") && | |||
!sourceLevel.startsWith("10")) { | |||
@@ -217,7 +217,7 @@ public abstract class AjdocTestCase extends TestCase { | |||
args[2] = sourceLevel; | |||
args[3] = "-classpath"; | |||
StringBuilder classpath = new StringBuilder(); | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
classpath.append(LangUtil.getJrtFsFilePath()).append(File.pathSeparator); | |||
} | |||
classpath.append(AjdocTests.ASPECTJRT_PATH.getPath()); |
@@ -131,9 +131,9 @@ public class CoverageTestCase extends AjdocTestCase { | |||
String[] strings = null; | |||
strings = new String[] { | |||
"Aspect ClassA.InnerAspect", | |||
"<pre>static aspect <span class=\"typeNameLabel\">ClassA.InnerAspect</span>", | |||
"<pre>static aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassA.InnerAspect</span>", | |||
"Class ClassA.InnerAspect", | |||
"<pre>static class <span class=\"typeNameLabel\">ClassA.InnerAspect</span>"}; | |||
"<pre>static class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassA.InnerAspect</span>"}; | |||
List<String> missingStrings = AjdocOutputChecker.getMissingStringsInFile(htmlFile,strings); | |||
StringBuilder buf = new StringBuilder(); | |||
for (String str:missingStrings) { | |||
@@ -144,7 +144,7 @@ public class CoverageTestCase extends AjdocTestCase { | |||
assertTrue(htmlFile.getName() + " should not have Class as it's title", | |||
missingStrings.contains("Class ClassA.InnerAspect")); | |||
assertTrue(htmlFile.getName() + " should not have class in its subtitle", | |||
missingStrings.contains("<pre>static class <span class=\"typeNameLabel\">ClassA.InnerAspect</span>")); | |||
missingStrings.contains("<pre>static class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassA.InnerAspect</span>")); | |||
// get the html file for the enclosing class | |||
File htmlFileClass = new File(getAbsolutePathOutdir() + "/foo/ClassA.html"); | |||
@@ -160,21 +160,21 @@ public class CoverageTestCase extends AjdocTestCase { | |||
if (LangUtil.is13VMOrGreater()) { | |||
classStrings = new String[] { | |||
"Class ClassA</h1>", | |||
"public abstract class <span class=\"typeNameLabel\">ClassA</span>", | |||
"public abstract class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassA</span>", | |||
"Aspect ClassA</H2>", | |||
"public abstract aspect <span class=\"typeNameLabel\">ClassA</span>"}; | |||
"public abstract aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassA</span>"}; | |||
} else { | |||
classStrings = new String[] { | |||
"Class ClassA</h2>", | |||
"public abstract class <span class=\"typeNameLabel\">ClassA</span>", | |||
"public abstract class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassA</span>", | |||
"Aspect ClassA</H2>", | |||
"public abstract aspect <span class=\"typeNameLabel\">ClassA</span>"}; | |||
"public abstract aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassA</span>"}; | |||
} | |||
List<String> classMissing = AjdocOutputChecker.getMissingStringsInFile(htmlFileClass,classStrings); | |||
assertEquals("There should be 2 missing strings:\n"+classMissing,2,classMissing.size()); | |||
assertTrue(htmlFileClass.getName() + " should not have Aspect as it's title",classMissing.contains("Aspect ClassA</H2>")); | |||
assertTrue(htmlFileClass.getName() + " should not have aspect in its subtitle", | |||
classMissing.contains("public abstract aspect <span class=\"typeNameLabel\">ClassA</span>")); | |||
classMissing.contains("public abstract aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassA</span>")); | |||
} | |||
/** | |||
@@ -657,14 +657,19 @@ public class CoverageTestCase extends AjdocTestCase { | |||
String[] strings = null; | |||
strings = new String[] { | |||
"Aspect PkgVisibleClass.NestedAspect", | |||
"<pre>static aspect <span class=\"typeNameLabel\">PkgVisibleClass.NestedAspect</span>", | |||
"<pre>static aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">PkgVisibleClass.NestedAspect</span>", | |||
"Class PkgVisibleClass.NestedAspect", | |||
"<pre>static class <span class=\"typeNameLabel\">PkgVisibleClass.NestedAspect</span>"}; | |||
List<String> missing = AjdocOutputChecker.getMissingStringsInFile(htmlFile,strings); | |||
assertEquals("There should be 2 missing strings",2,missing.size()); | |||
assertTrue(htmlFile.getName() + " should not have Class as it's title",missing.contains("Class PkgVisibleClass.NestedAspect")); | |||
"<pre>static class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">PkgVisibleClass.NestedAspect</span>"}; | |||
List<String> missingStrings = AjdocOutputChecker.getMissingStringsInFile(htmlFile,strings); | |||
StringBuilder buf = new StringBuilder(); | |||
for (String str:missingStrings) { | |||
buf.append(str).append("\n"); | |||
} | |||
buf.append("HTMLFILE=\n").append(htmlFile).append("\n"); | |||
assertEquals("There should be 2 missing strings",2,missingStrings.size()); | |||
assertTrue(htmlFile.getName() + " should not have Class as it's title",missingStrings.contains("Class PkgVisibleClass.NestedAspect")); | |||
assertTrue(htmlFile.getName() + " should not have class in its subtitle", | |||
missing.contains("<pre>static class <span class=\"typeNameLabel\">PkgVisibleClass.NestedAspect</span>")); | |||
missingStrings.contains("<pre>static class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">PkgVisibleClass.NestedAspect</span>")); | |||
// get the html file for the enclosing class | |||
File htmlFileClass = new File(getAbsolutePathOutdir() + "/PkgVisibleClass.html"); | |||
if (!htmlFileClass.exists()) { | |||
@@ -678,22 +683,22 @@ public class CoverageTestCase extends AjdocTestCase { | |||
if (LangUtil.is13VMOrGreater()) { | |||
classStrings = new String[] { | |||
"Class PkgVisibleClass</h1>", | |||
"<pre>class <span class=\"typeNameLabel\">PkgVisibleClass</span>", | |||
"<pre>class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">PkgVisibleClass</span>", | |||
"Aspect PkgVisibleClass</h2>", | |||
"<pre>aspect <span class=\"typeNameLabel\">PkgVisibleClass</span>"}; | |||
"<pre>aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">PkgVisibleClass</span>"}; | |||
} else { | |||
classStrings = new String[] { | |||
"Class PkgVisibleClass</h2>", | |||
"<pre>class <span class=\"typeNameLabel\">PkgVisibleClass</span>", | |||
"<pre>class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">PkgVisibleClass</span>", | |||
"Aspect PkgVisibleClass</h2>", | |||
"<pre>aspect <span class=\"typeNameLabel\">PkgVisibleClass</span>"}; | |||
"<pre>aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">PkgVisibleClass</span>"}; | |||
} | |||
List<String> classMissing = AjdocOutputChecker.getMissingStringsInFile(htmlFileClass,classStrings); | |||
assertEquals("There should be 2 missing strings",2,classMissing.size()); | |||
assertTrue(htmlFileClass.getName() + " should not have Aspect as it's title", | |||
classMissing.contains("Aspect PkgVisibleClass</h2>")); | |||
assertTrue(htmlFileClass.getName() + " should not have aspect in its subtitle", | |||
classMissing.contains("<pre>aspect <span class=\"typeNameLabel\">PkgVisibleClass</span>")); | |||
classMissing.contains("<pre>aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">PkgVisibleClass</span>")); | |||
} | |||
/** | |||
@@ -716,14 +721,19 @@ public class CoverageTestCase extends AjdocTestCase { | |||
String[] strings = null; | |||
strings = new String [] { | |||
"Aspect ClassWithNestedAspect.NestedAspect", | |||
"<pre>static aspect <span class=\"typeNameLabel\">ClassWithNestedAspect.NestedAspect</span>", | |||
"<pre>static aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassWithNestedAspect.NestedAspect</span>", | |||
"Class ClassWithNestedAspect.NestedAspect", | |||
"<pre>static class <span class=\"typeNameLabel\">ClassWithNestedAspect.NestedAspect</span>"}; | |||
List<String> missing = AjdocOutputChecker.getMissingStringsInFile(htmlFile,strings); | |||
assertEquals("There should be 2 missing strings",2,missing.size()); | |||
assertTrue(htmlFile.getName() + " should not have Class as it's title",missing.contains("Class ClassWithNestedAspect.NestedAspect")); | |||
"<pre>static class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassWithNestedAspect.NestedAspect</span>"}; | |||
List<String> missingStrings = AjdocOutputChecker.getMissingStringsInFile(htmlFile,strings); | |||
StringBuilder buf = new StringBuilder(); | |||
for (String str:missingStrings) { | |||
buf.append(str).append("\n"); | |||
} | |||
buf.append("HTMLFILE=\n").append(htmlFile).append("\n"); | |||
assertEquals("There should be 2 missing strings",2,missingStrings.size()); | |||
assertTrue(htmlFile.getName() + " should not have Class as it's title",missingStrings.contains("Class ClassWithNestedAspect.NestedAspect")); | |||
assertTrue(htmlFile.getName() + " should not have class in its subtitle", | |||
missing.contains("<pre>static class <span class=\"typeNameLabel\">ClassWithNestedAspect.NestedAspect</span>")); | |||
missingStrings.contains("<pre>static class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassWithNestedAspect.NestedAspect</span>")); | |||
// get the html file for the enclosing class | |||
File htmlFileClass = new File(getAbsolutePathOutdir() + "/pkg/ClassWithNestedAspect.html"); | |||
@@ -738,22 +748,22 @@ public class CoverageTestCase extends AjdocTestCase { | |||
if (LangUtil.is13VMOrGreater()) { | |||
classStrings = new String[] { | |||
"Class ClassWithNestedAspect</h1>", | |||
"public class <span class=\"typeNameLabel\">ClassWithNestedAspect</span>", | |||
"public class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassWithNestedAspect</span>", | |||
"Aspect ClassWithNestedAspect</h2>", | |||
"public aspect <span class=\"typeNameLabel\">ClassWithNestedAspect</span>"}; | |||
"public aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassWithNestedAspect</span>"}; | |||
} else { | |||
classStrings = new String[] { | |||
"Class ClassWithNestedAspect</h2>", | |||
"public class <span class=\"typeNameLabel\">ClassWithNestedAspect</span>", | |||
"public class <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassWithNestedAspect</span>", | |||
"Aspect ClassWithNestedAspect</h2>", | |||
"public aspect <span class=\"typeNameLabel\">ClassWithNestedAspect</span>"}; | |||
"public aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassWithNestedAspect</span>"}; | |||
} | |||
List<String> classMissing = AjdocOutputChecker.getMissingStringsInFile(htmlFileClass,classStrings); | |||
assertEquals("There should be 2 missing strings",2,classMissing.size()); | |||
assertTrue(htmlFileClass.getName() + " should not have Aspect as it's title", | |||
classMissing.contains("Aspect ClassWithNestedAspect</h2>")); | |||
assertTrue(htmlFileClass.getName() + " should not have aspect in its subtitle", | |||
classMissing.contains("public aspect <span class=\"typeNameLabel\">ClassWithNestedAspect</span>")); | |||
classMissing.contains("public aspect <span class=\"" + HtmlDecorator.TYPE_NAME_LABEL + "\">ClassWithNestedAspect</span>")); | |||
} | |||
/** |
@@ -227,11 +227,7 @@ public class ClassPath implements Serializable { | |||
} | |||
// On Java9 the sun.boot.class.path won't be set. System classes accessible through JRT filesystem | |||
if (vm_version.startsWith("9") || vm_version.startsWith("10") | |||
|| vm_version.startsWith("11") | |||
|| vm_version.startsWith("12") | |||
|| vm_version.startsWith("13") | |||
|| vm_version.startsWith("14")) { | |||
if (vm_version.matches("^(9|10|11|12|13|14|15).*")) { | |||
buf.insert(0, File.pathSeparatorChar); | |||
buf.insert(0, System.getProperty("java.home") + File.separator + "lib" + File.separator + JRT_FS); | |||
} |
@@ -12,26 +12,15 @@ | |||
package org.aspectj.internal.tools.ant.taskdefs; | |||
import java.io.BufferedReader; | |||
import java.io.File; | |||
import java.io.FileReader; | |||
import java.io.FileWriter; | |||
import java.io.IOException; | |||
import java.io.PrintStream; | |||
import java.io.PrintWriter; | |||
import java.util.ArrayList; | |||
import java.util.Collections; | |||
import java.util.Hashtable; | |||
import java.util.Iterator; | |||
import java.util.List; | |||
import java.util.Map; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.Project; | |||
import org.apache.tools.ant.taskdefs.MatchingTask; | |||
import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.types.Reference; | |||
import java.io.*; | |||
import java.util.*; | |||
/** | |||
* Check that included .java files contain license and copyright strings for MPL 1.0 (default), Apache, or CPL. Use list="true" to | |||
* get a list of known license variants {license}-{copyrightHolder} todo reimplement with regexp and jdiff FileLine utilities | |||
@@ -343,9 +332,10 @@ public class Checklics extends MatchingTask { | |||
public static class License { | |||
/** acceptable years for copyright prefix to company - append " " */ | |||
static final String[] YEARS = // remove older after license xfer? | |||
new String[] { "2002 ", "2003 ", "2004 ", "2005", "2006", "2007", "2008", | |||
"2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2001 ", "2000 ", | |||
"1999 " }; | |||
new String[] { | |||
"2002 ", "2003 ", "2004 ", "2005", "2006", "2007", "2008", "2009", "2010", "2011", | |||
"2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", | |||
"2001 ", "2000 ", "1999 " }; | |||
public final String tag; | |||
public final String license; | |||
private final String[] copyright; |
@@ -1,136 +1,175 @@ | |||
<project xmlns="http://maven.apache.org/POM/4.0.0" | |||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | |||
<modelVersion>4.0.0</modelVersion> | |||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | |||
<modelVersion>4.0.0</modelVersion> | |||
<parent> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>aspectj-parent</artifactId> | |||
<version>1.9.7.BUILD-SNAPSHOT</version> | |||
</parent> | |||
<parent> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>aspectj-parent</artifactId> | |||
<version>1.9.7.BUILD-SNAPSHOT</version> | |||
</parent> | |||
<artifactId>docs</artifactId> | |||
<packaging>jar</packaging> | |||
<name>docs</name> | |||
<artifactId>docs</artifactId> | |||
<packaging>jar</packaging> | |||
<name>docs</name> | |||
<profiles> | |||
<profile> | |||
<id>create-docs</id> | |||
<activation> | |||
<activeByDefault>true</activeByDefault> | |||
</activation> | |||
<dependencies> | |||
<!-- | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>util</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>runtime</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>util</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>testing-util</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>bridge</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>asm</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>org.aspectj.matcher</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>runtime</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>org.aspectj.matcher</artifactId> | |||
<version>${project.version}</version> | |||
<type>test-jar</type> | |||
<scope>test</scope> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>bcel-builder</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>commons</groupId> | |||
<artifactId>commons</artifactId> | |||
<version>1.0</version> | |||
<scope>system</scope> | |||
<systemPath>${project.basedir}/../lib/commons/commons.jar</systemPath> | |||
</dependency> | |||
<dependency> | |||
<groupId>asm</groupId> | |||
<artifactId>asm</artifactId> | |||
<version>1.0</version> | |||
<scope>system</scope> | |||
<systemPath>${project.basedir}/../lib/asm/asm-8.0.1.renamed.jar</systemPath> | |||
</dependency> | |||
--> | |||
</dependencies> | |||
<dependencies> | |||
<!-- <dependency> <groupId>org.aspectj</groupId> <artifactId>util</artifactId> | |||
<version>${project.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> | |||
<artifactId>runtime</artifactId> <version>${project.version}</version> </dependency> | |||
<dependency> <groupId>org.aspectj</groupId> <artifactId>util</artifactId> | |||
<version>${project.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> | |||
<artifactId>testing-util</artifactId> <version>${project.version}</version> | |||
</dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>bridge</artifactId> | |||
<version>${project.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> | |||
<artifactId>asm</artifactId> <version>${project.version}</version> </dependency> | |||
<dependency> <groupId>org.aspectj</groupId> <artifactId>org.aspectj.matcher</artifactId> | |||
<version>${project.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> | |||
<artifactId>runtime</artifactId> <version>${project.version}</version> </dependency> | |||
<dependency> <groupId>org.aspectj</groupId> <artifactId>org.aspectj.matcher</artifactId> | |||
<version>${project.version}</version> <type>test-jar</type> <scope>test</scope> | |||
</dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>bcel-builder</artifactId> | |||
<version>${project.version}</version> </dependency> <dependency> <groupId>commons</groupId> | |||
<artifactId>commons</artifactId> <version>1.0</version> <scope>system</scope> | |||
<systemPath>${project.basedir}/../lib/commons/commons.jar</systemPath> </dependency> | |||
<dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> <version>1.0</version> | |||
<scope>system</scope> <systemPath>${project.basedir}/../lib/asm/asm-7.0-beta.renamed.jar</systemPath> | |||
</dependency> --> | |||
</dependencies> | |||
<build> | |||
<resources> | |||
<resource> | |||
<directory>src/main/resources</directory> | |||
<filtering>true</filtering> | |||
<includes> | |||
<include>**/local.properties</include> | |||
</includes> | |||
</resource> | |||
<!-- | |||
<resource> | |||
<directory>src/main/resources</directory> | |||
<filtering>false</filtering> | |||
<excludes> | |||
<exclude>**/local.properties</exclude> | |||
</excludes> | |||
</resource> | |||
--> | |||
</resources> | |||
<build> | |||
<resources> | |||
<resource> | |||
<directory>src/main/resources</directory> | |||
<filtering>true</filtering> | |||
<includes> | |||
<include>**/local.properties</include> | |||
</includes> | |||
</resource> | |||
<!-- | |||
<resource> | |||
<directory>src/main/resources</directory> | |||
<filtering>false</filtering> | |||
<excludes> | |||
<exclude>**/local.properties</exclude> | |||
</excludes> | |||
</resource> | |||
--> | |||
</resources> | |||
<pluginManagement> | |||
<plugins> | |||
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> | |||
<plugin> | |||
<groupId>org.eclipse.m2e</groupId> | |||
<artifactId>lifecycle-mapping</artifactId> | |||
<version>1.0.0</version> | |||
<configuration> | |||
<lifecycleMappingMetadata> | |||
<pluginExecutions> | |||
<pluginExecution> | |||
<pluginExecutionFilter> | |||
<groupId>org.apache.maven.plugins</groupId> | |||
<artifactId>maven-antrun-plugin</artifactId> | |||
<versionRange>[1.7,)</versionRange> | |||
<goals> | |||
<goal>run</goal> | |||
</goals> | |||
</pluginExecutionFilter> | |||
<action> | |||
<ignore></ignore> | |||
</action> | |||
</pluginExecution> | |||
</pluginExecutions> | |||
</lifecycleMappingMetadata> | |||
</configuration> | |||
</plugin> | |||
</plugins> | |||
</pluginManagement> | |||
<plugins> | |||
<plugin> | |||
<artifactId>maven-antrun-plugin</artifactId> | |||
<version>1.7</version> | |||
<executions> | |||
<execution> | |||
<id>make-docs</id> | |||
<phase>process-resources</phase> | |||
<configuration> | |||
<target> | |||
<copy | |||
file="${project.build.outputDirectory}/local.properties" | |||
toFile="../build/local.properties" | |||
overwrite="true" | |||
/> | |||
<ant antfile="build.xml"> | |||
<target name="dist"/> | |||
</ant> | |||
</target> | |||
</configuration> | |||
<goals> | |||
<goal>run</goal> | |||
</goals> | |||
</execution> | |||
</executions> | |||
</plugin> | |||
</plugins> | |||
</build> | |||
</profile> | |||
</profiles> | |||
<plugins> | |||
<plugin> | |||
<artifactId>maven-antrun-plugin</artifactId> | |||
<version>1.7</version> | |||
<executions> | |||
<execution> | |||
<phase>process-resources</phase> | |||
<configuration> | |||
<tasks> | |||
<copy file="${project.build.outputDirectory}/local.properties" | |||
toFile="../build/local.properties" overwrite="true" /> | |||
</tasks> | |||
</configuration> | |||
<goals> | |||
<goal>run</goal> | |||
</goals> | |||
</execution> | |||
</executions> | |||
</plugin> | |||
<plugin> | |||
<groupId>org.apache.maven.plugins</groupId> | |||
<artifactId>maven-antrun-plugin</artifactId> | |||
<version>1.7</version> | |||
<executions> | |||
<execution> | |||
<id>ant</id> | |||
<phase>process-resources</phase> | |||
<configuration> | |||
<target> | |||
<ant antfile="build.xml"> | |||
<target name="dist" /> | |||
</ant> | |||
</target> | |||
</configuration> | |||
<goals> | |||
<goal>run</goal> | |||
</goals> | |||
</execution> | |||
</executions> | |||
</plugin></plugins> | |||
<pluginManagement> | |||
<plugins> | |||
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> | |||
<plugin> | |||
<groupId>org.eclipse.m2e</groupId> | |||
<artifactId>lifecycle-mapping</artifactId> | |||
<version>1.0.0</version> | |||
<configuration> | |||
<lifecycleMappingMetadata> | |||
<pluginExecutions> | |||
<pluginExecution> | |||
<pluginExecutionFilter> | |||
<groupId> | |||
org.apache.maven.plugins | |||
</groupId> | |||
<artifactId> | |||
maven-antrun-plugin | |||
</artifactId> | |||
<versionRange>[1.7,)</versionRange> | |||
<goals> | |||
<goal>run</goal> | |||
</goals> | |||
</pluginExecutionFilter> | |||
<action> | |||
<ignore></ignore> | |||
</action> | |||
</pluginExecution> | |||
</pluginExecutions> | |||
</lifecycleMappingMetadata> | |||
</configuration> | |||
</plugin> | |||
</plugins> | |||
</pluginManagement> | |||
</build> | |||
</project> |
@@ -1,10 +1,10 @@ | |||
/******************************************************************************* | |||
* Copyright (c) 2006 IBM Corporation and others. | |||
* All rights reserved. This program and the accompanying materials | |||
* 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: | |||
* Matthew Webster - initial implementation | |||
*******************************************************************************/ | |||
@@ -54,7 +54,7 @@ public class JRockitAgentTest extends TestCase { | |||
} | |||
public void testJrockitRecursionProtection() { | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
// Skip test, not castable to URLClassLoader | |||
return; | |||
} |
@@ -1,13 +1,13 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC). | |||
* 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: | |||
* PARC initial implementation | |||
* 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: | |||
* PARC initial implementation | |||
* ******************************************************************/ | |||
package org.aspectj.ajdt.ajc; | |||
@@ -364,7 +364,7 @@ public class BuildArgParser extends Main { | |||
List<String> ret = new ArrayList<>(); | |||
if (parser.bootclasspath == null) { | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
addClasspath(LangUtil.getJrtFsFilePath(),ret); | |||
} else { | |||
addClasspath(System.getProperty("sun.boot.class.path", ""), ret); | |||
@@ -374,7 +374,7 @@ public class BuildArgParser extends Main { | |||
} | |||
return ret; | |||
} | |||
public List<String> getModulepath(AjcConfigParser parser) { | |||
List<String> ret = new ArrayList<>(); | |||
addClasspath(parser.modulepath, ret); | |||
@@ -391,7 +391,7 @@ public class BuildArgParser extends Main { | |||
public ArrayList<FileSystem.Classpath> handleClasspath(ArrayList<String> classpaths, String customEncoding) { | |||
return super.handleClasspath(classpaths, customEncoding); | |||
} | |||
/** | |||
* If the classpath is not set, we use the environment's java.class.path, but remove the aspectjtools.jar entry from that list | |||
* in order to prevent wierd bootstrap issues (refer to bug#39959). | |||
@@ -474,7 +474,7 @@ public class BuildArgParser extends Main { | |||
public List getUnparsedArgs() { | |||
return unparsedArgs; | |||
} | |||
public String getModuleInfoArgument() { | |||
return this.moduleInfoArgument; | |||
} | |||
@@ -914,12 +914,12 @@ public class BuildArgParser extends Main { | |||
} | |||
} | |||
@Override | |||
public boolean checkVMVersion(long minimalSupportedVersion) { | |||
return super.checkVMVersion(minimalSupportedVersion); | |||
} | |||
@Override | |||
public void initRootModules(LookupEnvironment environment, FileSystem fileSystem) { | |||
super.initRootModules(environment, fileSystem); |
@@ -1,13 +1,13 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC). | |||
* 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: | |||
* PARC initial implementation | |||
* 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: | |||
* PARC initial implementation | |||
* ******************************************************************/ | |||
package org.aspectj.ajdt.internal.compiler.batch; | |||
@@ -33,7 +33,7 @@ public abstract class CommandTestCase extends TestCase { | |||
/** | |||
* Constructor for CommandTestCase. | |||
* | |||
* | |||
* @param name | |||
*/ | |||
public CommandTestCase(String name) { | |||
@@ -52,7 +52,7 @@ public abstract class CommandTestCase extends TestCase { | |||
protected void runMain(String className) { | |||
TestUtil.runMain(getSandboxName(), className); | |||
} | |||
public void checkCompile(String source, String[] extraArgs, int[] expectedErrors) { | |||
checkCompile(source,extraArgs,expectedErrors,getSandboxName()); | |||
} | |||
@@ -169,7 +169,7 @@ public abstract class CommandTestCase extends TestCase { | |||
/** get the location of the org.aspectj.lang & runtime classes */ | |||
protected static String getRuntimeClasspath() { | |||
StringBuilder classpath = new StringBuilder(); | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
classpath.append(LangUtil.getJrtFsFilePath()).append(File.pathSeparator); | |||
} | |||
classpath.append(Constants.aspectjrtClasspath()); |
@@ -947,7 +947,7 @@ public abstract class AjcTestCase extends TestCase { | |||
args = newargs; | |||
} | |||
} | |||
boolean needsJRTFS = LangUtil.is19VMOrGreater(); | |||
boolean needsJRTFS = LangUtil.is9VMOrGreater(); | |||
if (needsJRTFS) { | |||
if (!args[cpIndex].contains(LangUtil.JRT_FS)) { | |||
String jrtfsPath = LangUtil.getJrtFsFilePath(); |
@@ -29,6 +29,12 @@ | |||
<artifactId>testing</artifactId> | |||
<version>${project.version}</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>testing-util</artifactId> | |||
<version>${project.version}</version> | |||
<scope>test</scope> | |||
</dependency> | |||
<dependency> | |||
<groupId>org.aspectj</groupId> | |||
<artifactId>testing-client</artifactId> |
@@ -1,14 +1,14 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 1999-2001 Xerox Corporation, | |||
* Copyright (c) 1999-2001 Xerox Corporation, | |||
* 2002 Palo Alto Research Center, Incorporated (PARC). | |||
* 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: | |||
* Xerox/PARC initial implementation | |||
* 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: | |||
* Xerox/PARC initial implementation | |||
* ******************************************************************/ | |||
package org.aspectj.testing.drivers; | |||
@@ -41,23 +41,23 @@ import junit.framework.TestCase; | |||
*/ | |||
public class HarnessSelectionTest extends TestCase { | |||
private static final String TESTDATA = "../testing-drivers/testdata"; | |||
private static final String INC_HARNESS_DIR | |||
private static final String INC_HARNESS_DIR | |||
= TESTDATA + "/incremental/harness"; | |||
private static final String SELECT | |||
private static final String SELECT | |||
= INC_HARNESS_DIR + "/selectionTest.xml"; | |||
/** @see testIncrementalSuite() */ | |||
private static final String INCREMENTAL | |||
private static final String INCREMENTAL | |||
= INC_HARNESS_DIR + "/suite.xml"; | |||
private static final String TITLE_LIST_ONE | |||
private static final String TITLE_LIST_ONE | |||
= INC_HARNESS_DIR + "/titleListOne.txt"; | |||
private static final String TITLE_LIST_PLURAL | |||
private static final String TITLE_LIST_PLURAL | |||
= INC_HARNESS_DIR + "/titleListPlural.txt"; | |||
private static Hashtable SPECS = new Hashtable(); | |||
private static Hashtable SPECS = new Hashtable(); | |||
private static AjcTest.Suite.Spec getSpec(String suiteFile) { | |||
AjcTest.Suite.Spec result = (AjcTest.Suite.Spec) SPECS.get(suiteFile); | |||
if (null == result) { | |||
@@ -67,7 +67,7 @@ public class HarnessSelectionTest extends TestCase { | |||
} catch (IOException e) { | |||
e.printStackTrace(System.err); | |||
} | |||
} | |||
} | |||
try { | |||
return (AjcTest.Suite.Spec) result.clone(); | |||
} catch (CloneNotSupportedException e) { | |||
@@ -76,13 +76,13 @@ public class HarnessSelectionTest extends TestCase { | |||
return null; // keep compiler happy | |||
} | |||
} | |||
private boolean verbose; | |||
public HarnessSelectionTest(String name) { | |||
super(name); | |||
} | |||
public void testFilesAvailable() { | |||
String[] files = new String[] { | |||
SELECT, INCREMENTAL, TITLE_LIST_ONE, TITLE_LIST_PLURAL | |||
@@ -99,20 +99,20 @@ public class HarnessSelectionTest extends TestCase { | |||
System.err.println("skipping test - eclipse classes not available"); | |||
return; | |||
} | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "!verbose", "!eclipse", | |||
}; | |||
Exp exp = new Exp(6, 6, 0, 6, 0, 0, 0); | |||
checkSelection(INCREMENTAL, options, "INFIX IGNORED", exp); | |||
} | |||
public void testKeywordSelectionBoth() { | |||
if (!eclipseAvailable()) { | |||
System.err.println("skipping test - eclipse classes not available"); | |||
return; | |||
} | |||
String[] options = new String[] | |||
{ "-ajctestRequireKeywords=requireKeyword", | |||
String[] options = new String[] | |||
{ "-ajctestRequireKeywords=requireKeyword", | |||
"-ajctestSkipKeywords=skipKeyword,skipUnenforcedAjcLimit", | |||
"!verbose", | |||
"-eclipse", | |||
@@ -120,14 +120,14 @@ public class HarnessSelectionTest extends TestCase { | |||
Exp exp = new Exp(17, 1, 16, 1, 0, 0, 1); | |||
checkSelection(SELECT, options, "keyword skipKeyword was found", exp); | |||
} | |||
public void testKeywordSelectionRequire() { | |||
if (!eclipseAvailable()) { | |||
System.err.println("skipping test - eclipse classes not available"); | |||
return; | |||
} | |||
String[] options = new String[] | |||
{ "-ajctestRequireKeywords=skipKeyword", | |||
String[] options = new String[] | |||
{ "-ajctestRequireKeywords=skipKeyword", | |||
"!verbose", | |||
"-eclipse", | |||
}; | |||
@@ -140,21 +140,21 @@ public class HarnessSelectionTest extends TestCase { | |||
System.err.println("skipping test - eclipse classes not available"); | |||
return; | |||
} | |||
String[] options = new String[] | |||
{ "-ajctestSkipKeywords=requireKeyword", | |||
String[] options = new String[] | |||
{ "-ajctestSkipKeywords=requireKeyword", | |||
"!verbose", | |||
"-eclipse", | |||
}; | |||
Exp exp = new Exp(17, 0, 17, 0, 0, 0, 17); | |||
checkSelection(SELECT, options, "keyword requireKeyword was found", exp); | |||
} | |||
public void testNoOptions() { | |||
if (!ajcAvailable()) { | |||
System.err.println("skipping test - ajc classes not available"); | |||
return; | |||
} | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "!ajc" | |||
}; | |||
Exp exp = new Exp(17, 3, 14, 3, 0, 0, 4); | |||
@@ -162,107 +162,107 @@ public class HarnessSelectionTest extends TestCase { | |||
} | |||
public void testEclipseOptionsSkip() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-eclipse", | |||
"-ajctestRequireKeywords=eclipseOptionSkip" | |||
}; | |||
Exp exp = new Exp(17, 0, 17, 0, 0, 0, 6); | |||
checkSelection(SELECT, options, "old ajc 1.0 option", exp); | |||
} | |||
public void testAjcEclipseConflict() { | |||
if (!ajcAvailable()) { | |||
System.err.println("skipping test - ajc classes not available"); | |||
return; | |||
} | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "!ajc" | |||
}; | |||
Exp exp = new Exp(17, 3, 14, 3, 0, 0, 6); | |||
checkSelection(SELECT, options, "conflict between !eclipse and !ajc", exp); | |||
} | |||
public void testEclipseConflict() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "^eclipse", | |||
"-ajctestSkipKeywords=skipUnenforcedAjcLimit" | |||
}; | |||
}; | |||
Exp exp = new Exp(17, 3, 14, 3, 0, 0, 6); | |||
checkSelection(SELECT, options, "force conflict between eclipse", exp); | |||
} | |||
public void testSinglePR() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-eclipse", "-ajctestPR=100" | |||
}; | |||
Exp exp = new Exp(17, 1, 16, 1, 0, 0, 16); | |||
checkSelection(SELECT, options, "bugId required", exp); | |||
} | |||
public void testTwoPR() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-eclipse", "-ajctestPR=100,101" | |||
}; | |||
Exp exp = new Exp(17, 2, 15, 2, 0, 0, 15); | |||
checkSelection(SELECT, options, "bugId required", exp); | |||
} | |||
public void testTitleContainsSubstringSelection() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-ajctestTitleContains=run and ", | |||
"-eclipse" | |||
"-eclipse" | |||
}; | |||
Exp exp = new Exp(17, 1, 16, 1, 0, 0, 16); | |||
checkSelection(SELECT, options, "run and", exp); | |||
} | |||
public void testTitleContainsSubstringSelectionPlural() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-ajctestTitleContains= run and , if skipKeyword ", | |||
"-eclipse" | |||
"-eclipse" | |||
}; | |||
Exp exp = new Exp(17, 2, 15, 2, 0, 0, 15); | |||
checkSelection(SELECT, options, "title", exp); | |||
} | |||
public void testTitleContainsExactSelection() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-ajctestTitleContains=run and pass", | |||
"-eclipse" | |||
"-eclipse" | |||
}; | |||
Exp exp = new Exp(17, 1, 16, 1, 0, 0, 16); | |||
checkSelection(SELECT, options, "run and pass", exp); | |||
} | |||
public void testTitleContainsExactSelectionPlural() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-ajctestTitleContains= run and pass , omit if skipKeyword ", | |||
"-eclipse" | |||
"-eclipse" | |||
}; | |||
Exp exp = new Exp(17, 2, 15, 2, 0, 0, 15); | |||
checkSelection(SELECT, options, "title", exp); | |||
} | |||
public void testTitleListSelection() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-ajctestTitleList=run and pass", | |||
"-eclipse" | |||
"-eclipse" | |||
}; | |||
Exp exp = new Exp(17, 1, 16, 1, 0, 0, 16); | |||
checkSelection(SELECT, options, "run and pass", exp); | |||
} | |||
public void testTitleListSelectionPlural() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-ajctestTitleList= run and pass , omit if skipKeyword ", | |||
"-eclipse" | |||
"-eclipse" | |||
}; | |||
Exp exp = new Exp(17, 2, 15, 2, 0, 0, 15); | |||
checkSelection(SELECT, options, "title", exp); | |||
} | |||
public void testTitleListFileSelection() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-ajctestTitleList=" + TITLE_LIST_ONE, | |||
"-eclipse" | |||
}; | |||
@@ -271,15 +271,15 @@ public class HarnessSelectionTest extends TestCase { | |||
} | |||
public void testTitleListFileSelectionPlural() { | |||
String[] options = new String[] | |||
String[] options = new String[] | |||
{ "-ajctestTitleList=" + TITLE_LIST_PLURAL, | |||
"-eclipse" | |||
}; | |||
Exp exp = new Exp(17, 2, 15, 2, 0, 0, 15); | |||
checkSelection(SELECT, options, TITLE_LIST_PLURAL, exp); | |||
// Now check the "fail only" path | |||
options = new String[] | |||
// Now check the "fail only" path | |||
options = new String[] | |||
{ "-ajctestTitleFailList=" + TITLE_LIST_PLURAL, | |||
"-eclipse" | |||
}; | |||
@@ -289,7 +289,7 @@ public class HarnessSelectionTest extends TestCase { | |||
checkSelection(SELECT, options, "skip", exp); | |||
} | |||
/** | |||
/** | |||
* Run the static test suite with the given options. | |||
* @param setupHolder the IMessageHolder for any setup messages | |||
* @return null if setup failed or Harness.RunResult if suite completed. | |||
@@ -305,15 +305,15 @@ public class HarnessSelectionTest extends TestCase { | |||
assertTrue("expected 17 kids, got " + kids.size(), false); | |||
} | |||
if (!spec.adoptParentValues(runtime, setupHolder)) { | |||
return null; | |||
return null; | |||
} else { | |||
class TestHarness extends Harness { | |||
public RunResult run(AjcTest.Suite.Spec spec) { | |||
return super.run(spec); | |||
} | |||
} | |||
} | |||
TestHarness h = new TestHarness(); | |||
return h.run(spec); | |||
return h.run(spec); | |||
} | |||
} | |||
@@ -334,8 +334,8 @@ public class HarnessSelectionTest extends TestCase { | |||
this.incomplete = incomplete; | |||
this.infix = infix; | |||
} | |||
} | |||
} | |||
public void checkSelection(String suiteFile, String[] options, String infoInfix, Exp exp) { | |||
MessageHandler holder = new MessageHandler(); | |||
Harness.RunResult result = runSuite(suiteFile, options, holder); | |||
@@ -345,7 +345,7 @@ public class HarnessSelectionTest extends TestCase { | |||
assertNotNull("Harness.RunResult", result); | |||
// XXX sync hack snooping of message text with skip messages, harness | |||
final List skipList = MessageUtil.getMessages(holder, IMessage.INFO, false, "skip"); | |||
final int numSkipped = skipList.size(); | |||
final int numSkipped = skipList.size(); | |||
IRunStatus status = result.status; | |||
assertNotNull(status); | |||
if (verbose) { | |||
@@ -355,7 +355,7 @@ public class HarnessSelectionTest extends TestCase { | |||
assertEquals("skips", exp.skipped, numSkipped); | |||
IRunStatus[] children = status.getChildren(); | |||
assertNotNull(children); | |||
assertTrue(children.length + "!= expRun=" + exp.testsRun, | |||
assertTrue(children.length + "!= expRun=" + exp.testsRun, | |||
exp.testsRun == children.length); | |||
int actPass = 0; | |||
for (IRunStatus child : children) { | |||
@@ -369,25 +369,27 @@ public class HarnessSelectionTest extends TestCase { | |||
if (!LangUtil.isEmpty(infoInfix)) { | |||
int actInfix = MessageUtil.getMessages(holder, IMessage.INFO, false, infoInfix).size(); | |||
if (actInfix != exp.infix) { | |||
String s = "for infix \"" + infoInfix | |||
String s = "for infix \"" + infoInfix | |||
+ "\" actInfix=" + actInfix + " != expInfix=" + exp.infix; | |||
assertTrue(s, false); | |||
} | |||
} | |||
} | |||
private boolean ajcAvailable() { // XXX util | |||
try { | |||
return (null != Class.forName("org.aspectj.compiler.base.JavaCompiler")); | |||
Class.forName("org.aspectj.compiler.base.JavaCompiler"); | |||
return true; | |||
} catch (ClassNotFoundException e) { | |||
return false; | |||
} | |||
} | |||
private boolean eclipseAvailable() { // XXX util | |||
try { | |||
return (null != Class.forName("org.aspectj.ajdt.ajc.AjdtCommand")); | |||
Class.forName("org.aspectj.ajdt.ajc.AjdtCommand"); | |||
return true; | |||
} catch (ClassNotFoundException e) { | |||
return false; | |||
} |
@@ -39,7 +39,7 @@ public class AjcTest { | |||
is16VMOrGreater = true; | |||
is17VMOrGreater = true; | |||
is18VMOrGreater = true; | |||
is19VMOrGreater = LangUtil.is19VMOrGreater(); | |||
is19VMOrGreater = LangUtil.is9VMOrGreater(); | |||
is10VMOrGreater = LangUtil.is10VMOrGreater(); | |||
is11VMOrGreater = LangUtil.is11VMOrGreater(); | |||
is12VMOrGreater = LangUtil.is12VMOrGreater(); |
@@ -11,8 +11,8 @@ | |||
* ******************************************************************/ | |||
package org.aspectj.testing; | |||
import java.util.ArrayList; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
import java.util.StringTokenizer; | |||
import org.aspectj.tools.ajc.AjcTestCase; | |||
import org.aspectj.util.LangUtil; | |||
@@ -63,43 +63,43 @@ public class OutputSpec { | |||
} | |||
boolean matches = false; | |||
int lineNo = 0; | |||
StringTokenizer strTok = new StringTokenizer(output,"\n"); | |||
if (strTok.countTokens() == expectedOutputLines.size()) { | |||
String[] actualOutputLines = getTrimmedLines(output); | |||
if (actualOutputLines.length == expectedOutputLines.size()) { | |||
matches = true; | |||
for (String line: expectedOutputLines) { | |||
lineNo++; | |||
String outputLine = strTok.nextToken().trim(); | |||
for (String lineExpected : expectedOutputLines) { | |||
String lineFound = actualOutputLines[lineNo++]; | |||
/* Avoid trying to match on ajSandbox source names that appear in messages */ | |||
if (!outputLine.contains(line)) { | |||
if (!lineFound.contains(lineExpected.trim())) { | |||
matches = false; | |||
break; | |||
} | |||
} | |||
} else { lineNo = -1; } | |||
if (!matches) { | |||
createFailureMessage(output, lineNo, strTok.countTokens()); | |||
createFailureMessage(output, lineNo, actualOutputLines.length); | |||
} | |||
} | |||
public void unorderedMatchAgainst(String output) { | |||
List<String> outputFound = getOutputFound(output); | |||
if(outputFound.size() != expectedOutputLines.size()) { | |||
createFailureMessage(output, -1, outputFound.size()); | |||
private void unorderedMatchAgainst(String output) { | |||
List<String> actualOutputLines = Arrays.asList(getTrimmedLines(output)); | |||
int numberOfOutputLines = actualOutputLines.size(); | |||
if(numberOfOutputLines != expectedOutputLines.size()) { | |||
createFailureMessage(output, -1, numberOfOutputLines); | |||
return; | |||
} | |||
List<String> expected = new ArrayList<>(expectedOutputLines); | |||
List<String> found = new ArrayList<>(outputFound); | |||
for (String lineFound : outputFound) { | |||
List<String> found = new ArrayList<>(actualOutputLines); | |||
for (String lineFound : actualOutputLines) { | |||
for (String lineExpected : expectedOutputLines) { | |||
if (lineFound.contains(lineExpected)) { | |||
if (lineFound.contains(lineExpected.trim())) { | |||
found.remove(lineFound); | |||
expected.remove(lineExpected); | |||
continue; | |||
} | |||
} | |||
} | |||
if (!found.isEmpty() || !expected.isEmpty()) { | |||
createFailureMessage(output,-2,outputFound.size()); | |||
createFailureMessage(output, -2, numberOfOutputLines); | |||
} | |||
} | |||
@@ -121,13 +121,9 @@ public class OutputSpec { | |||
AjcTestCase.fail(failMessage.toString()); | |||
} | |||
private List<String> getOutputFound(String output) { | |||
List<String> found = new ArrayList<>(); | |||
StringTokenizer strTok = new StringTokenizer(output,"\n"); | |||
while(strTok.hasMoreTokens()) { | |||
String outputLine = strTok.nextToken().trim(); | |||
found.add(outputLine); | |||
} | |||
return found; | |||
private String[] getTrimmedLines(String text) { | |||
// Remove leading/trailing empty lines and leading/trailing whitespace from each line | |||
String[] trimmedLines = text.trim().split("\\s*\n\\s*"); | |||
return trimmedLines.length == 1 && trimmedLines[0].equals("") ? new String[0] : trimmedLines; | |||
} | |||
} |
@@ -0,0 +1,31 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 2021 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 | |||
* ******************************************************************/ | |||
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 XMLBasedAjcTestCaseForJava14Only extends XMLBasedAjcTestCase { | |||
@Override | |||
public void runTest(String title) { | |||
if (!LangUtil.is14VMOrGreater() || LangUtil.is15VMOrGreater()) { | |||
throw new IllegalStateException( | |||
"These tests should be run on Java 14 only " + | |||
"(e.g. because they use version-specific preview features)" | |||
); | |||
} | |||
super.runTest(title); | |||
} | |||
} |
@@ -1,12 +1,12 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 2018 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: | |||
* 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: | |||
* Andy Clement | |||
* ******************************************************************/ | |||
package org.aspectj.testing; | |||
@@ -15,7 +15,7 @@ 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 { | |||
@@ -23,10 +23,10 @@ public abstract class XMLBasedAjcTestCaseForJava9OrLater extends XMLBasedAjcTest | |||
@Override | |||
public void runTest(String title) { | |||
// Check we are on Java9 or later | |||
if (!LangUtil.is19VMOrGreater()) { | |||
if (!LangUtil.is9VMOrGreater()) { | |||
throw new IllegalStateException("These tests should be run on Java 9 or later"); | |||
} | |||
super.runTest(title); | |||
} | |||
} |
@@ -1,13 +1,13 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 2003 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: | |||
* Wes Isberg initial implementation | |||
* 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: | |||
* Wes Isberg initial implementation | |||
* ******************************************************************/ | |||
package org.aspectj.testing.taskdefs; | |||
@@ -35,7 +35,7 @@ public class AjcTaskCompileCommandTest extends TestCase { | |||
static boolean loggedWarning = false; | |||
static boolean runAllTests = true; | |||
static List<File> tempFiles = new ArrayList<>(); | |||
private static File getClassesDir() { | |||
File tempDir = FileUtil.getTempDir("AjcTaskCompileCommandTest-classes"); | |||
tempFiles.add(tempDir); | |||
@@ -48,7 +48,7 @@ public class AjcTaskCompileCommandTest extends TestCase { | |||
list.add("-classpath"); | |||
StringBuilder classpath = new StringBuilder(); | |||
classpath.append(Globals.F_aspectjrt_jar.getAbsolutePath()); | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
classpath.append(File.pathSeparator).append(LangUtil.getJrtFsFilePath()); | |||
} | |||
list.add(classpath.toString()); | |||
@@ -56,7 +56,7 @@ public class AjcTaskCompileCommandTest extends TestCase { | |||
static boolean doWait(IMessageHolder holder, int seconds, int timeout) { | |||
return AjcTaskCompileCommand | |||
.waitUntilMessagesQuiet(holder, seconds, timeout); | |||
.waitUntilMessagesQuiet(holder, seconds, timeout); | |||
} | |||
public AjcTaskCompileCommandTest(String name) { | |||
@@ -85,30 +85,30 @@ public class AjcTaskCompileCommandTest extends TestCase { | |||
public void testDefaultList() { | |||
runSimpleTest("../taskdefs/testdata/default.lst", 0); | |||
} | |||
public void testCompileErrorList() { | |||
runSimpleTest("../taskdefs/testdata/compileError.lst", 1); | |||
} | |||
public void testWaitUntilMessagesQuiet_1_2() { | |||
if (runAllTests) checkWait(1, 2, 0, 0); | |||
} | |||
public void testWaitUntilMessagesQuiet_1_10() { | |||
if (runAllTests) checkWait(1, 10, 0, 0); | |||
} | |||
public void testWaitUntilMessagesQuiet_8_10() { | |||
checkWait(8, 10, 0, 0); | |||
} | |||
// XXX two async tests might fail if adder thread starved | |||
public void testWaitUntilMessagesQuiet_1_10_4_1() { | |||
if (runAllTests) checkWait(1, 10, 4, 1); | |||
} | |||
public void testWaitUntilMessagesQuiet_8_10_2_1() { | |||
if (runAllTests) checkWait(8, 20, 2, 1); | |||
} | |||
@@ -129,7 +129,7 @@ public class AjcTaskCompileCommandTest extends TestCase { | |||
} | |||
runTest(list, expectedErrors); | |||
} | |||
void runTest(ArrayList<String> args, int expectedErrors) { | |||
AjcTaskCompileCommand command = | |||
new AjcTaskCompileCommand(); | |||
@@ -140,14 +140,14 @@ public class AjcTaskCompileCommandTest extends TestCase { | |||
final boolean pass = (result == expectPass); | |||
if (!pass) { | |||
String m = expectPass ? "pass" : "fail"; | |||
assertTrue("expected " + m + ": " + args+"\n Messages:"+handler.getUnmodifiableListView(), false); | |||
} | |||
} | |||
void checkWait(final int seconds, final int timeout, int toAdd, int addInterval) { | |||
final String testCase = "checkWait(seconds=" | |||
+ seconds + ", timeout=" + timeout; | |||
final String testCase = "checkWait(seconds=" | |||
+ seconds + ", timeout=" + timeout; | |||
final MessageHandler mhandler = new MessageHandler(); | |||
final long startTime = System.currentTimeMillis(); | |||
final long testTimeout = startTime + (timeout * 2000l); | |||
@@ -160,7 +160,7 @@ public class AjcTaskCompileCommandTest extends TestCase { | |||
System.out.println("warning - test will fail if adder thread starved"); | |||
loggedWarning = true; | |||
} | |||
final MessageAdder adder | |||
final MessageAdder adder | |||
= new MessageAdder(mhandler, toAdd, addInterval); | |||
final String label = testCase + " wait(" + toAdd + ", " + addInterval + ")"; | |||
class Result { | |||
@@ -173,15 +173,15 @@ public class AjcTaskCompileCommandTest extends TestCase { | |||
waitResult.addedThread | |||
= new Thread(adder, label + "-child"); | |||
waitResult.addedThread.start(); | |||
waitResult.result = | |||
waitResult.result = | |||
AjcTaskCompileCommandTest.doWait(mhandler, seconds, timeout); | |||
} | |||
}, label); | |||
testThread.start(); | |||
try { | |||
testThread.join(testTimeout - startTime); | |||
testThread.join(testTimeout - startTime); | |||
} catch (InterruptedException e) { | |||
// ignore | |||
} | |||
@@ -190,13 +190,13 @@ public class AjcTaskCompileCommandTest extends TestCase { | |||
long wait = testTimeout - System.currentTimeMillis(); | |||
if (0 < wait) { | |||
waitResult.addedThread.join(wait); | |||
} | |||
} | |||
} | |||
} catch (InterruptedException e) { | |||
// ignore | |||
} | |||
result = waitResult.result; | |||
int added = adder.getNumAdded(); | |||
int added = adder.getNumAdded(); | |||
assertEquals(testCase + " added", added, toAdd); | |||
if (!result) { | |||
assertTrue(testCase + " result " + adder, false); | |||
@@ -215,12 +215,12 @@ class MessageAdder implements Runnable { | |||
public static long MAX_MILLIS = 1000 * 30; | |||
public boolean stop; | |||
public boolean wait; | |||
private final IMessageHolder messages; | |||
private final int numToAdd; | |||
private final int interval; | |||
private int numAdded; | |||
/** | |||
* @param holder the IMessageHolder to add to | |||
* @param num the int number of messages to add | |||
@@ -242,7 +242,7 @@ class MessageAdder implements Runnable { | |||
final long timeout = curTime + MAX_MILLIS; | |||
// final Thread thread = Thread.currentThread(); | |||
int numAdded = 0; | |||
while (!stop && (timeout > curTime) | |||
while (!stop && (timeout > curTime) | |||
&& (numAdded < numToAdd)) { | |||
long targetTime = curTime + waitBetweenAdds; | |||
while (!stop && (curTime < timeout) | |||
@@ -264,7 +264,7 @@ class MessageAdder implements Runnable { | |||
int getNumAdded() { | |||
return numAdded; | |||
} | |||
public String toString() { | |||
return "MessageAdder(" | |||
+ "numAdded=" + numAdded | |||
@@ -273,9 +273,9 @@ class MessageAdder implements Runnable { | |||
+ ", stop=" + stop | |||
+ ", wait=" + wait | |||
+ ", numMessages=" | |||
+ (null == messages | |||
? 0 | |||
+ (null == messages | |||
? 0 | |||
: messages.numMessages(null, true)) | |||
+ ")"; | |||
} | |||
} | |||
} | |||
} |
@@ -1,15 +1,15 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 1999-2001 Xerox Corporation, | |||
* Copyright (c) 1999-2001 Xerox Corporation, | |||
* 2002 Palo Alto Research Center, Incorporated (PARC), | |||
* 2003 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: | |||
* Xerox/PARC initial implementation | |||
* 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: | |||
* Xerox/PARC initial implementation | |||
* Wes Isberg resolver | |||
* ******************************************************************/ | |||
@@ -42,8 +42,8 @@ import org.xml.sax.EntityResolver; | |||
import org.xml.sax.InputSource; | |||
import org.xml.sax.SAXException; | |||
/** | |||
* Read an ajc test specification in xml form. | |||
/** | |||
* Read an ajc test specification in xml form. | |||
* Input files should comply with DOCTYPE | |||
*/ | |||
public class AjcSpecXmlReader { | |||
@@ -51,7 +51,7 @@ public class AjcSpecXmlReader { | |||
* To add new elements or attributes: | |||
* - update the DOCTYPE | |||
* - update setupDigester(..) | |||
* - new sub-elements should be created | |||
* - new sub-elements should be created | |||
* - new attributes should have values set as bean properties | |||
* (possibly by mapping names) | |||
* - new sub-elements should be added to parents | |||
@@ -64,7 +64,7 @@ public class AjcSpecXmlReader { | |||
* - update any client writers referring to the DOCTYPE, as necessary. | |||
* - the parent IXmlWriter should delegate to the child component | |||
* as IXmlWriter (or write the subelement itself) | |||
* | |||
* | |||
* Debugging | |||
* - use logLevel = 2 for tracing | |||
* - common mistakes | |||
@@ -72,29 +72,29 @@ public class AjcSpecXmlReader { | |||
* - no rule defined (or misdefined) so element ignored | |||
* - property read-only (?) | |||
*/ | |||
// private static final String EOL = "\n"; | |||
/** presumed relative-path to dtd file for any XML files written by writeSuiteToXmlFile */ | |||
public static final String DTD_PATH = "../tests/ajcTestSuite.dtd"; | |||
/** expected doc type of AjcSpec XML files */ | |||
public static final String DOCTYPE = "<!DOCTYPE " | |||
public static final String DOCTYPE = "<!DOCTYPE " | |||
+ AjcTest.Suite.Spec.XMLNAME + " SYSTEM \"" + DTD_PATH + "\">"; | |||
private static final AjcSpecXmlReader ME | |||
private static final AjcSpecXmlReader ME | |||
= new AjcSpecXmlReader(); | |||
/** @return shared instance */ | |||
public static final AjcSpecXmlReader getReader() { | |||
return ME; | |||
} | |||
public static void main(String[] a) throws IOException { | |||
writeDTD(new File("../tests/ajcTestSuite2.dtd")); | |||
} | |||
/** | |||
/** | |||
* Write a DTD to dtdFile. | |||
* @deprecated | |||
* @param dtdFile the File to write to | |||
@@ -103,19 +103,19 @@ public class AjcSpecXmlReader { | |||
LangUtil.throwIaxIfNull(dtdFile, "dtdFile"); | |||
PrintWriter out = new PrintWriter(new FileWriter(dtdFile)); | |||
try { | |||
out.println("<!-- document type for ajc test suite - see " | |||
out.println("<!-- document type for ajc test suite - see " | |||
+ AjcSpecXmlReader.class.getName() + " -->"); | |||
//out.println(getDocType()); | |||
} finally { | |||
out.close(); | |||
} | |||
} | |||
} | |||
private static final String[] LOG = new String[] {"info", "debug", "trace" }; | |||
// XXX logLevel n>0 causes JUnit tests to fail! | |||
private int logLevel = 0; // use 2 for tracing | |||
private int logLevel = 0; // use 2 for tracing | |||
private AjcSpecXmlReader() {} | |||
/** @param level 0..2, info..trace */ | |||
@@ -126,14 +126,13 @@ public class AjcSpecXmlReader { | |||
if (level > 2) { | |||
level = 2; | |||
} | |||
logLevel = level; | |||
logLevel = level; | |||
} | |||
/** | |||
* Print an IXmlWritable to the output file | |||
* with our leader and DOCTYPE. | |||
* @param output the File to write to - overwritten | |||
* @param tests the List of IXmlWritable to write | |||
* @return null if no warnings detected, warnings otherwise | |||
*/ | |||
public String writeSuiteToXmlFile(File output, IXmlWritable topNode) throws IOException { | |||
@@ -147,7 +146,7 @@ public class AjcSpecXmlReader { | |||
String parent = output.getParent(); | |||
if (null == parent) { | |||
parent = "."; | |||
} | |||
} | |||
String dtdPath = parent + "/" + DTD_PATH; | |||
File dtdFile = new File(dtdPath); | |||
if (!dtdFile.canRead()) { | |||
@@ -155,13 +154,13 @@ public class AjcSpecXmlReader { | |||
} | |||
return null; | |||
} | |||
/** | |||
/** | |||
* Read the specifications for a suite of AjcTest from an XML file. | |||
* This also sets the suite dir in the specification. | |||
* @param file the File must be readable, comply with DOCTYPE. | |||
* @return AjcTest.Suite.Spec read from file | |||
* @see setLogLevel(int) | |||
* @see #setLogLevel(int) | |||
*/ | |||
public AjcTest.Suite.Spec readAjcSuite(File file) throws IOException, AbortException { | |||
// setup loggers for digester and beanutils... | |||
@@ -180,7 +179,7 @@ public class AjcSpecXmlReader { | |||
if (null != input) { | |||
input.close(); | |||
input = null; | |||
} | |||
} | |||
} | |||
AjcTest.Suite.Spec result = holder.spec; | |||
if (null != result) { | |||
@@ -198,13 +197,13 @@ public class AjcSpecXmlReader { | |||
} | |||
return result; | |||
} | |||
private Digester makeDigester(final File suiteFile) { | |||
// implement EntityResolver directly; set is failing | |||
Digester result = new Digester() { | |||
final SuiteResolver resolver = new SuiteResolver(suiteFile); | |||
public InputSource resolveEntity( | |||
String publicId, | |||
String publicId, | |||
String systemId) | |||
throws SAXException { | |||
return resolver.resolveEntity(publicId, systemId); | |||
@@ -213,7 +212,7 @@ public class AjcSpecXmlReader { | |||
setupDigester(result); | |||
return result; | |||
} | |||
/** set up the mapping between the xml and Java. */ | |||
private void setupDigester(Digester digester) { | |||
// XXX supply sax parser to ignore white space? | |||
@@ -245,24 +244,24 @@ public class AjcSpecXmlReader { | |||
digester.addObjectCreate(compileX, CompilerRun.Spec.class.getName()); | |||
//digester.addObjectCreate(compileX + "/file", AbstractRunSpec.WrapFile.class.getName()); | |||
digester.addObjectCreate(inccompileX, IncCompilerRun.Spec.class.getName()); | |||
digester.addObjectCreate(runX, JavaRun.Spec.class.getName()); | |||
digester.addObjectCreate(runX, JavaRun.Spec.class.getName()); | |||
digester.addObjectCreate(messageX, SoftMessage.class.getName()); | |||
digester.addObjectCreate(messageSrcLocX, SoftSourceLocation.class.getName()); | |||
digester.addObjectCreate(dirchangesX, DirChanges.Spec.class.getName()); | |||
// ---- set bean properties for sub-elements created automatically | |||
// -- some remapped - warnings | |||
// - if property exists, map will not be used | |||
digester.addSetProperties(suiteX); // ok to have suite messages and global suite options, etc. | |||
digester.addSetProperties(ajctestX, | |||
digester.addSetProperties(ajctestX, | |||
new String[] { "title", "dir", "pr"}, | |||
new String[] { "description", "testDirOffset", "bugId"}); | |||
digester.addSetProperties(compileX, | |||
digester.addSetProperties(compileX, | |||
new String[] { "files", "argfiles"}, | |||
new String[] { "paths", "argfiles"}); | |||
digester.addSetProperties(compileX + "/file"); | |||
digester.addSetProperties(inccompileX, "classes", "paths"); | |||
digester.addSetProperties(runX, | |||
digester.addSetProperties(runX, | |||
new String[] { "class", "vm", "skipTester", "fork", "vmargs", "aspectpath", "module"}, | |||
new String[] { "className", "javaVersion", "skipTester", "fork", "vmArgs", "aspectpath", "module"}); | |||
digester.addSetProperties(dirchangesX); | |||
@@ -274,7 +273,7 @@ public class AjcSpecXmlReader { | |||
// only file subelement of compile uses text as path... XXX vestigial | |||
digester.addCallMethod(compileX + "/file", "setFile", 0); | |||
// ---- when subelements are created, add to parent | |||
// ---- when subelements are created, add to parent | |||
// add ajctest to suite, runs to ajctest, files to compile, messages to any parent... | |||
// the method name (e.g., "addSuite") is in the parent (SuiteHolder) | |||
// the class (e.g., AjcTest.Suite.Spec) refers to the type of the object created | |||
@@ -289,53 +288,53 @@ public class AjcSpecXmlReader { | |||
// addSourceLocation is for the extra | |||
digester.addSetNext(messageSrcLocX, "addSourceLocation", ISourceLocation.class.getName()); | |||
digester.addSetNext(dirchangesX, "addDirChanges", DirChanges.Spec.class.getName()); | |||
// can set parent, but prefer to have "knows-about" flow down only... | |||
} | |||
// ------------------------------------------------------------ testing code | |||
/** | |||
* Get expected bean properties for introspection tests. | |||
/** | |||
* Get expected bean properties for introspection tests. | |||
* This should return an expected property for every attribute in DOCTYPE, | |||
* using any mapped-to names from setupDigester. | |||
*/ | |||
static BProps[] expectedProperties() { | |||
return new BProps[] | |||
return new BProps[] | |||
{ | |||
new BProps(AjcTest.Suite.Spec.class, | |||
new BProps(AjcTest.Suite.Spec.class, | |||
new String[] { "suiteDir"}), // verbose removed | |||
new BProps(AjcTest.Spec.class, | |||
new BProps(AjcTest.Spec.class, | |||
new String[] { "description", "testDirOffset", "bugId"}), | |||
// mapped from { "title", "dir", "pr"} | |||
new BProps(CompilerRun.Spec.class, | |||
new String[] { "files", "options", | |||
new BProps(CompilerRun.Spec.class, | |||
new String[] { "files", "options", | |||
"staging", "badInput", "reuseCompiler", "includeClassesDir", | |||
"argfiles", "aspectpath", "classpath", "extdirs", | |||
"argfiles", "aspectpath", "classpath", "extdirs", | |||
"sourceroots", "xlintfile", "outjar"}), | |||
new BProps(IncCompilerRun.Spec.class, | |||
new BProps(IncCompilerRun.Spec.class, | |||
new String[] { "tag" }), | |||
new BProps(JavaRun.Spec.class, | |||
new String[] { "className", "skipTester", "options", | |||
new BProps(JavaRun.Spec.class, | |||
new String[] { "className", "skipTester", "options", | |||
"javaVersion", "errStreamIsError", "outStreamIsError", | |||
"fork", "vmArgs", "aspectpath"}), | |||
// mapped from { "class", ...} | |||
new BProps(DirChanges.Spec.class, | |||
new BProps(DirChanges.Spec.class, | |||
new String[] { "added", "removed", "updated", "unchanged", "dirToken", "defaultSuffix"}), | |||
// new BProps(AbstractRunSpec.WrapFile.class, | |||
// new BProps(AbstractRunSpec.WrapFile.class, | |||
// new String[] { "path"}), | |||
new BProps(SoftMessage.class, | |||
new BProps(SoftMessage.class, | |||
new String[] { "kindAsString", "lineAsString", "text", "details", "file"}) | |||
// mapped from { "kind", "line", ...} | |||
}; | |||
} | |||
/** | |||
/** | |||
* This is only to do compile-time checking for the APIs impliedly | |||
* used in setupDigester(..). | |||
* The property setter checks are redundant with tests based on | |||
* expectedProperties(). | |||
*/ | |||
private static void setupDigesterCompileTimeCheck() { | |||
private static void setupDigesterCompileTimeCheck() { | |||
if (true) { throw new Error("never invoked"); } | |||
AjcTest.Suite.Spec suite = new AjcTest.Suite.Spec(); | |||
AjcTest.Spec test = new AjcTest.Spec(); | |||
@@ -349,7 +348,7 @@ public class AjcSpecXmlReader { | |||
// ajctest.setTestBaseDirOffset((String) null); | |||
// ajctest.setBugId((String) null); | |||
// ajctest.setTestSourceLocation((ISourceLocation) null); | |||
CompilerRun.Spec crunSpec = new CompilerRun.Spec(); | |||
crunSpec.addMessage((IMessage) null); | |||
// XXX crunSpec.addSourceLocation((ISourceLocation) null); | |||
@@ -360,7 +359,7 @@ public class AjcSpecXmlReader { | |||
crunSpec.setReuseCompiler(false); | |||
crunSpec.setXlintfile((String) null); | |||
crunSpec.setOutjar((String)null); | |||
IncCompilerRun.Spec icrunSpec = new IncCompilerRun.Spec(); | |||
icrunSpec.addMessage((IMessage) null); | |||
icrunSpec.setTag((String) null); | |||
@@ -371,7 +370,7 @@ public class AjcSpecXmlReader { | |||
jrunspec.setClassName((String) null); | |||
jrunspec.addMessage((IMessage) null); | |||
// input s.b. interpretable by Boolean.valueOf(String) | |||
jrunspec.setSkipTester(true); | |||
jrunspec.setSkipTester(true); | |||
jrunspec.setErrStreamIsError("false"); | |||
jrunspec.setOutStreamIsError("false"); | |||
jrunspec.setAspectpath(""); | |||
@@ -379,8 +378,8 @@ public class AjcSpecXmlReader { | |||
jrunspec.setFork(false); | |||
jrunspec.setLTW("false"); | |||
jrunspec.setException("Error"); | |||
DirChanges.Spec dcspec = new DirChanges.Spec(); | |||
dcspec.setAdded((String) null); | |||
dcspec.setRemoved((String) null); | |||
@@ -393,16 +392,16 @@ public class AjcSpecXmlReader { | |||
m.setText((String) null); | |||
m.setKindAsString((String) null); | |||
m.setDetails((String) null); | |||
SoftSourceLocation sl = new SoftSourceLocation(); | |||
sl.setFile((String) null); | |||
sl.setLine((String) null); | |||
sl.setColumn((String) null); | |||
sl.setEndLine((String) null); | |||
sl.setFile((String) null); | |||
sl.setLine((String) null); | |||
sl.setColumn((String) null); | |||
sl.setEndLine((String) null); | |||
// add attribute setters to validate? | |||
} | |||
/** top element on Digester stack holds the test suite */ | |||
public static class SuiteHolder { | |||
AjcTest.Suite.Spec spec; | |||
@@ -410,7 +409,7 @@ public class AjcSpecXmlReader { | |||
this.spec = spec; | |||
} | |||
} | |||
/** hold class/properties association for testing */ | |||
static class BProps { | |||
final Class cl; | |||
@@ -420,13 +419,13 @@ public class AjcSpecXmlReader { | |||
this.props = props; | |||
} | |||
} | |||
/** | |||
* Find file NAME=="ajcTestSuite.dtd" from some reasonably-local | |||
* relative directories. | |||
* XXX bug: commons parser doesn't accept second registration, | |||
* so we override Digester's implementation instead. | |||
* XXX cannot JUnit test SuiteResolver since they run from | |||
* XXX cannot JUnit test SuiteResolver since they run from | |||
* local directory with valid reference | |||
* XXX does not fix JDK 1.4 parser message "unable to resolve without base URI" | |||
* XXX should be able to just set BaseURI instead... | |||
@@ -440,7 +439,7 @@ public class AjcSpecXmlReader { | |||
public SuiteResolver(File suiteFile) { | |||
this.suiteFile = suiteFile; | |||
} | |||
private String getPath(String id) { | |||
// first, try id relative to suite file | |||
@@ -453,12 +452,12 @@ public class AjcSpecXmlReader { | |||
return result.getPath(); | |||
} | |||
} | |||
// then try misc paths relative to suite file or current dir | |||
// then try misc paths relative to suite file or current dir | |||
final File[] baseDirs = new File[] | |||
{ suiteFileDir, new File(".") | |||
}; | |||
final String[] locations = new String[] | |||
{ ".", "..", "../tests", "../../tests", | |||
{ ".", "..", "../tests", "../../tests", | |||
"../../../tests", "tests", "modules/tests" | |||
}; | |||
File baseDir; | |||
@@ -480,11 +479,11 @@ public class AjcSpecXmlReader { | |||
return null; | |||
} | |||
public InputSource resolveEntity( | |||
String publicId, | |||
String publicId, | |||
String systemId) | |||
throws SAXException { | |||
InputSource result = null; | |||
if ((null != systemId) && | |||
if ((null != systemId) && | |||
systemId.endsWith(NAME)) { | |||
String path = getPath(systemId); | |||
if (null != path) { | |||
@@ -514,8 +513,8 @@ public class AjcSpecXmlReader { | |||
// int start = line.indexOf("\""); | |||
// int end = line.lastIndexOf(NAME + "\""); | |||
// if ((0 < start) && (start < end)) { | |||
// return upper.substring(start+1, | |||
// end + NAME.length()); | |||
// return upper.substring(start+1, | |||
// end + NAME.length()); | |||
// } | |||
// } else if (!line.startsWith("<?xml")) { | |||
// break; // something else... |
@@ -1,71 +1,119 @@ | |||
<!-- this defines a DOCTYPE for a suite of ajc tests --> | |||
<!-- element-component mappings are in org.aspectj.testing.xml.AjcSpecXmlReader --> | |||
<!-- element names are determined by the component XMLNAME static variable --> | |||
<!ELEMENT suite (ajc-test*)> | |||
<!ATTLIST suite suiteDir CDATA #IMPLIED > | |||
<!-- permits leading inc-compile, will fail --> | |||
<!ELEMENT ajc-test ((compile | inc-compile | run)*)> | |||
<!ATTLIST ajc-test title CDATA #REQUIRED > | |||
<!ATTLIST ajc-test dir CDATA #REQUIRED > | |||
<!ATTLIST ajc-test pr CDATA #IMPLIED > | |||
<!ATTLIST ajc-test keywords CDATA #IMPLIED > | |||
<!ATTLIST ajc-test comment CDATA #IMPLIED > | |||
<!ELEMENT compile (dir-changes*,message*)> | |||
<!ATTLIST compile staging CDATA #IMPLIED > | |||
<!ATTLIST compile badInput CDATA #IMPLIED > | |||
<!ATTLIST compile files CDATA #IMPLIED > | |||
<!ATTLIST compile reuseCompiler CDATA #IMPLIED > | |||
<!ATTLIST compile includeClassesDir CDATA #IMPLIED > | |||
<!ATTLIST compile argfiles CDATA #IMPLIED > | |||
<!ATTLIST compile aspectpath CDATA #IMPLIED > | |||
<!ATTLIST compile classpath CDATA #IMPLIED > | |||
<!ATTLIST compile extdirs CDATA #IMPLIED > | |||
<!ATTLIST compile options CDATA #IMPLIED > | |||
<!ATTLIST compile sourceroots CDATA #IMPLIED > | |||
<!ATTLIST compile xlintfile CDATA #IMPLIED > | |||
<!ATTLIST compile outjar CDATA #IMPLIED > | |||
<!ELEMENT inc-compile (dir-changes*,message*)> | |||
<!ATTLIST inc-compile tag CDATA #REQUIRED > | |||
<!ATTLIST inc-compile fresh CDATA #IMPLIED > | |||
<!ATTLIST inc-compile checkModel CDATA #IMPLIED > | |||
<!ELEMENT run (dir-changes*,message*)> | |||
<!ATTLIST run class CDATA #REQUIRED > | |||
<!ATTLIST run skipTester CDATA #IMPLIED > | |||
<!ATTLIST run vm CDATA #IMPLIED > | |||
<!ATTLIST run options CDATA #IMPLIED > | |||
<!ATTLIST run errStreamIsError CDATA #IMPLIED > | |||
<!ATTLIST run outStreamIsError CDATA #IMPLIED > | |||
<!ATTLIST run fork CDATA #IMPLIED > | |||
<!ATTLIST run vmargs CDATA #IMPLIED > | |||
<!ATTLIST run aspectpath CDATA #IMPLIED > | |||
<!ATTLIST run classpath CDATA #IMPLIED > | |||
<!ATTLIST run LTW CDATA #IMPLIED > | |||
<!ATTLIST run usefullltw CDATA #IMPLIED > | |||
<!ATTLIST run exception CDATA #IMPLIED > | |||
<!ELEMENT message (source*)> | |||
<!ATTLIST message kind (abort | fail | error | warning | info | Xlint) #REQUIRED > | |||
<!ATTLIST message line CDATA #IMPLIED > | |||
<!ATTLIST message text CDATA #IMPLIED > | |||
<!ATTLIST message file CDATA #IMPLIED > | |||
<!ATTLIST message details CDATA #IMPLIED > | |||
<!ELEMENT source (#PCDATA)> | |||
<!ATTLIST source line CDATA #IMPLIED > | |||
<!ATTLIST source file CDATA #IMPLIED > | |||
<!ELEMENT dir-changes (#PCDATA)> | |||
<!ATTLIST dir-changes dirToken (classes | run) #IMPLIED > | |||
<!ATTLIST dir-changes defaultSuffix (.class) #IMPLIED > | |||
<!ATTLIST dir-changes added CDATA #IMPLIED > | |||
<!ATTLIST dir-changes removed CDATA #IMPLIED > | |||
<!ATTLIST dir-changes updated CDATA #IMPLIED > | |||
<!ATTLIST dir-changes unchanged CDATA #IMPLIED > | |||
<!ATTLIST dir-changes expDir CDATA #IMPLIED > | |||
<!ATTLIST dir-changes fastFail CDATA #IMPLIED > | |||
<!ATTLIST dir-changes delay CDATA #IMPLIED > | |||
<!-- this defines a DOCTYPE for a suite of ajc tests --> | |||
<!-- element-component mappings are in org.aspectj.testing.xml.AjcSpecXmlReader --> | |||
<!-- element names are determined by the component XMLNAME static variable --> | |||
<!ELEMENT suite (ajc-test | comment)*> | |||
<!ATTLIST suite suiteDir CDATA #IMPLIED > | |||
<!-- permits leading inc-compile, will fail --> | |||
<!ELEMENT ajc-test ((compile | inc-compile | run | weave | file | ant | comment)*)> | |||
<!ATTLIST ajc-test title CDATA #REQUIRED > | |||
<!ATTLIST ajc-test dir CDATA #REQUIRED > | |||
<!ATTLIST ajc-test pr CDATA #IMPLIED > | |||
<!ATTLIST ajc-test keywords CDATA #IMPLIED > | |||
<!ATTLIST ajc-test comment CDATA #IMPLIED > | |||
<!ATTLIST ajc-test vm CDATA #IMPLIED > | |||
<!ELEMENT compile (dir-changes*,message*)> | |||
<!ATTLIST compile comment CDATA #IMPLIED > | |||
<!ATTLIST compile staging CDATA #IMPLIED > | |||
<!ATTLIST compile badInput CDATA #IMPLIED > | |||
<!ATTLIST compile files CDATA #IMPLIED > | |||
<!ATTLIST compile reuseCompiler CDATA #IMPLIED > | |||
<!ATTLIST compile includeClassesDir CDATA #IMPLIED > | |||
<!ATTLIST compile argfiles CDATA #IMPLIED > | |||
<!ATTLIST compile aspectpath CDATA #IMPLIED > | |||
<!ATTLIST compile aspectsFiles CDATA #IMPLIED > | |||
<!ATTLIST compile classpath CDATA #IMPLIED > | |||
<!ATTLIST compile modulepath CDATA #IMPLIED > | |||
<!ATTLIST compile inpath CDATA #IMPLIED > | |||
<!ATTLIST compile extdirs CDATA #IMPLIED > | |||
<!ATTLIST compile options CDATA #IMPLIED > | |||
<!ATTLIST compile sourceroots CDATA #IMPLIED > | |||
<!ATTLIST compile xlintfile CDATA #IMPLIED > | |||
<!ATTLIST compile outjar CDATA #IMPLIED > | |||
<!ATTLIST compile outxmlfile CDATA #IMPLIED > | |||
<!ELEMENT inc-compile (dir-changes*,message*)> | |||
<!ATTLIST inc-compile tag CDATA #REQUIRED > | |||
<!ATTLIST inc-compile fresh CDATA #IMPLIED > | |||
<!ATTLIST inc-compile checkModel CDATA #IMPLIED > | |||
<!ELEMENT run (dir-changes*,message*,stdout*,stderr*)> | |||
<!-- Either class or modulepath is required --> | |||
<!ATTLIST run class CDATA #IMPLIED > | |||
<!ATTLIST run modulepath CDATA #IMPLIED > | |||
<!ATTLIST run module CDATA #IMPLIED > | |||
<!ATTLIST run skipTester CDATA #IMPLIED > | |||
<!ATTLIST run vm CDATA #IMPLIED > | |||
<!ATTLIST run options CDATA #IMPLIED > | |||
<!ATTLIST run errStreamIsError CDATA #IMPLIED > | |||
<!ATTLIST run outStreamIsError CDATA #IMPLIED > | |||
<!ATTLIST run fork CDATA #IMPLIED > | |||
<!ATTLIST run vmargs CDATA #IMPLIED > | |||
<!ATTLIST run aspectpath CDATA #IMPLIED > | |||
<!ATTLIST run classpath CDATA #IMPLIED > | |||
<!ATTLIST run ltw CDATA #IMPLIED > | |||
<!ATTLIST run usefullltw CDATA #IMPLIED > | |||
<!ATTLIST run exception CDATA #IMPLIED > | |||
<!ATTLIST run xlintfile CDATA #IMPLIED > | |||
<!ELEMENT message (source*)> | |||
<!ATTLIST message kind (abort | fail | error | warning | info | Xlint | weave) #IMPLIED > | |||
<!ATTLIST message line CDATA #IMPLIED > | |||
<!ATTLIST message text CDATA #IMPLIED > | |||
<!ATTLIST message file CDATA #IMPLIED > | |||
<!ATTLIST message details CDATA #IMPLIED > | |||
<!ELEMENT source (#PCDATA)> | |||
<!ATTLIST source line CDATA #IMPLIED > | |||
<!ATTLIST source file CDATA #IMPLIED > | |||
<!ELEMENT dir-changes (#PCDATA)> | |||
<!ATTLIST dir-changes dirToken (classes | run) #IMPLIED > | |||
<!ATTLIST dir-changes defaultSuffix (.class) #IMPLIED > | |||
<!ATTLIST dir-changes added CDATA #IMPLIED > | |||
<!ATTLIST dir-changes removed CDATA #IMPLIED > | |||
<!ATTLIST dir-changes updated CDATA #IMPLIED > | |||
<!ATTLIST dir-changes unchanged CDATA #IMPLIED > | |||
<!ATTLIST dir-changes expDir CDATA #IMPLIED > | |||
<!ATTLIST dir-changes fastFail CDATA #IMPLIED > | |||
<!ATTLIST dir-changes delay CDATA #IMPLIED > | |||
<!ATTLIST dir-changes dirToken (classes | run) #IMPLIED > | |||
<!ATTLIST dir-changes defaultSuffix (.class) #IMPLIED > | |||
<!ATTLIST dir-changes added CDATA #IMPLIED > | |||
<!ATTLIST dir-changes removed CDATA #IMPLIED > | |||
<!ATTLIST dir-changes updated CDATA #IMPLIED > | |||
<!ATTLIST dir-changes unchanged CDATA #IMPLIED > | |||
<!ATTLIST dir-changes expDir CDATA #IMPLIED > | |||
<!ATTLIST dir-changes fastFail CDATA #IMPLIED > | |||
<!ATTLIST dir-changes delay CDATA #IMPLIED > | |||
<!ELEMENT stdout (line*)> | |||
<!ATTLIST stdout ordered CDATA #IMPLIED > | |||
<!ELEMENT stderr (line*)> | |||
<!ATTLIST stderr ordered CDATA #IMPLIED > | |||
<!ELEMENT line (line*)> | |||
<!ATTLIST line text CDATA #REQUIRED > | |||
<!ATTLIST line vm CDATA #IMPLIED > | |||
<!ELEMENT weave (message*)> | |||
<!ATTLIST weave classesFiles CDATA #REQUIRED > | |||
<!ATTLIST weave aspectsFiles CDATA #REQUIRED > | |||
<!ATTLIST weave options CDATA #REQUIRED > | |||
<!ATTLIST weave xlintfile CDATA #IMPLIED > | |||
<!ELEMENT file EMPTY> | |||
<!ATTLIST file deletefile CDATA #IMPLIED > | |||
<!ATTLIST file renamefrom CDATA #IMPLIED > | |||
<!ATTLIST file renameto CDATA #IMPLIED > | |||
<!ELEMENT ant (stdout*,stderr*)> | |||
<!ATTLIST ant file CDATA #IMPLIED > | |||
<!ATTLIST ant target CDATA #IMPLIED > | |||
<!ATTLIST ant verbose CDATA #IMPLIED > | |||
<!ELEMENT comment (#PCDATA)> |
@@ -1,9 +1,9 @@ | |||
public class Code { | |||
public static void main(String[] argv) { | |||
// Caveat: Putting the closing '"""' on a separate line adds a line break and 'println' (not 'print'!) adds another. | |||
System.out.println(""" | |||
this is a text | |||
block | |||
"""); | |||
} | |||
} | |||
@@ -6,10 +6,10 @@ public class Code2 { | |||
aspect X { | |||
before(): execution(* Code2.main(..)) { | |||
// Caveat: Putting the closing '"""' on a separate line adds a line break and 'println' (not 'print'!) adds another. | |||
System.out.println(""" | |||
this is a text | |||
block in advice | |||
"""); | |||
} | |||
} | |||
@@ -22,7 +22,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
/*========================================== | |||
* Generics test plan for pointcuts. | |||
* | |||
* | |||
* handler PASS | |||
* - does not permit type var spec | |||
* - does not permit generic type (fail with type not found) | |||
@@ -54,7 +54,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
* staticinitialization PASS | |||
* - error on parameterized type PASS N/A | |||
* - permit parameterized type + PASS N/A | |||
* - matching with parameterized type + N/A | |||
* - matching with parameterized type + N/A | |||
* - wrong number of parameters in parameterized type PASS N/A | |||
* - generic type with one type parameter N/A | |||
* - generic type with n type parameters N/A | |||
@@ -64,7 +64,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
* within PASS | |||
* - as above, but allows parameterized type (disallowed in simplified plan) | |||
* - wildcards in type parameters N/A | |||
* this PASS | |||
* this PASS | |||
* - no type vars | |||
* - parameterized types - disallowed in simplification plan | |||
* - implements | |||
@@ -115,20 +115,20 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
* - parameter as parameterized type PASS | |||
* - no join points for bridge methods PASS | |||
* call PASS | |||
* - no generic or parameterized declaring type patterns PASS | |||
* - no generic or parameterized declaring type patterns PASS | |||
* - no parameterized throws patterns PASS | |||
* - return type as type variable PASS | |||
* - return type as parameterized type PASS | |||
* - return type as parameterized type PASS | |||
* - parameter as type variable PASS | |||
* - parameter as parameterized type PASS | |||
* - calls to a bridge methods PASS | |||
* after throwing - can't use parameterized type pattern | |||
* after returning - same as for args | |||
*/ | |||
/* ========================================== | |||
* Generics test plan for ITDs. | |||
* | |||
* | |||
* think about: | |||
* - 'visibility' default/private/public | |||
* - static/nonstatic | |||
@@ -148,7 +148,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
* - super/extends with parameterized types <? extends List<String>> | |||
* - multiple ITDs defined in one type that reuse type variable letters, specifying different bounds | |||
* - generic aspects | |||
* | |||
* | |||
* PASS parsing generic ITDs | |||
* PASS generic methods | |||
* PASS generic constructors | |||
@@ -170,15 +170,15 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
* PASS parameterizing ITDs with type variables | |||
* PASS using type variables from the target type in your *STATIC* ITD (field/method/ctor) (error scenario) | |||
* PASS basic binary weaving of generic itds | |||
* | |||
* | |||
* TODO generic aspect binary weaving (or at least multi source file weaving) | |||
* TODO binary weaving with changing types (moving between generic and simple) | |||
* TODO bridge method creation (also relates to covariance overrides..) | |||
* TODO exotic class/interface bounds ('? extends List<String>','? super anything') | |||
* TODO signature attributes for generic ITDs (public only?) | |||
* | |||
* | |||
*/ | |||
public static Test suite() { | |||
return XMLBasedAjcTestCase.loadSuite(GenericsTests.class); | |||
} | |||
@@ -186,15 +186,15 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
protected java.net.URL getSpecFile() { | |||
return getClassResource("ajc150.xml"); | |||
} | |||
public void testITDReturningParameterizedType() { | |||
runTest("ITD with parameterized type"); | |||
} | |||
public void testPR91267_1() { | |||
runTest("NPE using generic methods in aspects 1"); | |||
} | |||
public void testParameterizedTypeAndAroundAdvice_PR115250() { | |||
runTest("parameterized type and around advice"); | |||
} | |||
@@ -202,29 +202,29 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testParameterizedTypeAndAroundAdvice_PR115250_2() { | |||
runTest("parameterized type and around advice - 2"); | |||
} | |||
public void testPR91267_2() { | |||
runTest("NPE using generic methods in aspects 2"); | |||
} | |||
public void testPR91053() { | |||
runTest("Generics problem with Set"); | |||
} | |||
public void testPR87282() { | |||
runTest("Compilation error on generic member introduction"); | |||
} | |||
public void testGenericsOverrides_1() { runTest("generics and ITD overrides - 1"); } | |||
public void testGenericsOverrides_2() { runTest("generics and ITD overrides - 2"); } | |||
public void testGenericsOverrides_3() { runTest("generics and ITD overrides - 3"); } | |||
public void testGenericsOverrides_4() { runTest("generics and ITD overrides - 4"); } | |||
public void testSelfBoundGenerics_pr117296() { | |||
public void testSelfBoundGenerics_pr117296() { | |||
runTest("self bounding generic types"); | |||
} | |||
public void testPR88606() { | |||
runTest("Parameterized types on introduced fields not correctly recognized"); | |||
} | |||
@@ -235,14 +235,14 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testGenericsBang_pr95993() { | |||
runTest("NPE at ClassScope.java:660 when compiling generic class"); | |||
} | |||
} | |||
// generic aspects | |||
public void testPR96220_GenericAspects1() {runTest("generic aspects - 1");} | |||
public void testPR96220_GenericAspects2() {runTest("generic aspects - 2");} | |||
public void testPR96220_GenericAspects3() {runTest("generic aspects - 3");} | |||
public void testGenericAspects4() {runTest("generic aspects - 4");} | |||
public void testGenericAspects4() {runTest("generic aspects - 4");} | |||
public void testGenericAspects5() {runTest("generic aspects - 5 (ajdk)");} // in separate files | |||
public void testGenericAspects6() {runTest("generic aspects - 6 (ajdk)");} // all in one file | |||
public void testTypeVariablesInDeclareWarning() { runTest("generic aspect with declare warning using type vars");} | |||
@@ -254,12 +254,12 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testDeclareSoftInGenericAspect() { | |||
runTest("generic aspect declare soft"); | |||
} | |||
////////////////////////////////////////////////////////////////////////////// | |||
// Generic/Parameterized ITDs - includes scenarios from developers notebook // | |||
////////////////////////////////////////////////////////////////////////////// | |||
// parsing of generic ITD members | |||
public void testParseItdNonStaticMethod() {runTest("Parsing generic ITDs - 1");} | |||
public void testParseItdStaticMethod() {runTest("Parsing generic ITDs - 2");} | |||
@@ -267,8 +267,8 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testParseItdComplexMethod() {runTest("Parsing generic ITDs - 4");} | |||
public void testParseItdSharingVars1() {runTest("Parsing generic ITDs - 5");} | |||
public void testParseItdSharingVars2() {runTest("Parsing generic ITDs - 6");} | |||
// non static | |||
public void testGenericMethodITD1() {runTest("generic method itd - 1");} // <E> ... (List<? extends E>) | |||
public void testGenericMethodITD2() {runTest("generic method itd - 2");} // <E extends Number> ... (List<? extends E>) called incorrectly | |||
@@ -285,7 +285,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testGenericMethodITD13() {runTest("generic method itd - 13");} // <R extends Comparable<? extends R>> ... (List<R>) called correctly in a clever way ;) | |||
public void testGenericMethodITD14() {runTest("generic method itd - 14");} // <R extends Comparable<? super R>> ... (List<R>) called incorrectly in a clever way | |||
public void testGenericMethodITD15() {runTest("generic method itd - 15");} // <R extends Comparable<? super R>> ... (List<R>) called correctly in a clever way | |||
// generic ctors | |||
@@ -293,29 +293,29 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testGenericCtorITD2() {runTest("generic ctor itd - 2");} // <T> new(List<T>,List<? extends T>) | |||
public void testGenericCtorITD3() {runTest("generic ctor itd - 3");} // <T> new(List<T>,Comparator<? super T>) | |||
// parameterized ITDs | |||
public void testParameterizedMethodITD1() {runTest("parameterized method itd - 1");} // (List<? extends Super>) | |||
public void testParameterizedMethodITD2() {runTest("parameterized method itd - 2");} // (List<? extends Number>) called incorrectly | |||
public void testParameterizedMethodITD3() {runTest("parameterized method itd - 3");} // (List<? super A>) called incorrectly | |||
public void testParameterizedMethodITD4() {runTest("parameterized method itd - 4");} // (List<? super B>) | |||
// differing visibilities | |||
public void testPublicITDs() {runTest("public itds");} | |||
public void testPublicITDsErrors() {runTest("public itds with errors");} | |||
public void testPrivateITDs() {runTest("private itds");} | |||
public void testPackageITDs() {runTest("package itds");} | |||
// targetting different types (interface/class/aspect) | |||
public void testTargettingInterface() {runTest("targetting interface");} | |||
public void testTargettingAspect() {runTest("targetting aspect");} | |||
public void testTargettingClass() {runTest("targetting class");} | |||
// using a type variable from the target generic type in your ITD | |||
// using a type variable from the target generic type in your ITD | |||
public void testFieldITDsUsingTargetTypeVars1() {runTest("field itd using type variable from target type - 1");} | |||
public void testFieldITDsUsingTargetTypeVars2() {runTest("field itd using type variable from target type - 2");} | |||
public void testFieldITDsUsingTargetTypeVars3() {runTest("field itd using type variable from target type - 3");} | |||
@@ -333,7 +333,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testFieldITDsUsingTargetTypeVars15(){runTest("field itd using type variable from target type -15");} | |||
public void testFieldITDsUsingTargetTypeVars16(){runTest("field itd using type variable from target type -16");} | |||
public void testFieldITDsUsingTargetTypeVars17(){runTest("field itd using type variable from target type -17");} | |||
public void testMethodITDsUsingTargetTypeVarsA1() {runTest("method itd using type variable from target type - A1");} | |||
public void testMethodITDsUsingTargetTypeVarsA2() {runTest("method itd using type variable from target type - A2");} | |||
@@ -358,7 +358,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testMethodITDsUsingTargetTypeVarsO2() {runTest("method itd using type variable from target type - O2");} | |||
public void testMethodITDsUsingTargetTypeVarsP1() {runTest("method itd using type variable from target type - P1");} | |||
public void testMethodITDsUsingTargetTypeVarsQ1() {runTest("method itd using type variable from target type - Q1");} | |||
public void testCtorITDsUsingTargetTypeVarsA1() {runTest("ctor itd using type variable from target type - A1");} | |||
public void testCtorITDsUsingTargetTypeVarsB1() {runTest("ctor itd using type variable from target type - B1");} | |||
public void testCtorITDsUsingTargetTypeVarsC1() {runTest("ctor itd using type variable from target type - C1");} | |||
@@ -368,7 +368,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testCtorITDsUsingTargetTypeVarsG1() {runTest("ctor itd using type variable from target type - G1");} | |||
public void testCtorITDsUsingTargetTypeVarsH1() {runTest("ctor itd using type variable from target type - H1");} | |||
public void testCtorITDsUsingTargetTypeVarsI1() {runTest("ctor itd using type variable from target type - I1");} | |||
public void testSophisticatedAspectsA() {runTest("uberaspects - A");} | |||
public void testSophisticatedAspectsB() {runTest("uberaspects - B");} | |||
public void testSophisticatedAspectsC() {runTest("uberaspects - C");} | |||
@@ -395,13 +395,13 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testSophisticatedAspectsW() {runTest("uberaspects - W");} | |||
public void testSophisticatedAspectsX() {runTest("uberaspects - X");} // from the AJDK | |||
public void testSophisticatedAspectsY() {runTest("uberaspects - Y");} // pointcut matching | |||
public void testSophisticatedAspectsZ() {runTest("uberaspects - Z");} | |||
public void testSophisticatedAspectsZ() {runTest("uberaspects - Z");} | |||
// FIXME asc these two tests have peculiar error messages - generic aspect related | |||
// public void testItdUsingTypeParameter() {runTest("itd using type parameter");} | |||
// public void testItdIncorrectlyUsingTypeParameter() {runTest("itd incorrectly using type parameter");} | |||
public void testUsingSameTypeVariable() {runTest("using same type variable in ITD");} | |||
public void testBinaryWeavingITDsA() {runTest("binary weaving ITDs - A");} | |||
@@ -409,17 +409,17 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testBinaryWeavingITDs1() {runTest("binary weaving ITDs - 1");} | |||
public void testBinaryWeavingITDs2() {runTest("binary weaving ITDs - 2");} | |||
public void testBinaryWeavingITDs3() {runTest("binary weaving ITDs - 3");} | |||
public void testGenericITFSharingTypeVariable() {runTest("generic intertype field declaration, sharing type variable");} | |||
public void testGenericITFSharingTypeVariable() {runTest("generic intertype field declaration, sharing type variable");} | |||
// general tests ... usually just more complex scenarios | |||
public void testReusingTypeVariableLetters() {runTest("reusing type variable letters");} | |||
public void testMultipleGenericITDsInOneFile() {runTest("multiple generic itds in one file");} | |||
public void testItdNonStaticMember() {runTest("itd of non static member");} | |||
public void testItdStaticMember() {runTest("itd of static member");} | |||
public void testStaticGenericMethodITD() {runTest("static generic method itd");} | |||
public void testAtOverride0() {runTest("atOverride used with ITDs");} | |||
public void testAtOverride1() {runTest("atOverride used with ITDs - 1");} | |||
public void testAtOverride2() {runTest("atOverride used with ITDs - 2");} | |||
@@ -428,8 +428,8 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testAtOverride5() {runTest("atOverride used with ITDs - 5");} | |||
public void testAtOverride6() {runTest("atOverride used with ITDs - 6");} | |||
public void testAtOverride7() {runTest("atOverride used with ITDs - 7");} | |||
// bridge methods | |||
public void testITDBridgeMethodsCovariance1() {runTest("bridging with covariance 1 - normal");} | |||
public void testITDBridgeMethodsCovariance2() {runTest("bridging with covariance 1 - itd");} | |||
@@ -438,8 +438,8 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testITDBridgeMethods2Normal() {runTest("basic bridging with type vars - 2 - normal");} | |||
public void testITDBridgeMethods2Itd() {runTest("basic bridging with type vars - 2 - itd");} | |||
public void testITDBridgeMethodsPr91381() {runTest("Abstract intertype method and covariant returns");} | |||
// Just normal source compile of two types with a method override between them | |||
public void testGenericITDsBridgeMethods1() { | |||
runTest("bridge methods - 1"); | |||
@@ -450,7 +450,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
// Now the same thing but the aspect (which doesn't do much!) is binary woven in. | |||
public void testGenericITDsBridgeMethods1binary() { | |||
runTest("bridge methods - 1 - binary"); | |||
checkMethodsExist("Sub1",new String[]{ | |||
checkMethodsExist("Sub1",new String[]{ | |||
"java.lang.Integer Sub1.m()", | |||
"java.lang.Object Sub1.m() [BridgeMethod]"}); | |||
} | |||
@@ -482,7 +482,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
"java.lang.Integer Sub3.m()", | |||
"java.lang.Object Sub3.m() [BridgeMethod]"}); | |||
} | |||
// Now the two types are disconnected until the aspect supplies a declare parents relationship - | |||
// Now the two types are disconnected until the aspect supplies a declare parents relationship - | |||
// the bridge method should still be created in the subtype | |||
public void testGenericITDSBridgeMethods4() { | |||
runTest("bridge methods - 4"); | |||
@@ -497,7 +497,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
"java.lang.Integer Sub4.m()", | |||
"java.lang.Object Sub4.m() [BridgeMethod]"}); | |||
} | |||
public void testBinaryBridgeMethodsOne() { | |||
runTest("binary bridge methods - one"); | |||
checkMethodsExist("OneB",new String[]{ | |||
@@ -526,21 +526,21 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
"java.lang.Double ThreeB.m()" | |||
}); | |||
} | |||
public void testGenericITDsBridgeMethodsPR91381() {runTest("abstract intertype methods and covariant returns");} | |||
public void testGenericITDsBridgeMethodsPR91381_2() {runTest("abstract intertype methods and covariant returns - error");} | |||
// ---------------------------------------------------------------------------------------- | |||
// generic declare parents tests | |||
// ---------------------------------------------------------------------------------------- | |||
public void testPR96220_GenericDecp() { | |||
runTest("generic decp - simple"); | |||
checkOneSignatureAttribute(ajc,"Basic"); | |||
verifyClassSignature(ajc,"Basic","Ljava/lang/Object;LJ<Ljava/lang/Double;>;LI<Ljava/lang/Double;>;"); | |||
} | |||
// Both the existing type decl and the one adding via decp are parameterized | |||
public void testGenericDecpMultipleVariantsOfAParameterizedType1() { | |||
runTest("generic decp - implementing two variants #1"); | |||
@@ -560,12 +560,12 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testGenericDecpMultipleVariantsOfAParameterizedType4() { | |||
runTest("generic decp - implementing two variants #4"); | |||
} | |||
// same as above four tests for binary weaving | |||
public void testGenericDecpMultipleVariantsOfAParameterizedType1_binaryWeaving() { | |||
runTest("generic decp binary - implementing two variants #1"); | |||
} | |||
public void testGenericDecpMultipleVariantsOfAParameterizedType2_binaryWeaving() { | |||
runTest("generic decp binary - implementing two variants #2"); | |||
} | |||
@@ -585,19 +585,19 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
checkOneSignatureAttribute(ajc,"Basic6"); | |||
verifyClassSignature(ajc,"Basic6","<J:Ljava/lang/Object;>Ljava/lang/Object;LI<TJ;>;LK<Ljava/lang/Integer;>;"); | |||
} | |||
public void testGenericDecpIncorrectNumberOfTypeParams() { | |||
runTest("generic decp - incorrect number of type parameters"); | |||
} | |||
public void testGenericDecpSpecifyingBounds() { | |||
runTest("generic decp - specifying bounds"); | |||
} | |||
public void testGenericDecpViolatingBounds() { | |||
runTest("generic decp - specifying bounds but breaking them"); | |||
} | |||
// need separate compilation test to verify signatures are ok | |||
// | |||
// public void testIllegalGenericDecp() { | |||
@@ -607,18 +607,18 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
// public void testPR95992_TypeResolvingProblemWithGenerics() { | |||
// runTest("Problems resolving type name inside generic class"); | |||
// } | |||
// -- Pointcut tests... | |||
public void testHandlerWithGenerics() { | |||
runTest("handler pcd and generics / type vars"); | |||
} | |||
public void testPointcutsThatDontAllowTypeVars() { | |||
runTest("pointcuts that dont allow type vars"); | |||
} | |||
public void testParameterizedTypesInAtPCDs() { | |||
runTest("annotation pcds with parameterized types"); | |||
} | |||
@@ -626,7 +626,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testAnnotationPatternsWithParameterizedTypes() { | |||
runTest("annotation patterns with parameterized types"); | |||
} | |||
public void testStaticInitializationWithParameterizedTypes() { | |||
runTest("staticinitialization and parameterized types"); | |||
} | |||
@@ -643,9 +643,9 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
// no longer a valid test in simplified design | |||
// public void testStaticInitializationWithGenericTypesAdvanced() { | |||
// runTest("staticinitialization with generic types - advanced"); | |||
// runTest("staticinitialization with generic types - advanced"); | |||
// } | |||
public void testWithinPointcutErrors() { | |||
runTest("within pcd with various parameterizations and generic types - errors"); | |||
} | |||
@@ -653,7 +653,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testWithinPointcutWarnings() { | |||
runTest("within pcd with various parameterizations and generic types - warnings"); | |||
} | |||
public void testThisTargetPointcutErrors() { | |||
runTest("this and target with various parameterizations and generic types - errors"); | |||
} | |||
@@ -661,47 +661,47 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testThisTargetPointcutRuntime() { | |||
runTest("this and target with various parameterizations and generic types - runtime"); | |||
} | |||
public void testInitAndPreInitPointcutErrors() { | |||
runTest("init and preinit with parameterized declaring types"); | |||
} | |||
public void testInitAndPreInitPointcutMatchingWithGenericDeclaringTypes() { | |||
runTest("init and preinit with raw declaring type pattern"); | |||
} | |||
public void testInitAndPreInitPointcutMatchingWithParameterizedParameterTypes() { | |||
runTest("init and preinit with parameterized parameter types"); | |||
} | |||
public void testWithinCodePointcutErrors() { | |||
runTest("withincode with various parameterizations and generic types - errors"); | |||
} | |||
public void testWithinCodeMatching() { | |||
runTest("withincode with various parameterizations and generic types - matching"); | |||
} | |||
public void testWithinCodeOverrideMatchingWithGenericMembers() { | |||
runTest("withincode with overriding of inherited generic members"); | |||
} | |||
public void testExecutionWithRawType() { | |||
runTest("execution pcd with raw type matching"); | |||
} | |||
public void testExecutionWithRawSignature() { | |||
runTest("execution pcd with raw signature matching"); | |||
} | |||
public void testExecutionPointcutErrors() { | |||
runTest("execution with various parameterizations and generic types - errors"); | |||
} | |||
public void testExecutionMatching() { | |||
runTest("execution with various parameterizations and generic types - matching"); | |||
} | |||
public void testExecutionOverrideMatchingWithGenericMembers() { | |||
runTest("execution with overriding of inherited generic members"); | |||
} | |||
@@ -709,15 +709,15 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testCallPointcutErrors() { | |||
runTest("call with various parameterizations and generic types - errors"); | |||
} | |||
public void testCallMatching() { | |||
runTest("call with various parameterizations and generic types - matching"); | |||
} | |||
public void testCallOverrideMatchingWithGenericMembers() { | |||
runTest("call with overriding of inherited generic members"); | |||
} | |||
public void testCallWithBridgeMethods() { | |||
runTest("call with bridge methods"); | |||
} | |||
@@ -725,47 +725,47 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testGetAndSetPointcutErrors() { | |||
runTest("get and set with various parameterizations and generic types - errors"); | |||
} | |||
public void testGetAndSetPointcutMatchingWithGenericAndParameterizedTypes() { | |||
runTest("get and set with various parameterizations and generic declaring types"); | |||
} | |||
public void testGetAndSetPointcutMatchingWithGenericAndParameterizedFieldTypes() { | |||
runTest("get and set with various parameterizations and generic field types"); | |||
} | |||
public void testArgsWithRawType() { | |||
runTest("args with raw type and generic / parameterized sigs"); | |||
} | |||
public void testArgsParameterizedType() { | |||
runTest("args with parameterized type and generic / parameterized sigs"); | |||
} | |||
public void testArgsParameterizedAndWildcards() { | |||
runTest("args with parameterized type and wildcards"); | |||
} | |||
public void testArgsWithWildcardVar() { | |||
runTest("args with generic wildcard"); | |||
} | |||
public void testArgsWithWildcardExtendsVar() { | |||
runTest("args with generic wildcard extends"); | |||
} | |||
public void testArgsWithWildcardSuperVar() { | |||
runTest("args with generic wildcard super"); | |||
} | |||
public void testGenericMethodMatching() { | |||
runTest("generic method matching"); | |||
} | |||
public void testGenericWildcardsInSignatureMatching() { | |||
runTest("generic wildcards in signature matching"); | |||
} | |||
public void testAfterThrowing() { | |||
runTest("after throwing with parameterized throw type"); | |||
} | |||
@@ -773,108 +773,108 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
public void testAfterReturningWithRawType() { | |||
runTest("after returning with raw type and generic / parameterized sigs"); | |||
} | |||
public void testAfterReturningParameterizedType() { | |||
runTest("after returning with parameterized type and generic / parameterized sigs"); | |||
} | |||
public void testAfterReturningParameterizedAndWildcards() { | |||
runTest("after returning with parameterized type and wildcards"); | |||
} | |||
public void testAfterReturningWithWildcardVar() { | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
// See ReferenceType.isCoerceableFrom comments | |||
return; | |||
} | |||
// Something to investigate here. The implementation of isCoerceable | |||
runTest("after returning with generic wildcard"); | |||
} | |||
public void testAfterReturningWithWildcardExtendsVar() { | |||
runTest("after returning with generic wildcard extends"); | |||
} | |||
public void testAfterReturningWithWildcardSuperVar() { | |||
runTest("after returning with generic wildcard super"); | |||
} | |||
public void testAJDKErasureMatchingExamples() { | |||
runTest("ajdk notebook: erasure matching examples"); | |||
} | |||
public void testAJDKParameterizedMatchingSimpleExamples() { | |||
runTest("ajdk notebook: simple parameterized type matching examples"); | |||
} | |||
public void testAJDKMixedTypeVarsAndParametersExample() { | |||
runTest("ajdk notebook: mixed parameterized types and generic methods"); | |||
} | |||
public void testAJDKSignatureAndWildcardExamples() { | |||
runTest("ajdk notebook: signature matching with generic wildcards"); | |||
} | |||
// had to remove at e37 level - although pointcuts are likely to work, we can't compile the code | |||
// that invokes the bridge methods - seems the compiler is too smart and won't let them through. | |||
// public void testAJDKBridgeMethodExamples() { | |||
// runTest("ajdk notebook: bridge method examples"); | |||
// } | |||
public void testAJDKArgsExamples() { | |||
runTest("ajdk notebook: args examples"); | |||
} | |||
public void testAJDKArgsAndWildcardsExamples() { | |||
runTest("ajdk notebook: args and wildcards examples"); | |||
} | |||
public void testAJDKAfterReturningExamples() { | |||
runTest("ajdk notebook: after returning examples"); | |||
} | |||
public void testAJDKPointcutInGenericClassExample() { | |||
runTest("ajdk notebook: pointcut in generic class example"); | |||
} | |||
// TESTS for generic abstract aspects that get extended and parameterized... | |||
public void testStaticPointcutParameterization() { | |||
runTest("static pointcut parameterization suite"); | |||
} | |||
public void testDynamicPointcutParameterization() { | |||
runTest("dynamic pointcut parameterization suite"); | |||
} | |||
public void testReferenceToPointcutInGenericClass() { | |||
runTest("reference to pointcut in generic class"); | |||
} | |||
public void testReferenceToPointcutInGenericClass2() { | |||
runTest("reference to non-parameterized pointcut in generic class"); | |||
} | |||
public void testDeclareParentsParameterized() { | |||
runTest("declare parents parameterized"); | |||
} | |||
public void testDeclarePrecedenceParameterized() { | |||
public void testDeclarePrecedenceParameterized() { | |||
runTest("declare precedence parameterized"); | |||
} | |||
public void testDeclareAnnotationParameterized() { | |||
runTest("declare annotation parameterized"); | |||
} | |||
public void testMultiLevelGenericAspects() { | |||
runTest("multi-level generic abstract aspects"); | |||
} | |||
// --- helpers | |||
/** | |||
* When a class has been written to the sandbox directory, you can ask this method to | |||
* When a class has been written to the sandbox directory, you can ask this method to | |||
* verify it contains a particular set of methods. Typically this is used to verify that | |||
* bridge methods have been created. | |||
*/ | |||
@@ -899,7 +899,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
} catch (MalformedURLException e) { | |||
e.printStackTrace(); | |||
} | |||
// check the methods specified do exist | |||
for (String string : methods) { | |||
if (!methodsFound.remove(string)) { | |||
@@ -913,9 +913,9 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
} | |||
fail("These methods weren't expected: "+unexpectedMethods); | |||
} | |||
} | |||
/** | |||
* Use 1.5 API isBridge if available. | |||
* See JLS3 15.12.4.5 Create Frame, Synchronize, Transfer Control | |||
@@ -924,7 +924,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
// why not importing java.lang.reflect.Method? No BCEL clash? | |||
try { | |||
final Class<?>[] noparms = new Class[0]; | |||
java.lang.reflect.Method isBridge | |||
java.lang.reflect.Method isBridge | |||
= java.lang.reflect.Method.class.getMethod("isBridge", noparms); | |||
Boolean result = (Boolean) isBridge.invoke(m, new Object[0]); | |||
return result; | |||
@@ -934,7 +934,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
} | |||
public static JavaClass getClass(Ajc ajc, String classname) { | |||
try { | |||
ClassPath cp = | |||
ClassPath cp = | |||
new ClassPath(ajc.getSandboxDirectory() + File.pathSeparator + System.getProperty("java.class.path")); | |||
SyntheticRepository sRepos = SyntheticRepository.getInstance(cp); | |||
JavaClass clazz = sRepos.loadClass(classname); | |||
@@ -944,7 +944,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
} | |||
return null; | |||
} | |||
public static Signature getClassSignature(Ajc ajc,String classname) { | |||
JavaClass clazz = getClass(ajc,classname); | |||
Signature sigAttr = null; | |||
@@ -954,7 +954,7 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
} | |||
return sigAttr; | |||
} | |||
public static void checkOneSignatureAttribute(Ajc ajc,String classname) { | |||
JavaClass clazz = getClass(ajc,classname); | |||
Attribute[] attrs = clazz.getAttributes(); | |||
@@ -968,15 +968,15 @@ public class GenericsTests extends XMLBasedAjcTestCase { | |||
} | |||
if (signatureCount>1) fail("Should be only one signature attribute but found "+signatureCount+sb.toString()); | |||
} | |||
// Check the signature attribute on a class is correct | |||
public static void verifyClassSignature(Ajc ajc,String classname,String sig) { | |||
Signature sigAttr = getClassSignature(ajc,classname); | |||
assertTrue("Failed to find signature attribute for class "+classname,sigAttr!=null); | |||
assertTrue("Expected signature to be '"+sig+"' but was '"+sigAttr.getSignature()+"'", | |||
sigAttr.getSignature().equals(sig)); | |||
sigAttr.getSignature().equals(sig)); | |||
} | |||
private static String stringify(Class<?>[] clazzes) { | |||
if (clazzes==null) return ""; | |||
StringBuffer sb = new StringBuffer(); |
@@ -0,0 +1,51 @@ | |||
/******************************************************************************* | |||
* Copyright (c) 2021 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 | |||
*******************************************************************************/ | |||
package org.aspectj.systemtest.ajc196; | |||
import org.aspectj.testing.XMLBasedAjcTestCase; | |||
import org.aspectj.testing.XMLBasedAjcTestCaseForJava14Only; | |||
import junit.framework.Test; | |||
/** | |||
* @author Alexander Kriegisch | |||
*/ | |||
public class Ajc196PreviewFeaturesTests extends XMLBasedAjcTestCaseForJava14Only { | |||
public void testRecords2() { | |||
runTest("using a record"); | |||
} | |||
public void testInstanceofPatterns() { | |||
runTest("instanceof patterns"); | |||
} | |||
public void testAdvisingRecords() { | |||
runTest("advising records"); | |||
} | |||
public void testTextBlock1() { | |||
runTest("textblock 1"); | |||
} | |||
public void testTextBlock2() { | |||
runTest("textblock 2"); | |||
} | |||
// --- | |||
public static Test suite() { | |||
return XMLBasedAjcTestCase.loadSuite(Ajc196PreviewFeaturesTests.class); | |||
} | |||
@Override | |||
protected java.net.URL getSpecFile() { | |||
return getClassResource("ajc196.xml"); | |||
} | |||
} |
@@ -18,58 +18,39 @@ import junit.framework.Test; | |||
*/ | |||
public class Ajc196Tests extends XMLBasedAjcTestCaseForJava14OrLater { | |||
public void testNPE_558995() { | |||
runTest("early resolution of supporting interfaces"); | |||
} | |||
public void testRecords() { | |||
runTest("simple record"); | |||
checkVersion("Person", Constants.MAJOR_14, Constants.PREVIEW_MINOR_VERSION); | |||
} | |||
public void testRecords2() { | |||
runTest("using a record"); | |||
} | |||
public void testInstanceofPatterns() { | |||
runTest("instanceof patterns"); | |||
} | |||
public void testAdvisingRecords() { | |||
runTest("advising records"); | |||
} | |||
public void testSwitch1() { | |||
runTest("switch 1"); | |||
checkVersion("Switch1", Constants.MAJOR_14, 0); | |||
} | |||
public void testSwitch2() { | |||
runTest("switch 2"); | |||
checkVersion("Switch2", Constants.MAJOR_14, 0); | |||
} | |||
public void testSwitch3() { | |||
runTest("switch 3"); | |||
checkVersion("Switch3", Constants.MAJOR_14, 0); | |||
} | |||
public void testTextBlock1() { | |||
runTest("textblock 1"); | |||
} | |||
public void testTextBlock2() { | |||
runTest("textblock 2"); | |||
} | |||
// --- | |||
public static Test suite() { | |||
return XMLBasedAjcTestCase.loadSuite(Ajc196Tests.class); | |||
} | |||
@Override | |||
protected java.net.URL getSpecFile() { | |||
return getClassResource("ajc196.xml"); | |||
} | |||
public void testNPE_558995() { | |||
runTest("early resolution of supporting interfaces"); | |||
} | |||
public void testRecords() { | |||
runTest("simple record"); | |||
checkVersion("Person", Constants.MAJOR_14, Constants.PREVIEW_MINOR_VERSION); | |||
} | |||
public void testSwitch1() { | |||
runTest("switch 1"); | |||
checkVersion("Switch1", Constants.MAJOR_14, 0); | |||
} | |||
public void testSwitch2() { | |||
runTest("switch 2"); | |||
checkVersion("Switch2", Constants.MAJOR_14, 0); | |||
} | |||
public void testSwitch3() { | |||
runTest("switch 3"); | |||
checkVersion("Switch3", Constants.MAJOR_14, 0); | |||
} | |||
// --- | |||
public static Test suite() { | |||
return XMLBasedAjcTestCase.loadSuite(Ajc196Tests.class); | |||
} | |||
@Override | |||
protected java.net.URL getSpecFile() { | |||
return getClassResource("ajc196.xml"); | |||
} | |||
} |
@@ -23,6 +23,9 @@ public class AllTestsAspectJ196 { | |||
suite.addTest(Ajc196Tests.suite()); | |||
suite.addTest(SanityTestsJava14.suite()); | |||
} | |||
if (LangUtil.is14VMOrGreater() && !LangUtil.is15VMOrGreater()) { | |||
suite.addTest(Ajc196PreviewFeaturesTests.suite()); | |||
} | |||
return suite; | |||
} | |||
} |
@@ -23,7 +23,7 @@ import junit.framework.Test; | |||
public class AptTests extends XMLBasedAjcTestCase { | |||
public void testAptWithSpecifiedProcessor() { | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
return; | |||
} | |||
runTest("annotation processing with specified processor"); | |||
@@ -33,7 +33,7 @@ public class AptTests extends XMLBasedAjcTestCase { | |||
* SPI - http://docs.oracle.com/javase/tutorial/sound/SPI-intro.html | |||
*/ | |||
public void testAptUsingSPI() { | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
return; | |||
} | |||
runTest("annotation processing in action using SPI"); |
@@ -1,11 +1,11 @@ | |||
/******************************************************************** | |||
* 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* 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://eclipse.org/legal/epl-v10.html | |||
* | |||
* Contributors: IBM Corporation - initial API and implementation | |||
* Helen Hawkins - initial version (bug 148190) | |||
*******************************************************************/ | |||
package org.aspectj.systemtest.incremental.tools; | |||
@@ -75,7 +75,7 @@ public class MultiProjTestCompilerConfiguration implements ICompilerConfiguratio | |||
+ "c:/batik/batik-1.6/lib/batik-svggen.jar;" + File.pathSeparator + ".." + File.separator + "lib" + File.separator | |||
+ "test" + File.separator + "aspectjrt.jar"; | |||
verifyClasspath(cp); | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
cp = LangUtil.getJrtFsFilePath() + File.pathSeparator + cp; | |||
} | |||
@@ -178,7 +178,7 @@ public class MultiProjTestCompilerConfiguration implements ICompilerConfiguratio | |||
this.outjar = outjar; | |||
this.changed |= ICompilerConfiguration.OUTJAR_CHANGED; | |||
} | |||
public void setProcessor(String processor) { | |||
this.processor = processor; | |||
this.changed |= ICompilerConfiguration.PROCESSOR_CHANGED; |
@@ -4,8 +4,8 @@ | |||
* 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 | |||
* | |||
* http://www.eclipse.org/legal/epl-v10.html | |||
* | |||
* ******************************************************************/ | |||
package org.aspectj.systemtest.knownlimitations; | |||
@@ -20,7 +20,7 @@ public class KnownLimitationsTests extends org.aspectj.testing.XMLBasedAjcTestCa | |||
} | |||
protected java.net.URL getSpecFile() { | |||
return getClassResource("knownlimitations.xml"); | |||
return getClassResource("knownLimitations.xml"); | |||
// return new File("../tests/src/org/aspectj/systemtest/knownlimitations/knownlimitations.xml"); | |||
} | |||
@@ -26,7 +26,7 @@ public class TestsModuleTests extends TestCase { | |||
String name = TestsModuleTests.class.getName(); | |||
TestSuite suite = new TestSuite(name); | |||
// compiler tests, wrapped for JUnit | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
suite.addTest(AllTests19.suite()); | |||
} else { | |||
suite.addTest(AllTests18.suite()); |
@@ -10,7 +10,7 @@ | |||
<message kind="error" line="4" file="DisjunctVarBinding_3.java" text="ambiguous binding of parameter(s) a, b across '||' in pointcut"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs/IfPerThis" | |||
pr="62458" title="An if() pointcut inside a perthis() clauses an ABORT - null pointer exception in ajc"> | |||
<compile files="Testcase1.java"> | |||
@@ -20,40 +20,40 @@ | |||
<message kind="error" line="27" text="if() pointcut designator cannot be used directly in a per clause"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs/IfPerThis" | |||
pr="62458" title="An if() pointcut inside a perthis() clauses an ABORT - null pointer exception in ajc"> | |||
<compile files="Testcase2.java"/> | |||
<run class="Testcase2"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/IfPerThis" | |||
pr="62458" title="An if() pointcut inside a perthis() clauses an ABORT - null pointer exception in ajc"> | |||
<compile files="Testcase3.java"> | |||
<message kind="error" line="2" text="if() pointcut designator cannot be used directly in a per clause"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs/bug70619" | |||
pr="70619" title="compiler aborts with 'conflicting dominates orders' with circular declare precedences"> | |||
<compile files="Precedence.java"> | |||
<message kind="error" line="0" text="conflicting declare precedence"/> | |||
</compile> | |||
<compile files="Conflict.java,Order2.aj,Order1.aj"> | |||
<compile files="Conflict.java,Order2.aj,Order1.aj"> | |||
<message kind="error" line="0" text="conflicting declare precedence"/> | |||
</compile> | |||
<compile files="Conflict.java,Order1.aj,Order2.aj"> | |||
<message kind="error" line="0" text="conflicting declare precedence"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs" | |||
pr="53999" title="'can't bind type' message has $ for . in type name for declare soft"> | |||
<compile files="Cosmetic.java"> | |||
<message kind="error" line="9" text="can't bind type name 'unknown.Error'"/> | |||
</compile> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs/intertypeOverrides" | |||
pr="69459" title="Hiding of Instance Methods by static methods"> | |||
<compile files="IntertypeOverrides.java"> | |||
@@ -63,7 +63,7 @@ | |||
<message kind="error" line="8" text="void Sub.m() cannot override void Super.m(); overridden method is static"/> | |||
</compile> | |||
<compile files="Superclass.java,Subclass.java,Aspect1.java"> | |||
<message file="Aspect1.java" kind="error" line="2" | |||
<message file="Aspect1.java" kind="error" line="2" | |||
text="void Subclass.staticMethod() cannot override void Superclass.staticMethod(); overridden method is static"/> | |||
</compile> | |||
<compile files="Superclass.java,Subclass.java,Aspect2.java"> | |||
@@ -71,31 +71,31 @@ | |||
text="void Subclass.nonstaticMethod() cannot override void Superclass.nonstaticMethod(); overriding method is static"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="new" | |||
title="if(false) optimisation" pr="48990"> | |||
<compile files="IfFalse.aj" options="-1.4"/> | |||
<run class="IfFalse"/> | |||
</ajc-test> | |||
<ajc-test dir="new" | |||
title="if(true) optimisation" pr="48990"> | |||
<compile files="IfTrue.aj" options="-1.4"/> | |||
<run class="IfTrue"/> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs/abstractITDs" | |||
pr="64331" title="java.lang.NullPointerException in WeaverMessageHandler class"> | |||
<compile files="A.java,C.java" aspectpath="B.jar"> | |||
<message kind="error" line="1" text="must implement abstract inter-type declaration: void A.foo()"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs/pr64262" | |||
title="ClassCastException at BcelRenderer.java:169" pr="64262"> | |||
<compile files="PrimitiveCoercionInExactTypePatternMatching.java"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs" | |||
pr="61536" title="Front-end bug, shouldn't allow patterns of the form foo.., should be foo..*"> | |||
<compile files="EllipsesStar.java"> | |||
@@ -108,7 +108,7 @@ | |||
<message kind="error" line="12" text="Syntax error on token"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs" | |||
pr="67774" title="Nullpointer-Exception when defining a withincode() pointcut"> | |||
<compile files="WithincodeNPE01.java"> | |||
@@ -117,37 +117,37 @@ | |||
<message kind="warning" line="11" text="In String ctor"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="60015" | |||
title="NPE, Incorrect XLint:unmatchedSuperTypeInCall warning"> | |||
<compile files="IncorrectXlintOnInterface.java"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs/typeVisibilityProblem" pr="67591" | |||
title="invalid warning indicating no match when a match really occurs"> | |||
<compile files="Main.java"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="71273" | |||
title="RuntimeException thrown: Could not find instruction: org.apache.bcel.generic.B2I"> | |||
<compile files="NoByteToInt.java"/> | |||
<run class="NoByteToInt"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/AroundAdviceJPs" pr="71377" | |||
title="Cannot advise private method call in around advice"> | |||
<compile files="JoinPointInAroundAdvice.java"/> | |||
<run class="JoinPointInAroundAdvice"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/AroundAdviceJPs" pr="71377" | |||
title="Cannot advise private field sets in around advice"> | |||
<compile files="FieldJoinPointsInAroundAdvice.java"/> | |||
<run class="FieldJoinPointsInAroundAdvice"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/AroundAdviceJPs" pr="71377" | |||
title="Cannot advise private field gets in around advice"> | |||
<compile files="FieldGetJoinPointsInAroundAdvice.java"/> | |||
@@ -163,8 +163,8 @@ | |||
</ajc-test> | |||
--> | |||
<!-- these next two tests commented out as they take minutes to run - reinstate if you need to | |||
investigate 59208 for any reason | |||
<!-- these next two tests commented out as they take minutes to run - reinstate if you need to | |||
investigate 59208 for any reason | |||
<ajc-test dir="bugs/pr59208" pr="59208" | |||
title="Weaver fails in BCEL for large classes"> | |||
<compile files="Foo.java, A.aj"> | |||
@@ -175,7 +175,7 @@ | |||
<ajc-test dir="bugs/pr59208" pr="59208" | |||
title="Weaver fails in BCEL for large classes (binary)"> | |||
<compile | |||
<compile | |||
aspectpath="test.jar" | |||
inpath="classes"> | |||
<message kind="error" line="0" text="constant pool too big"></message> | |||
@@ -204,7 +204,7 @@ | |||
<ajc-test dir="bugs" pr="61572" | |||
title="ITDs on inner classes should be static context"> | |||
<compile files="PR61572.aj"> | |||
<message kind="error" line="19" text="Cannot make a static reference to the non-static field zzz"></message> | |||
<message kind="error" line="19" text="Cannot make a static reference to the non-static field zzz"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -218,17 +218,17 @@ | |||
<message kind="error" line="29" text="ambiguous binding of parameter(s) x across '||' in pointcut"/> | |||
</compile> | |||
</ajc-test> | |||
<!-- should NOT raise error, despite Oxford expectations to the contrary --> | |||
<ajc-test dir="bugs/oxford" pr="62475" | |||
title="resolution of IT field inits"> | |||
<compile files="PR62475.java"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test | |||
dir="bugs/invalidAbsoluteTypeName" | |||
<ajc-test | |||
dir="bugs/invalidAbsoluteTypeName" | |||
pr="65925" | |||
title="Valid but inaccessible type names should not be flagged by XLint:invalidAbsoluteTypeName"> | |||
<compile files="False_InvalidAbsoluteTypeName.java"> | |||
@@ -236,19 +236,19 @@ | |||
</compile> | |||
<run class="False_InvalidAbsoluteTypeName"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/PR68991" pr="68991" | |||
title="intertype initialisers should match field set pointcuts"> | |||
<compile files="Simple.java"/> | |||
<run class="Simple"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/PR68991" pr="68991" | |||
title="intertype initialisers should match field set pointcuts (oxford testcase)"> | |||
<compile files="Oxford.java"/> | |||
<run class="Oxford"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="54421" | |||
title="Compile time declarations (warning and error) do not accept string concatenation (with +)"> | |||
<compile files="decwStrings.java"> | |||
@@ -261,14 +261,14 @@ | |||
<message kind="warning" line="39" text="abcdefghijklmnopqrstuvwxyz"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="54421" | |||
title="Compile time declarations (warning and error) do not accept string concatenation (with +) (2)"> | |||
<compile files="decwStringsErroneous.java"> | |||
<message kind="error" line="22"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs/oxford" pr="61768" | |||
title="scope for inter-type methods"> | |||
<compile files="PR61768.java"> | |||
@@ -287,13 +287,13 @@ | |||
<compile files="PrivateCall2.java,PrivateCall3.java"/> | |||
<run class="def.PrivateCall3"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/doYouHaveVisiblePrivates" pr="71372" | |||
title="NoSuchMethodError calling private method from around advice in inner aspect (3)"> | |||
<compile files="PrivateCallInstance.java"/> | |||
<run class="PrivateCallInstance"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/doYouHaveVisiblePrivates" pr="71372" | |||
title="NoSuchMethodError calling private method from around advice in inner aspect (4)"> | |||
<compile files="PrivateCall_Instance_Package1.java,PrivateCall_Instance_Package2.java"/> | |||
@@ -305,7 +305,7 @@ | |||
<compile files="a/ITD.aj,b/B.aj"/> | |||
<run class="b.B"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/privilegedNPE" pr="67579" | |||
title="NPE on privileged aspect error (2)"> | |||
<compile files="b/B.aj,a/ITD.aj"/> | |||
@@ -317,14 +317,14 @@ | |||
<compile files="b/B.aj,a/ITD.aj"/> | |||
<run class="b.B"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/privilegedAccess" pr="67578" | |||
title="Privileged Aspect Access Problem Across Packages (2)"> | |||
<compile files="b/B_notPrivileged.aj,a/ITD.aj"> | |||
<message kind="error" line="7" text="The method returnNothing(Object) from the type ITD is not visible"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="62642" | |||
title="proper handling of ExceptionInIntializer inside clinit in presence of after throwing advice"> | |||
<compile files="pr62642.java"/> | |||
@@ -352,7 +352,7 @@ | |||
<message kind="error" line="12" text="Cannot make a static reference to the non-static method clone() from the type Object"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="design/sourceLines" pr="37020" | |||
title="wrong line for method execution join point"> | |||
<compile files="TestSourceLines.java"> | |||
@@ -380,20 +380,20 @@ | |||
title="The introduction on interface causes the interface implementation class error (1)"> | |||
<compile files="PublicPublic.java"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/interfaceITDs" pr="70794" | |||
title="The introduction on interface causes the interface implementation class error (2)"> | |||
<compile files="PackagePublic.java"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/interfaceITDs" pr="70794" | |||
title="The introduction on interface causes the interface implementation class error (3)"> | |||
<compile files="PackagePackage.java"> | |||
<message kind="error" line="17" text="abstract intertype method declaration 'void PackagePackage.world()' on interface PackagePackage must be declared public (compiler limitation)"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs/interfaceITDs" pr="70794" | |||
title="The introduction on interface causes the interface implementation class error (4)"> | |||
<compile files="PublicPackage.java"> | |||
@@ -415,7 +415,7 @@ | |||
<message kind="error" line="2" text="The abstract pointcut tracingScope can only be defined in an abstract aspect"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="72699" | |||
title="Bogus error message: The abstract method ajc$pointcut$$tracingScope$a2 in type Tracing can only be defined by an abstract class (2)"> | |||
<compile files="BogusMessage2.java"> | |||
@@ -423,19 +423,19 @@ | |||
<message kind="error" line="2" text="The abstract pointcut tracingScope can only be defined in an aspect"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs/pr70404" pr="70404" | |||
<ajc-test dir="bugs/pr70404" pr="70404" | |||
title="passing null to array arguments confuzes static join point signature. (1)"> | |||
<compile files="Main.java,MainAspect.java"/> | |||
<run class="dk.infimum.aspectjtest.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/pr70404" pr="70404" | |||
<ajc-test dir="bugs/pr70404" pr="70404" | |||
title="passing null to array arguments confuzes static join point signature. (2)"> | |||
<compile files="Main2.java,MainAspect.java"/> | |||
<run class="dk.infimum.aspectjtest.Main2"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="72528" | |||
title="around advice throws java.lang.VerifyError at runtime"> | |||
<compile files="ArrayCloning.java"/> | |||
@@ -448,9 +448,9 @@ | |||
<message kind="error" line="13" text="Unhandled"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test | |||
dir="bugs" | |||
<ajc-test | |||
dir="bugs" | |||
pr="75129" | |||
title="NPE on thisJoinPoint mistake"> | |||
<compile files="TjpMistake.java"> | |||
@@ -462,35 +462,35 @@ | |||
<compile files="CounterTest01.java"/> | |||
<run class="CounterTest01"/> | |||
</ajc-test> | |||
<ajc-test dir="cflow" pr="76030" title="Optimization of cflow - shared counters (2)"> | |||
<compile files="CounterTest02.java" options="-1.4"/> | |||
<run class="CounterTest02"/> | |||
</ajc-test> | |||
<ajc-test dir="cflow" pr="76030" title="Optimization of cflow - shared stacks (3)"> | |||
<compile files="CounterTest03.java"/> | |||
<run class="CounterTest03"/> | |||
</ajc-test> | |||
<ajc-test dir="cflow" pr="76030" title="Optimization of cflow - counters (4)"> | |||
<compile files="CounterTest04.java" options="-1.4"/> | |||
<run class="CounterTest04"/> | |||
</ajc-test> | |||
<ajc-test dir="cflow" pr="76030" title="Optimization of cflow - counters with abstract pointcuts (5)"> | |||
<compile files="CounterTest05.java"/> | |||
<run class="CounterTest05"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/pr76096" pr="76096" title="Anonymous classes unaware of introductions into abstract classes"> | |||
<compile files="ConcreteClassA.java"/> | |||
<run class="ConcreteClassA"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="74952" title="before,after not (cflow(within(Trace*))) prints nothing"> | |||
<compile files="WhatsGoingOn.java"/> | |||
<run class="WhatsGoingOn"/> | |||
</ajc-test> | |||
</suite> |
@@ -892,7 +892,7 @@ | |||
<ajc-test dir="bugs150" pr="107059" title="target(@Foo *)"> | |||
<compile files="pr107059_2.aj" options="-1.5"> | |||
<message kind="error" line="4" text="wildcard type pattern not allowed"></message> | |||
<message kind="error" line="4" text="wildcard type pattern not allowed"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -907,9 +907,9 @@ | |||
<ajc-test dir="bugs150" pr="108050" title="signature matching in override scenario"> | |||
<compile files="pr108050.aj" options="-1.5"> | |||
<message kind="warning" line = "2" text="servlet request"></message> | |||
<message kind="warning" line = "7" text="servlet request"></message> | |||
<message kind="warning" line = "21" text="servlet request"></message> | |||
<message kind="warning" line="2" text="servlet request"/> | |||
<message kind="warning" line="7" text="servlet request"/> | |||
<message kind="warning" line="21" text="servlet request"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -923,7 +923,8 @@ | |||
<ajc-test dir="bugs150/" pr="107953" title="@AfterThrowing with no formal specified"> | |||
<compile files="pr107953.java" options="-1.5"> | |||
<message kind="error" line="8" text="throwing formal 'RuntimeException' must be declared as a parameter in the advice signature"></message> | |||
<message kind="error" line="8" | |||
text="throwing formal 'RuntimeException' must be declared as a parameter in the advice signature"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -980,8 +981,10 @@ | |||
<ajc-test title="matching against Object[]" pr="72668" dir="bugs150"> | |||
<compile files="pr72668.aj" options="-1.5"> | |||
<message kind="error" line="3" text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"></message> | |||
<message kind="error" line="10" text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"></message> | |||
<message kind="error" line="3" | |||
text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"/> | |||
<message kind="error" line="10" | |||
text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -1020,17 +1023,17 @@ | |||
<ajc-test dir="bugs" pr="61568" title="Various kinds of ambiguous bindings"> | |||
<compile files="AmbiguousBindings.aj" options="-1.4"> | |||
<message line="17" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> | |||
<message line="19" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> | |||
<message line="21" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> | |||
<message line="23" text="ambiguous binding of parameter(s) x across '||' in pointcut"></message> | |||
<message line="25" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> | |||
<message line="17" text="ambiguous binding of parameter(s) foo across '||' in pointcut"/> | |||
<message line="19" text="ambiguous binding of parameter(s) foo across '||' in pointcut"/> | |||
<message line="21" text="ambiguous binding of parameter(s) foo across '||' in pointcut"/> | |||
<message line="23" text="ambiguous binding of parameter(s) x across '||' in pointcut"/> | |||
<message line="25" text="ambiguous binding of parameter(s) foo across '||' in pointcut"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="61658" title="ambiguous args"> | |||
<compile files="PR61658.java" options="-1.5"> | |||
<message line="17" text="ambiguous binding of parameter(s) a, b across '||' in pointcut"></message> | |||
<message line="17" text="ambiguous binding of parameter(s) a, b across '||' in pointcut"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -1153,8 +1156,8 @@ | |||
<ajc-test dir="bugs150" pr="107858" title="inlined field access in proceed call"> | |||
<compile files="pr107858.aj" options="-1.5"> | |||
<message kind="error" line="9" text="too many arguments to proceed, expected 0"></message> | |||
<message kind="error" line="10" text="too many arguments to proceed, expected 0"></message> | |||
<message kind="error" line="9" text="too many arguments to proceed, expected 0"/> | |||
<message kind="error" line="10" text="too many arguments to proceed, expected 0"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -1258,11 +1261,11 @@ | |||
<ajc-test dir="bugs150/pr87530" pr="87530" title="final itd methods on interfaces"> | |||
<compile files="FinalITDMOnInterface.aj" options="-1.5"> | |||
<message kind="error" line="12" text="Cannot override the final method from A.TestInterface"></message> | |||
<message kind="error" line="12" text="Cannot override the final method from A.TestInterface"/> | |||
</compile> | |||
<compile files="FinalITDMOnInterface2.aj" options="-1.5"> | |||
<!--message kind="error" line="8" text="Cannot override the final method from A.TestInterface"></message--> | |||
<message kind="error" line="8" text="can't override final void A$TestInterface.m()"></message> | |||
<message kind="error" line="8" text="can't override final void A$TestInterface.m()"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -1620,17 +1623,17 @@ | |||
<ajc-test title="declare parents : hasmethod(..) - 1" dir="hasmember"> | |||
<compile files="HasMethod.aj" options="-1.5 -XhasMember"/> | |||
<run class="HasMethod"></run> | |||
<run class="HasMethod"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasmethod(..) - 2" dir="hasmember"> | |||
<compile files="HasMethodInherited.aj" options="-1.5 -XhasMember"/> | |||
<run class="HasMethodInherited"></run> | |||
<run class="HasMethodInherited"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasmethod(..) - 3" dir="hasmember"> | |||
<compile files="HasPrivateMethodInherited.aj" options="-1.5 -XhasMember"/> | |||
<run class="HasPrivateMethodInherited"></run> | |||
<run class="HasPrivateMethodInherited"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasmethod(..) - 4" dir="hasmember"> | |||
@@ -1641,17 +1644,17 @@ | |||
<ajc-test title="declare parents : hasfield(..) - 1" dir="hasmember"> | |||
<compile files="HasField.aj" options="-1.5 -XhasMember"/> | |||
<run class="HasField"></run> | |||
<run class="HasField"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasfield(..) - 2" dir="hasmember"> | |||
<compile files="HasFieldInherited.aj" options="-1.5 -XhasMember"/> | |||
<run class="HasFieldInherited"></run> | |||
<run class="HasFieldInherited"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasfield(..) - 3" dir="hasmember"> | |||
<compile files="HasPrivateFieldInherited.aj" options="-1.5 -XhasMember"/> | |||
<run class="HasPrivateFieldInherited"></run> | |||
<run class="HasPrivateFieldInherited"/> | |||
</ajc-test> | |||
<!-- Annotation binding tests --> | |||
@@ -3150,7 +3153,7 @@ | |||
<compile files="BaseTypes.java,DecaTypeBin5.aj" options="-1.5" xlintfile="ignoreTypeNotExposed.properties"> | |||
<message kind="error" line="15" text="The annotation @ColorM is disallowed for this location"/> | |||
<message kind="error" line="16" text="The annotation @ColorC is disallowed for this location"/> | |||
<message king="error" line="17" text="A is not a valid target for annotation ColorA"/> | |||
<message kind="error" line="17" text="A is not a valid target for annotation ColorA"/> | |||
<message kind="error" line="18" text="The annotation @ColorF is disallowed for this location"/> | |||
<message kind="error" line="19" text="The annotation @ColorP is disallowed for this location"/> | |||
<message kind="error" line="20" text="The annotation @ColorL is disallowed for this location"/> |
@@ -580,7 +580,7 @@ | |||
<ajc-test dir="bugs153/pr149560" title="incorrect staticinitialization weaving - codestyle"> | |||
<compile files="CodeStyle.java" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="Join point 'staticinitialization(void MyAspect.<clinit>())' in Type 'MyAspect' (CodeStyle.java:3) advised by after advice from 'MyAspect' (CodeStyle.java:4)"/> | |||
<message kind="weave" test="Join point 'staticinitialization(void CodeStyle.<clini>())' in Type 'CodeStyle' (CodeStyle.java:9) advised by after advice from 'MyAspect' (CodeStyle.java:4)"/> | |||
<message kind="weave" text="Join point 'staticinitialization(void CodeStyle.<clinit>())' in Type 'CodeStyle' (CodeStyle.java:9) advised by after advice from 'MyAspect' (CodeStyle.java:4)"/> | |||
</compile> | |||
<run class="CodeStyle"> | |||
<stdout> | |||
@@ -594,7 +594,7 @@ | |||
<ajc-test dir="bugs153/pr149560" title="incorrect staticinitialization weaving - annstyle"> | |||
<compile files="AnnStyle.java" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="Join point 'staticinitialization(void MyAspect.<clinit>())' in Type 'MyAspect' (AnnStyle.java:5) advised by after advice from 'MyAspect' (AnnStyle.java:7)"/> | |||
<message kind="weave" test="Join point 'staticinitialization(void AnnStyle.<clini>())' in Type 'AnnStyle' (AnnStyle.java:12) advised by after advice from 'MyAspect' (AnnStyle.java:7)"/> | |||
<message kind="weave" text="Join point 'staticinitialization(void AnnStyle.<clinit>())' in Type 'AnnStyle' (AnnStyle.java:12) advised by after advice from 'MyAspect' (AnnStyle.java:7)"/> | |||
</compile> | |||
<run class="AnnStyle"> | |||
<stdout> | |||
@@ -791,10 +791,10 @@ | |||
<compile files="TestAroundClosure.aj" options="-1.4"/> | |||
<run class="HelloWorld" ltw="aop-aroundclosure.xml"> | |||
<stdout> | |||
<line text="&rt; ConcreteAspectWithAroundClosure()"/> | |||
<line text="> ConcreteAspectWithAroundClosure()"/> | |||
<line text="< ConcreteAspectWithAroundClosure()"/> | |||
<line text="? void HelloWorld.main(String[])"/> | |||
<line text="&rt; HelloWorld()"/> | |||
<line text="> HelloWorld()"/> | |||
<line text="< HelloWorld()"/> | |||
<line text="Hello World!"/> | |||
</stdout> |
@@ -585,7 +585,7 @@ | |||
<ajc-test dir="bugs1612/pr345515" title="anno copying"> | |||
<compile files="Code.java" options="-1.5"/> | |||
<run class="Code"></run> | |||
<run class="Code"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs1612/pr327867" title="synthetic methods"> | |||
@@ -653,7 +653,7 @@ | |||
<ajc-test dir="bugs1612/pr315398" title="verifyerror - 2"> | |||
<compile files="Code2.java" options="-1.5"> | |||
</compile> | |||
<run class="Code2"></run> | |||
<run class="Code2"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs1612/pr335810" title="rawtype warning"> |
@@ -15,44 +15,44 @@ | |||
<ajc-test dir="bugs164/pr268689" title="generics aspects npe"> | |||
<compile files="GenericAspect.aj ConcreteAspect.aj" options="-1.5"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr267559" title="generics and itd npe"> | |||
<compile files="IMarker.java ClassB.java Aspect.java ClassA.java" options="-1.5"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266564" title="annotation style long"> | |||
<compile files="AA.java" options="-1.5"/> | |||
<run class="business.AA"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266564" title="annotation style long - 2"> | |||
<compile files="CC.java" options="-1.5"/> | |||
<run class="business.CC"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266420" title="unused private warning"> | |||
<compile files="A.java" options="-1.5 -warn:unusedPrivate"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266420" title="unused private warning - 2"> | |||
<compile files="B.java" options="-1.5 -warn:unusedPrivate"> | |||
<message kind="warning" text="The value of the field B.i is not used"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266420" title="unused private warning - 3"> | |||
<compile files="C.java" options="-1.5 -warn:unusedPrivate"> | |||
<message kind="warning" text="The value of the field C.j is not used"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr265729" title="aspectpath model"> | |||
<compile files="Aspect.java Orange.java Strawberry.java Fruit.java" outjar="library.jar" options="-emacssym"/> | |||
<compile files="Orange.java Strawberry.java Fruit.java" aspectpath="library.jar" options="-emacssym"/> | |||
<!-- | |||
--> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266220" title="generics and aop.xml"> | |||
<compile files="Code.java"/> | |||
<compile files="Isolator.java" outjar="aspects.jar" options="-1.5"/> | |||
@@ -64,21 +64,21 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266165" title="optimizing if for constant reference - 1"> | |||
<compile files="NeverWeave.java" options="-1.5 -Xlint:ignore -showWeaveInfo"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266165" title="optimizing if for constant reference - 2"> | |||
<compile files="AlwaysWeave.java" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="Join point"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266165" title="optimizing if for constant reference - 3"> | |||
<compile files="NeverWeave2.java" options="-1.5 -Xlint:ignore -showWeaveInfo"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr266165" title="optimizing if for constant reference - 4"> | |||
<compile files="AlwaysWeave2.java" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="Join point"/> | |||
@@ -92,19 +92,19 @@ | |||
<message kind="warning" line="26" text="advice defined"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr265695" title="new syntax for inherited anno - 1"> | |||
<compile files="AspNew.aj" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="Join point"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr265695" title="new syntax for inherited anno - 3"> | |||
<compile files="AspNew2.aj" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="Join point"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr265418" title="varargs"> | |||
<compile files="A.java" options="-1.5"/> | |||
<run class="A"> | |||
@@ -118,25 +118,25 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs164" title="parser problem for array subtypes"> | |||
<compile files="PR148508.java"/> | |||
<run class="PR148508"> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr265360" title="incorrect resolution of Date"> | |||
<compile files="Foo.java Main.java" options="-1.5"> | |||
<message kind="warning" text="no match for this type name: Date "/> | |||
<message kind="warning" test="advice defined in"/> | |||
<message kind="warning" text="advice defined in"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr233032" title="dual preClinit"> | |||
<compile files="A.java" options="-1.5"/> | |||
<run class="A"/> | |||
</ajc-test> | |||
<ajc-test dir="features164/aopconfig/one" title="aop config - 1"> | |||
<compile files="A.java A2.java B.java foo.xml" options="-1.5 -showWeaveInfo -xmlConfigured"> | |||
<message kind="weave" text="Join point 'staticinitialization(void A.<clinit>())' in Type 'A' (A.java:1) advised by before advice from 'A' (A.java:2)"/> | |||
@@ -144,20 +144,20 @@ | |||
<message kind="weave" text="Join point 'staticinitialization(void B.<clinit>())' in Type 'B' (B.java:1) advised by before advice from 'A' (A.java:2)"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="features164/aopconfig/one" title="aop config - 2"> | |||
<compile files="A.java A2.java B.java B2.java foo2.xml" options="-1.5 -showWeaveInfo -xmlConfigured"> | |||
<message kind="weave" text="Join point 'staticinitialization(void B.<clinit>())' in Type 'B' (B.java:1) advised by before advice from 'A' (A.java:2)"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="features164/aopconfig/two" title="aop config - 3"> | |||
<!-- type pattern in the scope in foo.xml is complete nonsense --> | |||
<compile files="A.java B.java foo.xml" options="-1.5 -Xlint:ignore -xmlConfigured"> | |||
<message kind="error" text="Unable to parse scope as type pattern"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="features164/aopconfig/one" title="aop config - 4"> | |||
<!-- excluding a type --> | |||
<compile files="A.java A2.java B.java B2.java case4.xml" options="-1.5 -Xlint:ignore -xmlConfigured -showWeaveInfo"> | |||
@@ -169,7 +169,7 @@ | |||
<message kind="weave" text="Join point 'staticinitialization(void B.<clinit>())' in Type 'B' (B.java:1) advised by before advice from 'A' (A.java:2)"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="features164/aopconfig/one" title="aop config - 5"> | |||
<!-- excluding a type --> | |||
<compile files="A.java A2.java B.java B2.java case5.xml" options="-1.5 -Xlint:ignore -xmlConfigured -showWeaveInfo"> | |||
@@ -179,100 +179,100 @@ | |||
<message kind="weave" text="Join point 'staticinitialization(void A2.<clinit>())' in Type 'A2' (A2.java:1) advised by before advice from 'A' (A.java:2)"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr263310" title="inner handles"> | |||
<compile files="HandleTestingAspect.java" options="-1.5 -emacssym -Xlint:ignore"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr263666" title="around advice handles"> | |||
<compile files="x/A.java x/B.java x/OverrideOptions.aj" options="-1.5 -emacssym"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164" title="ajcthis not read"> | |||
<compile files="pr195090.java" options="-1.5 -warn:+unusedArgument"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr256779" title="anno decprecedence"> | |||
<compile files="ThisAspect.java OtherAspect.java" options="-1.5"/> | |||
<run class="com.ThisAspect" ltw="aop.xml"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr262905" title="recursive cflow"> | |||
<compile files="A.java" options="-1.5"> | |||
<message kind="warning" line="5" text="advice defined"/> | |||
<message kind="error" line="3" text="circular"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr194314" title="broken lvt - 1"> | |||
<compile files="Service.java IService.java Main.java ServiceInterceptor.java" options="-1.5"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr194314" title="broken lvt - 2"> | |||
<compile files="Service.java IService.java Main.java ServiceInterceptorCodeStyle.java" options="-1.5"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr194314" title="broken lvt - 3"> | |||
<compile files="ITDOne.java" options="-1.5"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr262509" title="debugging before advice"> | |||
<compile files="Foo.java" options="-1.5"/> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr262509" title="debugging before advice - 2"> | |||
<compile files="Foo2.java" options="-1.5 -preserveAllLocals"/> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr262509" title="debugging before advice - 3"> | |||
<compile files="Foo3.java" options="-1.5 -preserveAllLocals"/> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr246393" title="rogue errors - 1"> | |||
<compile files="D.java" options="-1.5"> | |||
<message kind="error" line="2" text="error on token"/> | |||
</compile> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr262257" title="name clash"> | |||
<compile files="C.java" options="-1.5"> | |||
</compile> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr260384" title="compiling spring"> | |||
<compile files="Broken.java" options="-1.5"> | |||
</compile> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr260384" title="compiling spring - 2"> | |||
<compile files="Broken2.java" options="-1.5"> | |||
</compile> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr260384" title="compiling spring - 3"> | |||
<compile files="C.java" options="-1.5 -emacssym"/> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr260384" title="compiling spring - 4"> | |||
<compile files="D.java" options="-1.5"> | |||
</compile> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr164016" title="ataspectj decp 164016"> | |||
<compile files="Code.aj" options="-1.5"/> | |||
<run class="test.Code"/> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr164016" title="ataspectj decp 164016 - 2"> | |||
<compile files="Code.java TargetBad.java TargetGood.java" aspectpath="code.jar" options="-1.5"/> | |||
<run class="test.Code"/> | |||
</ajc-test> | |||
</ajc-test> | |||
<ajc-test dir="bugs164/pr258788" title="ataspectj decp 258788"> | |||
<compile files="NameAware.java NameManager.java NameManagerImpl.java StartClass.java TargetClass.java TestAspect.java" options="-1.5"/> | |||
<run class="com.StartClass"/> | |||
</ajc-test> | |||
</suite> | |||
</ajc-test> | |||
</suite> |
@@ -5,15 +5,15 @@ | |||
<ajc-test dir="bugs170/pr382723" title="generic aspect"> | |||
<compile files="FooAspect.java" options="-1.5"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr382723" title="generic aspect 2"> | |||
<compile files="FooAspect2.java" options="-1.5"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr382723" title="generic aspect 3"> | |||
<compile files="FooAspect3.java" options="-1.5"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr382723" title="generic aspect 4"> | |||
<compile files="Foo.java" options="-1.5 -showWeaveInfo"> | |||
<message kind="weave" text="Join point 'constructor-call(void java.util.LinkedList.<init>())' in Type 'Foo' (Foo.java:41) advised by around advice from 'Bar' (Foo.java:14)"/> | |||
@@ -26,33 +26,33 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- no declare parents, only ITD --> | |||
<ajc-test dir="bugs170/pr382189/one" title="covariant generics 1"> | |||
<compile files="A.java A_ITD.aj B.java SuperA.java SuperB.java" options="-1.5"/> | |||
</ajc-test> | |||
<!-- now declare parents and ITD --> | |||
<ajc-test dir="bugs170/pr382189/two" title="covariant generics 2"> | |||
<compile files="A.java A_ITD.aj B.java SuperA.java SuperB.java" options="-1.5"/> | |||
</ajc-test> | |||
<!-- now run it --> | |||
<ajc-test dir="bugs170/pr382189/three" title="covariant generics 3"> | |||
<compile files="A.java A_ITD.aj B.java SuperA.java SuperB.java" options="-1.5"/> | |||
<run class="A"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr382435/one" title="covariant generic itds 1"> | |||
<compile files="bug/A.java" options="-1.5"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr382435/two" title="covariant generic itds 2"> | |||
<compile files="bug/A.java" options="-1.5"/> | |||
<run class="bug.A"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr382189" title="covariant generics"> | |||
<compile files="covbug/A.java covbug/A_ITD.aj covbug/B.java covbug/SuperA.java covbug/SuperB.java" options="-1.5"/> | |||
<!-- <run class="Foo"> | |||
@@ -60,7 +60,7 @@ | |||
<line text="@Anno()"/></stdout> | |||
</run> --> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr377130" title="missing annos on priv aspects"> | |||
<compile files="Foo.java" options="-1.5"/> | |||
<run class="Foo"> | |||
@@ -68,7 +68,7 @@ | |||
<line text="@Anno()"/></stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr377130" title="missing annos on priv aspects - 2"> | |||
<compile files="Foo2.java" options="-1.5"/> | |||
<run class="Foo2"> | |||
@@ -83,7 +83,7 @@ | |||
<compile inpath="code.jar" aspectpath="aspects.jar" options="-showWeaveInfo"> | |||
<message kind="weave" text="Join point 'constructor-call(void R.<init>())'"/> | |||
</compile> | |||
<!-- | |||
<!-- | |||
if we had a 1.7 vm we could use this: | |||
<compile files="RAj.java" options="-1.7 -Xlint:ignore"/> | |||
<run class="R" ltw="aop.xml"> | |||
@@ -110,7 +110,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/ltw" title="dec at field ordering 2"> | |||
<compile files="Anno.java Main.java TriggerAll.java MyObject.java" options="-1.5"/> | |||
<run class="ch.tests.Main"> | |||
@@ -120,7 +120,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/ltw" title="dec at field ordering ltw 1"> | |||
<compile files="Anno.java Main.java MyObject.java" options="-1.5"/> | |||
<compile files="TriggerAll.java" options="-Xlint:ignore -1.5 "/> | |||
@@ -144,7 +144,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/xmldefs" title="xml defined dec at method 2"> | |||
<compile files="Hello.java Anno2.java" options="-1.5"/> | |||
<run class="Hello" ltw="aop2.xml"> | |||
@@ -163,7 +163,7 @@ | |||
</stderr> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/xmldefs" title="xml defined dec at field"> | |||
<compile files="Hello2.java Anno.java" options="-1.5"/> | |||
<run class="Hello2" ltw="aop3.xml"> | |||
@@ -174,7 +174,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/xmldefs" title="xml defined dec anno - variants 1"> | |||
<compile files="Hello4.java Anno4.java" options="-1.5"/> | |||
<run class="Hello4" ltw="aop4.xml"> | |||
@@ -195,7 +195,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/xmldefs" title="xml defined dec anno - variants 2"> | |||
<compile files="Hello5.java Anno5.java" options="-1.5"/> | |||
<run class="Hello5" ltw="aop5.xml"> | |||
@@ -216,7 +216,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/xmldefs" title="xml defined dec anno - multiple values"> | |||
<compile files="Hello6.java Anno6.java" options="-1.5"/> | |||
<run class="Hello6" ltw="aop6.xml"> | |||
@@ -228,7 +228,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/xmldefs" title="xml defined dec anno - multiple values and spaces"> | |||
<compile files="Hello6.java Anno6.java" options="-1.5"/> | |||
<run class="Hello6" ltw="aop6a.xml"> | |||
@@ -240,7 +240,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/xmldefs" title="xml defined dec anno - type"> | |||
<compile files="Hello7.java Anno7.java" options="-1.5"/> | |||
<run class="Hello7" ltw="aop7.xml"> | |||
@@ -261,7 +261,7 @@ | |||
</compile> | |||
<run class="AspectTest"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/transientTjpFields" title="transient tjp fields"> | |||
<compile files="Code.java" options="-Xset:makeTjpFieldsTransient=true"> | |||
</compile> | |||
@@ -271,54 +271,54 @@ | |||
<compile files="PerThis.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="pertarget"> | |||
<compile files="PerTarget.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="percflow"> | |||
<compile files="PerCflow.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="pertypewithin"> | |||
<compile files="PerTypeWithin.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="diamond 1"> | |||
<compile files="Diamond.java" options="-1.5"> | |||
<message kind="error" line="11" text="'<>' operator is not allowed for source level below 1.7"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="diamond 2"> | |||
<compile files="Diamond.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="diamond itd 1"> | |||
<compile files="DiamondITD.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="literals 1"> | |||
<compile files="Literals.java" options="-1.5"> | |||
<message kind="error" line="8" text="Underscores can only be used with source level 1.7 or greater"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="literals 2"> | |||
<compile files="Literals.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="literals itd 1"> | |||
<compile files="LiteralsITD.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="string switch 1"> | |||
<compile files="StringSwitch.java" options="-1.5"> | |||
<message kind="error" line="9" text="Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted"/> | |||
@@ -329,7 +329,7 @@ | |||
<compile files="StringSwitch.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="multi catch 1"> | |||
<compile files="MultiCatch.java" options="-1.5"> | |||
<message kind="error" line="6" text="Multi-catch parameters are not allowed for source level below 1.7"/> | |||
@@ -340,12 +340,12 @@ | |||
<compile files="MultiCatch.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="multi catch with handler 1"> | |||
<compile files="MultiCatchWithHandler.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="multi catch aspect 1"> | |||
<compile files="MultiCatchAspect.java" options="-1.7"> | |||
</compile> | |||
@@ -355,23 +355,23 @@ | |||
<compile files="TryResources.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="try resources 2"> | |||
<compile files="TryResourcesAspect.java" options="-1.7"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/language" title="multi catch with handler 2"> | |||
<compile files="MultiCatchWithHandler2.java" options="-1.7"> | |||
</compile> | |||
<run class="MultiCatchWithHandler2"></run> | |||
<run class="MultiCatchWithHandler2"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/sanity" title="sanity 1"> | |||
<compile files="DeclareAtType.java" options="-1.5"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr363979" title="missing impl"> | |||
<compile files="Example.java" options="-1.5"/> | |||
<run class="Example"> | |||
@@ -380,7 +380,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr363979" title="missing impl 2"> | |||
<compile files="Example2.java" options="-1.5"/> | |||
<run class="Example2"> | |||
@@ -389,12 +389,12 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs170/pr364380" title="stackoverflow"> | |||
<compile files="X.aj" options="-1.5" outjar="foo.jar"/> | |||
<compile files="C.java" options="-1.5" inpath="foo.jar"> | |||
<message kind="warning" text="An advice already exists for setting an owner"/> | |||
</compile> | |||
</ajc-test> | |||
</suite> |
@@ -107,7 +107,7 @@ | |||
</ajc-test> | |||
<ajc-test dir="bugs172/pr398246" title="if pointcut names 4"> | |||
<compile files="Code4.java" options="-1.5"></compile> | |||
<compile files="Code4.java" options="-1.5"/> | |||
<compile files="Code4.java" options="-1.5" outjar="aspects.jar"/> | |||
<run class="Code4" options="-1.5"> | |||
<stdout> | |||
@@ -115,7 +115,7 @@ | |||
<line text="advice"/> | |||
</stdout> | |||
</run> | |||
<compile files="CodeExtra4.java" aspectpath="aspects.jar" options="-1.5"></compile> | |||
<compile files="CodeExtra4.java" aspectpath="aspects.jar" options="-1.5"/> | |||
<run class="CodeExtra4" options="-1.5"> | |||
<stdout> | |||
<line text="advice"/> |
@@ -27,7 +27,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs1810/500035" title="ataspectj binding 2"> | |||
<compile options="-1.8" files="Code2.java"/> | |||
<run class="Code2"> | |||
@@ -39,7 +39,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs1810/500035" title="ataspectj binding 3 -XnoInline"> | |||
<compile options="-1.8 -XnoInline" files="Code3.java"/> | |||
<run class="Code3"> | |||
@@ -59,7 +59,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs1810/500035" title="ataspectj binding 4"> | |||
<compile options="-1.8" files="Code3.java"/> | |||
<run class="Code3"> | |||
@@ -79,7 +79,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs1810/501656" title="generics exception"> | |||
<compile options="-1.8 -parameters" files="ApplicationException.java ApplicationExceptionHandler.java"/> | |||
</ajc-test> | |||
@@ -90,7 +90,7 @@ | |||
<ajc-test dir="bugs1810/493554" title="pertarget"> | |||
<compile options="-1.8" files="Dep.java FooAspect.aj Cmd.java"/> | |||
<run class="example.kusedep.Cmd"></run> | |||
<run class="example.kusedep.Cmd"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs1810/ambig" title="ambiguous message - 18"> | |||
@@ -106,5 +106,5 @@ | |||
<message kind="error" text="The method toList() in the type Collectors is not applicable for the arguments (Inner::getId)"/> | |||
</compile> | |||
</ajc-test> | |||
</suite> |
@@ -26,7 +26,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs183/436653/abstract" title="suppress type not found - abstract 1"> | |||
<compile options="-1.8 -Xlint:ignore" files="A.java" outjar="codeA.jar"/> | |||
<compile options="-1.8" files="AA.java X.java" classpath="codeA.jar" outjar="aspects.jar"/> | |||
@@ -44,7 +44,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs183/436653" title="suppress type not found 4"> | |||
<compile options="-1.8 -Xlint:ignore" files="X.java" outjar="aspects.jar"/> | |||
<compile options="-1.8" files="Runner.java"/> | |||
@@ -54,10 +54,10 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs183/436653" title="suppress type not found 5"> | |||
<compile options="-1.8 -Xlint:ignore" files="X.java" outjar="aspects.jar"/> | |||
<compile class="-1.8" files="A.java"/> | |||
<compile options="-1.8" files="A.java"/> | |||
<compile options="-1.8" files="Runner.java"/> | |||
<run class="Runner" ltw="aop.xml"> | |||
<stdout> | |||
@@ -66,7 +66,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- annotation style aspect, missing type so deactivated --> | |||
<ajc-test dir="bugs183/436653" title="suppress type not found 6"> | |||
<compile options="-1.8 -Xlint:ignore" files="AnnoX.java" outjar="aspects.jar"/> | |||
@@ -77,7 +77,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- annotation style aspect, type not missing so not deactivated --> | |||
<ajc-test dir="bugs183/436653" title="suppress type not found 7"> | |||
<compile options="-1.8 -Xlint:ignore" files="AnnoX.java A.java" outjar="aspects.jar"/> | |||
@@ -89,7 +89,7 @@ | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<!-- annotation style aspect, type not missing so not deactivated --> | |||
<ajc-test dir="bugs183/436653" title="suppress type not found 8"> | |||
<compile options="-1.8 -Xlint:ignore" files="AnnoX.java A.java" outjar="aspects.jar"/> | |||
@@ -114,7 +114,7 @@ | |||
<message kind="info" text="*deactivating aspect 'XA2' as it requires type 'B' which cannot be found on the classpath"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs183/436653" title="suppress type not found 2"> | |||
<compile options="-1.8" files="A.java" outjar="typeA.jar"/> | |||
<!-- adviceDidNotMatch messages are suppressed here --> | |||
@@ -122,7 +122,7 @@ | |||
<compile options="-1.8" files="Code.java" aspectpath="aspects.jar"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs183/436653" title="suppress type not found"> | |||
<compile options="-1.8" files="A.java" outjar="typeA.jar"/> | |||
<!-- adviceDidNotMatch messages are suppressed here --> | |||
@@ -148,12 +148,12 @@ | |||
<compile options="-1.8" files="ControlFlow.java ForReplacer.java ControlFlowCommand.java ControlFlowDriver.java"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs183/444398" title="abstract aspect npe"> | |||
<compile options="-1.8" files="Bottom.java Middle.java Top.java"> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs183/442425" title="anno style decp"> | |||
<compile options="-1.8" files="EntityController.java IEntityController.java MyAnnotatedController.java EntityControllerAspect.java EntityMongoController.java"> | |||
<message kind="error" line="23" text="Type mismatch: cannot convert from MyAnnotatedController<String> to IEntityController<String>"/> | |||
@@ -173,10 +173,10 @@ | |||
</run> | |||
--> | |||
</ajc-test> | |||
<ajc-test dir="bugs183/443477" title="verifyerror"> | |||
<compile options="-1.7" files="Coo.java"/> | |||
<run class="Coo"/> | |||
</ajc-test> | |||
</suite> |
@@ -41,7 +41,7 @@ | |||
</ajc-test> | |||
<ajc-test dir="bugs187/469889" title="broken java"> | |||
<!-- | |||
<!-- | |||
<compile files="A.java B.java AbstractA.java BImpl.java Main.java" options="-1.8"/> | |||
--> | |||
<compile files="Code.java" options="-1.8"/> | |||
@@ -61,7 +61,7 @@ | |||
<compile files="B.java" options="-XhasMember -1.8 -showWeaveInfo"> | |||
<message kind="weave" text="Extending interface set for type 'B' (B.java) to include 'java.io.Serializable' (B.java)"/> | |||
</compile> | |||
<run class="B"></run> | |||
<run class="B"/> | |||
</ajc-test> | |||
</suite> |
@@ -190,7 +190,7 @@ | |||
<ajc-test dir="bugs190/modules" title="weave module"> | |||
<compile files="aspect1/Azpect1.java" inpath="module1/module-one.jar" outjar="runner.jar" options="-1.8"/> | |||
<java classpath="runner.jar" class="a.b.c.Code"/> | |||
<run classpath="runner.jar" class="a.b.c.Code"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs190/various" title="setting static final outside clinit"> |
@@ -892,7 +892,7 @@ | |||
<ajc-test dir="bugs150" pr="107059" title="target(@Foo *)"> | |||
<compile files="pr107059_2.aj" options="-1.9"> | |||
<message kind="error" line="4" text="wildcard type pattern not allowed"></message> | |||
<message kind="error" line="4" text="wildcard type pattern not allowed"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -907,9 +907,9 @@ | |||
<ajc-test dir="bugs150" pr="108050" title="signature matching in override scenario"> | |||
<compile files="pr108050.aj" options="-1.9"> | |||
<message kind="warning" line = "2" text="servlet request"></message> | |||
<message kind="warning" line = "7" text="servlet request"></message> | |||
<message kind="warning" line = "21" text="servlet request"></message> | |||
<message kind="warning" line="2" text="servlet request"/> | |||
<message kind="warning" line="7" text="servlet request"/> | |||
<message kind="warning" line="21" text="servlet request"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -923,7 +923,8 @@ | |||
<ajc-test dir="bugs150/" pr="107953" title="@AfterThrowing with no formal specified"> | |||
<compile files="pr107953.java" options="-1.9"> | |||
<message kind="error" line="8" text="throwing formal 'RuntimeException' must be declared as a parameter in the advice signature"></message> | |||
<message kind="error" line="8" | |||
text="throwing formal 'RuntimeException' must be declared as a parameter in the advice signature"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -980,8 +981,10 @@ | |||
<ajc-test title="matching against Object[]" pr="72668" dir="bugs150"> | |||
<compile files="pr72668.aj" options="-1.9"> | |||
<message kind="error" line="3" text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"></message> | |||
<message kind="error" line="10" text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"></message> | |||
<message kind="error" line="3" | |||
text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"/> | |||
<message kind="error" line="10" | |||
text="incompatible return type applying to method-execution(java.lang.Number[] pr72668.getThoseInts())"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -1020,17 +1023,17 @@ | |||
<ajc-test dir="bugs" pr="61568" title="Various kinds of ambiguous bindings"> | |||
<compile files="AmbiguousBindings.aj" options="-1.4"> | |||
<message line="17" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> | |||
<message line="19" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> | |||
<message line="21" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> | |||
<message line="23" text="ambiguous binding of parameter(s) x across '||' in pointcut"></message> | |||
<message line="25" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message> | |||
<message line="17" text="ambiguous binding of parameter(s) foo across '||' in pointcut"/> | |||
<message line="19" text="ambiguous binding of parameter(s) foo across '||' in pointcut"/> | |||
<message line="21" text="ambiguous binding of parameter(s) foo across '||' in pointcut"/> | |||
<message line="23" text="ambiguous binding of parameter(s) x across '||' in pointcut"/> | |||
<message line="25" text="ambiguous binding of parameter(s) foo across '||' in pointcut"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="61658" title="ambiguous args"> | |||
<compile files="PR61658.java" options="-1.9"> | |||
<message line="17" text="ambiguous binding of parameter(s) a, b across '||' in pointcut"></message> | |||
<message line="17" text="ambiguous binding of parameter(s) a, b across '||' in pointcut"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -1153,8 +1156,8 @@ | |||
<ajc-test dir="bugs150" pr="107858" title="inlined field access in proceed call"> | |||
<compile files="pr107858.aj" options="-1.9"> | |||
<message kind="error" line="9" text="too many arguments to proceed, expected 0"></message> | |||
<message kind="error" line="10" text="too many arguments to proceed, expected 0"></message> | |||
<message kind="error" line="9" text="too many arguments to proceed, expected 0"/> | |||
<message kind="error" line="10" text="too many arguments to proceed, expected 0"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -1258,11 +1261,11 @@ | |||
<ajc-test dir="bugs150/pr87530" pr="87530" title="final itd methods on interfaces"> | |||
<compile files="FinalITDMOnInterface.aj" options="-1.9"> | |||
<message kind="error" line="12" text="Cannot override the final method from A.TestInterface"></message> | |||
<message kind="error" line="12" text="Cannot override the final method from A.TestInterface"/> | |||
</compile> | |||
<compile files="FinalITDMOnInterface2.aj" options="-1.9"> | |||
<!--message kind="error" line="8" text="Cannot override the final method from A.TestInterface"></message--> | |||
<message kind="error" line="8" text="can't override final void A$TestInterface.m()"></message> | |||
<message kind="error" line="8" text="can't override final void A$TestInterface.m()"/> | |||
</compile> | |||
</ajc-test> | |||
@@ -1620,17 +1623,17 @@ | |||
<ajc-test title="declare parents : hasmethod(..) - 1" dir="hasmember"> | |||
<compile files="HasMethod.aj" options="-1.9 -XhasMember"/> | |||
<run class="HasMethod"></run> | |||
<run class="HasMethod"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasmethod(..) - 2" dir="hasmember"> | |||
<compile files="HasMethodInherited.aj" options="-1.9 -XhasMember"/> | |||
<run class="HasMethodInherited"></run> | |||
<run class="HasMethodInherited"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasmethod(..) - 3" dir="hasmember"> | |||
<compile files="HasPrivateMethodInherited.aj" options="-1.9 -XhasMember"/> | |||
<run class="HasPrivateMethodInherited"></run> | |||
<run class="HasPrivateMethodInherited"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasmethod(..) - 4" dir="hasmember"> | |||
@@ -1641,17 +1644,17 @@ | |||
<ajc-test title="declare parents : hasfield(..) - 1" dir="hasmember"> | |||
<compile files="HasField.aj" options="-1.9 -XhasMember"/> | |||
<run class="HasField"></run> | |||
<run class="HasField"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasfield(..) - 2" dir="hasmember"> | |||
<compile files="HasFieldInherited.aj" options="-1.9 -XhasMember"/> | |||
<run class="HasFieldInherited"></run> | |||
<run class="HasFieldInherited"/> | |||
</ajc-test> | |||
<ajc-test title="declare parents : hasfield(..) - 3" dir="hasmember"> | |||
<compile files="HasPrivateFieldInherited.aj" options="-1.9 -XhasMember"/> | |||
<run class="HasPrivateFieldInherited"></run> | |||
<run class="HasPrivateFieldInherited"/> | |||
</ajc-test> | |||
<!-- Annotation binding tests --> | |||
@@ -3150,7 +3153,7 @@ | |||
<compile files="BaseTypes.java,DecaTypeBin5.aj" options="-1.9" xlintfile="ignoreTypeNotExposed.properties"> | |||
<message kind="error" line="15" text="The annotation @ColorM is disallowed for this location"/> | |||
<message kind="error" line="16" text="The annotation @ColorC is disallowed for this location"/> | |||
<message king="error" line="17" text="A is not a valid target for annotation ColorA"/> | |||
<message kind="error" line="17" text="A is not a valid target for annotation ColorA"/> | |||
<message kind="error" line="18" text="The annotation @ColorF is disallowed for this location"/> | |||
<message kind="error" line="19" text="The annotation @ColorP is disallowed for this location"/> | |||
<message kind="error" line="20" text="The annotation @ColorL is disallowed for this location"/> |
@@ -10,7 +10,7 @@ | |||
<ajc-test dir="features193" vm="14" title="switch 1"> | |||
<compile files="Switch1.java" options="-14"> | |||
</compile> | |||
<run class="Switch1" vmargs="--enable-preview"> | |||
<run class="Switch1"> | |||
<stdout> | |||
<line text="0" /> | |||
<line text="1" /> | |||
@@ -98,8 +98,6 @@ | |||
<run class="Code" vmargs="--enable-preview"> | |||
<stdout> | |||
<line text="this is a text" /> | |||
<!-- the incidental space is removed with a trim in output matching but | |||
the test app doesn't remove it when printing it, why? --> | |||
<line text="block" /> | |||
</stdout> | |||
</run> | |||
@@ -112,7 +110,6 @@ | |||
</compile> | |||
<run class="Code2" vmargs="--enable-preview"> | |||
<stdout> | |||
<!-- why is the incidental space not removed here?? --> | |||
<line text="this is a text" /> | |||
<line text="block in advice" /> | |||
</stdout> |
@@ -4,11 +4,11 @@ | |||
<suite> | |||
<ajc-test title="empty class" dir="bringup"> | |||
<compile files="EmptyClass.java"></compile> | |||
<compile files="EmptyClass.java"/> | |||
</ajc-test> | |||
<ajc-test title="empty aspect" dir="bringup"> | |||
<compile files="EmptyAspect.aj"></compile> | |||
<compile files="EmptyAspect.aj"/> | |||
</ajc-test> | |||
</suite> | |||
</suite> |
@@ -1,9 +1,10 @@ | |||
<suite> | |||
<!-- Incremental compilation Tests --> | |||
<ajc-test dir="incremental/initialTests/classAdded" | |||
title="expect class added in initial incremental tests" | |||
<ajc-test dir="incremental/initialTests/classAdded" | |||
title="expect class added in initial incremental tests" | |||
keywords="incremental-test" > | |||
<compile staging="true" | |||
<compile staging="true" | |||
options="-incremental" | |||
sourceroots="."/> | |||
<run class="main.Main"/> | |||
@@ -13,11 +14,11 @@ | |||
<run class="main.Main" skipTester="true"/> | |||
</ajc-test> | |||
<ajc-test dir="incremental/initialTests/classRemoved" | |||
title="expect class removed in initial incremental tests" | |||
<ajc-test dir="incremental/initialTests/classRemoved" | |||
title="expect class removed in initial incremental tests" | |||
keywords="incremental-test" > | |||
<compile staging="true" | |||
options="-incremental" | |||
<compile staging="true" | |||
options="-incremental" | |||
sourceroots="."/> | |||
<run class="main.Main"/> | |||
<inc-compile tag="20"> | |||
@@ -26,10 +27,10 @@ | |||
<run class="main.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="incremental/initialTests/classUpdated" | |||
title="expect class updated in initial incremental tests" | |||
<ajc-test dir="incremental/initialTests/classUpdated" | |||
title="expect class updated in initial incremental tests" | |||
keywords="incremental-test" > | |||
<compile staging="true" | |||
<compile staging="true" | |||
options="-incremental" | |||
sourceroots="."/> | |||
<run class="main.Main"/> | |||
@@ -39,11 +40,11 @@ | |||
<run class="main.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="incremental/initialTests/sourceAdded" | |||
<ajc-test dir="incremental/initialTests/sourceAdded" | |||
title="add file with class" | |||
comment="only expecting pickup if sourceroots" | |||
comment="only expecting pickup if sourceroots" | |||
keywords="incremental-test" > | |||
<compile staging="true" | |||
<compile staging="true" | |||
options="-incremental" | |||
sourceroots="."/> | |||
<run class="main.Main"/> | |||
@@ -56,11 +57,11 @@ | |||
<run class="main.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="incremental/initialTests/sourceDeleted" | |||
<ajc-test dir="incremental/initialTests/sourceDeleted" | |||
title="delete source file before incremental compile" | |||
comment="build config should permit file deletions for incremental (sourceroots)" | |||
keywords="incremental-test" > | |||
<compile staging="true" | |||
<compile staging="true" | |||
options="-incremental" | |||
sourceroots="."/> | |||
<run class="delete.Main"/> | |||
@@ -68,12 +69,12 @@ | |||
<dir-changes removed="delete.DeleteMe"/> | |||
<message kind="error" line="6" file="delete/Target.java"/> | |||
</inc-compile> | |||
<inc-compile tag="30"/> | |||
<inc-compile tag="30"/> | |||
<run class="delete.Main"/> | |||
</ajc-test> | |||
<!-- this test cannot pass with the new AjAttribute.MethodDeclarationLineNumberAttribute | |||
<ajc-test dir="incremental/initialTests/expClasses" | |||
<ajc-test dir="incremental/initialTests/expClasses" | |||
title="expected class tree" > | |||
<compile files="Main.java"> | |||
<dir-changes expDir="expected"/> | |||
@@ -81,11 +82,11 @@ | |||
<run class="Main"/> | |||
</ajc-test> | |||
--> | |||
<ajc-test dir="incremental/initialTests/defaultPackage" | |||
title="do everything in default package (sourceroots)" | |||
<ajc-test dir="incremental/initialTests/defaultPackage" | |||
title="do everything in default package (sourceroots)" | |||
keywords="incremental-test" > | |||
<compile staging="true" | |||
<compile staging="true" | |||
options="-incremental" | |||
sourceroots="."/> | |||
<run class="Main"/> | |||
@@ -97,7 +98,7 @@ | |||
<dir-changes updated="Main"/> | |||
</inc-compile> | |||
<run class="Main" skipTester="true"/> | |||
<inc-compile tag="40"> | |||
<inc-compile tag="40"> | |||
<message kind="error" line="6" file="Main.java"/> | |||
</inc-compile> | |||
<inc-compile tag="50"/> | |||
@@ -107,9 +108,9 @@ | |||
<ajc-test dir="incremental/defaultPackage" | |||
keywords="incremental-test" | |||
title="change sources in default package"> | |||
<compile | |||
<compile | |||
staging="true" | |||
options="-incremental" | |||
options="-incremental" | |||
sourceroots="src"/> | |||
<run class="Main"/> | |||
<inc-compile tag="20"/> | |||
@@ -119,9 +120,9 @@ | |||
<ajc-test dir="incremental/interPackage" | |||
keywords="incremental-test" | |||
title="change source"> | |||
<compile | |||
<compile | |||
staging="true" | |||
options="-incremental" | |||
options="-incremental" | |||
sourceroots="src"/> | |||
<run class="app.Main"/> | |||
<inc-compile tag="20"/> | |||
@@ -132,7 +133,7 @@ | |||
<ajc-test dir="incremental/stringliteral" | |||
keywords="incremental-test" | |||
title="incrementally change only string literal, still expect advice"> | |||
<compile staging="true" options="-incremental" | |||
<compile staging="true" options="-incremental" | |||
sourceroots="src"/> | |||
<run class="packageOne.Main" | |||
options="in packageOne.Main.main(..), | |||
@@ -145,10 +146,10 @@ | |||
before main packageOne.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="incremental/initialTests/aspectSourceAdded" | |||
<ajc-test dir="incremental/initialTests/aspectSourceAdded" | |||
title="add aspect source file and check world is rewoven" | |||
keywords="incremental-test" > | |||
<compile staging="true" | |||
<compile staging="true" | |||
options="-incremental" | |||
sourceroots="."/> | |||
<inc-compile tag="20"> | |||
@@ -156,11 +157,11 @@ | |||
</inc-compile> | |||
<run class="Main"/> | |||
</ajc-test> | |||
<ajc-test dir="incremental/initialTests/classWAroundClosureRemoved" | |||
title="make sure additional classes generated during weave are deleted with src class file" | |||
keywords="incremental-test"> | |||
<compile staging="true" | |||
<compile staging="true" | |||
options="-incremental" | |||
sourceroots="."/> | |||
<inc-compile tag="20" > | |||
@@ -171,8 +172,8 @@ | |||
<ajc-test dir="incremental/full-rebuild" | |||
pr="59895" | |||
title="incremental with aspect-driven full rebuild"> | |||
<compile | |||
staging="true" | |||
<compile | |||
staging="true" | |||
sourceroots="src" | |||
options="-incremental"> | |||
<message kind="error" line="3" file="Aspect.java"/> | |||
@@ -182,4 +183,5 @@ | |||
</inc-compile> | |||
<run class="Main"/> | |||
</ajc-test> | |||
</suite> |
@@ -1,297 +0,0 @@ | |||
<!-- Known Limitations --> | |||
<!-- we're not implementing static inter-type fields on interfaces in 1.1 --> | |||
<ajc-test dir="knownLimitations/test117" title="DEPRECATED: introduce of variables" | |||
keywords="from-base,knownLimitation"> | |||
<compile files="Driver.java"/> | |||
<run class="Driver"/> | |||
</ajc-test> | |||
<!-- we're not implementing this error check in 1.1 --> | |||
<ajc-test dir="errors" | |||
title="checking the contra-variant errors for typing of proceed" | |||
keywords="from-errors,knownLimitation"> | |||
<compile files="BadAround.java"> | |||
<message kind="error" line="12"/> | |||
<message kind="error" line="15"/> | |||
<message kind="error" line="18"/> | |||
<message kind="error" line="19"/> | |||
<message kind="error" line="22"/> | |||
</compile> | |||
</ajc-test> | |||
<!-- we're not implementing static inter-type fields on interfaces in 1.1 --> | |||
<ajc-test dir="design/intro" | |||
title="introduction of static methods and fields on classes and interfaces" | |||
keywords="from-design,knownLimitation"> | |||
<compile files="Statics.java"/> | |||
<run class="Statics"/> | |||
</ajc-test> | |||
<!-- only before advice implemented for handler join points in 1.1 --> | |||
<ajc-test dir="new" title="advice on catch clauses" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="CatchAdvice.java"/> | |||
<run class="CatchAdvice"/> | |||
</ajc-test> | |||
<!-- we will handle this by signalling a weave-time error for any around | |||
advice that is applied to a join point which throws checked exceptions | |||
that it can't handle. proceeds in closures change the exceptions that | |||
around advice can handle to include the greatest lower bound of the | |||
checked exceptions that are legally throwable by the proceed. | |||
Ideally their should be an -Xlint compile-time warning for ALL | |||
cases that could produce weave-time errors. | |||
--> | |||
<ajc-test dir="new" title="holding onto proceed calls in a closure-like way" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="HoldProceed.java"/> | |||
<run class="HoldProceed"/> | |||
</ajc-test> | |||
<!-- around advice not implemented on initializer join points --> | |||
<ajc-test dir="new" pr="490" | |||
title="PR#458 Compiler was incorrectly flagging error in advice on initialization and static initialization" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="StaticInitCE.java"/> | |||
<run class="StaticInitCE"/> | |||
</ajc-test> | |||
<!-- This behavior is different from 1.0, but we might want to consider allowing it | |||
Using the eclipse compiler it would be much easier to permit than forbid. --> | |||
<ajc-test dir="new/introTypeMissing" | |||
title="Introduced type unavailable to instanceof expressions in introduced methods" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="InstanceOf.java,TargetClass.java,Util.java"> | |||
<message kind="error" line="19"/> | |||
<message kind="error" line="20"/> | |||
<message kind="error" line="21"/> | |||
<message kind="error" line="22"/> | |||
<message kind="error" line="23"/> | |||
<message kind="error" line="24"/> | |||
<message kind="error" line="25"/> | |||
<message kind="error" line="26"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="new" | |||
title="enclosing join point not exported properly in pre-initialization join point" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="PreInitialization.java"/> | |||
<run class="PreInitialization"/> | |||
</ajc-test> | |||
<!-- pointcuts aren't checked for circularities unless they're used --> | |||
<ajc-test dir="new" pr="568" title="cyclic pointcut definitions" | |||
keywords="from-resolved_10rc3,knownLimitation"> | |||
<compile files="CyclicPointcuts.java"> | |||
<message kind="error" line="11"/> | |||
<message kind="error" line="14"/> | |||
<message kind="error" line="18"/> | |||
<message kind="error" line="32"/> | |||
<message kind="error" line="43"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="new" | |||
title="package typepattern with no packages (in default package)" | |||
keywords="from-resolved_105,knownLimitation"> | |||
<compile options="-Xlint" files="TypeNames.java"> | |||
<message kind="warning" line="34"/> | |||
<message kind="warning" line="39"/> | |||
<message kind="warning" line="43"/> | |||
<message kind="warning" line="47"/> | |||
</compile> | |||
<run class="TypeNames"/> | |||
</ajc-test> | |||
<ajc-test dir="new" pr="764" | |||
title="flag errors when binding args with indeterminate prefix and suffix" | |||
keywords="from-resolved_105,knownLimitation"> | |||
<compile files="IndeterminateArgsCE.java"> | |||
<message kind="error" line="67"/> | |||
<message kind="error" line="68"/> | |||
<message kind="error" line="70"/> | |||
<message kind="error" line="72"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="design/around" | |||
title="around and return types + inlining optimizations" | |||
comment="-XOcodeSize not in 1.1, source uses 1.4 APIs" | |||
keywords="from-14tests,knownLimitation"> | |||
<compile options="-XOcodeSize,-source,1.4" | |||
files="ReturnCastProceed.java,StackChecker.java"> | |||
<message kind="warning" line="68"/> | |||
</compile> | |||
<run class="ReturnCastProceed" vm="1.4"/> | |||
</ajc-test> | |||
<ajc-test dir="new" pr="885" keywords="knownLimitation" | |||
comment="this behaves differently in 1.3 from 1.4 for unknown reasons, merge with above when resolved" | |||
title="source locations within expressions (hard case of constructor start)"> | |||
<compile files="SourceLocationWithinExprHard.java"/> | |||
<run class="SourceLocationWithinExprHard"/> | |||
</ajc-test> | |||
<!-- Can't handle packages named 'aspect' in parser | |||
--> | |||
<ajc-test dir="new/PR852" pr="852" | |||
title="declaring method on superclass and subclass" | |||
keywords="knownLimitation"> | |||
<compile files="aspect/Aspect.java,target/SubClass.java,target/SuperClass.java"> | |||
<dir-changes added="target.SubClass,target.SuperClass"/> | |||
</compile> | |||
<run class="aspect.Aspect"/> | |||
</ajc-test> | |||
<ajc-test dir="new" pr="660" title="illegal name binding in around cflow" | |||
keywords="from-resolved_104,knownLimitation"> | |||
<compile files="ArgsInCflowCf.java"> | |||
<message kind="error" line="19"/> | |||
<message kind="error" line="29"/> | |||
<message kind="error" line="35"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="incremental/stringliteral" | |||
keywords="knownLimitation" | |||
title="incrementally change string size and wire in injar classes"> | |||
<compile staging="true" options="-incremental" | |||
files="oneInjar.jar,twoInjar.jar" | |||
sourceroots="src"/> | |||
<run class="packageOne.Main" | |||
options="in packageOne.Main.main(..), | |||
before main packageOne.Main"/> | |||
<inc-compile tag="20"> | |||
<dir-changes updated="packageOne.Main"/> | |||
</inc-compile> | |||
<!-- now failing here. This step passes in non-injar variant. --> | |||
<run class="packageOne.Main" | |||
options="in longer packageOne.Main.main(..), | |||
before main packageOne.Main"/> | |||
<inc-compile tag="30"> | |||
<dir-changes added="RunInjarMains"/> | |||
</inc-compile> | |||
<run class="packageOne.Main" | |||
options="in longer packageOne.Main.main(..), | |||
before main InjarOneMain, | |||
before main InjarTwoMain, | |||
before main packageOne.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="34206" | |||
keywords="knownLimitation" | |||
title="before():execution(new(..)) does not throw NoAspectBoundException" | |||
comment="correct behavior of this case needs to be thought through"> | |||
<compile files="AspectInitError.java"/> | |||
<run class="AspectInitError"/> | |||
</ajc-test> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" | |||
keywords="knownLimitation" | |||
comment="source loc of binary jp depends on first code, not block start" | |||
title="declare error on handler/method execution with no code on binary ajc 1.1 classes"> | |||
<compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-ajc-1.1.jar"> | |||
<message kind="error" file="app/MainExecStartLines.java" | |||
line="6" text="execution(void MainExecStartLines.main(String[]))"/> | |||
<message kind="error" file="app/MainExecStartLines.java" | |||
line="17" text="handler(RuntimeException)"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" | |||
keywords="knownLimitation" | |||
comment="source loc of binary jp depends on first code, not block start; XXX need javac inlining example" | |||
title="declare error on handler/method execution with no code on binary javac 1.4 classes"> | |||
<compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-javac-1.4.jar"> | |||
<message kind="error" file="app/MainExecStartLines.java" | |||
line="6" text="execution(void MainExecStartLines.main(String[]))"/> | |||
<message kind="error" file="app/MainExecStartLines.java" | |||
line="17" text="handler(RuntimeException)"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="harness" | |||
keywords="command-line-error,knownLimitation" | |||
comment="can't test -help: has to abort, but returns 0, normal status" | |||
title="CLE: -help usage"> | |||
<compile badInput="true" options="-help"> | |||
<message kind="abort" text="Usage"/> | |||
</compile> | |||
</ajc-test> | |||
<!-- The next three tests are all about the same issue. The source | |||
line for a constructor execution is returned as the first executable | |||
line within the constructor-execution join point rather than the declaration | |||
line of the constructor. Any other definition will require collusion between | |||
the source->bytecode compiler and the weaver and will only work in | |||
those case where such collusion is possible. | |||
--> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" keywords="knownLimitation" | |||
title="declare warnings on main - constructor execution"> | |||
<compile files="aspects/ConstructorExecutionWarning.java,app/Main.java"> | |||
<message kind="warning" file="app/Main.java" | |||
line="23" text="execution(Main.new())"/> | |||
</compile> | |||
<run class="app.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" keywords="knownLimitation" | |||
title="declare warnings on binary javac 1.4 main - constructor execution"> | |||
<compile files="aspects/ConstructorExecutionWarning.java,../injars/app-javac-1.4.jar"> | |||
<message kind="warning" file="app/Main.java" | |||
line="23" text="execution(Main.new())"/> | |||
</compile> | |||
<run class="app.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" keywords="knownLimitation" | |||
title="declare warnings on binary ajc 1.1 main - constructor execution"> | |||
<compile files="aspects/ConstructorExecutionWarning.java,../injars/app-ajc-1.1.jar"> | |||
<message kind="warning" file="app/Main.java" | |||
line="23" text="execution(Main.new())"/> | |||
</compile> | |||
<run class="app.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/handlers" pr="37898" keywords="knownLimitation" | |||
title="advice on handler join points should not throw unpermitted checked exceptions"> | |||
<compile files="ExceptionCheckCE.java"> | |||
<message kind="warning" line="8" text="expected"/> | |||
<message kind="error" line="25" text="throw checked exception" /> | |||
<message kind="error" line="8" text="throw checked exception" /> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="harness" pr="38134" keywords="knownLimitation" | |||
comment="behavior is correct for 1.1 - revisit for 1.2" | |||
title="-nowarn suppresses XLint warnings"> | |||
<compile files="XLintWarningTest.java" options="-nowarn"/> | |||
</ajc-test> | |||
<ajc-test dir="harness" pr="38134" keywords="knownLimitation" | |||
comment="behavior is correct for 1.1 - revisit for 1.2" | |||
title="warn:none suppresses XLint warnings"> | |||
<compile files="XLintWarningTest.java" options="-warn:none"/> | |||
</ajc-test> | |||
<ajc-test dir="harness" pr="38134" keywords="knownLimitation" | |||
comment="behavior is correct for 1.1 - revisit for 1.2" | |||
title="-nowarn suppresses declare warnings"> | |||
<compile files="WarningTest.java" options="-nowarn"/> | |||
</ajc-test> | |||
<ajc-test dir="harness" pr="38134" keywords="knownLimitation" | |||
comment="behavior is correct for 1.1 - revisit for 1.2" | |||
title="-warn:none suppresses declare warnings"> | |||
<compile files="WarningTest.java" options="-warn:none"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="38168" keywords="knownLimitation" | |||
title="insertion of lots of advice code can make branch offset for if too large"> | |||
<compile files="WideJumps.java"/> | |||
<run class="WideJumps"/> | |||
</ajc-test> | |||
@@ -1,11 +1,300 @@ | |||
<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[ | |||
<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/knownlimitations/knownLimitations-tests.xml"> | |||
]> | |||
<suite> | |||
<!-- Known Limitations -these tests will fail --> | |||
<!-- Known Limitations --> | |||
<suite> | |||
<!-- we're not implementing static inter-type fields on interfaces in 1.1 --> | |||
<ajc-test dir="knownLimitations/test117" title="DEPRECATED: introduce of variables" | |||
keywords="from-base,knownLimitation"> | |||
<compile files="Driver.java"/> | |||
<run class="Driver"/> | |||
</ajc-test> | |||
<!-- we're not implementing this error check in 1.1 --> | |||
<ajc-test dir="errors" | |||
title="checking the contra-variant errors for typing of proceed" | |||
keywords="from-errors,knownLimitation"> | |||
<compile files="BadAround.java"> | |||
<message kind="error" line="12"/> | |||
<message kind="error" line="15"/> | |||
<message kind="error" line="18"/> | |||
<message kind="error" line="19"/> | |||
<message kind="error" line="22"/> | |||
</compile> | |||
</ajc-test> | |||
<!-- we're not implementing static inter-type fields on interfaces in 1.1 --> | |||
<ajc-test dir="design/intro" | |||
title="introduction of static methods and fields on classes and interfaces" | |||
keywords="from-design,knownLimitation"> | |||
<compile files="Statics.java"/> | |||
<run class="Statics"/> | |||
</ajc-test> | |||
<!-- only before advice implemented for handler join points in 1.1 --> | |||
<ajc-test dir="new" title="advice on catch clauses" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="CatchAdvice.java"/> | |||
<run class="CatchAdvice"/> | |||
</ajc-test> | |||
<!-- we will handle this by signalling a weave-time error for any around | |||
advice that is applied to a join point which throws checked exceptions | |||
that it can't handle. proceeds in closures change the exceptions that | |||
around advice can handle to include the greatest lower bound of the | |||
checked exceptions that are legally throwable by the proceed. | |||
Ideally their should be an -Xlint compile-time warning for ALL | |||
cases that could produce weave-time errors. | |||
--> | |||
<ajc-test dir="new" title="holding onto proceed calls in a closure-like way" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="HoldProceed.java"/> | |||
<run class="HoldProceed"/> | |||
</ajc-test> | |||
<!-- around advice not implemented on initializer join points --> | |||
<ajc-test dir="new" pr="490" | |||
title="PR#458 Compiler was incorrectly flagging error in advice on initialization and static initialization" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="StaticInitCE.java"/> | |||
<run class="StaticInitCE"/> | |||
</ajc-test> | |||
<!-- This behavior is different from 1.0, but we might want to consider allowing it | |||
Using the eclipse compiler it would be much easier to permit than forbid. --> | |||
<ajc-test dir="new/introTypeMissing" | |||
title="Introduced type unavailable to instanceof expressions in introduced methods" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="InstanceOf.java,TargetClass.java,Util.java"> | |||
<message kind="error" line="19"/> | |||
<message kind="error" line="20"/> | |||
<message kind="error" line="21"/> | |||
<message kind="error" line="22"/> | |||
<message kind="error" line="23"/> | |||
<message kind="error" line="24"/> | |||
<message kind="error" line="25"/> | |||
<message kind="error" line="26"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="new" | |||
title="enclosing join point not exported properly in pre-initialization join point" | |||
keywords="from-resolved_10x,knownLimitation"> | |||
<compile files="PreInitialization.java"/> | |||
<run class="PreInitialization"/> | |||
</ajc-test> | |||
<!-- pointcuts aren't checked for circularities unless they're used --> | |||
<ajc-test dir="new" pr="568" title="cyclic pointcut definitions" | |||
keywords="from-resolved_10rc3,knownLimitation"> | |||
<compile files="CyclicPointcuts.java"> | |||
<message kind="error" line="11"/> | |||
<message kind="error" line="14"/> | |||
<message kind="error" line="18"/> | |||
<message kind="error" line="32"/> | |||
<message kind="error" line="43"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="new" | |||
title="package typepattern with no packages (in default package)" | |||
keywords="from-resolved_105,knownLimitation"> | |||
<compile options="-Xlint" files="TypeNames.java"> | |||
<message kind="warning" line="34"/> | |||
<message kind="warning" line="39"/> | |||
<message kind="warning" line="43"/> | |||
<message kind="warning" line="47"/> | |||
</compile> | |||
<run class="TypeNames"/> | |||
</ajc-test> | |||
<ajc-test dir="new" pr="764" | |||
title="flag errors when binding args with indeterminate prefix and suffix" | |||
keywords="from-resolved_105,knownLimitation"> | |||
<compile files="IndeterminateArgsCE.java"> | |||
<message kind="error" line="67"/> | |||
<message kind="error" line="68"/> | |||
<message kind="error" line="70"/> | |||
<message kind="error" line="72"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="design/around" | |||
title="around and return types + inlining optimizations" | |||
comment="-XOcodeSize not in 1.1, source uses 1.4 APIs" | |||
keywords="from-14tests,knownLimitation"> | |||
<compile options="-XOcodeSize,-source,1.4" | |||
files="ReturnCastProceed.java,StackChecker.java"> | |||
<message kind="warning" line="68"/> | |||
</compile> | |||
<run class="ReturnCastProceed" vm="1.4"/> | |||
</ajc-test> | |||
<ajc-test dir="new" pr="885" keywords="knownLimitation" | |||
comment="this behaves differently in 1.3 from 1.4 for unknown reasons, merge with above when resolved" | |||
title="source locations within expressions (hard case of constructor start)"> | |||
<compile files="SourceLocationWithinExprHard.java"/> | |||
<run class="SourceLocationWithinExprHard"/> | |||
</ajc-test> | |||
<!-- Can't handle packages named 'aspect' in parser | |||
--> | |||
<ajc-test dir="new/PR852" pr="852" | |||
title="declaring method on superclass and subclass" | |||
keywords="knownLimitation"> | |||
<compile files="aspect/Aspect.java,target/SubClass.java,target/SuperClass.java"> | |||
<dir-changes added="target.SubClass,target.SuperClass"/> | |||
</compile> | |||
<run class="aspect.Aspect"/> | |||
</ajc-test> | |||
<ajc-test dir="new" pr="660" title="illegal name binding in around cflow" | |||
keywords="from-resolved_104,knownLimitation"> | |||
<compile files="ArgsInCflowCf.java"> | |||
<message kind="error" line="19"/> | |||
<message kind="error" line="29"/> | |||
<message kind="error" line="35"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="incremental/stringliteral" | |||
keywords="knownLimitation" | |||
title="incrementally change string size and wire in injar classes"> | |||
<compile staging="true" options="-incremental" | |||
files="oneInjar.jar,twoInjar.jar" | |||
sourceroots="src"/> | |||
<run class="packageOne.Main" | |||
options="in packageOne.Main.main(..), | |||
before main packageOne.Main"/> | |||
<inc-compile tag="20"> | |||
<dir-changes updated="packageOne.Main"/> | |||
</inc-compile> | |||
<!-- now failing here. This step passes in non-injar variant. --> | |||
<run class="packageOne.Main" | |||
options="in longer packageOne.Main.main(..), | |||
before main packageOne.Main"/> | |||
<inc-compile tag="30"> | |||
<dir-changes added="RunInjarMains"/> | |||
</inc-compile> | |||
<run class="packageOne.Main" | |||
options="in longer packageOne.Main.main(..), | |||
before main InjarOneMain, | |||
before main InjarTwoMain, | |||
before main packageOne.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="34206" | |||
keywords="knownLimitation" | |||
title="before():execution(new(..)) does not throw NoAspectBoundException" | |||
comment="correct behavior of this case needs to be thought through"> | |||
<compile files="AspectInitError.java"/> | |||
<run class="AspectInitError"/> | |||
</ajc-test> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" | |||
keywords="knownLimitation" | |||
comment="source loc of binary jp depends on first code, not block start" | |||
title="declare error on handler/method execution with no code on binary ajc 1.1 classes"> | |||
<compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-ajc-1.1.jar"> | |||
<message kind="error" file="app/MainExecStartLines.java" | |||
line="6" text="execution(void MainExecStartLines.main(String[]))"/> | |||
<message kind="error" file="app/MainExecStartLines.java" | |||
line="17" text="handler(RuntimeException)"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" | |||
keywords="knownLimitation" | |||
comment="source loc of binary jp depends on first code, not block start; XXX need javac inlining example" | |||
title="declare error on handler/method execution with no code on binary javac 1.4 classes"> | |||
<compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-javac-1.4.jar"> | |||
<message kind="error" file="app/MainExecStartLines.java" | |||
line="6" text="execution(void MainExecStartLines.main(String[]))"/> | |||
<message kind="error" file="app/MainExecStartLines.java" | |||
line="17" text="handler(RuntimeException)"/> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="harness" | |||
keywords="command-line-error,knownLimitation" | |||
comment="can't test -help: has to abort, but returns 0, normal status" | |||
title="CLE: -help usage"> | |||
<compile badInput="true" options="-help"> | |||
<message kind="abort" text="Usage"/> | |||
</compile> | |||
</ajc-test> | |||
<!-- The next three tests are all about the same issue. The source | |||
line for a constructor execution is returned as the first executable | |||
line within the constructor-execution join point rather than the declaration | |||
line of the constructor. Any other definition will require collusion between | |||
the source->bytecode compiler and the weaver and will only work in | |||
those case where such collusion is possible. | |||
--> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" keywords="knownLimitation" | |||
title="declare warnings on main - constructor execution"> | |||
<compile files="aspects/ConstructorExecutionWarning.java,app/Main.java"> | |||
<message kind="warning" file="app/Main.java" | |||
line="23" text="execution(Main.new())"/> | |||
</compile> | |||
<run class="app.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" keywords="knownLimitation" | |||
title="declare warnings on binary javac 1.4 main - constructor execution"> | |||
<compile files="aspects/ConstructorExecutionWarning.java,../injars/app-javac-1.4.jar"> | |||
<message kind="warning" file="app/Main.java" | |||
line="23" text="execution(Main.new())"/> | |||
</compile> | |||
<run class="app.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="new/binaryWarnings/src" pr="37020" keywords="knownLimitation" | |||
title="declare warnings on binary ajc 1.1 main - constructor execution"> | |||
<compile files="aspects/ConstructorExecutionWarning.java,../injars/app-ajc-1.1.jar"> | |||
<message kind="warning" file="app/Main.java" | |||
line="23" text="execution(Main.new())"/> | |||
</compile> | |||
<run class="app.Main"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs/handlers" pr="37898" keywords="knownLimitation" | |||
title="advice on handler join points should not throw unpermitted checked exceptions"> | |||
<compile files="ExceptionCheckCE.java"> | |||
<message kind="warning" line="8" text="expected"/> | |||
<message kind="error" line="25" text="throw checked exception" /> | |||
<message kind="error" line="8" text="throw checked exception" /> | |||
</compile> | |||
</ajc-test> | |||
<ajc-test dir="harness" pr="38134" keywords="knownLimitation" | |||
comment="behavior is correct for 1.1 - revisit for 1.2" | |||
title="-nowarn suppresses XLint warnings"> | |||
<compile files="XLintWarningTest.java" options="-nowarn"/> | |||
</ajc-test> | |||
<ajc-test dir="harness" pr="38134" keywords="knownLimitation" | |||
comment="behavior is correct for 1.1 - revisit for 1.2" | |||
title="warn:none suppresses XLint warnings"> | |||
<compile files="XLintWarningTest.java" options="-warn:none"/> | |||
</ajc-test> | |||
<ajc-test dir="harness" pr="38134" keywords="knownLimitation" | |||
comment="behavior is correct for 1.1 - revisit for 1.2" | |||
title="-nowarn suppresses declare warnings"> | |||
<compile files="WarningTest.java" options="-nowarn"/> | |||
</ajc-test> | |||
<ajc-test dir="harness" pr="38134" keywords="knownLimitation" | |||
comment="behavior is correct for 1.1 - revisit for 1.2" | |||
title="-warn:none suppresses declare warnings"> | |||
<compile files="WarningTest.java" options="-warn:none"/> | |||
</ajc-test> | |||
<ajc-test dir="bugs" pr="38168" keywords="knownLimitation" | |||
title="insertion of lots of advice code can make branch offset for if too large"> | |||
<compile files="WideJumps.java"/> | |||
<run class="WideJumps"/> | |||
</ajc-test> | |||
&tests; | |||
</suite> |
@@ -126,7 +126,7 @@ public class LangUtil { | |||
} | |||
@Deprecated | |||
public static boolean isOnePointThreeVMOrGreater() { | |||
public static boolean is1dot3VMOrGreater() { | |||
return 1.3 <= vmVersion; | |||
} | |||
@@ -136,25 +136,25 @@ public class LangUtil { | |||
} | |||
@Deprecated | |||
public static boolean is15VMOrGreater() { | |||
public static boolean is1dot5VMOrGreater() { | |||
return 1.5 <= vmVersion; | |||
} | |||
@Deprecated | |||
public static boolean is16VMOrGreater() { | |||
public static boolean is1dot6VMOrGreater() { | |||
return 1.6 <= vmVersion; | |||
} | |||
@Deprecated | |||
public static boolean is17VMOrGreater() { | |||
public static boolean is1dot7VMOrGreater() { | |||
return 1.7 <= vmVersion; | |||
} | |||
public static boolean is18VMOrGreater() { | |||
public static boolean is1dot8VMOrGreater() { | |||
return 1.8 <= vmVersion; | |||
} | |||
public static boolean is19VMOrGreater() { | |||
public static boolean is9VMOrGreater() { | |||
return 9 <= vmVersion; | |||
} | |||
@@ -178,6 +178,10 @@ public class LangUtil { | |||
return 14 <= vmVersion; | |||
} | |||
public static boolean is15VMOrGreater() { | |||
return 15 <= vmVersion; | |||
} | |||
/** | |||
* Shorthand for "if null, throw IllegalArgumentException" | |||
* |
@@ -101,9 +101,9 @@ public class LangUtilTest extends TestCase { | |||
// } | |||
public void testVersion() { | |||
assertTrue(LangUtil.is18VMOrGreater()); // min vm now - floor may change | |||
assertTrue(LangUtil.is1dot8VMOrGreater()); // min vm now - floor may change | |||
if (LangUtil.is11VMOrGreater()) { | |||
assertTrue(LangUtil.is19VMOrGreater()); | |||
assertTrue(LangUtil.is9VMOrGreater()); | |||
assertTrue(LangUtil.is10VMOrGreater()); | |||
} | |||
} |
@@ -351,7 +351,7 @@ public class ClassPathManager { | |||
String jdkHome = new File(jrtFsPath).getParentFile().getParent(); | |||
FileSystem fs = null; | |||
try { | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
Map<String, String> env = new HashMap<>(); | |||
env.put("java.home", jdkHome); | |||
fs = FileSystems.newFileSystem(JRT_URI, env); |
@@ -149,7 +149,7 @@ public class WeavingAdaptor implements IMessageContext { | |||
} | |||
// On Java9 it is possible to fail to find a URLClassLoader from which to derive a suitable classpath | |||
// For now we can determine it from the java.class.path: | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
list.add(0, LangUtil.getJrtFsFilePath()); | |||
List<String> javaClassPathEntries = makeClasspath(System.getProperty("java.class.path")); | |||
for (int i=javaClassPathEntries.size()-1;i>=0;i--) { | |||
@@ -945,4 +945,4 @@ public class WeavingAdaptor implements IMessageContext { | |||
public void setActiveProtectionDomain(ProtectionDomain protectionDomain) { | |||
activeProtectionDomain = protectionDomain; | |||
} | |||
} | |||
} |
@@ -1,13 +1,13 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC). | |||
* 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: | |||
* PARC initial implementation | |||
* 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: | |||
* PARC initial implementation | |||
* ******************************************************************/ | |||
package org.aspectj.weaver; | |||
@@ -110,7 +110,7 @@ public class WeaverModuleTests extends TestCase { | |||
suite.addTestSuite(FieldSetTestCase.class); | |||
suite.addTestSuite(HierarchyDependsTestCase.class); | |||
suite.addTestSuite(IdWeaveTestCase.class); | |||
if (LangUtil.is19VMOrGreater()) { | |||
if (LangUtil.is9VMOrGreater()) { | |||
suite.addTestSuite(JImageTestCase.class); | |||
} | |||
suite.addTestSuite(MegaZipTestCase.class); | |||
@@ -125,7 +125,7 @@ public class WeaverModuleTests extends TestCase { | |||
suite.addTestSuite(WorldTestCase.class); | |||
suite.addTestSuite(ZipTestCase.class); | |||
suite.addTestSuite(TypeXTestCase.class); | |||
suite.addTestSuite(AnnotationPatternMatchingTestCase.class); | |||
suite.addTestSuite(AnnotationPatternTestCase.class); | |||
suite.addTestSuite(ConcretizationTestCase.class); |
@@ -1,10 +1,10 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 2017 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 | |||
* 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 | |||
* ******************************************************************/ | |||
package org.aspectj.weaver.bcel; | |||
@@ -35,7 +35,7 @@ import junit.framework.TestCase; | |||
/** | |||
* Exercise the JImage handling in @link {@link org.aspectj.weaver.bcel.ClassPathManager}. | |||
* | |||
* | |||
* @author Andy Clement | |||
*/ | |||
public class JImageTestCase extends TestCase { | |||
@@ -47,15 +47,15 @@ public class JImageTestCase extends TestCase { | |||
paths.add(LangUtil.getJrtFsFilePath()); | |||
cpm = new ClassPathManager(paths,new TestMessageHandler()); | |||
} | |||
public void testOnJava9() { | |||
if (!LangUtil.is19VMOrGreater()) { | |||
if (!LangUtil.is9VMOrGreater()) { | |||
System.out.println("SKIPPING JIMAGE TESTS AS NOT ON 1.9 OR LATER"); | |||
} | |||
} | |||
public void testBasicStructureAndCapabilities() { | |||
if (!LangUtil.is19VMOrGreater()) return; | |||
public void testBasicStructureAndCapabilities() { | |||
if (!LangUtil.is9VMOrGreater()) return; | |||
// Should be one entry for finding JRT contents | |||
List<Entry> entries = cpm.getEntries(); | |||
assertEquals(1,entries.size()); | |||
@@ -65,11 +65,11 @@ public class JImageTestCase extends TestCase { | |||
assertNotNull(stringClassFile); | |||
assertEquals("java/lang/String.class",stringClassFile.getPath()); | |||
} | |||
public void testBehaviour() throws Exception { | |||
if (!LangUtil.is19VMOrGreater()) return; | |||
if (!LangUtil.is9VMOrGreater()) return; | |||
JImageEntry jie = getJImageEntry(); | |||
Map<String, Path> packageCache = jie.getPackageCache(); | |||
assertTrue(packageCache.size()>0); | |||
// Note: seems to be about 1625 entries in it for Java9 | |||
@@ -77,12 +77,12 @@ public class JImageTestCase extends TestCase { | |||
assertEquals("modules/java.base/java/lang", path.toString()); | |||
path = packageCache.get("java/io"); | |||
assertEquals("modules/java.base/java/io", path.toString()); | |||
assertNotNull(jie.find("java/lang/String")); | |||
assertNotNull(jie.find("java/io/File")); | |||
// TODO test the filecache, hard because difficult to simulate collection of SoftReferences | |||
} | |||
static class TestMessageHandler implements IMessageHandler { | |||
@@ -103,11 +103,11 @@ public class JImageTestCase extends TestCase { | |||
@Override | |||
public void ignore(Kind kind) { | |||
} | |||
} | |||
// --- | |||
private JImageEntry getJImageEntry() { | |||
return (JImageEntry) cpm.getEntries().get(0); | |||
} |
@@ -1,13 +1,13 @@ | |||
/* ******************************************************************* | |||
* Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC). | |||
* 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: | |||
* PARC initial implementation | |||
* 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: | |||
* PARC initial implementation | |||
* ******************************************************************/ | |||
package org.aspectj.weaver.bcel; | |||
@@ -55,6 +55,11 @@ public class MoveInstructionsWeaveTestCase extends WeaveTestCase { | |||
static int counter = 0; | |||
public void testFancyHello() throws IOException { | |||
// Reset counter, just in case this test runs multiple times in one JVM. This can happen e.g. due to "run all tests" | |||
// in IntelliJ IDEA, which directly runs this test class and als WeaverModuleTests, both of which implement | |||
// junit.framework.TestCase. In that case, during the second run the counter would start at a higher base count, | |||
// making the 2nd test run fail. | |||
counter = 0; | |||
BcelAdvice p = new BcelAdvice(null, makePointcutAll(), null, 0, -1, -1, null, null) { | |||
public void specializeOn(Shadow s) { | |||
super.specializeOn(s); | |||
@@ -63,7 +68,7 @@ public class MoveInstructionsWeaveTestCase extends WeaveTestCase { | |||
public boolean implementOn(Shadow s) { | |||
BcelShadow shadow = (BcelShadow) s; | |||
LazyMethodGen newMethod = | |||
LazyMethodGen newMethod = | |||
shadow.extractShadowInstructionsIntoNewMethod(NameMangler.getExtractableName(shadow | |||
.getSignature()) | |||
+ "_extracted" + counter++, 0, this.getSourceLocation(), new ArrayList(),shadow.getEnclosingClass().isInterface()); |