Browse Source

Merge after 1.3 release

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268748 13f79535-47bb-0310-9956-ffa450edef68
master
Conor MacNeill 24 years ago
parent
commit
068f734884
31 changed files with 463 additions and 179 deletions
  1. +1
    -1
      docs/manual/CoreTasks/filter.html
  2. +3
    -1
      docs/manual/CoreTasks/javadoc.html
  3. +117
    -0
      docs/manual/OptionalTasks/javah.html
  4. +5
    -3
      docs/manual/optionaltasklist.html
  5. +11
    -1
      src/etc/testcases/taskdefs/tar.xml
  6. +21
    -1
      src/etc/testcases/taskdefs/zip.xml
  7. +19
    -0
      src/etc/testcases/types/mapper.xml
  8. +1
    -1
      src/main/org/apache/tools/ant/DirectoryScanner.java
  9. +9
    -2
      src/main/org/apache/tools/ant/ProjectHelper.java
  10. +23
    -25
      src/main/org/apache/tools/ant/taskdefs/Javadoc.java
  11. +6
    -1
      src/main/org/apache/tools/ant/taskdefs/Tar.java
  12. +10
    -0
      src/main/org/apache/tools/ant/taskdefs/Zip.java
  13. +2
    -50
      src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFileUtils.java
  14. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java
  15. +13
    -9
      src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java
  16. +12
    -6
      src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
  17. +14
    -7
      src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
  18. +5
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/junit/html/stylesheet.css
  19. +8
    -3
      src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-classes.xsl
  20. +1
    -4
      src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-packages.xsl
  21. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/class-details.xsl
  22. +1
    -3
      src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/classes-list.xsl
  23. +37
    -18
      src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-packages.xsl
  24. +26
    -14
      src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-summary.xsl
  25. +19
    -7
      src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/package-summary.xsl
  26. +50
    -16
      src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/toolkit.xsl
  27. +1
    -1
      src/main/org/apache/tools/ant/types/CommandlineJava.java
  28. +4
    -0
      src/main/org/apache/tools/ant/types/Mapper.java
  29. +7
    -0
      src/testcases/org/apache/tools/ant/taskdefs/TarTest.java
  30. +13
    -0
      src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java
  31. +21
    -0
      src/testcases/org/apache/tools/ant/types/MapperTest.java

+ 1
- 1
docs/manual/CoreTasks/filter.html View File

@@ -44,7 +44,7 @@ filtersfile attribute.</p>
<p>* see notes 1 and 2 above parameters table.</p> <p>* see notes 1 and 2 above parameters table.</p>
<h3>Examples</h3> <h3>Examples</h3>
<pre> &lt;filter token=&quot;year&quot; value=&quot;2000&quot;/&gt; <pre> &lt;filter token=&quot;year&quot; value=&quot;2000&quot;/&gt;
&lt;copy todir=&quot;${dest.dir}&quot;&gt;
&lt;copy todir=&quot;${dest.dir}&quot; filtering=&quot;true&quot;&gt;
&lt;fileset dir=&quot;${src.dir}&quot;/&gt; &lt;fileset dir=&quot;${src.dir}&quot;/&gt;
&lt;/copy&gt;</pre> &lt;/copy&gt;</pre>
<p>will copy recursively all the files from the <i>src.dir</i> directory into <p>will copy recursively all the files from the <i>src.dir</i> directory into


+ 3
- 1
docs/manual/CoreTasks/javadoc.html View File

@@ -339,7 +339,9 @@ instead.</p>
</tr> </tr>
<tr> <tr>
<td valign="top">additionalparam</td> <td valign="top">additionalparam</td>
<td valign="top">Lets you add additional parameters to the javadoc command line. Useful for doclets</td>
<td valign="top">Lets you add additional parameters to the javadoc
command line. Useful for doclets. Parameters containing
spaces need to be quoted using &amp;quot;.</td>
<td align="center" valign="top">1.2</td> <td align="center" valign="top">1.2</td>
<td align="center" valign="top">No</td> <td align="center" valign="top">No</td>
</tr> </tr>


+ 117
- 0
docs/manual/OptionalTasks/javah.html View File

@@ -0,0 +1,117 @@
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>Ant</title>
</head>

<body>

