Browse Source

Merge in 1.4 src changes

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269663 13f79535-47bb-0310-9956-ffa450edef68
master
Conor MacNeill 24 years ago
parent
commit
df14132289
30 changed files with 597 additions and 240 deletions
  1. +11
    -1
      WHATSNEW
  2. +11
    -10
      build.xml
  3. +130
    -49
      src/etc/junit-frames.xsl
  4. +135
    -88
      src/etc/junit-noframes.xsl
  5. +2
    -1
      src/etc/testcases/taskdefs/optional/antlr/antlr.xml
  6. +5
    -0
      src/etc/testcases/types/description1.xml
  7. +6
    -0
      src/etc/testcases/types/description2.xml
  8. +6
    -0
      src/etc/testcases/types/description3.xml
  9. +6
    -0
      src/etc/testcases/types/description4.xml
  10. +6
    -0
      src/etc/testcases/types/filterset.xml
  11. +4
    -0
      src/main/org/apache/tools/ant/AntClassLoader.java
  12. +6
    -1
      src/main/org/apache/tools/ant/DefaultLogger.java
  13. +1
    -1
      src/main/org/apache/tools/ant/XmlLogger.java
  14. +7
    -0
      src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java
  15. +53
    -27
      src/main/org/apache/tools/ant/taskdefs/Javac.java
  16. +1
    -2
      src/main/org/apache/tools/ant/taskdefs/Javadoc.java
  17. +1
    -5
      src/main/org/apache/tools/ant/taskdefs/Manifest.java
  18. +12
    -0
      src/main/org/apache/tools/ant/taskdefs/Property.java
  19. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
  20. +29
    -12
      src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
  21. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java
  22. +23
    -23
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLRun.java
  23. +3
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
  24. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java
  25. +3
    -2
      src/main/org/apache/tools/ant/types/CommandlineJava.java
  26. +8
    -9
      src/main/org/apache/tools/ant/types/Description.java
  27. +11
    -0
      src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.java
  28. +6
    -1
      src/testcases/org/apache/tools/ant/taskdefs/optional/AbstractXSLTLiaisonTest.java
  29. +102
    -0
      src/testcases/org/apache/tools/ant/types/DescriptionTest.java
  30. +4
    -2
      src/testcases/org/apache/tools/ant/types/FilterSetTest.java

+ 11
- 1
WHATSNEW View File

@@ -36,7 +36,7 @@ Changes that could break older environments:
encoding attribute of the task and set it to UTF8 to get the old
behavior.

* The <pvcs> task has been move to a package of its own.
* The <pvcs> task has been moved to a package of its own.

* JUnitResultFormater has two additional methods that must be
implemented by custom formatters.
@@ -93,6 +93,16 @@ Changes that could break older environments:
</delete>
will now remove "somedir" as well, unless there are still files left
in it (matched by the default excludes).
* The copy task will now fail if the file to be copied is not found.

* Ant properties defined in properties files now behave the same way as
properties defined in the build file. In particular the $ character needs
to be escaped in property values by doubling it to $$. So, to define a
property with the value $hello, you need to define it in a properties file
as
test.prop=$$hello
This was not the case in Ant 1.3

Other changes:
--------------


+ 11
- 10
build.xml View File

@@ -161,6 +161,7 @@
<available property="xalan.envcheck"
classname="org.apache.xalan.xslt.EnvironmentCheck"
classpathref="classpath" />
<condition property="javamail.complete">
<and>
<available classname="javax.activation.DataHandler"
@@ -180,6 +181,11 @@
<tstamp>
<format property="year" pattern="yyyy" />
</tstamp>
<filterset id="ant.filters">
<filter token="VERSION" value="${version}" />
<filter token="DATE" value="${TODAY}" />
<filter token="TIME" value="${TSTAMP}" />
</filterset>
</target>

<!--
@@ -256,12 +262,7 @@
<include name="**/version.txt" />
<include name="**/defaultManifest.mf" />
</fileset>
<filterset>
<filter token="VERSION" value="${version}" />
<filter token="DATE" value="${TODAY}" />
<filter token="TIME" value="${TSTAMP}" />
</filterset>
<filterset refid="ant.filters"/>
</copy>

<copy todir="${build.classes}/${optional.package}/junit/xsl">
@@ -369,9 +370,9 @@

<copy todir="${dist.lib}" file="${lib.dir}/optional/README"/>
<copy todir="${dist.docs}"
filtering="on">
<copy todir="${dist.docs}">
<fileset dir="${docs.dir}"/>
<filterset refid="ant.filters"/>
</copy>

<copy todir="${dist.dir}">
@@ -655,10 +656,10 @@
<echo message="file.encoding=${file.encoding}" />
<echo message="user.language=${user.language}" />
</target>
<!-- helper class from Xalan2 to check for jar versioning of xml/xsl processors -->
<target name="xml-check" depends="check_for_optional_packages" if="xalan.envcheck">
<java classname="org.apache.xalan.xslt.EnvironmentCheck"/>
<java classname="org.apache.xalan.xslt.EnvironmentCheck"/>
</target>

<!--


+ 130
- 49
src/etc/junit-frames.xsl View File

@@ -118,54 +118,55 @@
</html>
</xsl:template>


