summaryrefslogtreecommitdiffstats
path: root/ajde
diff options
context:
space:
mode:
authoraclement <aclement>2004-08-02 15:47:02 +0000
committeraclement <aclement>2004-08-02 15:47:02 +0000
commit2b8fa314f21eddf8551715fdd571da2b611411d0 (patch)
treeb1d79b311bdd55ff5a6c5fb205c77896dc5222b5 /ajde
parent7f19ab47a3df5327c6246420354089d1db1c765f (diff)
downloadaspectj-2b8fa314f21eddf8551715fdd571da2b611411d0.tar.gz
aspectj-2b8fa314f21eddf8551715fdd571da2b611411d0.zip
Fix for Bugzilla Bug 57666
duplicate manifests cause resource-copying to gack (Contributed by Matthew Webster)
Diffstat (limited to 'ajde')
-rw-r--r--ajde/testdata/DuplicateManifestTest/META-INF/MANIFEST.MF3
-rw-r--r--ajde/testdata/DuplicateManifestTest/META-INF/test.xml4
-rw-r--r--ajde/testdata/DuplicateManifestTest/aspectjar.jarbin0 -> 2544 bytes
-rw-r--r--ajde/testdata/DuplicateManifestTest/build.ajsymbin0 -> 1270 bytes
-rw-r--r--ajde/testdata/DuplicateManifestTest/build.lst0
-rw-r--r--ajde/testdata/DuplicateManifestTest/injar.jarbin0 -> 927 bytes
-rw-r--r--ajde/testdata/DuplicateManifestTest/outjar.jarbin0 -> 1273 bytes
-rw-r--r--ajde/testdata/DuplicateManifestTest/update-injar.xml33
-rw-r--r--ajde/testsrc/org/aspectj/ajde/AjdeTests.java1
-rw-r--r--ajde/testsrc/org/aspectj/ajde/DuplicateManifestTest.java69
10 files changed, 110 insertions, 0 deletions
diff --git a/ajde/testdata/DuplicateManifestTest/META-INF/MANIFEST.MF b/ajde/testdata/DuplicateManifestTest/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..fde889593
--- /dev/null
+++ b/ajde/testdata/DuplicateManifestTest/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Created-By: DuplicateManifestTest
+
diff --git a/ajde/testdata/DuplicateManifestTest/META-INF/test.xml b/ajde/testdata/DuplicateManifestTest/META-INF/test.xml
new file mode 100644
index 000000000..f9efa1f1f
--- /dev/null
+++ b/ajde/testdata/DuplicateManifestTest/META-INF/test.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<jar name="input1.jar">
+</jar>
+
diff --git a/ajde/testdata/DuplicateManifestTest/aspectjar.jar b/ajde/testdata/DuplicateManifestTest/aspectjar.jar
new file mode 100644
index 000000000..6cc196c3e
--- /dev/null
+++ b/ajde/testdata/DuplicateManifestTest/aspectjar.jar
Binary files differ
diff --git a/ajde/testdata/DuplicateManifestTest/build.ajsym b/ajde/testdata/DuplicateManifestTest/build.ajsym
new file mode 100644
index 000000000..898f8bee0
--- /dev/null
+++ b/ajde/testdata/DuplicateManifestTest/build.ajsym
Binary files differ
diff --git a/ajde/testdata/DuplicateManifestTest/build.lst b/ajde/testdata/DuplicateManifestTest/build.lst
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ajde/testdata/DuplicateManifestTest/build.lst
diff --git a/ajde/testdata/DuplicateManifestTest/injar.jar b/ajde/testdata/DuplicateManifestTest/injar.jar
new file mode 100644
index 000000000..8613c3686
--- /dev/null
+++ b/ajde/testdata/DuplicateManifestTest/injar.jar
Binary files differ
diff --git a/ajde/testdata/DuplicateManifestTest/outjar.jar b/ajde/testdata/DuplicateManifestTest/outjar.jar
new file mode 100644
index 000000000..ee5000733
--- /dev/null
+++ b/ajde/testdata/DuplicateManifestTest/outjar.jar
Binary files differ
diff --git a/ajde/testdata/DuplicateManifestTest/update-injar.xml b/ajde/testdata/DuplicateManifestTest/update-injar.xml
new file mode 100644
index 000000000..7ce4c1452
--- /dev/null
+++ b/ajde/testdata/DuplicateManifestTest/update-injar.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" ?>
+<project name="DuplicateManifestTest" default="all" basedir=".">
+
+ <property name="injar" value="${basedir}/injar.jar"/>
+ <property name="tempdir" value="${basedir}/temp"/>
+
+ <target name="update">
+
+ <delete dir="${tempdir}"/>
+
+ <unzip
+ dest="${tempdir}"
+ src="${injar}"
+ />
+
+ <copy todir="${tempdir}" overwrite="true">
+ <fileset dir="${basedir}">
+ <include name="META-INF/*"/>
+ </fileset>
+ </copy>
+
+ <zip
+ destfile="${injar}"
+ >
+ <fileset dir="${basedir}/temp"/>
+
+ </zip>
+
+ <delete dir="${tempdir}"/>
+ </target>
+
+ <target name="all" depends="update"/>
+</project>
diff --git a/ajde/testsrc/org/aspectj/ajde/AjdeTests.java b/ajde/testsrc/org/aspectj/ajde/AjdeTests.java
index b66c019ed..e70619504 100644
--- a/ajde/testsrc/org/aspectj/ajde/AjdeTests.java
+++ b/ajde/testsrc/org/aspectj/ajde/AjdeTests.java
@@ -37,6 +37,7 @@ public class AjdeTests extends TestCase {
suite.addTestSuite(SavedModelConsistencyTest. class);
suite.addTestSuite(BuildCancellingTest.class);
suite.addTestSuite(JarManifestTest.class);
+ suite.addTestSuite(DuplicateManifestTest.class);
//$JUnit-END$
return suite;
diff --git a/ajde/testsrc/org/aspectj/ajde/DuplicateManifestTest.java b/ajde/testsrc/org/aspectj/ajde/DuplicateManifestTest.java
new file mode 100644
index 000000000..38c82bb42
--- /dev/null
+++ b/ajde/testsrc/org/aspectj/ajde/DuplicateManifestTest.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * Matthew Webster - initial implementation
+ *******************************************************************************/
+package org.aspectj.ajde;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+
+public class DuplicateManifestTest extends AjdeTestCase {
+
+
+ public static final String PROJECT_DIR = "DuplicateManifestTest";
+
+ public static final String injarName = "injar.jar";
+ public static final String aspectjarName = "aspectjar.jar";
+ public static final String outjarName = "outjar.jar";
+
+
+ /*
+ * Ensure the output directpry in clean
+ */
+ protected void setUp() throws Exception {
+ super.setUp(PROJECT_DIR);
+ }
+
+ public void testWeave () {
+ Set injars = new HashSet();
+ injars.add(openFile(injarName));
+ ideManager.getProjectProperties().setInJars(injars);
+ Set aspectpath = new HashSet();
+ aspectpath.add(openFile(aspectjarName));
+ ideManager.getProjectProperties().setAspectPath(aspectpath);
+ File outjar = openFile(outjarName);
+ ideManager.getProjectProperties().setOutJar(outjar.getAbsolutePath());
+ assertTrue("Build failed", doSynchronousBuild("build.lst"));
+ assertTrue(
+ "Build warnings",
+ ideManager.getCompilationSourceLineTasks().isEmpty());
+ compareManifests(openFile(injarName),openFile(outjarName));
+ }
+
+ private void compareManifests (File inFile, File outFile) {
+
+ try {
+ JarFile inJar = new JarFile(inFile);
+ Manifest inManifest = inJar.getManifest();
+ inJar.close();
+ JarFile outJar = new JarFile(outFile);
+ Manifest outManifest = outJar.getManifest();
+ outJar.close();
+ assertTrue("The manifests in '" + inFile.getCanonicalPath() + "' and '" + outFile.getCanonicalPath() + "' sould be the same",inManifest.equals(outManifest));
+ }
+ catch (IOException ex) {
+ fail(ex.toString());
+ }
+ }
+
+}