<h2><a name="zip">Javah</a></h2>
<h3>Description</h3>
<p>Generates JNI headers from a Java class.</p>
<p> When this task executes, it will generate the C header and source files that
are needed to implement native methods. JNI operates differently depending on
whether <a href="http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javah.html">JDK1.2</a>
(or later) or <a href="http://java.sun.com/products/jdk/1.1/docs/tooldocs/win32/javah.html">pre-JDK1.2</a>
systems are used.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<td valign="top"><b>Attribute</b></td>
<td valign="top"><b>Description</b></td>
<td valign="top" align="center"><b>Required</b></td>
</tr>
<tr>
<td valign="top">class</td>
<td valign="top">the fully-qualified name of the class (or classes,
separated by commas)</td>
<td align="center" valign="top">Yes</td>
</tr>
<tr>
<td valign="top">outputFile</td>
<td valign="top">concatenates the resulting header or source files for all the classes listed into this file</td>
<td align="center" valign="middle" rowspan="2">Yes</td>
</tr>
<tr>
<td valign="top">destdir</td>
<td valign="top">sets the directory where javah saves the header files or the
stub files.</td>
</tr>
<tr>
<td valign="top">force</td>
<td valign="top">specifies that output files should always be written (JDK1.2 only)</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">old</td>
<td valign="top">specifies that old JDK1.0-style header files should be generated
(otherwise output file contain JNI-style native method function prototypes) (JDK1.2 only)</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">stubs</td>
<td valign="top">generate C declarations from the Java object file (used with old)</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">verbose</td>
<td valign="top">causes Javah to print a message concerning the status of the generated files</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">classpath</td>
<td valign="top">the classpath to use.</td>
<td align="center" valign="top">No</td>
</tr>
<tr>
<td valign="top">bootclasspath</td>
<td valign="top">location of bootstrap class files.</td>
<td valign="top" align="center">No</td>
</tr>
<tr>
<td valign="top">extdirs</td>
<td valign="top"> location of installed extensions.</td>
<td valign="top" align="center">No</td>
</tr>
</table>
<p>Either outputFile or destdir must be supplied, but not both.&nbsp;</p>
<h3>Examples</h3>
<pre> &lt;javah destdir=&quot;c&quot; class=&quot;org.foo.bar.Wibble&quot; /&gt;</pre>
<p>makes a JNI header of the named class, using the JDK1.2 JNI model. Assuming
the directory 'c' already exists, the file <tt>org_foo_bar_Wibble.h</tt>
is created there. If this file already exists, it is left unchanged.</p>
<pre> &lt;javah outputFile=&quot;wibble.h&quot;&gt;
&lt;class name=&quot;org.foo.bar.Wibble,org.foo.bar.Bobble&quot;/&gt;
&lt;/javah&gt;</pre>
<p>is similar to the previous example, except the output is written to a file
called <tt>wibble.h</tt>
in the current directory.</p>
<pre> &lt;javah destdir=&quot;c&quot; force=&quot;yes&quot;&gt;
&lt;class name=&quot;org.foo.bar.Wibble&quot;/&gt;
&lt;class name=&quot;org.foo.bar.Bobble&quot;/&gt;
&lt;class name=&quot;org.foo.bar.Tribble&quot;/&gt;
&lt;/javah&gt;</pre>
<p>writes three header files, one for each of the classes named. Because the
force option is set, these header files are always written when the Javah task
is invoked, even if they already exist.</p>
<pre> &lt;javah destdir=&quot;c&quot; verbose=&quot;yes&quot; old=&quot;yes&quot; force=&quot;yes&quot;&gt;
&lt;class name=&quot;org.foo.bar.Wibble&quot;/&gt;
&lt;class name=&quot;org.foo.bar.Bobble&quot;/&gt;
&lt;class name=&quot;org.foo.bar.Tribble&quot;/&gt;
&lt;/javah&gt;
&lt;javah destdir=&quot;c&quot; verbose=&quot;yes&quot; stubs=&quot;yes&quot; old=&quot;yes&quot; force=&quot;yes&quot;&gt;
&lt;class name=&quot;org.foo.bar.Wibble&quot;/&gt;
&lt;class name=&quot;org.foo.bar.Bobble&quot;/&gt;
&lt;class name=&quot;org.foo.bar.Tribble&quot;/&gt;
&lt;/javah&gt;</pre>
<p>writes the headers for the three classes using the 'old' JNI format, then
writes the corresponding .c stubs. The verbose option will cause Javah to
describe its progress.</p>

<hr>

</body>

</html>


+ 5
- 3
docs/manual/optionaltasklist.html View File

@@ -15,10 +15,12 @@
<a href="OptionalTasks/antlr.html">ANTLR</a><br> <a href="OptionalTasks/antlr.html">ANTLR</a><br>
<a href="OptionalTasks/cab.html">Cab</a><br> <a href="OptionalTasks/cab.html">Cab</a><br>
<a href="OptionalTasks/clearcase.html">Clearcase Tasks</a><br> <a href="OptionalTasks/clearcase.html">Clearcase Tasks</a><br>
<a href="OptionalTasks/depend.html">Depend</a><br>
<a href="OptionalTasks/ejb.html">EJB Tasks</a><br> <a href="OptionalTasks/ejb.html">EJB Tasks</a><br>
<a href="OptionalTasks/ftp.html">FTP</a><br> <a href="OptionalTasks/ftp.html">FTP</a><br>
<a href="OptionalTasks/javacc.html">JavaCC</a><br>
<a href="OptionalTasks/icontract.html">IContract</a><br> <a href="OptionalTasks/icontract.html">IContract</a><br>
<a href="OptionalTasks/javacc.html">JavaCC</a><br>
<a href="OptionalTasks/javah.html">Javah</a><br>
<a href="OptionalTasks/jjtree.html">JJTree</a><br> <a href="OptionalTasks/jjtree.html">JJTree</a><br>
<a href="OptionalTasks/jlink.html">Jlink</a><br> <a href="OptionalTasks/jlink.html">Jlink</a><br>
<a href="OptionalTasks/junit.html">JUnit</a><br> <a href="OptionalTasks/junit.html">JUnit</a><br>
@@ -26,15 +28,15 @@
<a href="OptionalTasks/mparse.html">MParse</a><br> <a href="OptionalTasks/mparse.html">MParse</a><br>
<a href="OptionalTasks/native2ascii.html">Native2Ascii</a><br> <a href="OptionalTasks/native2ascii.html">Native2Ascii</a><br>
<a href="OptionalTasks/netrexxc.html">NetRexxC</a><br> <a href="OptionalTasks/netrexxc.html">NetRexxC</a><br>
<a href="OptionalTasks/propertyfile.html">PropertyFile</a><br>
<a href="OptionalTasks/perforce.html">Perforce Tasks</a><br> <a href="OptionalTasks/perforce.html">Perforce Tasks</a><br>
<a href="OptionalTasks/propertyfile.html">PropertyFile</a><br>
<a href="OptionalTasks/pvcstask.html">Pvcs</a><br> <a href="OptionalTasks/pvcstask.html">Pvcs</a><br>
<a href="OptionalTasks/renameextensions.html"><i>RenameExtensions</i></a><br> <a href="OptionalTasks/renameextensions.html"><i>RenameExtensions</i></a><br>
<a href="OptionalTasks/script.html">Script</a><br> <a href="OptionalTasks/script.html">Script</a><br>
<a href="OptionalTasks/sound.html">Sound</a><br> <a href="OptionalTasks/sound.html">Sound</a><br>
<a href="OptionalTasks/stylebook.html">Stylebook</a><br> <a href="OptionalTasks/stylebook.html">Stylebook</a><br>
<a href="OptionalTasks/test.html">Test</a><br>
<a href="OptionalTasks/telnet.html">Telnet</a><br> <a href="OptionalTasks/telnet.html">Telnet</a><br>
<a href="OptionalTasks/test.html">Test</a><br>
<a href="Integration/VAJAntTool.html#tasks">Visual Age for Java Tasks</a><br> <a href="Integration/VAJAntTool.html#tasks">Visual Age for Java Tasks</a><br>
<a href="OptionalTasks/vssget.html">VssGet</a><br> <a href="OptionalTasks/vssget.html">VssGet</a><br>
<a href="OptionalTasks/vsslabel.html">VssLabel</a><br> <a href="OptionalTasks/vsslabel.html">VssLabel</a><br>