<!-- this is the stylesheet css to use for nearly everything -->
<xsl:template name="stylesheet.css">
body {
font:normal 68% verdana,arial,helvetica;
color:#000000;
}
td {
font-size: 68%
table tr td, table tr th {
font-size: 68%;
}
table.details tr th{
font-weight: bold;
text-align:left;
background:#a6caf0;
}
table.details tr td{
background:#eeeee0;
}

p {
line-height:1.5em;
margin-top:0.5em; margin-bottom:1.0em;
}
h1 {
margin: 0px 0px 5px;
font: 165% verdana,arial,helvetica
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
}
h2 {
margin-top: 1em;
margin-bottom: 0.5em;
font: bold 125% verdana,arial,helvetica
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
}
h3 {
margin-bottom: 0.5em;
font: bold 115% verdana,arial,helvetica
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
}
h4 {
margin-bottom: 0.5em;
font: bold 100% verdana,arial,helvetica
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
h5 {
margin-bottom: 0.5em;
font: bold 100% verdana,arial,helvetica
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
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;
font-weight:bold; color:red;
}
.Failure {
font-weight:bold;
color:purple;
font-weight:bold; color:purple;
}
.Properties {
text-align:right;
}

</xsl:template>


@@ -181,29 +182,87 @@ h6 {
<xsl:call-template name="create.stylesheet.link">
<xsl:with-param name="package.name" select="$package.name"/>
</xsl:call-template>
<script language="JavaScript">
var TestCases = new Array();
var cur;
<xsl:apply-templates select="properties"/>
</script>
<script language="JavaScript"><![CDATA[
function displayProperties (name) {
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
var doc = win.document.open();
doc.write("<html><head><title>Properties of " + name + "</title>");
doc.write("<style>")
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
doc.write("table tr td, table tr th { font-size: 68%; }");
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
doc.write("</style>");
doc.write("</head><body>");
doc.write("<h3>Properties of " + name + "</h3>");
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
doc.write("<table class='properties'>");
doc.write("<tr><th>Name</th><th>Value</th></tr>");
for (prop in TestCases[name]) {
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
}
doc.write("</table>");
doc.write("</body></html>");
doc.close();
win.focus();
}
]]>
</script>
</head>
<body>
<xsl:call-template name="pageHeader"/>
<h3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></h3>

<table border="0" cellpadding="5" cellspacing="2" width="95%">
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<xsl:call-template name="testsuite.test.header"/>
<xsl:apply-templates select="." mode="print.test"/>
</table>
<h2>Tests</h2>
<p>
<table border="0" cellpadding="5" cellspacing="2" width="95%">
<xsl:call-template name="testcase.test.header"/>
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<!--
test can even not be started at all (failure to load the class)
so report the error directly
-->
<xsl:if test="./error">
<tr class="Error">
<td colspan="4"><xsl:apply-templates select="./error"/></td>
</tr>
</xsl:if>
<xsl:apply-templates select="./testcase" mode="print.test"/>
</table>
</p>
<div class="Properties">
<a>
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
Properties &gt;&gt;
</a>
</div>
</body>
</html>
</xsl:template>

<!--
Write properties into a JavaScript data structure.
This is based on the original idea by Erik Hatcher (erik@hatcher.net)
-->
<xsl:template match="properties">
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
<xsl:for-each select="property">
<xsl:sort select="@name"/>
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
</xsl:for-each>
</xsl:template>


<!-- ======================================================================
This page is created for every package.
@@ -340,15 +399,15 @@ h6 {
<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"/>
<table border="0" cellpadding="5" cellspacing="2" width="95%">
<tr bgcolor="#A6CAF0" valign="top">
<td><strong>Tests</strong></td>
<td><strong>Failures</strong></td>
<td><strong>Errors</strong></td>
<td><strong>Success rate</strong></td>
<td><strong>Time</strong></td>
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>Tests</th>
<th>Failures</th>
<th>Errors</th>
<th>Success rate</th>
<th>Time</th>
</tr>
<tr bgcolor="#EEEEE" valign="top">
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$errorCount &gt; 0">Error</xsl:when>
@@ -381,13 +440,13 @@ h6 {
</table>
<h2>Packages</h2>
<table border="0" cellpadding="5" cellspacing="2" width="95%">
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<xsl:call-template name="testsuite.test.header"/>
<xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
<xsl:sort select="@package" order="ascending"/>
<!-- get the node set containing all testsuites that have the same package -->
<xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
<tr bgcolor="#EEEEE" valign="top">
<tr valign="top">
<!-- display a failure if there is any failure/error in the package -->
<xsl:attribute name="class">
<xsl:choose>
@@ -435,7 +494,7 @@ h6 {
<xsl:if test="count($insamepackage) &gt; 0">
<h2>Classes</h2>
<p>
<table border="0" cellpadding="5" cellspacing="2" width="95%">
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<xsl:call-template name="testsuite.test.header"/>
<xsl:apply-templates select="$insamepackage" mode="print.test">
<xsl:sort select="@name"/>
@@ -487,29 +546,29 @@ h6 {

<!-- class header -->
<xsl:template name="testsuite.test.header">
<tr bgcolor="#A6CAF0" valign="top">
<td width="80%"><strong>Name</strong></td>
<td><strong>Tests</strong></td>
<td><strong>Errors</strong></td>
<td><strong>Failures</strong></td>
<td nowrap="nowrap"><strong>Time(s)</strong></td>
<tr valign="top">
<th width="80%">Name</th>
<th>Tests</th>
<th>Errors</th>
<th>Failures</th>
<th nowrap="nowrap">Time(s)</th>
</tr>
</xsl:template>

<!-- method header -->
<xsl:template name="testcase.test.header">
<tr bgcolor="#A6CAF0" valign="top">
<td><strong>Name</strong></td>
<td><strong>Status</strong></td>
<td width="80%"><strong>Type</strong></td>
<td nowrap="nowrap"><strong>Time(s)</strong></td>
<tr valign="top">
<th>Name</th>
<th>Status</th>
<th width="80%">Type</th>
<th nowrap="nowrap">Time(s)</th>
</tr>
</xsl:template>


<!-- class information -->
<xsl:template match="testsuite" mode="print.test">
<tr bgcolor="#EEEEE" valign="top">
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
@@ -529,7 +588,7 @@ h6 {
</xsl:template>

<xsl:template match="testcase" mode="print.test">
<tr bgcolor="#EEEEE" valign="top">
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="error">Error</xsl:when>
@@ -590,6 +649,28 @@ h6 {
<!--pre><xsl:value-of select="."/></pre-->
</xsl:template>

<xsl:template name="JS-escape">
<xsl:param name="string"/>
<xsl:choose><!-- something isn't right here, basically all single quotes need to be replaced with backslash-single-quote
<xsl:when test="contains($string,'&apos;')">
<xsl:value-of select="substring-before($string,'&apos;')"/>
\&apos;
<xsl:call-template name="JS-escape">
<xsl:with-param name="string" select="substring-after($string,'&apos;')"/>
</xsl:call-template>
</xsl:when> -->
<xsl:when test="contains($string,'\')">
<xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape">
<xsl:with-param name="string" select="substring-after($string,'\')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>


<!--
template that will convert a carriage return into a br tag
@param word the text from which to convert CR to BR tag


+ 135
- 88
src/etc/junit-noframes.xsl View File

@@ -1,68 +1,95 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">


<!-- ======================================================================

Stylesheet to transform an XML file generated by the Ant MAudit task into
a set of JavaDoc-like HTML page to make pages more convenient to be browsed.
It use the Xalan redirect extension to write to multiple output files.
Note: HTML output can be made much more clean by removing non css attributes

====================================================================== -->
<xsl:output method="html" indent="yes"/>
<xsl:decimal-format decimal-separator="." grouping-separator="," />

<xsl:template match="testsuites">
<HTML>
<HEAD>
<style type="text/css">
BODY {
font:normal 68% verdana,arial,helvetica;
color:#000000;
}
TABLE TR TD, TABLE TR TH {
font-size: 68%;
}
TABLE.details TR TH{
font-weight: bold;
text-align:left;
background:#A6CAF0;
}
TABLE.details TR TD{
background:#EEEEE0;
}
P {
line-height:1.5em;
margin-top:0.5em; margin-bottom:1.0em;
}
H1 {
MARGIN: 0px 0px 5px; FONT: 165% verdana,arial,helvetica
}
H2 {
MARGIN-TOP: 1em; MARGIN-BOTTOM: 0.5em; FONT: bold 125% verdana,arial,helvetica
}
H3 {
MARGIN-BOTTOM: 0.5em; FONT: bold 115% verdana,arial,helvetica
}
H4 {
MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
}
H5 {
MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
}
H6 {
MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
}
.Error {
font-weight:bold; color:red;
}
.Failure {
font-weight:bold; color:purple;
}
</style>
<style type="text/css">
body {
font:normal 68% verdana,arial,helvetica;
color:#000000;
}
table tr td, table tr th {
font-size: 68%;
}
table.details tr th{
font-weight: bold;
text-align:left;
background:#a6caf0;
}
table.details tr td{
background:#eeeee0;
}
p {
line-height:1.5em;
margin-top:0.5em; margin-bottom:1.0em;
}
h1 {
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
}
h2 {
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
}
h3 {
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
}
h4 {
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
h5 {
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
h6 {
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
}
.Error {
font-weight:bold; color:red;
}
.Failure {
font-weight:bold; color:purple;
}
.Properties {
text-align:right;
}
</style>
<script language="JavaScript">
var TestCases = new Array();
var cur;
<xsl:for-each select="./testsuite">
<xsl:apply-templates select="properties"/>
</xsl:for-each>

</script>
<script language="JavaScript"><![CDATA[
function displayProperties (name) {
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
var doc = win.document.open();
doc.write("<html><head><title>Properties of " + name + "</title>");
doc.write("<style>")
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
doc.write("table tr td, table tr th { font-size: 68%; }");
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
doc.write("</style>");
doc.write("</head><body>");
doc.write("<h3>Properties of " + name + "</h3>");
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
doc.write("<table class='properties'>");
doc.write("<tr><th>Name</th><th>Value</th></tr>");
for (prop in TestCases[name]) {
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
}
doc.write("</table>");
doc.write("</body></html>");
doc.close();
win.focus();
}
]]>
</script>
</HEAD>
<body>
<a name="#top"></a>
@@ -163,14 +190,25 @@
<h3>TestCase <xsl:value-of select="@name"/></h3>
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<!-- Header -->
<xsl:call-template name="testcase.test.header"/>

<!-- match the testcases of this package -->
<xsl:apply-templates select="testcase" mode="print.test"/>
<xsl:call-template name="testcase.test.header"/>
<!--
test can even not be started at all (failure to load the class)
so report the error directly
-->
<xsl:if test="./error">
<tr class="Error">
<td colspan="4"><xsl:apply-templates select="./error"/></td>
</tr>
</xsl:if>
<xsl:apply-templates select="./testcase" mode="print.test"/>
</table>
<div class="Properties">
<a>
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
Properties &gt;&gt;
</a>
</div>
<p/>
<xsl:apply-templates select="properties"/>
<a href="#top">Back to top</a>
</xsl:for-each>
@@ -223,28 +261,17 @@
</table>
</xsl:template>
<xsl:template match="properties">
<!--
I have NO idea how to display properties ! :-(
It takes an incredible amount of space in the page and it's
really unreadable.
<xsl:variable name="count" select="count(property)"/>
<h3>System Properties</h3>
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>Name</th>
<th>Value</th>
</tr>
<xsl:for-each select="property">
<tr valign="top">
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="@value"/></td>
</tr>
</xsl:for-each>
</table>
-->
</xsl:template>
<!--
Write properties into a JavaScript data structure.
This is based on the original idea by Erik Hatcher (erik@hatcher.net)
-->
<xsl:template match="properties">
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
<xsl:for-each select="property">
<xsl:sort select="@name"/>
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
</xsl:for-each>
</xsl:template>
<!-- Page HEADER -->
<xsl:template name="pageHeader">
@@ -345,8 +372,6 @@
</xsl:template>


<!-- Note : the below template error and failure are the same style
so just call the same style store in the toolkit template -->
<xsl:template match="failure">
<xsl:call-template name="display-failures"/>
</xsl:template>
@@ -374,6 +399,28 @@
<!--pre><xsl:value-of select="."/></pre-->
</xsl:template>

<xsl:template name="JS-escape">
<xsl:param name="string"/>
<xsl:choose><!-- something isn't right here, basically all single quotes need to be replaced with backslash-single-quote
<xsl:when test="contains($string,'&apos;')">
<xsl:value-of select="substring-before($string,'&apos;')"/>
\&apos;
<xsl:call-template name="JS-escape">
<xsl:with-param name="string" select="substring-after($string,'&apos;')"/>
</xsl:call-template>
</xsl:when> -->
<xsl:when test="contains($string,'\')">
<xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape">
<xsl:with-param name="string" select="substring-after($string,'\')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>


<!--
template that will convert a carriage return into a br tag
@param word the text from which to convert CR to BR tag


+ 2
- 1
src/etc/testcases/taskdefs/optional/antlr/antlr.xml View File

@@ -2,7 +2,7 @@

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

<property name="tmp.dir" value="antlr.tmp"/>
<property name="tmp.dir" location="antlr.tmp"/>


<target name="test1">
@@ -18,6 +18,7 @@
</target>

<target name="test3">
<deltree dir="${tmp.dir}"/>
<mkdir dir="${tmp.dir}"/>
<antlr target="antlr.g" outputdirectory="${tmp.dir}"/>
</target>


+ 5
- 0
src/etc/testcases/types/description1.xml View File

@@ -0,0 +1,5 @@
<project name="test" default="main" basedir=".">
<description>Test Project Description</description>
<target name="main">
</target>
</project>

+ 6
- 0
src/etc/testcases/types/description2.xml View File

@@ -0,0 +1,6 @@
<project name="test" default="main" basedir=".">
<description>Multi Line
Project Description</description>
<target name="main">
</target>
</project>

+ 6
- 0
src/etc/testcases/types/description3.xml View File

@@ -0,0 +1,6 @@
<project name="test" default="main" basedir=".">
<description>Multi Instance </description>
<description>Project Description</description>
<target name="main">
</target>
</project>

+ 6
- 0
src/etc/testcases/types/description4.xml View File

@@ -0,0 +1,6 @@
<project name="test" default="main" basedir=".">
<description>Multi Instance </description>
<target name="main">
<description>Nested Project Description</description>
</target>
</project>

+ 6
- 0
src/etc/testcases/types/filterset.xml View File

@@ -34,4 +34,10 @@
<fixcrlf eol="lf" srcdir="." includes="dest3.txt"/>
</target>
<target name="cleanup">
<delete file="dest1.txt" quiet="true" />
<delete file="dest2.txt" quiet="true" />
<delete file="dest3.txt" quiet="true" />
</target>

</project>

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

@@ -866,6 +866,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
if (t instanceof ClassFormatError) {
throw (ClassFormatError)t;
}
else if (t instanceof NoClassDefFoundError) {
throw (NoClassDefFoundError)t;
}
else {
throw new IOException(t.toString());
}
@@ -914,6 +917,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener {
}
}
catch (IOException ioe) {
// ioe.printStackTrace();
log("Exception reading component " + pathComponent , Project.MSG_VERBOSE);
}
}


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

@@ -143,7 +143,12 @@ public class DefaultLogger implements BuildLogger {
error.printStackTrace(err);
}
else {
err.println(error.getMessage());
if (error instanceof BuildException) {
err.println(error.toString());
}
else {
err.println(error.getMessage());
}
}
}



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

@@ -248,7 +248,7 @@ public class XmlLogger implements BuildListener {
}
messageElement.setAttribute(PRIORITY_ATTR, name);

Text messageText = doc.createTextNode(event.getMessage());
Text messageText = doc.createCDATASection(event.getMessage());
messageElement.appendChild(messageText);

TimedElement parentElement = null;


+ 7
- 0
src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java View File

@@ -330,7 +330,14 @@ public class ExecuteOn extends ExecTask {
}

} else { // no targetFilePos

// 0 --> srcIndex
System.arraycopy(orig, 0, result, 0, srcIndex);
// srcIndex --> end
System.arraycopy(orig, srcIndex, result,
srcIndex + srcFiles.length,
orig.length - srcIndex);

}

// fill in source file names


+ 53
- 27
src/main/org/apache/tools/ant/taskdefs/Javac.java View File

@@ -87,17 +87,17 @@ import java.io.File;
* <p>
* When this task executes, it will recursively scan the sourcedir and
* destdir looking for Java source files to compile. This task makes its
* compile decision based on timestamp.
* compile decision based on timestamp.
*
* @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
* @author Robin Green <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</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:jayglanville@home.com">J D Glanville</a>
*/

public class Javac extends MatchingTask {

private static final String FAIL_MSG
private static final String FAIL_MSG
= "Compile failed, messages should have been provided.";

private Path src;
@@ -116,6 +116,8 @@ public class Javac extends MatchingTask {
private boolean includeJavaRuntime = false;
private boolean fork = false;
private boolean nowarn = false;
private String memoryInitialSize;
private String memoryMaximumSize;

protected boolean failOnError = true;
protected File[] compileList = new File[0];
@@ -157,7 +159,7 @@ public class Javac extends MatchingTask {
this.destDir = destDir;
}

/**
/**
* Gets the destination directory into which the java source files
* should be compiled.
*/
@@ -298,6 +300,30 @@ public class Javac extends MatchingTask {
return deprecation;
}

/**
* Set the memoryInitialSize flag.
*/
public void setMemoryInitialSize(String memoryInitialSize) {
this.memoryInitialSize = memoryInitialSize;
}

/** Gets the memoryInitialSize flag. */
public String getMemoryInitialSize() {
return memoryInitialSize;
}

/**
* Set the memoryMaximumSize flag.
*/
public void setMemoryMaximumSize(String memoryMaximumSize) {
this.memoryMaximumSize = memoryMaximumSize;
}

/** Gets the memoryMaximumSize flag. */
public String getMemoryMaximumSize() {
return memoryMaximumSize;
}

/**
* Set the Java source file encoding name.
*/
@@ -334,21 +360,21 @@ public class Javac extends MatchingTask {
return optimize;
}

/**
/**
* Set the depend flag.
*/
*/
public void setDepend(boolean depend) {
this.depend = depend;
}
}

/** Gets the depend flag. */
public boolean getDepend() {
return depend;
}

/**
/**
* Set the verbose flag.
*/
*/
public void setVerbose(boolean verbose) {
this.verbose = verbose;
}
@@ -404,12 +430,12 @@ public class Javac extends MatchingTask {

/**
* Sets whether to fork the javac compiler.
*/
public void setFork(boolean fork)
*/
public void setFork(boolean fork)
{
this.fork = fork;
this.fork = fork;
}

/**
* Sets whether the -nowarn option should be used.
@@ -438,12 +464,12 @@ public class Javac extends MatchingTask {
if (list.length == 0) {
throw new BuildException("srcdir attribute must be set!", location);
}
if (destDir != null && !destDir.isDirectory()) {
throw new BuildException("destination directory \"" + destDir + "\" does not exist or is not a directory", location);
}

// scan source directories and dest directory to build up
// scan source directories and dest directory to build up
// compile lists
resetFileLists();
for (int i=0; i<list.length; i++) {
@@ -458,13 +484,13 @@ public class Javac extends MatchingTask {

scanDir(srcDir, destDir != null ? destDir : srcDir, files);
}
// compile the source files

String compiler = project.getProperty("build.compiler");
if (fork) {
if (compiler != null) {
if (fork) {
if (compiler != null) {
if (isJdkCompiler(compiler)) {
log("Since fork is true, ignoring build.compiler setting.",
Project.MSG_WARN);
@@ -473,13 +499,13 @@ public class Javac extends MatchingTask {
else {
log("Since build.compiler setting isn't classic or modern, ignoring fork setting.", Project.MSG_WARN);
}
}
}
else {
compiler = "extJavac";
}
}
}

if (compiler == null) {
if (compiler == null) {
if (Project.getJavaVersion() != Project.JAVA_1_1 &&
Project.getJavaVersion() != Project.JAVA_1_2) {
compiler = "modern";
@@ -492,14 +518,14 @@ public class Javac extends MatchingTask {

CompilerAdapter adapter = CompilerAdapterFactory.getCompiler(
compiler, this );
log("Compiling " + compileList.length +
log("Compiling " + compileList.length +
" source file"
+ (compileList.length == 1 ? "" : "s")
+ (destDir != null ? " to " + destDir : ""));

// now we need to populate the compiler adapter
adapter.setJavac( this );
// finally, lets execute the compiler!!
if (!adapter.execute()) {
if (failOnError) {
@@ -513,14 +539,14 @@ public class Javac extends MatchingTask {
}

/**
* Clear the list of files to be compiled and copied..
* Clear the list of files to be compiled and copied..
*/
protected void resetFileLists() {
compileList = new File[0];
}

/**
* Scans the directory looking for source files to be compiled.
* Scans the directory looking for source files to be compiled.
* The results are returned in the class variable compileList
*/
protected void scanDir(File srcDir, File destDir, String files[]) {
@@ -529,7 +555,7 @@ public class Javac extends MatchingTask {
m.setTo("*.class");
SourceFileScanner sfs = new SourceFileScanner(this);
File[] newFiles = sfs.restrictAsFiles(files, srcDir, destDir, m);
if (newFiles.length > 0) {
File[] newCompileList = new File[compileList.length +
newFiles.length];


+ 1
- 2
src/main/org/apache/tools/ant/taskdefs/Javadoc.java View File

@@ -679,14 +679,13 @@ public class Javadoc extends Task {
}

public String getPackages() {
StringBuffer p = new StringBuffer( "\"" );
StringBuffer p = new StringBuffer();
for (int i = 0; i < packages.size(); i++) {
if ( i > 0 ) {
p.append( ":" );
}
p.append( packages.elementAt(i).toString() );
}
p.append( "\"" );
return p.toString();
}
}


+ 1
- 5
src/main/org/apache/tools/ant/taskdefs/Manifest.java View File

@@ -450,11 +450,6 @@ public class Manifest {
*/
public Manifest(InputStream is) throws ManifestException, IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
if (line == null) {
return;
}
// This should be the manifest version
String nextSectionName = mainSection.read(reader);
String readManifestVersion = mainSection.getAttributeValue(ATTRIBUTE_MANIFEST_VERSION);
@@ -463,6 +458,7 @@ public class Manifest {
mainSection.removeAttribute(ATTRIBUTE_MANIFEST_VERSION);
}

String line = null;
while ((line = reader.readLine()) != null) {
if (line.length() == 0) {
continue;


+ 12
- 0
src/main/org/apache/tools/ant/taskdefs/Property.java View File

@@ -160,6 +160,18 @@ public class Property extends Task {
}

public void execute() throws BuildException {
if (name != null) {
if (value == null && ref == null) {
throw new BuildException("You must specify value, location or refid with the name attribute",
location);
}
} else {
if (file == null && resource == null && env == null) {
throw new BuildException("You must specify file, resource or environment when not using the name attribute",
location);
}
}

if ((name != null) && (value != null)) {
addProperty(name, value);
}


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

@@ -88,7 +88,6 @@ import org.apache.tools.ant.util.FileUtils;
* @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
* @author <a href="mailto:russgold@acm.org">Russell Gold</a>
* @author <a href="stefan.bodewig@epost.de">Stefan Bodewig</a>
* @version $Revision$ $Date$
*/
public class XSLTProcess extends MatchingTask {

@@ -268,6 +267,7 @@ public class XSLTProcess extends MatchingTask {
loadClass("org.apache.tools.ant.taskdefs.optional.TraXLiaison");
liaison = (XSLTLiaison)clazz.newInstance();
} else if (proc.equals("xslp")) {
log("DEPRECATED - xslp processor is deprecated. Use trax or xalan instead.");
final Class clazz =
loadClass("org.apache.tools.ant.taskdefs.optional.XslpLiaison");
liaison = (XSLTLiaison) clazz.newInstance();


+ 29
- 12
src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java View File

@@ -67,7 +67,7 @@ import java.util.Random;
*
* @author James Davidson <a href="mailto:duncan@x180.com">duncan@x180.com</a>
* @author Robin Green <a href="mailto:greenrd@hotmail.com">greenrd@hotmail.com</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:jayglanville@home.com">J D Glanville</a>
*/
public abstract class DefaultCompilerAdapter implements CompilerAdapter {
@@ -92,6 +92,8 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
protected Location location;
protected boolean includeAntRuntime;
protected boolean includeJavaRuntime;
protected String memoryInitialSize;
protected String memoryMaximumSize;

protected File[] compileList;
protected static String lSep = System.getProperty("line.separator");
@@ -116,6 +118,8 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
location = attributes.getLocation();
includeAntRuntime = attributes.getIncludeantruntime();
includeJavaRuntime = attributes.getIncludejavaruntime();
memoryInitialSize = attributes.getMemoryInitialSize();
memoryMaximumSize = attributes.getMemoryMaximumSize();
}

public Javac getJavac() {
@@ -136,7 +140,7 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
classpath.setLocation(destDir);
}

// Combine the build classpath with the system classpath, in an
// Combine the build classpath with the system classpath, in an
// order determined by the value of build.classpath

if (compileClasspath == null) {
@@ -166,7 +170,7 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
classpath.addExisting(new Path(null,
System.getProperty("java.home")
+ File.separator + "lib"
+ File.separator
+ File.separator
+ "classes.zip"));
} else {
// JDK > 1.1 seems to set java.home to the JRE directory.
@@ -195,7 +199,7 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
+ File.separator + "ui.jar"));
}
}
return classpath;
}

@@ -206,10 +210,23 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
protected Commandline setupJavacCommandlineSwitches(Commandline cmd) {
Path classpath = getCompileClasspath();

// we cannot be using Java 1.0 when forking, so we only have to
// distinguish between Java 1.1, and Java 1.2 and higher, as Java 1.1
// has its own parameter format
boolean usingJava1_1 = Project.getJavaVersion().equals(Project.JAVA_1_1);
String memoryParameterPrefix = usingJava1_1 ? "-J-" : "-J-X";
if (memoryInitialSize != null) {
cmd.createArgument().setValue(memoryParameterPrefix+"ms"+memoryInitialSize);
}

if (memoryMaximumSize != null) {
cmd.createArgument().setValue(memoryParameterPrefix+"mx"+memoryMaximumSize);
}

if (attributes.getNowarn()) {
cmd.createArgument().setValue("-nowarn");
}
if (deprecation == true) {
cmd.createArgument().setValue("-deprecation");
}
@@ -218,7 +235,7 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
cmd.createArgument().setValue("-d");
cmd.createArgument().setFile(destDir);
}
cmd.createArgument().setValue("-classpath");

// Just add "sourcepath" to classpath ( for JDK1.1 )
@@ -298,7 +315,7 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
}

/**
* Logs the compilation parameters, adds the files to compile and logs the
* Logs the compilation parameters, adds the files to compile and logs the
* &qout;niceSourceList&quot;
*/
protected void logAndAddFilesToCompile(Commandline cmd) {
@@ -333,10 +350,10 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {

try {
/*
* Many system have been reported to get into trouble with
* Many system have been reported to get into trouble with
* long command lines - no, not only Windows ;-).
*
* POSIX seems to define a lower limit of 4k, so use a temporary
* POSIX seems to define a lower limit of 4k, so use a temporary
* file if the total length of the command line exceeds this limit.
*/
if (Commandline.toString(args).length() > 4096) {
@@ -361,9 +378,9 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
} else {
commandArray = args;
}
try {
Execute exe = new Execute(new LogStreamHandler(attributes,
Execute exe = new Execute(new LogStreamHandler(attributes,
Project.MSG_INFO,
Project.MSG_WARN));
exe.setAntRun(project);
@@ -372,7 +389,7 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter {
exe.execute();
return exe.getExitValue();
} catch (IOException e) {
throw new BuildException("Error running " + args[0]
throw new BuildException("Error running " + args[0]
+ " compiler", e, location);
}
} finally {


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

@@ -215,10 +215,10 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe
*/
protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix) {

File borlandDD = new File(getConfig().descriptorDir,BAS_DD);
File borlandDD = new File(getConfig().descriptorDir,ddPrefix + BAS_DD);
if (borlandDD.exists()) {
log("Borland specific file found "+ borlandDD, Project.MSG_VERBOSE);
ejbFiles.put(META_DIR + BAS_DD, ddPrefix + borlandDD);
ejbFiles.put(META_DIR + BAS_DD, borlandDD);
}
else {
log("Unable to locate borland deployment descriptor. It was expected to be in " +


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

@@ -183,34 +183,34 @@ public class WLRun extends Task {
" is not valid");
}

File securityPolicyFile = null;
if (securityPolicy == null) {
securityPolicyFile = new File(weblogicSystemHome, DEFAULT_WL60_POLICY_FILE);
if (beaHome != null) {
executeWLS6();
} else {
executeWLS();
}
else {
securityPolicyFile = new File(weblogicSystemHome, securityPolicy);
}
private File findSecurityPolicyFile(String defaultSecurityPolicy) {
String securityPolicy = this.securityPolicy;
if (securityPolicy == null) {
securityPolicy = defaultSecurityPolicy;
}

if (!securityPolicyFile.exists()) {
// OK it maybe an absolute path. Use the project to resolve it
File securityPolicyFile = new File( weblogicSystemHome, securityPolicy );
// If an explicit securityPolicy file was specified, it maybe an
// absolute path. Use the project to resolve it.
if (this.securityPolicy != null && !securityPolicyFile.exists()) {
securityPolicyFile = project.resolveFile(securityPolicy);
if (!securityPolicyFile.exists()) {
throw new BuildException("Security policy " + securityPolicy +
" was not found.");
}
}


if (beaHome != null) {
executeWLS6(securityPolicyFile);
}
else {
executeWLS(securityPolicyFile);
// If we still can't find it, complain
if (!securityPolicyFile.exists()) {
throw new BuildException("Security policy " + securityPolicy +
" was not found.");
}
return securityPolicyFile;
}
private void executeWLS6(File securityPolicyFile) {
private void executeWLS6() {
File securityPolicyFile = findSecurityPolicyFile( DEFAULT_WL60_POLICY_FILE );
if (!beaHome.isDirectory()) {
throw new BuildException("BEA home " + beaHome.getPath() +
" is not valid");
@@ -259,8 +259,8 @@ public class WLRun extends Task {
}
}
private void executeWLS(File securityPolicyFile) {
private void executeWLS() {
File securityPolicyFile = findSecurityPolicyFile( DEFAULT_WL51_POLICY_FILE );
File propertiesFile = null;



+ 3
- 1
src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java View File

@@ -586,7 +586,9 @@ public class FTP

FTPFile[] files = ftp.listFiles(remoteFile);

if (files == null)
// For Microsoft's Ftp-Service an Array with length 0 is
// returned if configured to return listings in "MS-DOS"-Format
if (files == null || files.length == 0)
{
// If we are sending files, then assume out of date.
// If we are getting files, then throw an error


+ 2
- 2
src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java View File

@@ -78,9 +78,9 @@ public class WLRmic extends DefaultRmicAdapter {
try {
// Create an instance of the rmic
Class c = Class.forName("weblogic.rmic");
Method doRmic = c.getMethod("main",
Method doRmic = c.getMethod("main",
new Class [] { String[].class });
doRmic.invoke(null, new Object[] { });
doRmic.invoke(null, new Object[] {cmd.getArguments() });
return true;
} catch (ClassNotFoundException ex) {
throw new BuildException("Cannot use WebLogic rmic, as it is not available"+


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

@@ -221,7 +221,7 @@ public class CommandlineJava implements Cloneable {
* @return the list of all arguments necessary to run the vm.
*/
public String[] getCommandline() {
String[] result = new String[size()];
String[] result = new String[size()];
int pos = 0;
String[] vmArgs = getActualVMCommand().getCommandline();
// first argument is the java.exe path...
@@ -285,7 +285,8 @@ public class CommandlineJava implements Cloneable {
public int size() {
int size = getActualVMCommand().size() + javaCommand.size() + sysProperties.size();
// classpath is "-classpath <classpath>" -> 2 args
if (classpath != null && classpath.size() > 0) {
Path fullClasspath = classpath != null ? classpath.concatSystemClasspath("ignore") : null;
if (fullClasspath != null && fullClasspath.toString().trim().length() > 0) {
size += 2;
}
// jar execution requires an additional -jar option


+ 8
- 9
src/main/org/apache/tools/ant/types/Description.java View File

@@ -70,17 +70,16 @@ import org.apache.tools.ant.Project;
* @version $Revision$ $Date$
*/
public class Description extends DataType {
private Project project;
public Description(Project project) {
this.project = project;
}

/**
* Adds descriptive text to the project.
*/
public void addText(String text) {
project.setDescription(text);
}
public void addText(String text) {
String currentDescription = project.getDescription();
if (currentDescription == null) {
project.setDescription(text);
} else {
project.setDescription(currentDescription + text);
}
}
}

+ 11
- 0
src/testcases/org/apache/tools/ant/taskdefs/TaskdefsTest.java View File

@@ -66,6 +66,7 @@ public abstract class TaskdefsTest extends TestCase {
protected Project project;
private StringBuffer logBuffer;
private StringBuffer fullLogBuffer;
private StringBuffer outBuffer;
private StringBuffer errBuffer;
private BuildException buildException;
@@ -78,6 +79,12 @@ public abstract class TaskdefsTest extends TestCase {
return logBuffer.toString();
}

protected String getFullLog() {
return fullLogBuffer.toString();
}


protected void expectBuildException(String taskname, String cause) {
expectSpecificBuildException(taskname, cause, null);
}
@@ -136,6 +143,7 @@ public abstract class TaskdefsTest extends TestCase {
protected void configureProject(String filename) {
logBuffer = new StringBuffer();
fullLogBuffer = new StringBuffer();
project = new Project();
project.init();
project.setUserProperty( "ant.file" , new File(filename).getAbsolutePath() );
@@ -156,6 +164,7 @@ public abstract class TaskdefsTest extends TestCase {
PrintStream err = new PrintStream(new AntOutputStream());
System.setErr(err);
logBuffer = new StringBuffer();
fullLogBuffer = new StringBuffer();
buildException = null;
project.executeTarget(targetName);
} finally {
@@ -253,6 +262,8 @@ public abstract class TaskdefsTest extends TestCase {
{
logBuffer.append(event.getMessage());
}
fullLogBuffer.append(event.getMessage());
}
}



+ 6
- 1
src/testcases/org/apache/tools/ant/taskdefs/optional/AbstractXSLTLiaisonTest.java View File

@@ -62,6 +62,7 @@ import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
import java.io.FileNotFoundException;
import java.net.URL;

/**
@@ -85,8 +86,12 @@ public abstract class AbstractXSLTLiaisonTest extends TestCase {
// to override
protected abstract XSLTLiaison createLiaison() throws Exception ;

protected File getFile(String name){
/** load the file from the caller classloader that loaded this class */
protected File getFile(String name) throws FileNotFoundException {
URL url = getClass().getResource(name);
if (url == null){
throw new FileNotFoundException("Unable to load '" + name + "' from classpath");
}
return new File(url.getFile());
}



+ 102
- 0
src/testcases/org/apache/tools/ant/types/DescriptionTest.java View File

@@ -0,0 +1,102 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/

package org.apache.tools.ant.types;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.TaskdefsTest;

import junit.framework.TestCase;
import junit.framework.AssertionFailedError;

import java.io.*;

/**
* FilterSet testing
*
* @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
*/
public class DescriptionTest extends TaskdefsTest {

public DescriptionTest(String name) {
super(name);
}

public void setUp() {
}

public void tearDown() {
}

public void test1() {
configureProject("src/etc/testcases/types/description1.xml");
assertEquals("Single description failed", "Test Project Description", project.getDescription());
}

public void test2() {
configureProject("src/etc/testcases/types/description2.xml");
assertEquals("Multi line description failed", "Multi Line\nProject Description", project.getDescription());
}
public void test3() {
configureProject("src/etc/testcases/types/description3.xml");
assertEquals("Multi instance description failed", "Multi Instance Project Description", project.getDescription());
}
public void test4() {
configureProject("src/etc/testcases/types/description4.xml");
assertEquals("Multi instance nested description failed", "Multi Instance Nested Project Description", project.getDescription());
}
}

+ 4
- 2
src/testcases/org/apache/tools/ant/types/FilterSetTest.java View File

@@ -72,8 +72,6 @@ public class FilterSetTest extends TaskdefsTest {

static private final int BUF_SIZE = 32768;
private Project project;

public FilterSetTest(String name) {
super(name);
}
@@ -82,6 +80,10 @@ public class FilterSetTest extends TaskdefsTest {
configureProject("src/etc/testcases/types/filterset.xml");
}

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

public void test1() {
executeTarget("test1");
assertTrue("Filterset 1 failed", compareFiles("src/etc/testcases/types/gold/filterset1.txt",


Loading…
Cancel
Save