that empty. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270133 13f79535-47bb-0310-9956-ffa450edef68master
@@ -842,6 +842,7 @@ | |||||
<junit printsummary="no" haltonfailure="yes" | <junit printsummary="no" haltonfailure="yes" | ||||
filtertrace="off" | |||||
fork="${junit.fork}"> | fork="${junit.fork}"> | ||||
<!-- <jvmarg value="-classic"/> --> | <!-- <jvmarg value="-classic"/> --> | ||||
<classpath refid="tests-classpath"/> | <classpath refid="tests-classpath"/> | ||||
@@ -922,7 +923,8 @@ | |||||
<target name="run-single-test" if="testcase" depends="compile-tests"> | <target name="run-single-test" if="testcase" depends="compile-tests"> | ||||
<junit printsummary="no" haltonfailure="yes" fork="${junit.fork}"> | |||||
<junit printsummary="no" haltonfailure="yes" fork="${junit.fork}" | |||||
filtertrace="off"> | |||||
<!-- <jvmarg value="-classic"/> --> | <!-- <jvmarg value="-classic"/> --> | ||||
<sysproperty key="build.tests" value="${build.tests}"/> | <sysproperty key="build.tests" value="${build.tests}"/> | ||||
<classpath location="${java.home}/lib/classes.zip" /> | <classpath location="${java.home}/lib/classes.zip" /> | ||||
@@ -100,9 +100,25 @@ | |||||
</jar> | </jar> | ||||
</target> | </target> | ||||
<target name="testNoFile"> | |||||
<manifest /> | |||||
</target> | |||||
<target name="testReplace"> | |||||
<copy file="manifests/test2.mf" toFile="mftest.mf" /> | |||||
<manifest file="mftest.mf" /> | |||||
</target> | |||||
<target name="testUpdate"> | |||||
<copy file="manifests/test2.mf" toFile="mftest.mf" /> | |||||
<manifest file="mftest.mf" mode="update"> | |||||
<attribute name="Foo" value="Bar" /> | |||||
</manifest> | |||||
</target> | |||||
<target name="clean"> | <target name="clean"> | ||||
<delete> | <delete> | ||||
<fileset dir="." includes="mftest*.jar"/> | |||||
<fileset dir="." includes="mftest*"/> | |||||
</delete> | </delete> | ||||
</target> | </target> | ||||
</project> | </project> |
@@ -544,6 +544,7 @@ public class Manifest extends Task { | |||||
public Manifest() { | public Manifest() { | ||||
mode = new Mode(); | mode = new Mode(); | ||||
mode.setValue("replace"); | mode.setValue("replace"); | ||||
manifestVersion = null; | |||||
} | } | ||||
/** | /** | ||||
@@ -613,7 +614,9 @@ public class Manifest extends Task { | |||||
* to the Manifest spec. | * to the Manifest spec. | ||||
*/ | */ | ||||
public void merge(Manifest other) throws ManifestException { | public void merge(Manifest other) throws ManifestException { | ||||
manifestVersion = other.manifestVersion; | |||||
if (other.manifestVersion != null) { | |||||
manifestVersion = other.manifestVersion; | |||||
} | |||||
mainSection.merge(other.mainSection); | mainSection.merge(other.mainSection); | ||||
for (Enumeration e = other.sections.keys(); e.hasMoreElements();) { | for (Enumeration e = other.sections.keys(); e.hasMoreElements();) { | ||||
String sectionName = (String)e.nextElement(); | String sectionName = (String)e.nextElement(); | ||||
@@ -55,6 +55,8 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileReader; | |||||
import java.io.IOException; | |||||
import java.util.Date; | import java.util.Date; | ||||
import org.apache.tools.ant.BuildFileTest; | import org.apache.tools.ant.BuildFileTest; | ||||
@@ -192,5 +194,46 @@ public class ManifestTest extends BuildFileTest { | |||||
executeTarget("test14"); | executeTarget("test14"); | ||||
} | } | ||||
/** | |||||
* file attribute for manifest task is required. | |||||
*/ | |||||
public void testNoFile() { | |||||
expectBuildException("testNoFile", "file is required"); | |||||
} | |||||
/** | |||||
* replace changes Manifest-Version from 2.0 to 1.0 | |||||
*/ | |||||
public void testReplace() throws IOException, ManifestException { | |||||
executeTarget("testReplace"); | |||||
Manifest mf = getManifest(); | |||||
assertNotNull(mf); | |||||
assertEquals(Manifest.getDefaultManifest(), mf); | |||||
} | |||||
/** | |||||
* update keeps the Manifest-Version and adds a new attribute Foo | |||||
*/ | |||||
public void testUpdate() throws IOException, ManifestException { | |||||
executeTarget("testUpdate"); | |||||
Manifest mf = getManifest(); | |||||
assertNotNull(mf); | |||||
assertTrue(!Manifest.getDefaultManifest().equals(mf)); | |||||
String mfAsString = mf.toString(); | |||||
assertNotNull(mfAsString); | |||||
assertTrue(mfAsString.startsWith("Manifest-Version: 2.0")); | |||||
assertTrue(mfAsString.indexOf("Foo: Bar") > -1); | |||||
} | |||||
/** | |||||
* Reads mftest.mf. | |||||
*/ | |||||
private Manifest getManifest() throws IOException, ManifestException { | |||||
FileReader r = new FileReader("src/etc/testcases/taskdefs/mftest.mf"); | |||||
try { | |||||
return new Manifest(r); | |||||
} finally { | |||||
r.close(); | |||||
} | |||||
} | |||||
} | } |