+ 11
- 1
src/etc/testcases/taskdefs/tar.xml View File

@@ -1,6 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0"?>


<project name="xxx-test" basedir="." default="test1">
<project name="tar-test" basedir="." default="test1">


<target name="test1"> <target name="test1">
<tar/> <tar/>
@@ -14,4 +14,14 @@
<tar basedir=""/> <tar basedir=""/>
</target> </target>


<target name="test4">
<touch file="test4.tar"/>
<tar tarfile="test4.tar"
basedir="."/>
</target>

<target name="cleanup">
<delete file="test4.tar"/>
</target>
</project> </project>

+ 21
- 1
src/etc/testcases/taskdefs/zip.xml View File

@@ -1,6 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0"?>


<project name="xxx-test" basedir="." default="test1">
<project name="zip-test" basedir="." default="test1">


<target name="test1"> <target name="test1">
<zip/> <zip/>
@@ -10,4 +10,24 @@
<zip zipfile="zip.tmp"/> <zip zipfile="zip.tmp"/>
</target> </target>


<!-- Test when the zip file includes itself
when target file exists before the zip task is run -->
<target name="test3">
<touch file="test3.zip"/>
<zip zipfile="test3.zip"
basedir="."/>
</target>

<!-- Test when the zip file includes itself
when target file does not exist before the zip task is run -->
<target name="test4">
<zip zipfile="test4.zip"
basedir="."/>
</target>


<target name="cleanup">
<delete file="test3.zip"/>
<delete file="test4.zip"/>
</target>
</project> </project>

+ 19
- 0
src/etc/testcases/types/mapper.xml View File

@@ -0,0 +1,19 @@
<?xml version="1.0"?>

<project name="copy-test" basedir="." default="test1">

<target name="test1">
<delete dir="copytest" />
<mkdir dir="copytest" />
<copy todir="copytest">
<fileset dir="../../../main">
<include name="**/taskdefs/*.java" />
</fileset>
<fileset dir="../../../testcases">
<include name="**/taskdefs/*.java" />
</fileset>
<mapper type="flatten" />
</copy>
</target>

</project>

+ 1
- 1
src/main/org/apache/tools/ant/DirectoryScanner.java View File

@@ -736,7 +736,7 @@ strLoop:
* (2) an IO error occurred (why doesn't it throw an exception * (2) an IO error occurred (why doesn't it throw an exception
* then???) * then???)
*/ */
throw new BuildException("IO error scanning directory"
throw new BuildException("IO error scanning directory "
+ dir.getAbsolutePath()); + dir.getAbsolutePath());
} }




+ 9
- 2
src/main/org/apache/tools/ant/ProjectHelper.java View File

