diff options
author | aclement <aclement> | 2006-05-04 07:14:47 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-05-04 07:14:47 +0000 |
commit | 5a01932b9dbdf81fe41e029fa56ede17364a2c2e (patch) | |
tree | a2991f73f2b496670e3de21f00538fbae9da891d /org.aspectj.ajdt.core | |
parent | cb5dfe759852d4965c692934ed7e14c41f61b715 (diff) | |
download | aspectj-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.java | 14 | ||||
-rw-r--r-- | org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/aspectJar.file | bin | 0 -> 1370 bytes | |||
-rw-r--r-- | org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/jarChild | bin | 0 -> 724 bytes | |||
-rw-r--r-- | org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/parent.zip | bin | 0 -> 630 bytes | |||
-rw-r--r-- | org.aspectj.ajdt.core/testdata/ajc/abc.jar | bin | 0 -> 176 bytes | |||
-rw-r--r-- | org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jar | bin | 0 -> 176 bytes | |||
-rw-r--r-- | org.aspectj.ajdt.core/testsrc/org/aspectj/ajdt/ajc/BuildArgParserTestCase.java | 66 | ||||
-rw-r--r-- | org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjcTestCase.java | 8 |
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 Binary files differnew file mode 100644 index 000000000..8cf7a60f5 --- /dev/null +++ b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/aspectJar.file diff --git a/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/jarChild b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/jarChild Binary files differnew file mode 100644 index 000000000..675ddbca3 --- /dev/null +++ b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/jarChild diff --git a/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/parent.zip b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/parent.zip Binary files differnew file mode 100644 index 000000000..9814c1a42 --- /dev/null +++ b/org.aspectj.ajdt.core/testdata/OutjarTest/folder.jar/parent.zip diff --git a/org.aspectj.ajdt.core/testdata/ajc/abc.jar b/org.aspectj.ajdt.core/testdata/ajc/abc.jar Binary files differnew file mode 100644 index 000000000..d62a61c4d --- /dev/null +++ b/org.aspectj.ajdt.core/testdata/ajc/abc.jar diff --git a/org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jar b/org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jar Binary files differindex e69de29bb..d62a61c4d 100644 --- a/org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jar +++ b/org.aspectj.ajdt.core/testdata/ajc/myextdir/dummy.jar 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"))); |