aboutsummaryrefslogtreecommitdiffstats
path: root/org.aspectj.ajdt.core
diff options
context:
space:
mode:
authoraclement <aclement>2006-05-04 07:14:47 +0000
committeraclement <aclement>2006-05-04 07:14:47 +0000
commit5a01932b9dbdf81fe41e029fa56ede17364a2c2e (patch)
treea2991f73f2b496670e3de21f00538fbae9da891d /org.aspectj.ajdt.core
parentcb5dfe759852d4965c692934ed7e14c41f61b715 (diff)
downloadaspectj-5a01932b9dbdf81fe41e029fa56ede17364a2c2e.tar.gz
aspectj-5a01932b9dbdf81fe41e029fa56ede17364a2c2e.zip
fixes for 137235 (contributed by Ron): more intelligent logic for determining if a path entry is a jar/zip (don't just rely on suffix, some new .bndl files seem to be becoming popular...)
Diffstat (limited to 'org.aspectj.ajdt.core')
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java14
-rw-r--r--org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/aspectJar.filebin0 -> 1370 bytes
-rw-r--r--org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/jarChildbin0 -> 724 bytes
-rw-r--r--org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/parent.zipbin0 -> 630 bytes
-rw-r--r--org.aspectj.ajdt.core/testdata/ajc/abc.jarbin0 -> 176 bytes
-rw-r--r--org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jarbin0 -> 176 bytes
-rw-r--r--org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/ajc/BuildArgParserTestCase.java66
-rw-r--r--org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java8
8 files changed, 80 insertions, 8 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java
index f2749997d..e3f3c6ff1 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/ajc/BuildArgParser.java
@@ -397,14 +397,14 @@ public class BuildArgParser extends Main {
while (st.hasMoreTokens()) {
String filename = st.nextToken();
File file = makeFile(filename);
- if (file.exists() && FileUtil.hasZipSuffix(filename)) {
+ if (FileUtil.isZipFile(file)) {
inPath.add(file);
} else {
if (file.isDirectory()) {
inPath.add(file);
} else
- showError("bad inpath component: " + filename);
+ showWarning("skipping missing, empty or corrupt inpath entry: " + filename);
}
}
buildConfig.setInPath(inPath);
@@ -420,7 +420,7 @@ public class BuildArgParser extends Main {
while (st.hasMoreTokens()) {
String filename = st.nextToken();
File jarFile = makeFile(filename);
- if (jarFile.exists() && FileUtil.hasZipSuffix(filename)) {
+ if (FileUtil.isZipFile(jarFile)) {
buildConfig.getInJars().add(jarFile);
} else {
File dirFile = makeFile(filename);
@@ -428,7 +428,7 @@ public class BuildArgParser extends Main {
buildConfig.getInJars().add(dirFile);
} else
- showError("bad injar: " + filename);
+ showWarning("skipping missing, empty or corrupt injar: " + filename);
}
}
@@ -442,10 +442,10 @@ public class BuildArgParser extends Main {
while (st.hasMoreTokens()) {
String filename = st.nextToken();
File jarFile = makeFile(filename);
- if (jarFile.exists() && (FileUtil.hasZipSuffix(filename) || jarFile.isDirectory())) {
+ if (FileUtil.isZipFile(jarFile) || jarFile.isDirectory()) {
buildConfig.getAspectpath().add(jarFile);
} else {
- showError("bad aspectpath: " + filename);
+ showWarning("skipping missing, empty or corrupt aspectpath entry: " + filename);
}
}
@@ -476,7 +476,7 @@ public class BuildArgParser extends Main {
if (args.size() > nextArgIndex) {
// buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_OutJAR, CompilerOptions.GENERATE);
File jarFile = makeFile(((ConfigParser.Arg)args.get(nextArgIndex)).getValue());
- if (FileUtil.hasZipSuffix(jarFile)) {
+ if (!jarFile.isDirectory()) {
try {
if (!jarFile.exists()) {
jarFile.createNewFile();
diff --git a/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/aspectJar.file b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/aspectJar.file
new file mode 100644
index 000000000..8cf7a60f5
--- /dev/null
+++ b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/aspectJar.file
Binary files differ
diff --git a/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/jarChild b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/jarChild
new file mode 100644
index 000000000..675ddbca3
--- /dev/null
+++ b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/jarChild
Binary files differ
diff --git a/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/parent.zip b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/parent.zip
new file mode 100644
index 000000000..9814c1a42
--- /dev/null
+++ b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/parent.zip
Binary files differ
diff --git a/org.aspectj.ajdt.core/testdata/ajc/abc.jar b/org.aspectj.ajdt.core/testdata/ajc/abc.jar
new file mode 100644
index 000000000..d62a61c4d
--- /dev/null
+++ b/org.aspectj.ajdt.core/testdata/ajc/abc.jar
Binary files differ
diff --git a/org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jar b/org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jar
index e69de29bb..d62a61c4d 100644
--- a/org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jar
+++ b/org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jar
Binary files differ
diff --git a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/ajc/BuildArgParserTestCase.java b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/ajc/BuildArgParserTestCase.java
index e207fe91c..8481e762f 100644
--- a/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/ajc/BuildArgParserTestCase.java
+++ b/org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/ajc/BuildArgParserTestCase.java
@@ -115,6 +115,7 @@ public class BuildArgParserTestCase extends TestCase {
String FILE_PATH = "@" + TEST_DIR + "configWithClasspathExtdirsBootCPArgs.lst";
AjBuildConfig config = genBuildConfig(new String[] { FILE_PATH }, messageWriter);
List classpath = config.getFullClasspath();
+ // note that empty or corrupt jars are NOT included in the classpath
// should have three entries, resolved relative to location of .lst file
assertEquals("Three entries in classpath",3,classpath.size());
Iterator cpIter = classpath.iterator();
@@ -507,6 +508,71 @@ public class BuildArgParserTestCase extends TestCase {
assertEquals("Wrong outxml","custom/aop.xml",config.getOutxmlName());
assertTrue("Following option currupted",config.getShowWeavingInformation());
}
+
+ public void testNonstandardInjars() {
+ AjBuildConfig config = setupNonstandardPath("-injars");
+ assertEquals("bad path: " + config.getInJars(), 3, config.getInJars().size());
+ }
+
+ public void testNonstandardInpath() {
+ AjBuildConfig config = setupNonstandardPath("-inpath");
+ assertEquals("bad path: " + config.getInpath(), 3, config.getInpath().size());
+ }
+
+ public void testNonstandardAspectpath() {
+ AjBuildConfig config = setupNonstandardPath("-aspectpath");
+ assertEquals("bad path: " + config.getAspectpath(), 3, config.getAspectpath().size());
+ }
+
+ public void testNonstandardClasspath() throws IOException {
+ AjBuildConfig config = setupNonstandardPath("-classpath");
+ checkPathSubset(config.getClasspath());
+ }
+
+ public void testNonstandardBootpath() throws IOException {
+ AjBuildConfig config = setupNonstandardPath("-bootclasspath");
+ checkPathSubset(config.getBootclasspath());
+ }
+
+ private void checkPathSubset(List path) throws IOException {
+ String files[] = { "aspectjJar.file", "jarChild", "parent.zip" };
+ for (int i = 0; i < files.length; i++) {
+ File file = new File(NONSTANDARD_JAR_DIR+files[i]);
+ assertTrue("bad path: " + path, path.contains(file.getCanonicalPath()));
+ }
+ }
+
+ public void testNonstandardOutjar() {
+ final String OUT_JAR = NONSTANDARD_JAR_DIR + File.pathSeparator + "outputFile";
+
+ AjBuildConfig config = genBuildConfig(new String[] {
+ "-outjar", OUT_JAR },
+ messageWriter);
+
+ File newJar = new File(OUT_JAR);
+ assertEquals(
+ getCanonicalPath(newJar),config.getOutputJar().getAbsolutePath());
+
+ newJar.delete();
+ }
+
+ public void testNonstandardOutputDirectorySetting() throws InvalidInputException {
+ String filePath = AjdtAjcTests.TESTDATA_PATH + File.separator + "ajc.jar" + File.separator;
+ File testDir = new File(filePath);
+ AjBuildConfig config = genBuildConfig(new String[] { "-d", filePath }, messageWriter);
+
+ assertEquals(testDir.getAbsolutePath(), config.getOutputDir().getAbsolutePath());
+ }
+
+ private static final String NONSTANDARD_JAR_DIR = AjdtAjcTests.TESTDATA_PATH + "/OutjarTest/folder.jar/";
+
+ private AjBuildConfig setupNonstandardPath(String pathType) {
+ String NONSTANDARD_PATH_ENTRY = NONSTANDARD_JAR_DIR+"aspectjJar.file" + File.pathSeparator + NONSTANDARD_JAR_DIR+"aspectJar.file" + File.pathSeparator + NONSTANDARD_JAR_DIR+"jarChild" + File.pathSeparator + NONSTANDARD_JAR_DIR+"parent.zip";
+
+ return genBuildConfig(new String[] {
+ pathType, NONSTANDARD_PATH_ENTRY },
+ messageWriter);
+ }
protected void setUp() throws Exception {
super.setUp();
diff --git a/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java b/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java
index c9f275841..3d70759c8 100644
--- a/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java
+++ b/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java
@@ -558,7 +558,8 @@ public class AjcTestCase extends TestCase {
lastRunResult = null;
StringBuffer cp = new StringBuffer();
if (classpath != null) {
- cp.append(classpath);
+ // allow replacing this special variable, rather than copying all files to allow tests of jars that don't end in .jar
+ cp.append(substituteSandbox(classpath));
cp.append(File.pathSeparator);
}
cp.append(ajc.getSandboxDirectory().getAbsolutePath());
@@ -622,6 +623,10 @@ public class AjcTestCase extends TestCase {
}
return lastRunResult;
}
+
+ private String substituteSandbox(String classpath) {
+ return classpath.replace("$sandbox", ajc.getSandboxDirectory().getAbsolutePath());
+ }
/**
* Any central pre-processing of args.
@@ -639,6 +644,7 @@ public class AjcTestCase extends TestCase {
args[i] = adaptToPlatform(args[i]);
if ("-classpath".equals(args[i])) {
cpIndex = i;
+ args[i+1] = substituteSandbox(args[i+1]);
String next = args[i+1];
hasruntime = ((null != next)
&& (-1 != next.indexOf("aspectjrt.jar")));