@@ -104,12 +104,17 @@ public class ProjectHelper {
try { try {
SAXParser saxParser = getParserFactory().newSAXParser(); SAXParser saxParser = getParserFactory().newSAXParser();
parser = saxParser.getParser(); parser = saxParser.getParser();
String uri = "file:" + buildFile.getAbsolutePath().replace('\\', '/'); String uri = "file:" + buildFile.getAbsolutePath().replace('\\', '/');
for (int index = uri.indexOf('#'); index != -1; index = uri.indexOf('#')) { for (int index = uri.indexOf('#'); index != -1; index = uri.indexOf('#')) {
uri = uri.substring(0, index) + "%23" + uri.substring(index+1); uri = uri.substring(0, index) + "%23" + uri.substring(index+1);
} }
saxParser.parse(uri, new RootHandler());
inputStream = new FileInputStream(buildFile);
inputSource = new InputSource(inputStream);
inputSource.setSystemId(uri);
project.log("parsing buildfile " + buildFile + " with URI = " + uri, Project.MSG_VERBOSE);
saxParser.parse(inputSource, new RootHandler());
} }
catch(ParserConfigurationException exc) { catch(ParserConfigurationException exc) {
throw new BuildException("Parser has not been configured correctly", exc); throw new BuildException("Parser has not been configured correctly", exc);
@@ -213,6 +218,8 @@ public class ProjectHelper {
public InputSource resolveEntity(String publicId, public InputSource resolveEntity(String publicId,
String systemId) { String systemId) {
project.log("resolving systemId: " + systemId, Project.MSG_VERBOSE);
if (systemId.startsWith("file:")) { if (systemId.startsWith("file:")) {
String path = systemId.substring(5); String path = systemId.substring(5);
int index = path.indexOf("file:"); int index = path.indexOf("file:");


+ 23
- 25
src/main/org/apache/tools/ant/taskdefs/Javadoc.java View File

@@ -175,6 +175,19 @@ public class Javadoc extends Task {
} }
} }


private void add12ArgIfNotEmpty(String key, String value) {
if (!javadoc1) {
if (value != null && value.length() != 0) {
cmd.createArgument().setValue(key);
cmd.createArgument().setValue(value);
} else {
project.log(this,
"Warning: Leaving out empty argument '" + key + "'",
Project.MSG_WARN);
}
}
}

private void add11ArgIf(boolean b, String arg) { private void add11ArgIf(boolean b, String arg) {
if (javadoc1 && b) { if (javadoc1 && b) {
cmd.createArgument().setValue(arg); cmd.createArgument().setValue(arg);
@@ -226,7 +239,7 @@ public class Javadoc extends Task {
} }


public void setAdditionalparam(String add){ public void setAdditionalparam(String add){
cmd.createArgument().setValue(add);
cmd.createArgument().setLine(add);
} }
public void setSourcepath(Path src) { public void setSourcepath(Path src) {
@@ -387,35 +400,23 @@ public class Javadoc extends Task {
add12ArgIf(b, "-splitindex"); add12ArgIf(b, "-splitindex");
} }
public void setWindowtitle(String src) { public void setWindowtitle(String src) {
if (!javadoc1) {
cmd.createArgument().setValue("-windowtitle");
cmd.createArgument().setValue(src);
}
add12ArgIfNotEmpty("-windowtitle", src);
} }
public void setDoctitle(String src) { public void setDoctitle(String src) {
if (!javadoc1) {
cmd.createArgument().setValue("-doctitle");
cmd.createArgument().setValue(src);
}
add12ArgIfNotEmpty("-doctitle", src);
} }
public void setHeader(String src) { public void setHeader(String src) {
if (!javadoc1) {
cmd.createArgument().setValue("-header");
cmd.createArgument().setValue(src);
}
add12ArgIfNotEmpty("-header", src);
} }

public void setFooter(String src) { public void setFooter(String src) {
if (!javadoc1) {
cmd.createArgument().setValue("-footer");
cmd.createArgument().setValue(src);
}
add12ArgIfNotEmpty("-footer", src);
} }

public void setBottom(String src) { public void setBottom(String src) {
if (!javadoc1) {
cmd.createArgument().setValue("-bottom");
cmd.createArgument().setValue(src);
}
add12ArgIfNotEmpty("-bottom", src);
} }

public void setLinkoffline(String src) { public void setLinkoffline(String src) {
if (!javadoc1) { if (!javadoc1) {
LinkArgument le = createLink(); LinkArgument le = createLink();
@@ -553,10 +554,7 @@ public class Javadoc extends Task {
} }
public void setCharset(String src) { public void setCharset(String src) {
if (!javadoc1) {
cmd.createArgument().setValue("-charset");
cmd.createArgument().setValue(src);
}
this.add12ArgIfNotEmpty("-charset", src);
} }


/** /**


+ 6
- 1
src/main/org/apache/tools/ant/taskdefs/Tar.java View File

@@ -175,7 +175,12 @@ public class Tar extends MatchingTask {
if (!archiveIsUpToDate(files)) { if (!archiveIsUpToDate(files)) {
upToDate = false; upToDate = false;
break;
}
for (int i = 0; i < files.length; ++i) {
if (tarFile.equals(new File(fs.getDir(project), files[i]))) {
throw new BuildException("A tar file cannot include itself", location);
}
} }
} }




+ 10
- 0
src/main/org/apache/tools/ant/taskdefs/Zip.java View File

@@ -334,6 +334,12 @@ public class Zip extends MatchingTask {
return true; return true;
} }
} else { } else {
for (int i = 0; i < files.length; ++i) {
if (files[i].equals(zipFile)) {
throw new BuildException("A zip file cannot include itself", location);
}
}

if (!zipFile.exists()) return false; if (!zipFile.exists()) return false;


SourceFileScanner sfs = new SourceFileScanner(this); SourceFileScanner sfs = new SourceFileScanner(this);
@@ -459,6 +465,10 @@ public class Zip extends MatchingTask {
protected void zipFile(File file, ZipOutputStream zOut, String vPath) protected void zipFile(File file, ZipOutputStream zOut, String vPath)
throws IOException throws IOException
{ {
if (file.equals(zipFile)) {
throw new BuildException("A zip file cannot include itself", location);
}

FileInputStream fIn = new FileInputStream(file); FileInputStream fIn = new FileInputStream(file);
try { try {
zipFile(fIn, zOut, vPath, file.lastModified()); zipFile(fIn, zOut, vPath, file.lastModified());


+ 2
- 50
src/main/org/apache/tools/ant/taskdefs/optional/depend/ClassFileUtils.java View File

@@ -73,31 +73,7 @@ public class ClassFileUtils {
* @return the class name in dot notation (eg. java.lang.Object). * @return the class name in dot notation (eg. java.lang.Object).
*/ */
static public String convertSlashName(String name) { static public String convertSlashName(String name) {
String dotName = null;
int startIndex = 0;
int sepIndex = 0;

String slashName = name.replace('\\', '/');
do {
String component = null;

sepIndex = slashName.indexOf('/', startIndex);

if (sepIndex == -1) {
component = slashName.substring(startIndex);
} else {
component = slashName.substring(startIndex, sepIndex);
startIndex = sepIndex + 1;
}

if (dotName == null) {
dotName = component;
} else {
dotName += "." + component;
}
} while (sepIndex != -1);

return dotName;
return name.replace('\\', '.').replace( '/', '.' );
} }


/** /**
@@ -108,31 +84,7 @@ public class ClassFileUtils {
* @return the class name in slash notation (eg. java/lang/Object). * @return the class name in slash notation (eg. java/lang/Object).
*/ */
static public String convertDotName(String dotName) { static public String convertDotName(String dotName) {
String slashName = null;
int startIndex = 0;
int sepIndex = 0;

do {
String component = null;

sepIndex = dotName.indexOf('.', startIndex);

if (sepIndex == -1) {
component = dotName.substring(startIndex);
} else {
component = dotName.substring(startIndex, sepIndex);
startIndex = sepIndex + 1;
}

if (slashName == null) {
slashName = component;
} else {
slashName += "/" + component;
}
} while (sepIndex != -1);

return slashName;
return dotName.replace( '.', '/');
} }

} }



+ 2
- 2
src/main/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java View File

@@ -367,7 +367,7 @@ public class WeblogicDeploymentTool extends GenericDeploymentTool {
args += " -compiler " + compiler; args += " -compiler " + compiler;
} }
args += " -noexit " + sourceJar.getPath() + " " + destJar.getPath();
args += " " + sourceJar.getPath() + " " + destJar.getPath();
javaTask = (Java) getTask().getProject().createTask("java"); javaTask = (Java) getTask().getProject().createTask("java");
javaTask.setTaskName("ejbc"); javaTask.setTaskName("ejbc");
@@ -384,7 +384,7 @@ public class WeblogicDeploymentTool extends GenericDeploymentTool {
javaTask.setFork(true); javaTask.setFork(true);
} }
else { else {
javaTask.setFork(false);
javaTask.setFork(true);
} }




+ 13
- 9
src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java View File

@@ -171,18 +171,22 @@ public class JJTree extends Task {
cmdl.createArgument().setValue("-"+name+":"+value.toString()); cmdl.createArgument().setValue("-"+name+":"+value.toString());
} }


// load command line with required attributes
if (outputDirectory != null) {
if (!outputDirectory.isDirectory()) {
throw new BuildException("Outputdir not a directory.");
}
cmdl.createArgument().setValue(
"-OUTPUT_DIRECTORY:"+outputDirectory.getAbsolutePath());
}

if (target == null || !target.isFile()) { if (target == null || !target.isFile()) {
throw new BuildException("Invalid target: " + target); throw new BuildException("Invalid target: " + target);
} }
// use the directory containing the target as the output directory
if (outputDirectory == null) {
outputDirectory = new File(target.getParent());
}
if (!outputDirectory.isDirectory() ) {
throw new BuildException("'outputdirectory' " + outputDirectory + " is not a directory.");
}
// convert backslashes to slashes, otherwise jjtree will put this as
// comments and this seems to confuse javacc
cmdl.createArgument().setValue(
"-OUTPUT_DIRECTORY:"+outputDirectory.getAbsolutePath().replace('\\', '/'));
final File javaFile = new File( final File javaFile = new File(
target.toString().substring(0, target.toString().indexOf(".jjt")) + ".jj"); target.toString().substring(0, target.toString().indexOf(".jjt")) + ".jj");
if (javaFile.exists() && target.lastModified() < javaFile.lastModified()) { if (javaFile.exists() && target.lastModified() < javaFile.lastModified()) {


+ 12
- 6
src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java View File

@@ -281,19 +281,25 @@ public class AggregateTransformer {
} }


protected void createCascadingStyleSheet() throws IOException, SAXException { protected void createCascadingStyleSheet() throws IOException, SAXException {
InputStream in = null;
if (styleDir == null) { if (styleDir == null) {
InputStream in = getResourceAsStream("html/stylesheet.css");
OutputStream out = new FileOutputStream( new File(toDir, "stylesheet.css"));
copy(in, out);
in = getResourceAsStream("html/stylesheet.css");
} else {
in = new FileInputStream(new File(styleDir, "stylesheet.css"));
} }
OutputStream out = new FileOutputStream( new File(toDir, "stylesheet.css"));
copy(in, out);
} }


protected void createFrameStructure() throws IOException, SAXException{ protected void createFrameStructure() throws IOException, SAXException{
InputStream in = null;
if (styleDir == null) { if (styleDir == null) {
InputStream in = getResourceAsStream("html/index.html");
OutputStream out = new FileOutputStream( new File(toDir, "index.html") );
copy(in, out);
in = getResourceAsStream("html/index.html");
} else {
in = new FileInputStream(new File(styleDir, "index.html"));
} }
OutputStream out = new FileOutputStream( new File(toDir, "index.html") );
copy(in, out);
} }
/** /**


+ 14
- 7
src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java View File

@@ -161,15 +161,22 @@ public class JUnitTestRunner implements TestListener {
testClass = loader.loadClass(test.getName()); testClass = loader.loadClass(test.getName());
} }
Method suiteMethod = null;
try { try {
Method suiteMethod= testClass.getMethod("suite", new Class[0]);
suite = (Test)suiteMethod.invoke(null, new Class[0]);
} catch(NoSuchMethodException e) {
} catch(InvocationTargetException e) {
} catch(IllegalAccessException e) {
// check if there is a suite method
suiteMethod= testClass.getMethod("suite", new Class[0]);
} catch(Exception e) {
// no appropriate suite method found. We don't report any
// error here since it might be perfectly normal. We don't
// know exactly what is the cause, but we're doing exactly
// the same as JUnit TestRunner do. We swallow the exceptions.
} }
if (suite == null) {
if (suiteMethod != null){
// if there is a suite method available, then try
// to extract the suite from it. If there is an error
// here it will be caught below and reported.
suite = (Test)suiteMethod.invoke(null, new Class[0]);
} else {
// try to extract a test suite automatically // try to extract a test suite automatically
// this will generate warnings if the class is no suitable Test // this will generate warnings if the class is no suitable Test
suite= new TestSuite(testClass); suite= new TestSuite(testClass);


+ 5
- 2
src/main/org/apache/tools/ant/taskdefs/optional/junit/html/stylesheet.css View File

@@ -28,8 +28,11 @@ H6 {
MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
} }
.Error { .Error {
font-weight:bold; color:red;
font-weight:bold; background:#EEEEE0; color:purple;
} }
.Failure { .Failure {
font-weight:bold; color:purple;
font-weight:bold; background:#EEEEE0; color:red;
}
.Pass {
background:#EEEEE0;
} }

+ 8
- 3
src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-classes.xsl View File

@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>

<!-- This style sheet should contain just a named templates that used in the other specific templates -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<xsl:include href="toolkit.xsl"/> <xsl:include href="toolkit.xsl"/>


<!--
Display the whole list of testsuite
-->
<xsl:template match="testsuites"> <xsl:template match="testsuites">
<HTML> <HTML>
<HEAD> <HEAD>
@@ -23,6 +24,10 @@
</HTML> </HTML>
</xsl:template> </xsl:template>


<!--
Display each testsuite name with an hyperlink to the package frame.
The hyperlink is made of the {packagename} + {classname} + "-details.html"
-->
<xsl:template match="testsuite"> <xsl:template match="testsuite">
<tr> <tr>
<td nowrap="nowrap"> <td nowrap="nowrap">
@@ -37,4 +42,4 @@
</tr> </tr>
</xsl:template> </xsl:template>


</xsl:stylesheet>
</xsl:stylesheet>

+ 1
- 4
src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/all-packages.xsl View File

@@ -1,9 +1,6 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>

<!-- This style sheet should contain just a named templates that used in the other specific templates -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<!-- import the commun templates -->
<xsl:include href="toolkit.xsl"/> <xsl:include href="toolkit.xsl"/>


<xsl:template match="testsuites"> <xsl:template match="testsuites">
@@ -39,4 +36,4 @@
</tr> </tr>
</xsl:template> </xsl:template>


</xsl:stylesheet>
</xsl:stylesheet>

+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/class-details.xsl View File

@@ -34,4 +34,4 @@
</HTML> </HTML>
</xsl:template> </xsl:template>


</xsl:stylesheet>
</xsl:stylesheet>

+ 1
- 3
src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/classes-list.xsl View File

@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>

<!-- This style sheet should contain just a named templates that used in the other specific templates -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<!-- import the commun templates --> <!-- import the commun templates -->
@@ -43,4 +41,4 @@
</tr> </tr>
</xsl:template> </xsl:template>


</xsl:stylesheet>
</xsl:stylesheet>

+ 37
- 18
src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-packages.xsl View File

@@ -1,17 +1,8 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>

<!-- This style sheet should contain just a named templates that used in the other specific templates -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<xsl:include href="toolkit.xsl"/> <xsl:include href="toolkit.xsl"/>


<!-- Calculate all summary values -->
<xsl:variable name="testCount" select="sum(//testsuite/@tests)"/>
<xsl:variable name="errorCount" select="sum(//testsuite/@errors)"/>
<xsl:variable name="failureCount" select="sum(//testsuite/@failures)"/>
<xsl:variable name="timeCount" select="sum(//testsuite/@time)"/>
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>

<xsl:template match="testsuites"> <xsl:template match="testsuites">
<HTML> <HTML>
<HEAD> <HEAD>
@@ -59,8 +50,18 @@
<xsl:template match="testsuite" mode="package"> <xsl:template match="testsuite" mode="package">
<xsl:variable name="isError" select="(sum(//testsuite[@package = current()/@package]/@errors) + sum(//testsuite[@package = current()/@package]/@failures))&gt;0"/> <xsl:variable name="isError" select="(sum(//testsuite[@package = current()/@package]/@errors) + sum(//testsuite[@package = current()/@package]/@failures))&gt;0"/>
<!-- write a summary for the package --> <!-- write a summary for the package -->
<tr bgcolor="#EEEEE" valign="top">
<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><a href="{translate(@package,'.','/')}/package-summary.html"><xsl:value-of select="@package"/></a></td>
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$isError">Failure</xsl:when>
<xsl:otherwise>Pass</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<td>
<a href="{translate(@package,'.','/')}/package-summary.html">
<xsl:value-of select="@package"/>
</a>
</td>
<xsl:call-template name="statistics"> <xsl:call-template name="statistics">
<xsl:with-param name="isError" select="$isError"/> <xsl:with-param name="isError" select="$isError"/>
</xsl:call-template> </xsl:call-template>
@@ -70,8 +71,19 @@
<xsl:template match="testsuite" mode="class"> <xsl:template match="testsuite" mode="class">
<xsl:variable name="isError" select="(@errors + @failures)&gt;0"/> <xsl:variable name="isError" select="(@errors + @failures)&gt;0"/>
<!-- write a summary for the package --> <!-- write a summary for the package -->
<tr bgcolor="#EEEEE" valign="top">
<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><a href="{translate(@package,'.','/')}/summary.html"><xsl:value-of select="@name"/></a></td>
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$isError">Failure</xsl:when>
<xsl:otherwise>Pass</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<td>

<a href="{translate(@package,'.','/')}/summary.html">
<xsl:value-of select="@name"/>
</a>
</td>
<xsl:call-template name="statistics"> <xsl:call-template name="statistics">
<xsl:with-param name="isError" select="$isError"/> <xsl:with-param name="isError" select="$isError"/>
</xsl:call-template> </xsl:call-template>
@@ -81,10 +93,17 @@


<xsl:template name="statistics"> <xsl:template name="statistics">
<xsl:variable name="isError"/> <xsl:variable name="isError"/>
<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><xsl:value-of select="sum(//testsuite[@package = current()/@package]/@tests)"/></td>
<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><xsl:value-of select="sum(//testsuite[@package = current()/@package]/@errors)"/></td>
<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><xsl:value-of select="sum(//testsuite[@package = current()/@package]/@failures)"/></td>
<td><xsl:if test="$isError"><xsl:attribute name="class">Error</xsl:attribute></xsl:if><xsl:value-of select="format-number(sum(//testsuite[@package = current()/@package]/@time),'#,###0.000')"/></td>
<td>
<xsl:value-of select="sum(//testsuite[@package = current()/@package]/@tests)"/></td>
<td>
<xsl:value-of select="sum(//testsuite[@package = current()/@package]/@errors)"/></td>
<td>
<xsl:value-of select="sum(//testsuite[@package = current()/@package]/@failures)"/></td>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="sum(//testsuite[@package = current()/@package]/@time)"/>
</xsl:call-template>
</td>
</xsl:template> </xsl:template>


</xsl:stylesheet>
</xsl:stylesheet>

+ 26
- 14
src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/overview-summary.xsl View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:html="http://www.w3.org/Profiles/XHTML-transitional"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:html="http://www.w3.org/Profiles/XHTML-transitional">


<xsl:include href="toolkit.xsl"/> <xsl:include href="toolkit.xsl"/>
@@ -43,13 +42,16 @@
} }
H6 { H6 {
MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
}
.Error {
font-weight:bold; color:red;
}
.Failure {
font-weight:bold; color:purple;
}
}
.Error {
font-weight:bold; background:#EEEEE0; color:purple;
}
.Failure {
font-weight:bold; background:#EEEEE0; color:red;
}
.Pass {
background:#EEEEE0;
}
</style> </style>
</HEAD> </HEAD>
<body text="#000000" bgColor="#ffffff"> <body text="#000000" bgColor="#ffffff">
@@ -95,19 +97,24 @@
<xsl:variable name="timeCount" select="sum(../testsuite[./@package = current()/@package]/@time)"/> <xsl:variable name="timeCount" select="sum(../testsuite[./@package = current()/@package]/@time)"/>
<!-- write a summary for the package --> <!-- write a summary for the package -->
<tr bgcolor="#EEEEE" valign="top">
<tr valign="top">
<!-- set a nice color depending if there is an error/failure --> <!-- set a nice color depending if there is an error/failure -->
<xsl:attribute name="class"> <xsl:attribute name="class">
<xsl:choose> <xsl:choose>
<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
<xsl:when test="$errorCount &gt; 0">Error</xsl:when> <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
<xsl:otherwise>Pass</xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:attribute> </xsl:attribute>
<td><a href="#{@package}"><xsl:value-of select="@package"/></a></td> <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
<td><xsl:value-of select="$testCount"/></td> <td><xsl:value-of select="$testCount"/></td>
<td><xsl:value-of select="$errorCount"/></td> <td><xsl:value-of select="$errorCount"/></td>
<td><xsl:value-of select="$failureCount"/></td> <td><xsl:value-of select="$failureCount"/></td>
<td><xsl:value-of select="format-number($timeCount,'#,###0.000')"/></td>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$timeCount"/>
</xsl:call-template>
</td>
</tr> </tr>
</xsl:for-each> </xsl:for-each>
</table> </table>
@@ -145,12 +152,13 @@
<!-- It must match the table definition at the package level --> <!-- It must match the table definition at the package level -->
<!-- ================================================================== --> <!-- ================================================================== -->
<xsl:template match="testsuite"> <xsl:template match="testsuite">
<tr bgcolor="#EEEEE" valign="top">
<tr valign="top">
<!-- set a nice color depending if there is an error/failure --> <!-- set a nice color depending if there is an error/failure -->
<xsl:attribute name="class"> <xsl:attribute name="class">
<xsl:choose> <xsl:choose>
<xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
<xsl:when test="@errors[.&gt; 0]">Error</xsl:when> <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
<xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
<xsl:otherwise>Pass</xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:attribute> </xsl:attribute>
@@ -159,7 +167,11 @@
<td><xsl:value-of select="@tests"/></td> <td><xsl:value-of select="@tests"/></td>
<td><xsl:value-of select="@errors"/></td> <td><xsl:value-of select="@errors"/></td>
<td><xsl:value-of select="@failures"/></td> <td><xsl:value-of select="@failures"/></td>
<td><xsl:value-of select="format-number(@time,'#,###0.000')"/></td>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="@time"/>
</xsl:call-template>
</td>
</tr> </tr>
</xsl:template> </xsl:template>


+ 19
- 7
src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/package-summary.xsl View File

@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>

<!-- This style sheet should contain just a named templates that used in the other specific templates -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<!-- import the commun templates --> <!-- import the commun templates -->
@@ -26,7 +24,16 @@
<xsl:call-template name="packageSummaryHeader"/> <xsl:call-template name="packageSummaryHeader"/>
<!-- write a summary for the package --> <!-- write a summary for the package -->
<tr bgcolor="#EEEEE" valign="top">
<tr valign="top">
<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
<xsl:when test="$errorCount &gt; 0">Error</xsl:when>
<xsl:otherwise>Pass</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<td><xsl:value-of select="testsuite/@package"/></td> <td><xsl:value-of select="testsuite/@package"/></td>
<td><xsl:value-of select="sum(testsuite/@tests)"/></td> <td><xsl:value-of select="sum(testsuite/@tests)"/></td>
<td><xsl:value-of select="sum(testsuite/@errors)"/></td> <td><xsl:value-of select="sum(testsuite/@errors)"/></td>
@@ -52,12 +59,13 @@
</xsl:template> </xsl:template>


<xsl:template match="testsuite"> <xsl:template match="testsuite">
<tr bgcolor="#EEEEE" valign="top">
<tr valign="top">
<!-- set a nice color depending if there is an error/failure --> <!-- set a nice color depending if there is an error/failure -->
<xsl:attribute name="class"> <xsl:attribute name="class">
<xsl:choose> <xsl:choose>
<xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
<xsl:when test="@errors[.&gt; 0]">Error</xsl:when> <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
<xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
<xsl:otherwise>Pass</xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:attribute> </xsl:attribute>
@@ -66,8 +74,12 @@
<td><xsl:value-of select="@tests"/></td> <td><xsl:value-of select="@tests"/></td>
<td><xsl:value-of select="@errors"/></td> <td><xsl:value-of select="@errors"/></td>
<td><xsl:value-of select="@failures"/></td> <td><xsl:value-of select="@failures"/></td>
<td><xsl:value-of select="format-number(@time,'#,###0.000')"/></td>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="@time"/>
</xsl:call-template>
</td>
</tr> </tr>
</xsl:template> </xsl:template>


</xsl:stylesheet>
</xsl:stylesheet>

+ 50
- 16
src/main/org/apache/tools/ant/taskdefs/optional/junit/xsl/toolkit.xsl View File

@@ -1,9 +1,28 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>

<!-- This style sheet should contain just a named templates that used in the other specific templates -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


<!-- transform string like a.b.c to ../../../ -->
<!--
format a number in to display its value in percent
@param value the number to format
-->
<xsl:template name="display-time">
<xsl:param name="value"/>
<xsl:value-of select="format-number($value,'0.000')"/>
</xsl:template>

<!--
format a number in to display its value in percent
@param value the number to format
-->
<xsl:template name="display-percent">
<xsl:param name="value"/>
<xsl:value-of select="format-number($value,'0.00%')"/>
</xsl:template>

<!--
transform string like a.b.c to ../../../
@param path the path to transform into a descending directory path
-->
<xsl:template name="path"> <xsl:template name="path">
<xsl:param name="path"/> <xsl:param name="path"/>
<xsl:if test="contains($path,'.')"> <xsl:if test="contains($path,'.')">
@@ -119,18 +138,27 @@
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/> <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
<table border="0" cellpadding="5" cellspacing="2" width="95%"> <table border="0" cellpadding="5" cellspacing="2" width="95%">
<xsl:call-template name="summaryHeader"/> <xsl:call-template name="summaryHeader"/>
<tr bgcolor="#EEEEE" valign="top">
<tr valign="top">
<xsl:attribute name="class"> <xsl:attribute name="class">
<xsl:choose>
<xsl:when test="./failure | ./error">Error</xsl:when>
<xsl:otherwise>TableRowColor</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
<xsl:when test="$errorCount &gt; 0">Error</xsl:when>
<xsl:otherwise>Pass</xsl:otherwise>
</xsl:choose>
</xsl:attribute> </xsl:attribute>
<td><xsl:value-of select="$testCount"/></td> <td><xsl:value-of select="$testCount"/></td>
<td><xsl:value-of select="$failureCount"/></td> <td><xsl:value-of select="$failureCount"/></td>
<td><xsl:value-of select="$errorCount"/></td> <td><xsl:value-of select="$errorCount"/></td>
<td><xsl:value-of select="format-number($successRate,'#,##0.00%')"/></td>
<td><xsl:value-of select="format-number($timeCount,'#,###0.000')"/></td>
<td>
<xsl:call-template name="display-percent">
<xsl:with-param name="value" select="$successRate"/>
</xsl:call-template>
</td>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$timeCount"/>
</xsl:call-template>
</td>
</tr> </tr>
</table> </table>
Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated. Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
@@ -142,10 +170,12 @@
===================================================================== =====================================================================
--> -->
<xsl:template match="testcase"> <xsl:template match="testcase">
<TR bgcolor="#EEEEE" valign="top"><xsl:attribute name="class">
<TR valign="top">
<xsl:attribute name="class">
<xsl:choose> <xsl:choose>
<xsl:when test="./failure | ./error">Error</xsl:when>
<xsl:otherwise>TableRowColor</xsl:otherwise>
<xsl:when test="./failure">Failure</xsl:when>
<xsl:when test="./error">Error</xsl:when>
<xsl:otherwise>Pass</xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:attribute> </xsl:attribute>
<TD><xsl:value-of select="./@name"/></TD> <TD><xsl:value-of select="./@name"/></TD>
@@ -160,10 +190,14 @@
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<TD>Success</TD> <TD>Success</TD>
<TD></TD>
<TD><xsl:apply-templates select="./pass"/></TD>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
<td><xsl:value-of select="format-number(@time,'#,###0.000')"/></td>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="@time"/>
</xsl:call-template>
</td>
</TR> </TR>
</xsl:template> </xsl:template>


@@ -201,4 +235,4 @@
<xsl:apply-templates/> <xsl:apply-templates/>
</xsl:template> </xsl:template>


</xsl:stylesheet>
</xsl:stylesheet>

+ 1
- 1
src/main/org/apache/tools/ant/types/CommandlineJava.java View File

@@ -189,7 +189,7 @@ public class CommandlineJava implements Cloneable {
result, pos, sysProperties.size()); result, pos, sysProperties.size());
pos += sysProperties.size(); pos += sysProperties.size();
} }
if (fullClasspath != null && fullClasspath.size() > 0) {
if (fullClasspath != null && fullClasspath.toString().trim().length() > 0) {
result[pos++] = "-classpath"; result[pos++] = "-classpath";
result[pos++] = fullClasspath.toString(); result[pos++] = fullClasspath.toString();
} }


+ 4
- 0
src/main/org/apache/tools/ant/types/Mapper.java View File

@@ -213,6 +213,10 @@ public class Mapper extends DataType {
throw be; throw be;
} catch (Throwable t) { } catch (Throwable t) {
throw new BuildException(t); throw new BuildException(t);
} finally {
if (type != null) {
classname = null;
}
} }
} }


+ 7
- 0
src/testcases/org/apache/tools/ant/taskdefs/TarTest.java View File

@@ -79,4 +79,11 @@ public class TarTest extends TaskdefsTest {
expectBuildException("test3", "required argument not specified"); expectBuildException("test3", "required argument not specified");
} }


public void test4() {
expectBuildException("test4", "tar cannot include itself");
}

public void tearDown() {
executeTarget("cleanup");
}
} }

+ 13
- 0
src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java View File

@@ -74,4 +74,17 @@ public class ZipTest extends TaskdefsTest {
public void test2() { public void test2() {
expectBuildException("test2", "required argument not specified"); expectBuildException("test2", "required argument not specified");
} }
public void test3() {
expectBuildException("test3", "zip cannot include itself");
}

public void test4() {
expectBuildException("test4", "zip cannot include itself");
}
public void tearDown() {
executeTarget("cleanup");
}
} }

+ 21
- 0
src/testcases/org/apache/tools/ant/types/MapperTest.java View File

@@ -57,6 +57,7 @@ package org.apache.tools.ant.types;
import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;
import org.apache.tools.ant.util.*; import org.apache.tools.ant.util.*;
import org.apache.tools.ant.taskdefs.TaskdefsTest;


import junit.framework.TestCase; import junit.framework.TestCase;
import junit.framework.AssertionFailedError; import junit.framework.AssertionFailedError;
@@ -174,4 +175,24 @@ public class MapperTest extends TestCase {
assertEquals("a.java should match", 1, result.length); assertEquals("a.java should match", 1, result.length);
assertEquals("a.class", result[0]); assertEquals("a.class", result[0]);
} }

public void testCopyTaskWithTwoFilesets() {
TaskdefForCopyTest t = new TaskdefForCopyTest("test1");
t.setUp();
t.test1();
}

private class TaskdefForCopyTest extends TaskdefsTest {
TaskdefForCopyTest(String name) {
super(name);
}

public void setUp() {
configureProject("src/etc/testcases/types/mapper.xml");
}

public void test1() {
executeTarget("test1");
}
}
} }

Loading…
Cancel
Save