Submitted by: Curt Arnold <carnold@houston.rr.com> git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272562 13f79535-47bb-0310-9956-ffa450edef68master
@@ -109,6 +109,11 @@ Fixed bugs: | |||||
Other changes: | Other changes: | ||||
-------------- | -------------- | ||||
* Gzip and Bzip2 files can now be constructed in the fly when using | |||||
the tar task without having to create the intermediate tar file on | |||||
disk. The Untar task can also untar GZip and BZip2 files on the fly | |||||
without creating the intermediate tar file. | |||||
* New optional type, <classfileset> added. | * New optional type, <classfileset> added. | ||||
* <ejbjar> now allows control over which additional classes and interfaces | * <ejbjar> now allows control over which additional classes and interfaces | ||||
@@ -41,8 +41,8 @@ attribute is <code>warn</code> which behaves just like the gnu option except | |||||
that it produces a warning for each file path encountered that does not match | that it produces a warning for each file path encountered that does not match | ||||
the limit.</p> | the limit.</p> | ||||
<p>Note that this task does not perform compression. You might want to use the | |||||
<a href="gzip.html">GZip</a> task to prepare a .tar.gz package.</p> | |||||
<p>This task can perform compression by setting the compression attribute to "gzip" | |||||
or "bzip2".</p> | |||||
<h3>Parameters</h3> | <h3>Parameters</h3> | ||||
<table border="1" cellpadding="2" cellspacing="0"> | <table border="1" cellpadding="2" cellspacing="0"> | ||||
@@ -99,6 +99,13 @@ the limit.</p> | |||||
("yes"/"no"). Default excludes are used when omitted.</td> | ("yes"/"no"). Default excludes are used when omitted.</td> | ||||
<td valign="top" align="center">No</td> | <td valign="top" align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">compression</td> | |||||
<td valign="top">compression method. Allowable values are | |||||
"none", "gzip" and "bzip2". Default is | |||||
"none".</td> | |||||
<td valign="top" align="center">No</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<h3>Nested Elements</h3> | <h3>Nested Elements</h3> | ||||
@@ -44,6 +44,14 @@ to perform unarchival upon. | |||||
true).</td> | true).</td> | ||||
<td align="center" valign="top">No</td> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">compression</td> | |||||
<td valign="top">compression method for untar. Allowable values are | |||||
"none", "gzip" and "bzip2". Default is | |||||
"none".</td> | |||||
<td valign="top" align="center">No</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<h3>Examples</h3> | <h3>Examples</h3> | ||||
<blockquote> | <blockquote> | ||||
@@ -82,7 +90,7 @@ to perform unarchival upon. | |||||
</pre></p> | </pre></p> | ||||
</blockquote> | </blockquote> | ||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2001 Apache Software Foundation. All rights | |||||
<p align="center">Copyright © 2001-2002 Apache Software Foundation. All rights | |||||
Reserved.</p> | Reserved.</p> | ||||
</body> | </body> | ||||
@@ -53,6 +53,28 @@ | |||||
<untar src="test8.tar" dest="."/> | <untar src="test8.tar" dest="."/> | ||||
</target> | </target> | ||||
<target name="test9"> | |||||
<tar destfile="blah" compression="Foo"/> | |||||
</target> | |||||
<target name="test10"> | |||||
<tar destfile="test10.tar.gz" compression="gzip"> | |||||
<tarfileset dir="." fullpath="/test10.xml"> | |||||
<include name="tar.xml"/> | |||||
</tarfileset> | |||||
</tar> | |||||
<untar src="test10.tar.gz" dest="." compression="gzip"/> | |||||
</target> | |||||
<target name="test11"> | |||||
<tar destfile="test11.tar.bz2" compression="bzip2"> | |||||
<tarfileset dir="." fullpath="/test11.xml"> | |||||
<include name="tar.xml"/> | |||||
</tarfileset> | |||||
</tar> | |||||
<untar src="test11.tar.bz2" dest="." compression="bzip2"/> | |||||
</target> | |||||
<target name="cleanup"> | <target name="cleanup"> | ||||
<delete file="test4.tar"/> | <delete file="test4.tar"/> | ||||
<delete file="test5.tar"/> | <delete file="test5.tar"/> | ||||
@@ -63,12 +85,25 @@ | |||||
<delete file="test7.tar"/> | <delete file="test7.tar"/> | ||||
<delete file="test8.tar"/> | <delete file="test8.tar"/> | ||||
<delete file="test8.xml"/> | <delete file="test8.xml"/> | ||||
<delete file="test10.tar.gz"/> | |||||
<delete file="test10.xml"/> | |||||
<delete file="test11.tar.bz2"/> | |||||
<delete file="test11.xml"/> | |||||
</target> | </target> | ||||
<target name="feather"> | <target name="feather"> | ||||
<tar destfile="asf-logo.gif.tar" | <tar destfile="asf-logo.gif.tar" | ||||
basedir=".." | basedir=".." | ||||
includes="asf-logo.gif" /> | includes="asf-logo.gif" /> | ||||
<tar destfile="asf-logo.gif.tar.gz" | |||||
basedir=".." | |||||
includes="asf-logo.gif" | |||||
compression="gzip"/> | |||||
<tar destfile="asf-logo.gif.tar.bz2" | |||||
basedir=".." | |||||
includes="asf-logo.gif" | |||||
compression="bzip2" /> | |||||
</target> | </target> | ||||
</project> | </project> |
@@ -12,10 +12,31 @@ | |||||
<ant antfile="tar.xml" target="cleanup" /> | <ant antfile="tar.xml" target="cleanup" /> | ||||
</target> | </target> | ||||
<target name="testGzipTarTask"> | |||||
<ant antfile="tar.xml" target="feather" /> | |||||
<untar src="asf-logo.gif.tar.gz" dest="." compression="gzip" /> | |||||
<ant antfile="tar.xml" target="cleanup" /> | |||||
</target> | |||||
<target name="testBzip2TarTask"> | |||||
<ant antfile="tar.xml" target="feather" /> | |||||
<untar src="asf-logo.gif.tar.bz2" dest="." compression="bzip2"/> | |||||
<ant antfile="tar.xml" target="cleanup" /> | |||||
</target> | |||||
<target name="realTest"> | <target name="realTest"> | ||||
<untar src="expected/asf-logo.gif.tar" dest="." /> | <untar src="expected/asf-logo.gif.tar" dest="." /> | ||||
</target> | </target> | ||||
<target name="realGzipTest"> | |||||
<untar src="expected/asf-logo.gif.tar.gz" dest="." compression="gzip" /> | |||||
</target> | |||||
<target name="realBzip2Test"> | |||||
<untar src="expected/asf-logo.gif.tar.bz2" dest="." compression="bzip2"/> | |||||
</target> | |||||
<target name="srcDirTest"> | <target name="srcDirTest"> | ||||
<untar src="." dest="." /> | <untar src="." dest="." /> | ||||
</target> | </target> | ||||
@@ -57,7 +57,9 @@ package org.apache.tools.ant.taskdefs; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||
import java.io.OutputStream; | |||||
import java.io.FileInputStream; | import java.io.FileInputStream; | ||||
import java.io.BufferedOutputStream; | |||||
import java.util.Vector; | import java.util.Vector; | ||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
@@ -70,11 +72,15 @@ import org.apache.tools.ant.util.MergingMapper; | |||||
import org.apache.tools.tar.TarOutputStream; | import org.apache.tools.tar.TarOutputStream; | ||||
import org.apache.tools.tar.TarConstants; | import org.apache.tools.tar.TarConstants; | ||||
import org.apache.tools.tar.TarEntry; | import org.apache.tools.tar.TarEntry; | ||||
import java.util.zip.GZIPOutputStream; | |||||
import org.apache.tools.bzip2.CBZip2OutputStream; | |||||
/** | /** | ||||
* Creates a TAR archive. | * Creates a TAR archive. | ||||
* | * | ||||
* @author Stefano Mazzocchi | |||||
* @author Stefano Mazzocchi | |||||
* <a href="mailto:stefano@apache.org">stefano@apache.org</a> | * <a href="mailto:stefano@apache.org">stefano@apache.org</a> | ||||
* @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> | ||||
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | ||||
@@ -125,6 +131,8 @@ public class Tar extends MatchingTask { | |||||
*/ | */ | ||||
private boolean longWarningGiven = false; | private boolean longWarningGiven = false; | ||||
private TarCompressionMethod compression = new TarCompressionMethod(); | |||||
public TarFileSet createTarFileSet() { | public TarFileSet createTarFileSet() { | ||||
TarFileSet fileset = new TarFileSet(); | TarFileSet fileset = new TarFileSet(); | ||||
filesets.addElement(fileset); | filesets.addElement(fileset); | ||||
@@ -191,6 +199,18 @@ public class Tar extends MatchingTask { | |||||
this.longFileMode = mode; | this.longFileMode = mode; | ||||
} | } | ||||
/** | |||||
* Set compression method. | |||||
* | |||||
* Allowable values are | |||||
* none - no compression | |||||
* gzip - Gzip compression | |||||
* bzip2 - Bzip2 compression | |||||
*/ | |||||
public void setCompression(TarCompressionMethod mode) { | |||||
this.compression = mode; | |||||
} | |||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
if (tarFile == null) { | if (tarFile == null) { | ||||
throw new BuildException("tarfile attribute must be set!", | throw new BuildException("tarfile attribute must be set!", | ||||
@@ -211,7 +231,7 @@ public class Tar extends MatchingTask { | |||||
try { | try { | ||||
if (baseDir != null) { | if (baseDir != null) { | ||||
if (!baseDir.exists()) { | if (!baseDir.exists()) { | ||||
throw new BuildException("basedir does not exist!", | |||||
throw new BuildException("basedir does not exist!", | |||||
location); | location); | ||||
} | } | ||||
@@ -226,7 +246,7 @@ public class Tar extends MatchingTask { | |||||
+ "attribute or some nested filesets.", | + "attribute or some nested filesets.", | ||||
location); | location); | ||||
} | } | ||||
// check if tar is out of date with respect to each | // check if tar is out of date with respect to each | ||||
// fileset | // fileset | ||||
boolean upToDate = true; | boolean upToDate = true; | ||||
@@ -239,7 +259,7 @@ public class Tar extends MatchingTask { | |||||
} | } | ||||
for (int i = 0; i < files.length; ++i) { | for (int i = 0; i < files.length; ++i) { | ||||
if (tarFile.equals(new File(fs.getDir(project), | |||||
if (tarFile.equals(new File(fs.getDir(project), | |||||
files[i]))) { | files[i]))) { | ||||
throw new BuildException("A tar file cannot include " | throw new BuildException("A tar file cannot include " | ||||
+ "itself", location); | + "itself", location); | ||||
@@ -257,7 +277,10 @@ public class Tar extends MatchingTask { | |||||
TarOutputStream tOut = null; | TarOutputStream tOut = null; | ||||
try { | try { | ||||
tOut = new TarOutputStream(new FileOutputStream(tarFile)); | |||||
tOut = new TarOutputStream( | |||||
compression.compress( | |||||
new BufferedOutputStream( | |||||
new FileOutputStream(tarFile)))); | |||||
tOut.setDebug(true); | tOut.setDebug(true); | ||||
if (longFileMode.isTruncateMode()) { | if (longFileMode.isTruncateMode()) { | ||||
tOut.setLongFileMode(TarOutputStream.LONGFILE_TRUNCATE); | tOut.setLongFileMode(TarOutputStream.LONGFILE_TRUNCATE); | ||||
@@ -270,13 +293,13 @@ public class Tar extends MatchingTask { | |||||
} | } | ||||
longWarningGiven = false; | longWarningGiven = false; | ||||
for (Enumeration e = filesets.elements(); | |||||
for (Enumeration e = filesets.elements(); | |||||
e.hasMoreElements();) { | e.hasMoreElements();) { | ||||
TarFileSet fs = (TarFileSet) e.nextElement(); | TarFileSet fs = (TarFileSet) e.nextElement(); | ||||
String[] files = fs.getFiles(project); | String[] files = fs.getFiles(project); | ||||
if (files.length > 1 && fs.getFullpath().length() > 0) { | if (files.length > 1 && fs.getFullpath().length() > 0) { | ||||
throw new BuildException("fullpath attribute may only " | throw new BuildException("fullpath attribute may only " | ||||
+ "be specified for " | |||||
+ "be specified for " | |||||
+ "filesets that specify a " | + "filesets that specify a " | ||||
+ "single file."); | + "single file."); | ||||
} | } | ||||
@@ -315,11 +338,11 @@ public class Tar extends MatchingTask { | |||||
if (vPath.length() <= 0) { | if (vPath.length() <= 0) { | ||||
return; | return; | ||||
} | } | ||||
if (file.isDirectory() && !vPath.endsWith("/")) { | if (file.isDirectory() && !vPath.endsWith("/")) { | ||||
vPath += "/"; | vPath += "/"; | ||||
} | } | ||||
String prefix = tarFileSet.getPrefix(); | String prefix = tarFileSet.getPrefix(); | ||||
// '/' is appended for compatibility with the zip task. | // '/' is appended for compatibility with the zip task. | ||||
if (prefix.length() > 0 && !prefix.endsWith("/")) { | if (prefix.length() > 0 && !prefix.endsWith("/")) { | ||||
@@ -333,7 +356,7 @@ public class Tar extends MatchingTask { | |||||
if (l <= 1) { | if (l <= 1) { | ||||
// we would end up adding "" to the archive | // we would end up adding "" to the archive | ||||
return; | return; | ||||
} | |||||
} | |||||
vPath = vPath.substring(1, l); | vPath = vPath.substring(1, l); | ||||
} | } | ||||
@@ -344,11 +367,11 @@ public class Tar extends MatchingTask { | |||||
return; | return; | ||||
} else if (longFileMode.isWarnMode()) { | } else if (longFileMode.isWarnMode()) { | ||||
log("Entry: " + vPath + " longer than " + | log("Entry: " + vPath + " longer than " + | ||||
TarConstants.NAMELEN + " characters.", | |||||
TarConstants.NAMELEN + " characters.", | |||||
Project.MSG_WARN); | Project.MSG_WARN); | ||||
if (!longWarningGiven) { | if (!longWarningGiven) { | ||||
log("Resulting tar file can only be processed " | log("Resulting tar file can only be processed " | ||||
+ "successfully by GNU compatible tar commands", | |||||
+ "successfully by GNU compatible tar commands", | |||||
Project.MSG_WARN); | Project.MSG_WARN); | ||||
longWarningGiven = true; | longWarningGiven = true; | ||||
} | } | ||||
@@ -406,7 +429,7 @@ public class Tar extends MatchingTask { | |||||
private String prefix = ""; | private String prefix = ""; | ||||
private String fullpath = ""; | private String fullpath = ""; | ||||
private boolean preserveLeadingSlashes = false; | private boolean preserveLeadingSlashes = false; | ||||
public TarFileSet(FileSet fileset) { | public TarFileSet(FileSet fileset) { | ||||
super(fileset); | super(fileset); | ||||
} | } | ||||
@@ -528,4 +551,65 @@ public class Tar extends MatchingTask { | |||||
return OMIT.equalsIgnoreCase(getValue()); | return OMIT.equalsIgnoreCase(getValue()); | ||||
} | } | ||||
} | } | ||||
/** | |||||
* Valid Modes for Compression attribute to Tar Task | |||||
* | |||||
*/ | |||||
public static final class TarCompressionMethod extends EnumeratedAttribute { | |||||
// permissable values for compression attribute | |||||
/** | |||||
* No compression | |||||
*/ | |||||
private static final String NONE = "none"; | |||||
/** | |||||
* GZIP compression | |||||
*/ | |||||
private static final String GZIP = "gzip"; | |||||
/** | |||||
* BZIP2 compression | |||||
*/ | |||||
private static final String BZIP2 = "bzip2"; | |||||
/** | |||||
* Default constructor | |||||
*/ | |||||
public TarCompressionMethod() { | |||||
super(); | |||||
setValue(NONE); | |||||
} | |||||
/** | |||||
* Get valid enumeration values. | |||||
* @return valid enumeration values | |||||
*/ | |||||
public String[] getValues() { | |||||
return new String[] { NONE, GZIP, BZIP2 }; | |||||
} | |||||
/** | |||||
* This method wraps the output stream with the | |||||
* corresponding compression method | |||||
* | |||||
* @param ostream output stream | |||||
* @return output stream with on-the-fly compression | |||||
* @exception IOException thrown if file is not writable | |||||
*/ | |||||
private OutputStream compress(final OutputStream ostream) | |||||
throws IOException { | |||||
final String value = getValue(); | |||||
if (GZIP.equals(value)) { | |||||
return new GZIPOutputStream(ostream); | |||||
} else { | |||||
if (BZIP2.equals(value)) { | |||||
ostream.write('B'); | |||||
ostream.write('Z'); | |||||
return new CBZip2OutputStream(ostream); | |||||
} | |||||
} | |||||
return ostream; | |||||
} | |||||
} | |||||
} | } |
@@ -61,7 +61,13 @@ import org.apache.tools.tar.TarEntry; | |||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileInputStream; | import java.io.FileInputStream; | ||||
import java.io.BufferedInputStream; | |||||
import java.io.InputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.util.zip.GZIPInputStream; | |||||
import org.apache.tools.bzip2.CBZip2InputStream; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
/** | /** | ||||
@@ -75,13 +81,33 @@ import java.io.IOException; | |||||
* @ant.task category="packaging" | * @ant.task category="packaging" | ||||
*/ | */ | ||||
public class Untar extends Expand { | public class Untar extends Expand { | ||||
/** | |||||
* compression method | |||||
*/ | |||||
private UntarCompressionMethod compression = new UntarCompressionMethod(); | |||||
/** | |||||
* Set compression method. | |||||
* | |||||
* Allowable values are | |||||
* none - no compression | |||||
* gzip - Gzip compression | |||||
* bzip2 - Bzip2 compression | |||||
* | |||||
* @param method compression method | |||||
*/ | |||||
public void setCompression(UntarCompressionMethod method) { | |||||
compression = method; | |||||
} | |||||
protected void expandFile(FileUtils fileUtils, File srcF, File dir) { | protected void expandFile(FileUtils fileUtils, File srcF, File dir) { | ||||
TarInputStream tis = null; | TarInputStream tis = null; | ||||
try { | try { | ||||
log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO); | log("Expanding: " + srcF + " into " + dir, Project.MSG_INFO); | ||||
tis = new TarInputStream(new FileInputStream(srcF)); | |||||
tis = new TarInputStream( | |||||
compression.decompress(srcF, | |||||
new BufferedInputStream( | |||||
new FileInputStream(srcF)))); | |||||
TarEntry te = null; | TarEntry te = null; | ||||
while ((te = tis.getNextEntry()) != null) { | while ((te = tis.getNextEntry()) != null) { | ||||
@@ -101,4 +127,76 @@ public class Untar extends Expand { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/** | |||||
* Valid Modes for Compression attribute to Untar Task | |||||
* | |||||
*/ | |||||
public static final class UntarCompressionMethod | |||||
extends EnumeratedAttribute { | |||||
// permissable values for compression attribute | |||||
/** | |||||
* No compression | |||||
*/ | |||||
private static final String NONE = "none"; | |||||
/** | |||||
* GZIP compression | |||||
*/ | |||||
private static final String GZIP = "gzip"; | |||||
/** | |||||
* BZIP2 compression | |||||
*/ | |||||
private static final String BZIP2 = "bzip2"; | |||||
/** | |||||
* Constructor | |||||
*/ | |||||
public UntarCompressionMethod() { | |||||
super(); | |||||
setValue(NONE); | |||||
} | |||||
/** | |||||
* Get valid enumeration values | |||||
* | |||||
* @return valid values | |||||
*/ | |||||
public String[] getValues() { | |||||
return new String[] { NONE, GZIP, BZIP2 }; | |||||
} | |||||
/** | |||||
* This method wraps the input stream with the | |||||
* corresponding decompression method | |||||
* | |||||
* @param file provides location information for BuildException | |||||
* @param istream input stream | |||||
* @return input stream with on-the-fly decompression | |||||
* @exception IOException thrown by GZIPInputStream constructor | |||||
* @exception BuildException thrown if bzip stream does not | |||||
* start with expected magic values | |||||
*/ | |||||
private InputStream decompress(final File file, | |||||
final InputStream istream) | |||||
throws IOException, BuildException { | |||||
final String value = getValue(); | |||||
if (GZIP.equals(value)) { | |||||
return new GZIPInputStream(istream); | |||||
} else { | |||||
if (BZIP2.equals(value)) { | |||||
final char[] magic = new char[] { 'B', 'Z' }; | |||||
for (int i = 0; i < magic.length; i++) { | |||||
if (istream.read() != magic[i]) { | |||||
throw new BuildException( | |||||
"Invalid bz2 file." + file.toString()); | |||||
} | |||||
} | |||||
return new CBZip2InputStream(istream); | |||||
} | |||||
} | |||||
return istream; | |||||
} | |||||
} | |||||
} | } |
@@ -298,7 +298,15 @@ public class CBZip2InputStream extends InputStream implements BZip2Constants { | |||||
} | } | ||||
private void bsFinishedWithStream() { | private void bsFinishedWithStream() { | ||||
bsStream = null; | |||||
try { | |||||
if (this.bsStream != null) { | |||||
if (this.bsStream != System.in) { | |||||
this.bsStream.close(); | |||||
this.bsStream= null; | |||||
} | |||||
} | |||||
} catch (IOException ioe) { | |||||
} | |||||
} | } | ||||
private void bsSetStream(InputStream f) { | private void bsSetStream(InputStream f) { | ||||
@@ -124,6 +124,29 @@ public class TarTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
public void test9() { | |||||
expectBuildException("test9", "Invalid value specified for compression attribute."); | |||||
} | |||||
public void test10() { | |||||
executeTarget("test10"); | |||||
java.io.File f1 | |||||
= new java.io.File("src/etc/testcases/taskdefs/test10.xml"); | |||||
if (! f1.exists()) { | |||||
fail("The fullpath attribute or the preserveLeadingSlashes attribute does not work propertly"); | |||||
} | |||||
} | |||||
public void test11() { | |||||
executeTarget("test11"); | |||||
java.io.File f1 | |||||
= new java.io.File("src/etc/testcases/taskdefs/test11.xml"); | |||||
if (! f1.exists()) { | |||||
fail("The fullpath attribute or the preserveLeadingSlashes attribute does not work propertly"); | |||||
} | |||||
} | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | executeTarget("cleanup"); | ||||
} | } | ||||
@@ -1,7 +1,7 @@ | |||||
/* | /* | ||||
* The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
* | * | ||||
* Copyright (c) 2001 The Apache Software Foundation. All rights | |||||
* Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||||
* reserved. | * reserved. | ||||
* | * | ||||
* Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
@@ -82,6 +82,20 @@ public class UntarTest extends BuildFileTest { | |||||
project.resolveFile("asf-logo.gif"))); | project.resolveFile("asf-logo.gif"))); | ||||
} | } | ||||
public void testRealGzipTest() throws java.io.IOException { | |||||
FileUtils fileUtils = FileUtils.newFileUtils(); | |||||
executeTarget("realGzipTest"); | |||||
assertTrue(fileUtils.contentEquals(project.resolveFile("../asf-logo.gif"), | |||||
project.resolveFile("asf-logo.gif"))); | |||||
} | |||||
public void testRealBzip2Test() throws java.io.IOException { | |||||
FileUtils fileUtils = FileUtils.newFileUtils(); | |||||
executeTarget("realBzip2Test"); | |||||
assertTrue(fileUtils.contentEquals(project.resolveFile("../asf-logo.gif"), | |||||
project.resolveFile("asf-logo.gif"))); | |||||
} | |||||
public void testTestTarTask() throws java.io.IOException { | public void testTestTarTask() throws java.io.IOException { | ||||
FileUtils fileUtils = FileUtils.newFileUtils(); | FileUtils fileUtils = FileUtils.newFileUtils(); | ||||
executeTarget("testTarTask"); | executeTarget("testTarTask"); | ||||
@@ -89,6 +103,20 @@ public class UntarTest extends BuildFileTest { | |||||
project.resolveFile("asf-logo.gif"))); | project.resolveFile("asf-logo.gif"))); | ||||
} | } | ||||
public void testTestGzipTarTask() throws java.io.IOException { | |||||
FileUtils fileUtils = FileUtils.newFileUtils(); | |||||
executeTarget("testGzipTarTask"); | |||||
assertTrue(fileUtils.contentEquals(project.resolveFile("../asf-logo.gif"), | |||||
project.resolveFile("asf-logo.gif"))); | |||||
} | |||||
public void testTestBzip2TarTask() throws java.io.IOException { | |||||
FileUtils fileUtils = FileUtils.newFileUtils(); | |||||
executeTarget("testBzip2TarTask"); | |||||
assertTrue(fileUtils.contentEquals(project.resolveFile("../asf-logo.gif"), | |||||
project.resolveFile("asf-logo.gif"))); | |||||
} | |||||
public void testSrcDirTest() throws java.io.IOException { | public void testSrcDirTest() throws java.io.IOException { | ||||
FileUtils fileUtils = FileUtils.newFileUtils(); | FileUtils fileUtils = FileUtils.newFileUtils(); | ||||
expectBuildException("srcDirTest", "Src cannot be a directory."); | expectBuildException("srcDirTest", "Src cannot be a directory."); | ||||