diff options
author | aclement <aclement> | 2004-08-02 15:47:02 +0000 |
---|---|---|
committer | aclement <aclement> | 2004-08-02 15:47:02 +0000 |
commit | 2b8fa314f21eddf8551715fdd571da2b611411d0 (patch) | |
tree | b1d79b311bdd55ff5a6c5fb205c77896dc5222b5 /ajde | |
parent | 7f19ab47a3df5327c6246420354089d1db1c765f (diff) | |
download | aspectj-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.MF | 3 | ||||
-rw-r--r-- | ajde/testdata/DuplicateManifestTest/META-INF/test.xml | 4 | ||||
-rw-r--r-- | ajde/testdata/DuplicateManifestTest/aspectjar.jar | bin | 0 -> 2544 bytes | |||
-rw-r--r-- | ajde/testdata/DuplicateManifestTest/build.ajsym | bin | 0 -> 1270 bytes | |||
-rw-r--r-- | ajde/testdata/DuplicateManifestTest/build.lst | 0 | ||||
-rw-r--r-- | ajde/testdata/DuplicateManifestTest/injar.jar | bin | 0 -> 927 bytes | |||
-rw-r--r-- | ajde/testdata/DuplicateManifestTest/outjar.jar | bin | 0 -> 1273 bytes | |||
-rw-r--r-- | ajde/testdata/DuplicateManifestTest/update-injar.xml | 33 | ||||
-rw-r--r-- | ajde/testsrc/org/aspectj/ajde/AjdeTests.java | 1 | ||||
-rw-r--r-- | ajde/testsrc/org/aspectj/ajde/DuplicateManifestTest.java | 69 |
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 Binary files differnew file mode 100644 index 000000000..6cc196c3e --- /dev/null +++ b/ajde/testdata/DuplicateManifestTest/aspectjar.jar diff --git a/ajde/testdata/DuplicateManifestTest/build.ajsym b/ajde/testdata/DuplicateManifestTest/build.ajsym Binary files differnew file mode 100644 index 000000000..898f8bee0 --- /dev/null +++ b/ajde/testdata/DuplicateManifestTest/build.ajsym 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 Binary files differnew file mode 100644 index 000000000..8613c3686 --- /dev/null +++ b/ajde/testdata/DuplicateManifestTest/injar.jar diff --git a/ajde/testdata/DuplicateManifestTest/outjar.jar b/ajde/testdata/DuplicateManifestTest/outjar.jar Binary files differnew file mode 100644 index 000000000..ee5000733 --- /dev/null +++ b/ajde/testdata/DuplicateManifestTest/outjar.jar 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()); + } + } + +} |