git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1588563 13f79535-47bb-0310-9956-ffa450edef68master
@@ -26,6 +26,16 @@ Changes that could break older environments: | |||||
might lead to blocking or other undefined behavior. | might lead to blocking or other undefined behavior. | ||||
Bugzilla Report 56149 | Bugzilla Report 56149 | ||||
* BuildFileTest and BaseSelectorTest have both been deprecated in | |||||
favour of BuildFileRule and BaseSelectorRule respectively, and the | |||||
tests that previously extended these base tests have been converted to | |||||
JUnit 4 tests using the new "rule"s. Any external test that sub-classed | |||||
a test in the Ant workspace, rather than BuildFileTest, will need | |||||
changed to either use JUnit4's annotations, or be modified to | |||||
extend BuildFileTest directly. This will not affect any tests that are | |||||
being executed by Ant's junit or batchtest tasks that are not specifically | |||||
testing Ant's code. | |||||
Fixed bugs: | Fixed bugs: | ||||
----------- | ----------- | ||||
@@ -140,78 +140,58 @@ | |||||
<p>For a robust component (and selectors are (Project)Components) tests are | <p>For a robust component (and selectors are (Project)Components) tests are | ||||
necessary. For testing Tasks we use JUnit TestCases - more specific | necessary. For testing Tasks we use JUnit TestCases - more specific | ||||
<tt>org.apache.tools.ant.BuildFileTest extends junit.framework.TestCase</tt>. | |||||
<tt>org.apache.tools.ant.BuildFileRule extends org.junit.rules.ExternalResource</tt>. | |||||
Some of its features like configure the (test) project by reading its buildfile and | Some of its features like configure the (test) project by reading its buildfile and | ||||
execute targets we need for selector tests also. Therefore we use that BuildFileTest. | |||||
execute targets we need for selector tests also. Therefore we use that BuildFileRule. | |||||
But testing selectors requires some more work: having a set of files, instantiate | But testing selectors requires some more work: having a set of files, instantiate | ||||
and configure the selector, check the selection work and more. Because we usually | and configure the selector, check the selection work and more. Because we usually | ||||
extend <tt>BaseExtendSelector</tt> its features have to be tested also (e.g. setError()). | extend <tt>BaseExtendSelector</tt> its features have to be tested also (e.g. setError()). | ||||
</p> | </p> | ||||
<p>That's why we have a base class for doing our selector tests: | |||||
<tt>org.apache.tools.ant.types.selectors.BaseSelectorTest</tt>.</p> | |||||
<p>That's why we have a test rule for doing our selector tests: | |||||
<tt>org.apache.tools.ant.types.selectors.BaseSelectorRule</tt>.</p> | |||||
<p>This class extends TestCase and therefore can included in the set of Ant's | |||||
unit tests. It holds an instance of preconfigured BuildFileTest. Configuration | |||||
is done by parsing the src/etc/testcases/types/selectors.xml. BaseSelectorTest | |||||
<p>This class extends ExternalResource and therefore can included in the set of Ant's | |||||
unit tests. It holds an instance of preconfigured BuildFileRule. Configuration | |||||
is done by parsing the src/etc/testcases/types/selectors.xml. BaseSelectorRule | |||||
then gives us helper methods for handling multiple selections. </p> | then gives us helper methods for handling multiple selections. </p> | ||||
<p>Because the term "testcase" or "testenvironment" are so often used, this | <p>Because the term "testcase" or "testenvironment" are so often used, this | ||||
special testenvironment got a new name: <i>bed</i>. Like you initialize the | |||||
test environment by calling setUp() and cleaning by calling tearDown() (<i>or like | |||||
to make your bed before go sleeping</i>) you have to do that work with your | |||||
<i>bed</i> by calling <tt>makeBed()</tt> respective <tt>cleanupBed()</tt>.</p> | |||||
special testenvironment got a new name: <i>bed</i>. The setup and cleanup of | |||||
the bed is all handled by the BaseSelectorRule so any test only has to handle | |||||
the actual test scenarios</p> | |||||
<p>A usual test scenario is<ol> | |||||
<li>make the bed</li> | |||||
<p>A usual test scenario is:</p> | |||||
<ol> | |||||
<li>instantiate the selector</li> | <li>instantiate the selector</li> | ||||
<li>configure the selector</li> | <li>configure the selector</li> | ||||
<li>let the selector do some work</li> | <li>let the selector do some work</li> | ||||
<li>verify the work</li> | <li>verify the work</li> | ||||
<li>clean the bed</li> | |||||
</ol> | |||||
</p> | |||||
</ol> | |||||
<p>For common way of instantiation you have to override the <tt>getInstance()</tt> | |||||
simply by returning a new object of your selector. For easier "selection and verification work" | |||||
BaseSelectorTest provides the method <tt>performTests()</tt> which | |||||
iterates over all files (and directories) in the String array <tt>filenames</tt> | |||||
and checks whether the given selector returns the expected result. If an error | |||||
occurred (especially the selector does not return the expected result) the test | |||||
fails and the failing filenames are logged.</p> | |||||
<p>An example test would be:<pre> | <p>An example test would be:<pre> | ||||
package org.apache.tools.ant.types.selectors; | package org.apache.tools.ant.types.selectors; | ||||
public class MySelectorTest extends BaseSelectorTest { | |||||
public MySelectorTest(String name) { | |||||
super(name); | |||||
} | |||||
public class MySelectorTest { | |||||
public BaseSelector getInstance() { | |||||
return new MySelector(); | |||||
} | |||||
@Rule | |||||
public final BaseSelectorRule selectorRule = new BaseSelectorRule(); | |||||
@Test | |||||
public void testCase1() { | public void testCase1() { | ||||
try { | |||||
// initialize test environment 'bed' | |||||
makeBed(); | |||||
// Configure the selector | |||||
MySelector s = (MySelector)getSelector(); | |||||
s.addParam("key1", "value1"); | |||||
s.addParam("key2", "value2"); | |||||
s.setXX(true); | |||||
s.setYY("a value"); | |||||
// do the tests | |||||
performTests(s, "FTTTTTTTTTTT"); // First is not selected - rest is | |||||
} finally { | |||||
// cleanup the environment | |||||
cleanupBed(); | |||||
} | |||||
// Configure the selector | |||||
MySelector s = new MySelector(); | |||||
s.addParam("key1", "value1"); | |||||
s.addParam("key2", "value2"); | |||||
s.setXX(true); | |||||
s.setYY("a value"); | |||||
// do the tests | |||||
assertEquals("FTTTTTTTT", selectorRule.selectionString(s)); | |||||
} | } | ||||
} | } | ||||
</pre> | </pre> | ||||
@@ -135,20 +135,28 @@ to them, sorry :-)</p> | |||||
we can call that from our testcase: | we can call that from our testcase: | ||||
<pre class="code"> | <pre class="code"> | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import org.junit.Before; | |||||
import org.junit.Assert; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
public class FindTest extends BuildFileTest { | |||||
public FindTest(String name) { | |||||
super(name); | |||||
} | |||||
public class FindTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("build.xml"); | configureProject("build.xml"); | ||||
} | } | ||||
@Test | |||||
public void testSimple() { | public void testSimple() { | ||||
<b>expectLog("use.simple", "test-value");</b> | |||||
buildRule.executeTarget("useSimgle"); | |||||
<b>Assert.assertEquals("test-value", buildRule.getLog());</b> | |||||
} | } | ||||
} | } | ||||
</pre> | </pre> | ||||
@@ -211,10 +219,14 @@ Maybe you find some more testcases. But this is enough for now.<br> | |||||
For each of these points we create a <tt>testXX</tt> method.</p> | For each of these points we create a <tt>testXX</tt> method.</p> | ||||
<pre class="code"> | <pre class="code"> | ||||
public class FindTest extends BuildFileTest { | |||||
public class FindTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
... // constructor, setUp as above | ... // constructor, setUp as above | ||||
@Test | |||||
public void testMissingFile() { | public void testMissingFile() { | ||||
<b>Find find = new Find();</b> | <b>Find find = new Find();</b> | ||||
try { | try { | ||||
@@ -227,6 +239,7 @@ public class FindTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testMissingLocation() { | public void testMissingLocation() { | ||||
Find find = new Find(); | Find find = new Find(); | ||||
<b>find.setFile("ant.jar");</b> | <b>find.setFile("ant.jar");</b> | ||||
@@ -238,6 +251,7 @@ public class FindTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testMissingFileset() { | public void testMissingFileset() { | ||||
Find find = new Find(); | Find find = new Find(); | ||||
find.setFile("ant.jar"); | find.setFile("ant.jar"); | ||||
@@ -250,15 +264,17 @@ public class FindTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testFileNotPresent() { | public void testFileNotPresent() { | ||||
executeTarget("testFileNotPresent"); | |||||
String result = getProject().getProperty("location.ant-jar"); | |||||
buildRule.executeTarget("testFileNotPresent"); | |||||
String result = buildRule.getProject().getProperty("location.ant-jar"); | |||||
assertNull("Property set to wrong value.", result); | assertNull("Property set to wrong value.", result); | ||||
} | } | ||||
@Test | |||||
public void testFilePresent() { | public void testFilePresent() { | ||||
executeTarget("testFilePresent"); | |||||
String result = getProject().getProperty("location.ant-jar"); | |||||
buildRule.executeTarget("testFilePresent"); | |||||
String result = buildRule.getProject().getProperty("location.ant-jar"); | |||||
assertNotNull("Property not set.", result); | assertNotNull("Property not set.", result); | ||||
assertTrue("Wrong file found.", result.endsWith("ant.jar")); | assertTrue("Wrong file found.", result.endsWith("ant.jar")); | ||||
} | } | ||||
@@ -906,7 +922,7 @@ entry. For both we need some information:</p> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<th>attachments</th> | <th>attachments</th> | ||||
<td><i>all files needed to apply the path</td> | |||||
<td><i>all files needed to apply the path</i></td> | |||||
<td>Archive containing a patch with the new and modified resources</td> | <td>Archive containing a patch with the new and modified resources</td> | ||||
</tr> | </tr> | ||||
</table> | </table> | ||||
@@ -17,8 +17,7 @@ | |||||
<html> | <html> | ||||
<head> | <head> | ||||
<title>Tutorial: Writing Tasks</title> | <title>Tutorial: Writing Tasks</title> | ||||
<link rel="stylesheet" type="text/css" href="stylesheets/style.css"> | |||||
</link> | |||||
<link rel="stylesheet" type="text/css" href="stylesheets/style.css" /> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<h1>Tutorial: Writing Tasks</h1> | <h1>Tutorial: Writing Tasks</h1> | ||||
@@ -596,12 +595,9 @@ Next step: test ... | |||||
<h2>Test the Task</h2> | <h2>Test the Task</h2> | ||||
<p>We have written a test already: the use.* tasks in the buildfile. But its | <p>We have written a test already: the use.* tasks in the buildfile. But its | ||||
difficult to test that automatically. Common (and in Ant) used is JUnit for | difficult to test that automatically. Common (and in Ant) used is JUnit for | ||||
that. For testing tasks Ant provides a baseclass <tt>org.apache.tools.ant.BuildFileTest</tt>. | |||||
This class extends <tt>junit.framework.TestCase</tt> and can therefore be integrated | |||||
into the unit tests. But this class provides some for testing tasks useful methods: | |||||
initialize Ant, load a buildfile, execute targets, | |||||
expecting BuildExceptions with a specified text, expect a special text | |||||
in the output log ... </p> | |||||
that. For testing tasks Ant provides a JUnit Rule <tt>org.apache.tools.ant.BuildFileRule</tt>. | |||||
This class provides some for testing tasks useful methods: | |||||
initialize Ant, load a buildfile, execute targets, capturing debug and run logs ...</p> | |||||
<p>In Ant it is usual that the testcase has the same name as the task with a prepending | <p>In Ant it is usual that the testcase has the same name as the task with a prepending | ||||
<i>Test</i>, therefore we will create a file <i>HelloWorldTest.java</i>. Because we | <i>Test</i>, therefore we will create a file <i>HelloWorldTest.java</i>. Because we | ||||
@@ -677,49 +673,68 @@ and <code><junitreport></code>. So we add to the buildfile:</p> | |||||
... | ... | ||||
</pre> | </pre> | ||||
<p>Back to the <i>src/HelloWorldTest.java</i>. We create a class extending | |||||
<i>BuildFileTest</i> with String-constructor (JUnit-standard), a <i>setUp()</i> | |||||
method initializing Ant and for each testcase (targets use.*) a <i>testXX()</i> | |||||
method invoking that target.</p> | |||||
<p>Back to the <i>src/HelloWorldTest.java</i>. We create a class with a public | |||||
<i>BuildFileRule</i> field annotated with JUnit's <i>@Rule</i> annotation. As per | |||||
conventional JUnit4 tests, this class should have no constructors, or a default no-args | |||||
constructor, setup methods should be annotated with <i>@Before</i>, tear down methods | |||||
annotated with <i>@After</i> and any test method annotated with <i>@Test</i>. | |||||
<pre class="code"> | <pre class="code"> | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Assert; | |||||
import org.junit.Test; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.apache.tools.ant.AntAssert; | |||||
import org.apache.tools.ant.BuildException; | |||||
public class HelloWorldTest extends BuildFileTest { | |||||
public class HelloWorldTest { | |||||
public HelloWorldTest(String s) { | |||||
super(s); | |||||
} | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
// initialize Ant | // initialize Ant | ||||
configureProject("build.xml"); | |||||
buildRule.configureProject("build.xml"); | |||||
} | } | ||||
@Test | |||||
public void testWithout() { | public void testWithout() { | ||||
executeTarget("use.without"); | |||||
assertEquals("Message was logged but should not.", getLog(), ""); | |||||
buildRule.executeTarget("use.without"); | |||||
assertEquals("Message was logged but should not.", buildRule.getLog(), ""); | |||||
} | } | ||||
public void testMessage() { | public void testMessage() { | ||||
// execute target 'use.nestedText' and expect a message | // execute target 'use.nestedText' and expect a message | ||||
// 'attribute-text' in the log | // 'attribute-text' in the log | ||||
expectLog("use.message", "attribute-text"); | |||||
buildRule.executeTarget("use.message"); | |||||
Assert.assertEquals("attribute-text", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testFail() { | public void testFail() { | ||||
// execute target 'use.fail' and expect a BuildException | // execute target 'use.fail' and expect a BuildException | ||||
// with text 'Fail requested.' | // with text 'Fail requested.' | ||||
expectBuildException("use.fail", "Fail requested."); | |||||
try { | |||||
buildRule.executeTarget("use.fail"); | |||||
fail("BuildException should have been thrown as task was set to fail"); | |||||
} catch (BuildException ex) { | |||||
Assert.assertEquals("fail requested", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testNestedText() { | public void testNestedText() { | ||||
expectLog("use.nestedText", "nested-text"); | |||||
buildRule.executeTarget("use.nestedText"); | |||||
Assert.assertEquals("nested-text", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testNestedElement() { | public void testNestedElement() { | ||||
executeTarget("use.nestedElement"); | |||||
assertLogContaining("Nested Element 1"); | |||||
assertLogContaining("Nested Element 2"); | |||||
buildRule.executeTarget("use.nestedElement"); | |||||
AntAssert.assertContains("Nested Element 1", buildRule.getLog()); | |||||
AntAssert.assertContains("Nested Element 2", buildRule.getLog()); | |||||
} | } | ||||
} | } | ||||
</pre> | </pre> | ||||
@@ -790,14 +805,14 @@ The ZIP provided there contains</p><ul> | |||||
<a href="tutorial-writing-tasks-src.zip">here [7]</a> inside the manual. | <a href="tutorial-writing-tasks-src.zip">here [7]</a> inside the manual. | ||||
</p> | </p> | ||||
<p>Used Links:<br></br> | |||||
[1] <a href="http://ant.apache.org/manual/properties.html#built-in-props">http://ant.apache.org/manual/properties.html#built-in-props</a><br></br> | |||||
[2] <a href="http://ant.apache.org/manual/Tasks/taskdef.html">http://ant.apache.org/manual/Tasks/taskdef.html</a><br></br> | |||||
[3] <a href="http://ant.apache.org/manual/develop.html#set-magic">http://ant.apache.org/manual/develop.html#set-magic</a><br></br> | |||||
[4] <a href="http://ant.apache.org/manual/develop.html#nested-elements">http://ant.apache.org/manual/develop.html#nested-elements</a><br></br> | |||||
[5] <a href="http://gump.covalent.net/jars/latest/ant/ant-testutil.jar">http://gump.covalent.net/jars/latest/ant/ant-testutil.jar</a><br></br> | |||||
[6] <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22570">http://issues.apache.org/bugzilla/show_bug.cgi?id=22570</a><br></br> | |||||
[7] <a href="tutorial-writing-tasks-src.zip">tutorial-writing-tasks-src.zip</a><br></br> | |||||
<p>Used Links:<br /> | |||||
[1] <a href="http://ant.apache.org/manual/properties.html#built-in-props">http://ant.apache.org/manual/properties.html#built-in-props</a><br /> | |||||
[2] <a href="http://ant.apache.org/manual/Tasks/taskdef.html">http://ant.apache.org/manual/Tasks/taskdef.html</a><br /> | |||||
[3] <a href="http://ant.apache.org/manual/develop.html#set-magic">http://ant.apache.org/manual/develop.html#set-magic</a><br /> | |||||
[4] <a href="http://ant.apache.org/manual/develop.html#nested-elements">http://ant.apache.org/manual/develop.html#nested-elements</a><br /> | |||||
[5] <a href="http://gump.covalent.net/jars/latest/ant/ant-testutil.jar">http://gump.covalent.net/jars/latest/ant/ant-testutil.jar</a><br /> | |||||
[6] <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22570">http://issues.apache.org/bugzilla/show_bug.cgi?id=22570</a><br /> | |||||
[7] <a href="tutorial-writing-tasks-src.zip">tutorial-writing-tasks-src.zip</a><br /> | |||||
</p> | </p> | ||||
</body> | </body> | ||||
@@ -63,13 +63,10 @@ a=b= | |||||
<target name="test3"> | <target name="test3"> | ||||
<!-- create an empty file --> | <!-- create an empty file --> | ||||
<touch file="${output}/copytest3.tmp"/> | <touch file="${output}/copytest3.tmp"/> | ||||
<!--wait --> | |||||
<sleep seconds="4"/> | |||||
<!-- copy a different file to two places --> | <!-- copy a different file to two places --> | ||||
<copy file="copy.xml" tofile="${output}/copytest3a.tmp" overwrite="true"/> | <copy file="copy.xml" tofile="${output}/copytest3a.tmp" overwrite="true"/> | ||||
<copy file="copy.xml" tofile="${output}/copytest3b.tmp" overwrite="true"/> | <copy file="copy.xml" tofile="${output}/copytest3b.tmp" overwrite="true"/> | ||||
<!--wait --> | |||||
<sleep seconds="4"/> | |||||
</target><target name="test3Part2"> | |||||
<!-- copy an old file onto a newer file (should not work) --> | <!-- copy an old file onto a newer file (should not work) --> | ||||
<copy file="${output}/copytest3.tmp" tofile="${output}/copytest3b.tmp" /> | <copy file="${output}/copytest3.tmp" tofile="${output}/copytest3b.tmp" /> | ||||
<!-- copy an older file onto a new one, should succeed --> | <!-- copy an older file onto a new one, should succeed --> | ||||
@@ -66,7 +66,6 @@ | |||||
</target> | </target> | ||||
<target name="testRecreateNewerFileSetup" depends="test4"> | <target name="testRecreateNewerFileSetup" depends="test4"> | ||||
<sleep seconds="3"/> | |||||
<touch file="jar.xml"/> | <touch file="jar.xml"/> | ||||
</target> | </target> | ||||
@@ -111,7 +110,6 @@ | |||||
</manifest> | </manifest> | ||||
<jar destfile="${tmp.jar}" basedir="." includes="jar.xml" | <jar destfile="${tmp.jar}" basedir="." includes="jar.xml" | ||||
manifest="${tmp.dir}/manifest"/> | manifest="${tmp.dir}/manifest"/> | ||||
<sleep seconds="3"/> | |||||
<touch file="jar.xml"/> | <touch file="jar.xml"/> | ||||
<jar destfile="${tmp.jar}" basedir="." includes="jar.xml" | <jar destfile="${tmp.jar}" basedir="." includes="jar.xml" | ||||
update="true"/> | update="true"/> | ||||
@@ -110,14 +110,12 @@ | |||||
<!-- test9 will have been run before that --> | <!-- test9 will have been run before that --> | ||||
<target name="normalRecompile"> | <target name="normalRecompile"> | ||||
<sleep seconds="2"/> | |||||
<touch file="${output}/extended.calc.g"/> | <touch file="${output}/extended.calc.g"/> | ||||
<antlr target="${output}/extended.calc.g" glib="${output}/antlr.g"/> | <antlr target="${output}/extended.calc.g" glib="${output}/antlr.g"/> | ||||
</target> | </target> | ||||
<!-- test9 will have been run before that --> | <!-- test9 will have been run before that --> | ||||
<target name="supergrammarChangeRecompile"> | <target name="supergrammarChangeRecompile"> | ||||
<sleep seconds="2"/> | |||||
<touch file="${output}/antlr.g"/> | <touch file="${output}/antlr.g"/> | ||||
<antlr target="${output}/extended.calc.g" glib="${output}/antlr.g"/> | <antlr target="${output}/extended.calc.g" glib="${output}/antlr.g"/> | ||||
</target> | </target> | ||||
@@ -19,11 +19,13 @@ | |||||
<project name="depend" basedir="." default="help"> | <project name="depend" basedir="." default="help"> | ||||
<import file="../../../buildfiletest-base.xml"/> | <import file="../../../buildfiletest-base.xml"/> | ||||
<target name="setUp"> | |||||
<mkdir dir="${output}" /> | |||||
<property name="tempsrc.dir" value="${output}/tempsrc.dir"/> | <property name="tempsrc.dir" value="${output}/tempsrc.dir"/> | ||||
<property name="cache.dir" value="${output}/tempsrc.dir"/> | <property name="cache.dir" value="${output}/tempsrc.dir"/> | ||||
<property name="classes.dir" value="${output}/classes"/> | <property name="classes.dir" value="${output}/classes"/> | ||||
<target name="setUp"> | |||||
<mkdir dir="${output}" /> | |||||
</target> | </target> | ||||
<property name="src1.dir" value="src1"/> | <property name="src1.dir" value="src1"/> | ||||
@@ -71,16 +73,14 @@ | |||||
<javac srcdir="${tempsrc.dir}" destdir="${classes.dir}"/> | <javac srcdir="${tempsrc.dir}" destdir="${classes.dir}"/> | ||||
</target> | </target> | ||||
<target name="testdirect" depends="src1setup, compile"> | |||||
<sleep seconds="3"/> | |||||
<target name="testdirect"> | |||||
<delete file="${tempsrc.dir}/C.java"/> | <delete file="${tempsrc.dir}/C.java"/> | ||||
<copy file="${src1.dir}/C.java" tofile="${tempsrc.dir}/C.java"/> | <copy file="${src1.dir}/C.java" tofile="${tempsrc.dir}/C.java"/> | ||||
<depend srcdir="${tempsrc.dir}" destdir="${classes.dir}"/> | <depend srcdir="${tempsrc.dir}" destdir="${classes.dir}"/> | ||||
<fileset id="result" dir="${classes.dir}"/> | <fileset id="result" dir="${classes.dir}"/> | ||||
</target> | </target> | ||||
<target name="testclosure" depends="src1setup, compile"> | |||||
<sleep seconds="3"/> | |||||
<target name="testclosure"> | |||||
<delete file="${tempsrc.dir}/C.java"/> | <delete file="${tempsrc.dir}/C.java"/> | ||||
<copy file="${src1.dir}/C.java" tofile="${tempsrc.dir}/C.java"/> | <copy file="${src1.dir}/C.java" tofile="${tempsrc.dir}/C.java"/> | ||||
<depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" closure="yes"/> | <depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" closure="yes"/> | ||||
@@ -138,16 +138,14 @@ | |||||
<classfileset id="result" dir="${classes.dir}" rootclass="E"/> | <classfileset id="result" dir="${classes.dir}" rootclass="E"/> | ||||
</target> | </target> | ||||
<target name="testinner" depends="src2setup, compile"> | |||||
<sleep seconds="3"/> | |||||
<target name="testinner"> | |||||
<delete file="${tempsrc.dir}/B.java"/> | <delete file="${tempsrc.dir}/B.java"/> | ||||
<copy file="${src2.dir}/B.java" tofile="${tempsrc.dir}/B.java"/> | <copy file="${src2.dir}/B.java" tofile="${tempsrc.dir}/B.java"/> | ||||
<depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" closure="yes"/> | <depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" closure="yes"/> | ||||
<fileset id="result" dir="${classes.dir}"/> | <fileset id="result" dir="${classes.dir}"/> | ||||
</target> | </target> | ||||
<target name="testinnerinner" depends="src3setup, compile"> | |||||
<sleep seconds="3"/> | |||||
<target name="testinnerinner"> | |||||
<delete file="${tempsrc.dir}/B.java"/> | <delete file="${tempsrc.dir}/B.java"/> | ||||
<copy file="${src3.dir}/B.java" tofile="${tempsrc.dir}/B.java"/> | <copy file="${src3.dir}/B.java" tofile="${tempsrc.dir}/B.java"/> | ||||
<depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" closure="yes"/> | <depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" closure="yes"/> | ||||
@@ -173,10 +171,9 @@ | |||||
</path> | </path> | ||||
<javac srcdir="${tempsrc.dir}" destdir="${classes.dir}" | <javac srcdir="${tempsrc.dir}" destdir="${classes.dir}" | ||||
classpathref="path.compile"/> | |||||
classpathref="path.compile" fork="false" /> | |||||
<sleep seconds="3"/> | |||||
<depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" | |||||
<depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" | |||||
closure="yes" dump="yes" | closure="yes" dump="yes" | ||||
classpathref="path.compile"/> | classpathref="path.compile"/> | ||||
@@ -190,8 +187,7 @@ | |||||
destdir="${classes.dir}" closure="yes"/> | destdir="${classes.dir}" closure="yes"/> | ||||
</target> | </target> | ||||
<target name="testnonpublic" depends="src5setup, compile"> | |||||
<sleep seconds="3"/> | |||||
<target name="testnonpublic"> | |||||
<delete file="${tempsrc.dir}/B.java"/> | <delete file="${tempsrc.dir}/B.java"/> | ||||
<copy file="${src2.dir}/B.java" tofile="${tempsrc.dir}/B.java"/> | <copy file="${src2.dir}/B.java" tofile="${tempsrc.dir}/B.java"/> | ||||
<depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" closure="yes"/> | <depend srcdir="${tempsrc.dir}" destdir="${classes.dir}" closure="yes"/> | ||||
@@ -280,8 +280,7 @@ | |||||
<!-- JUnit4 Ignore and Assume for skipping tests --> | <!-- JUnit4 Ignore and Assume for skipping tests --> | ||||
<target name="testSkippableTests"> | <target name="testSkippableTests"> | ||||
<mkdir dir="${output}"/> | <mkdir dir="${output}"/> | ||||
<junit fork="true"> | |||||
<classpath refid="test"/> | |||||
<junit> | |||||
<formatter type="xml"/> | <formatter type="xml"/> | ||||
<classpath refid="test"/> | <classpath refid="test"/> | ||||
<batchtest todir="${output}"> | <batchtest todir="${output}"> | ||||
@@ -297,8 +296,7 @@ | |||||
<!-- Skipping classes that are not tests --> | <!-- Skipping classes that are not tests --> | ||||
<target name="testNonTests"> | <target name="testNonTests"> | ||||
<mkdir dir="${output}"/> | <mkdir dir="${output}"/> | ||||
<junit fork="true"> | |||||
<classpath refid="test"/> | |||||
<junit> | |||||
<formatter type="xml"/> | <formatter type="xml"/> | ||||
<classpath refid="test"/> | <classpath refid="test"/> | ||||
<batchtest todir="${output}" skipNonTests="true"> | <batchtest todir="${output}" skipNonTests="true"> | ||||
@@ -313,8 +311,7 @@ | |||||
<!-- Not skipping classes that are not tests --> | <!-- Not skipping classes that are not tests --> | ||||
<target name="testNonTestsRun"> | <target name="testNonTestsRun"> | ||||
<mkdir dir="${output}"/> | <mkdir dir="${output}"/> | ||||
<junit fork="true"> | |||||
<classpath refid="test"/> | |||||
<junit> | |||||
<formatter type="xml"/> | <formatter type="xml"/> | ||||
<classpath refid="test"/> | <classpath refid="test"/> | ||||
<batchtest todir="${output}" skipNonTests="false"> | <batchtest todir="${output}" skipNonTests="false"> | ||||
@@ -43,7 +43,7 @@ | |||||
<!-- use in conjunction with testDirectoryDateDoesNotChange to make sure something will happen --> | <!-- use in conjunction with testDirectoryDateDoesNotChange to make sure something will happen --> | ||||
<target name="touchDirectory"> | <target name="touchDirectory"> | ||||
<copy file="replaceregexp.properties" tofile="${output}/test.properties" /> | <copy file="replaceregexp.properties" tofile="${output}/test.properties" /> | ||||
<sleep seconds="2"/> | |||||
</target> | </target> | ||||
<target name="testDirectoryDateDoesNotChange"> | <target name="testDirectoryDateDoesNotChange"> | ||||
<replaceregexp file="${output}/test.properties" byline="true"> | <replaceregexp file="${output}/test.properties" byline="true"> | ||||
@@ -44,7 +44,7 @@ | |||||
before they have finnished (hopefully). Tweak if needed. | before they have finnished (hopefully). Tweak if needed. | ||||
--> | --> | ||||
<property name="delay" value="3"/> | |||||
<property name="delay" value="0"/> | |||||
<import file="../../../buildfiletest-base.xml"/> | <import file="../../../buildfiletest-base.xml"/> | ||||
@@ -19,7 +19,6 @@ | |||||
<target name="setUp"> | <target name="setUp"> | ||||
<touch file="source"/> | <touch file="source"/> | ||||
<sleep seconds="3"/> | |||||
<touch file="target"/> | <touch file="target"/> | ||||
</target> | </target> | ||||
@@ -28,19 +27,19 @@ | |||||
<delete file="target"/> | <delete file="target"/> | ||||
</target> | </target> | ||||
<target name="testFilesetUpToDate" depends="setUp"> | |||||
<target name="testFilesetUpToDate"> | |||||
<uptodate property="foo" targetfile="target"> | <uptodate property="foo" targetfile="target"> | ||||
<srcfiles dir="." includes="source"/> | <srcfiles dir="." includes="source"/> | ||||
</uptodate> | </uptodate> | ||||
</target> | </target> | ||||
<target name="testFilesetOutOfDate" depends="setUp"> | |||||
<target name="testFilesetOutOfDate"> | |||||
<uptodate property="foo" targetfile="source"> | <uptodate property="foo" targetfile="source"> | ||||
<srcfiles dir="." includes="target"/> | <srcfiles dir="." includes="target"/> | ||||
</uptodate> | </uptodate> | ||||
</target> | </target> | ||||
<target name="testRCUpToDate" depends="setUp"> | |||||
<target name="testRCUpToDate"> | |||||
<uptodate property="foo" targetfile="target"> | <uptodate property="foo" targetfile="target"> | ||||
<srcresources> | <srcresources> | ||||
<fileset dir="." includes="source"/> | <fileset dir="." includes="source"/> | ||||
@@ -48,7 +47,7 @@ | |||||
</uptodate> | </uptodate> | ||||
</target> | </target> | ||||
<target name="testRCOutOfDate" depends="setUp"> | |||||
<target name="testRCOutOfDate"> | |||||
<uptodate property="foo" targetfile="source"> | <uptodate property="foo" targetfile="source"> | ||||
<srcresources> | <srcresources> | ||||
<fileset dir="." includes="target"/> | <fileset dir="." includes="target"/> | ||||
@@ -118,7 +118,6 @@ | |||||
</target> | </target> | ||||
<target name="testUpdateIsNecessary" depends="feather"> | <target name="testUpdateIsNecessary" depends="feather"> | ||||
<sleep seconds="5" /> | |||||
<touch file="${output}/dummyfile" /> | <touch file="${output}/dummyfile" /> | ||||
<copy file="../asf-logo.gif" todir="${output}"/> | <copy file="../asf-logo.gif" todir="${output}"/> | ||||
<zip destFile="${output}/asf-logo.gif.zip" | <zip destFile="${output}/asf-logo.gif.zip" | ||||
@@ -88,11 +88,8 @@ | |||||
<mkdir dir="${mirror.dir}/tar/bz2" /> | <mkdir dir="${mirror.dir}/tar/bz2" /> | ||||
<touch file="${mirror.dir}/asf-logo.gif.md5"/> | <touch file="${mirror.dir}/asf-logo.gif.md5"/> | ||||
<touch file="${mirror.dir}/asf-logo.gif.bz2"/> | <touch file="${mirror.dir}/asf-logo.gif.bz2"/> | ||||
<sleep seconds="2"/> | |||||
<touch file="${mirror.dir}/zip/asf-logo.gif.zip"/> | <touch file="${mirror.dir}/zip/asf-logo.gif.zip"/> | ||||
<sleep seconds="3"/> | |||||
<touch file="${mirror.dir}/tar/asf-logo.gif.tar"/> | <touch file="${mirror.dir}/tar/asf-logo.gif.tar"/> | ||||
<sleep seconds="2"/> | |||||
<touch file="${mirror.dir}/tar/asf-logo-huge.tar.gz"/> | <touch file="${mirror.dir}/tar/asf-logo-huge.tar.gz"/> | ||||
<touch file="${mirror.dir}/tar/gz/asf-logo.gif.tar.gz"/> | <touch file="${mirror.dir}/tar/gz/asf-logo.gif.tar.gz"/> | ||||
<touch file="${mirror.dir}/tar/bz2/asf-logo.gif.tar.bz2"/> | <touch file="${mirror.dir}/tar/bz2/asf-logo.gif.tar.bz2"/> | ||||
@@ -0,0 +1,72 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
* | |||||
*/ | |||||
package org.apache.tools.ant; | |||||
import static org.junit.Assert.assertFalse; | |||||
import static org.junit.Assert.assertTrue; | |||||
/** | |||||
* Provides common assert functions for use across multiple tests, similar to the <tt>Assert</tt>s | |||||
* within JUnit. | |||||
*/ | |||||
public class AntAssert { | |||||
/** | |||||
* Assert that a string contains the given substring. | |||||
* @param message the message to fail with if the substring is not present in the target string. | |||||
* @param needle the string to search for. | |||||
* @param haystack the string to search in. | |||||
*/ | |||||
public static void assertContains(String message, String needle, String haystack) { | |||||
String formattedMessage = (message == null ? "" : message + " "); | |||||
assertTrue(formattedMessage + String.format("expected message containing: <%s> but got: <%s>", needle, haystack), haystack.contains(needle)); | |||||
} | |||||
/** | |||||
* Assert that a string contains the given substring. A default failure message will be used if the target string | |||||
* is not found. | |||||
* @param needle the target string to search for. | |||||
* @param haystack the string to search in. | |||||
*/ | |||||
public static void assertContains(String needle, String haystack) { | |||||
assertContains("", needle, haystack); | |||||
} | |||||
/** | |||||
* Assert that a string does not contain the given substring. | |||||
* @param message the message to fail with if the substring is present in the target string. | |||||
* @param needle the string to search for. | |||||
* @param haystack the string to search in. | |||||
*/ | |||||
public static void assertNotContains(String message, String needle, String haystack) { | |||||
String formattedMessage = (message == null ? "" : message + " "); | |||||
assertFalse(formattedMessage + String.format("expected message not to contain: <%s> but got: <%s>", needle, haystack), haystack.contains(needle)); | |||||
} | |||||
/** | |||||
* Assert that a string does not contain the given substring. A default failure message will be used if the target | |||||
* string is found. | |||||
* @param needle the target string to search for. | |||||
* @param haystack the string to search in. | |||||
*/ | |||||
public static void assertNotContains(String needle, String haystack) { | |||||
assertNotContains("", needle, haystack); | |||||
} | |||||
} |
@@ -25,26 +25,27 @@ import java.util.Arrays; | |||||
import java.util.Collections; | import java.util.Collections; | ||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import java.util.List; | import java.util.List; | ||||
import junit.framework.TestCase; | |||||
import org.apache.tools.ant.Project; | |||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.junit.Before; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertTrue; | |||||
/** | /** | ||||
* Test case for ant class loader | * Test case for ant class loader | ||||
* | * | ||||
*/ | */ | ||||
public class AntClassLoaderDelegationTest extends TestCase { | |||||
public class AntClassLoaderDelegationTest { | |||||
/** Instance of a utility class to use for file operations. */ | /** Instance of a utility class to use for file operations. */ | ||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | ||||
private Project p; | private Project p; | ||||
public AntClassLoaderDelegationTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
p = new Project(); | p = new Project(); | ||||
p.init(); | p.init(); | ||||
@@ -53,7 +54,8 @@ public class AntClassLoaderDelegationTest extends TestCase { | |||||
/** Sample resource present in build/testcases/ */ | /** Sample resource present in build/testcases/ */ | ||||
private static final String TEST_RESOURCE | private static final String TEST_RESOURCE | ||||
= "apache/tools/ant/IncludeTest.class"; | = "apache/tools/ant/IncludeTest.class"; | ||||
@Test | |||||
public void testFindResources() throws Exception { | public void testFindResources() throws Exception { | ||||
// This path should contain the class files for these testcases: | // This path should contain the class files for these testcases: | ||||
String buildTestcases = System.getProperty("build.tests"); | String buildTestcases = System.getProperty("build.tests"); | ||||
@@ -79,6 +81,7 @@ public class AntClassLoaderDelegationTest extends TestCase { | |||||
enum2List(acl.getResources(TEST_RESOURCE))); | enum2List(acl.getResources(TEST_RESOURCE))); | ||||
} | } | ||||
@Test | |||||
public void testFindIsolateResources() throws Exception { | public void testFindIsolateResources() throws Exception { | ||||
String buildTestcases = System.getProperty("build.tests"); | String buildTestcases = System.getProperty("build.tests"); | ||||
assertNotNull("defined ${build.tests}", buildTestcases); | assertNotNull("defined ${build.tests}", buildTestcases); | ||||
@@ -19,15 +19,16 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import java.io.File; | import java.io.File; | ||||
import junit.framework.TestCase; | |||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.junit.Test; | |||||
/** | /** | ||||
* Used to verify the performance effect of classloader changes. | * Used to verify the performance effect of classloader changes. | ||||
*/ | */ | ||||
public class AntClassLoaderPerformance extends TestCase { | |||||
public class AntClassLoaderPerformance { | |||||
@Test | |||||
public void testFindClass() throws Exception { | public void testFindClass() throws Exception { | ||||
String testCaseURL = getClass() | String testCaseURL = getClass() | ||||
.getClassLoader().getResource("junit/framework/TestCase.class") | .getClassLoader().getResource("junit/framework/TestCase.class") | ||||
@@ -18,63 +18,75 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.PrintStream; | import java.io.PrintStream; | ||||
import java.net.URL; | import java.net.URL; | ||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
* Test case for ant class loader | * Test case for ant class loader | ||||
* | * | ||||
*/ | */ | ||||
public class AntClassLoaderTest extends BuildFileTest { | |||||
public class AntClassLoaderTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
private AntClassLoader loader; | private AntClassLoader loader; | ||||
public AntClassLoaderTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
super.configureProject("src/etc/testcases/core/antclassloader.xml"); | |||||
getProject().executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/core/antclassloader.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
if (loader != null) { | if (loader != null) { | ||||
loader.cleanup(); | loader.cleanup(); | ||||
} | } | ||||
try { | |||||
super.tearDown(); | |||||
} catch ( Exception e) { | |||||
System.err.println(e.getMessage()); | |||||
} | |||||
} | } | ||||
//test inspired by bug report 37085 | //test inspired by bug report 37085 | ||||
@Test | |||||
public void testJarWithManifestInDirWithSpace() { | public void testJarWithManifestInDirWithSpace() { | ||||
String mainjarstring = getProject().getProperty("main.jar"); | |||||
String extjarstring = getProject().getProperty("ext.jar"); | |||||
Path myPath = new Path(getProject()); | |||||
String mainjarstring = buildRule.getProject().getProperty("main.jar"); | |||||
String extjarstring = buildRule.getProject().getProperty("ext.jar"); | |||||
Path myPath = new Path(buildRule.getProject()); | |||||
myPath.setLocation(new File(mainjarstring)); | myPath.setLocation(new File(mainjarstring)); | ||||
getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = getProject().createClassLoader(myPath); | |||||
buildRule.getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = buildRule.getProject().createClassLoader(myPath); | |||||
String path = loader.getClasspath(); | String path = loader.getClasspath(); | ||||
assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | ||||
} | } | ||||
@Test | |||||
public void testJarWithManifestInNonAsciiDir() { | public void testJarWithManifestInNonAsciiDir() { | ||||
String mainjarstring = getProject().getProperty("main.jar.nonascii"); | |||||
String extjarstring = getProject().getProperty("ext.jar.nonascii"); | |||||
Path myPath = new Path(getProject()); | |||||
String mainjarstring = buildRule.getProject().getProperty("main.jar.nonascii"); | |||||
String extjarstring = buildRule.getProject().getProperty("ext.jar.nonascii"); | |||||
Path myPath = new Path(buildRule.getProject()); | |||||
myPath.setLocation(new File(mainjarstring)); | myPath.setLocation(new File(mainjarstring)); | ||||
getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = getProject().createClassLoader(myPath); | |||||
buildRule.getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = buildRule.getProject().createClassLoader(myPath); | |||||
String path = loader.getClasspath(); | String path = loader.getClasspath(); | ||||
assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | ||||
} | } | ||||
@Test | |||||
public void testCleanup() throws BuildException { | public void testCleanup() throws BuildException { | ||||
Path path = new Path(project, "."); | |||||
loader = project.createClassLoader(path); | |||||
Path path = new Path(buildRule.getProject(), "."); | |||||
loader = buildRule.getProject().createClassLoader(path); | |||||
try { | try { | ||||
// we don't expect to find this | // we don't expect to find this | ||||
loader.findClass("fubar"); | loader.findClass("fubar"); | ||||
@@ -95,7 +107,7 @@ public class AntClassLoaderTest extends BuildFileTest { | |||||
} | } | ||||
// tell the build it is finished | // tell the build it is finished | ||||
project.fireBuildFinished(null); | |||||
buildRule.getProject().fireBuildFinished(null); | |||||
try { | try { | ||||
// we don't expect to find this | // we don't expect to find this | ||||
loader.findClass("fubar"); | loader.findClass("fubar"); | ||||
@@ -107,40 +119,43 @@ public class AntClassLoaderTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testGetPackage() throws Exception { | public void testGetPackage() throws Exception { | ||||
executeTarget("prepareGetPackageTest"); | |||||
Path myPath = new Path(getProject()); | |||||
myPath.setLocation(new File(getProject().getProperty("test.jar"))); | |||||
getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = getProject().createClassLoader(myPath); | |||||
buildRule.executeTarget("prepareGetPackageTest"); | |||||
Path myPath = new Path(buildRule.getProject()); | |||||
myPath.setLocation(new File(buildRule.getProject().getProperty("test.jar"))); | |||||
buildRule.getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = buildRule.getProject().createClassLoader(myPath); | |||||
assertNotNull("should find class", loader.findClass("org.example.Foo")); | assertNotNull("should find class", loader.findClass("org.example.Foo")); | ||||
assertNotNull("should find package", | assertNotNull("should find package", | ||||
new GetPackageWrapper(loader).getPackage("org.example")); | new GetPackageWrapper(loader).getPackage("org.example")); | ||||
} | } | ||||
@Test | |||||
public void testCodeSource() throws Exception { | public void testCodeSource() throws Exception { | ||||
executeTarget("prepareGetPackageTest"); | |||||
Path myPath = new Path(getProject()); | |||||
File testJar = new File(getProject().getProperty("test.jar")); | |||||
buildRule.executeTarget("prepareGetPackageTest"); | |||||
Path myPath = new Path(buildRule.getProject()); | |||||
File testJar = new File(buildRule.getProject().getProperty("test.jar")); | |||||
myPath.setLocation(testJar); | myPath.setLocation(testJar); | ||||
getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = getProject().createClassLoader(myPath); | |||||
Class foo = loader.findClass("org.example.Foo"); | |||||
buildRule.getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = buildRule.getProject().createClassLoader(myPath); | |||||
Class<?> foo = loader.findClass("org.example.Foo"); | |||||
URL codeSourceLocation = | URL codeSourceLocation = | ||||
foo.getProtectionDomain().getCodeSource().getLocation(); | foo.getProtectionDomain().getCodeSource().getLocation(); | ||||
assertEquals(codeSourceLocation + " should point to test.jar", | assertEquals(codeSourceLocation + " should point to test.jar", | ||||
FileUtils.getFileUtils().getFileURL(testJar), codeSourceLocation); | FileUtils.getFileUtils().getFileURL(testJar), codeSourceLocation); | ||||
} | } | ||||
@Test | |||||
public void testSignedJar() throws Exception { | public void testSignedJar() throws Exception { | ||||
executeTarget("signTestJar"); | |||||
File jar = new File(getProject().getProperty("test.jar")); | |||||
buildRule.executeTarget("signTestJar"); | |||||
File jar = new File(buildRule.getProject().getProperty("test.jar")); | |||||
Path myPath = new Path(getProject()); | |||||
Path myPath = new Path(buildRule.getProject()); | |||||
myPath.setLocation(jar); | myPath.setLocation(jar); | ||||
getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = getProject().createClassLoader(myPath); | |||||
Class foo = loader.findClass("org.example.Foo"); | |||||
buildRule.getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = buildRule.getProject().createClassLoader(myPath); | |||||
Class<?> foo = loader.findClass("org.example.Foo"); | |||||
assertNotNull("should find class", foo); | assertNotNull("should find class", foo); | ||||
assertNotNull("should have certificates", | assertNotNull("should have certificates", | ||||
@@ -154,23 +169,24 @@ public class AntClassLoaderTest extends BuildFileTest { | |||||
* bug 47593, request to log the name of corrupt zip files from which | * bug 47593, request to log the name of corrupt zip files from which | ||||
* classes cannot be loaded</a> | * classes cannot be loaded</a> | ||||
*/ | */ | ||||
@Test | |||||
public void testInvalidZipException() throws Exception { | public void testInvalidZipException() throws Exception { | ||||
executeTarget("createNonJar"); | |||||
File jar = new File(getProject().getProperty("tmp.dir") | |||||
buildRule.executeTarget("createNonJar"); | |||||
File jar = new File(buildRule.getProject().getProperty("tmp.dir") | |||||
+ "/foo.jar"); | + "/foo.jar"); | ||||
Path myPath = new Path(getProject()); | |||||
Path myPath = new Path(buildRule.getProject()); | |||||
myPath.setLocation(jar); | myPath.setLocation(jar); | ||||
getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = getProject().createClassLoader(myPath); | |||||
buildRule.getProject().setUserProperty("build.sysclasspath","ignore"); | |||||
loader = buildRule.getProject().createClassLoader(myPath); | |||||
PrintStream sysErr = System.err; | PrintStream sysErr = System.err; | ||||
try { | try { | ||||
StringBuffer errBuffer = new StringBuffer(); | StringBuffer errBuffer = new StringBuffer(); | ||||
PrintStream err = | PrintStream err = | ||||
new PrintStream(new BuildFileTest.AntOutputStream(errBuffer)); | |||||
new PrintStream(new BuildFileRule.AntOutputStream(errBuffer)); | |||||
System.setErr(err); | System.setErr(err); | ||||
loader.getResource("foo.txt"); | loader.getResource("foo.txt"); | ||||
String log = getLog(); | |||||
String log = buildRule.getLog(); | |||||
int startMessage = log.indexOf("CLASSPATH element "); | int startMessage = log.indexOf("CLASSPATH element "); | ||||
assertTrue(startMessage >= 0); | assertTrue(startMessage >= 0); | ||||
assertTrue(log.indexOf("foo.jar is not a JAR", startMessage) > 0); | assertTrue(log.indexOf("foo.jar is not a JAR", startMessage) > 0); | ||||
@@ -0,0 +1,318 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
* | |||||
*/ | |||||
package org.apache.tools.ant; | |||||
import java.io.File; | |||||
import java.io.OutputStream; | |||||
import java.io.PrintStream; | |||||
import org.apache.tools.ant.util.ProcessUtil; | |||||
import org.junit.rules.ExternalResource; | |||||
/** | |||||
* Provides access for JUnit tests to execute Ant targets and access execution details (i.e logs). | |||||
* | |||||
* Example usage: | |||||
* <code> | |||||
* public class MyTest { | |||||
* | |||||
* \@Rule | |||||
* public BuildFileRule rule = new BuildFileRule(); | |||||
* | |||||
* \@Before | |||||
* public void setUp() { | |||||
* rule.configureProject("my/and/file.xml"); | |||||
* } | |||||
* | |||||
* \@Test | |||||
* public void testSuccess() { | |||||
* rule.executeTarget("passingTaget"); | |||||
* assertEquals("Incorrect log message", "[taskName] Action Complete", rule.getLog()); | |||||
* } | |||||
* | |||||
* \@Test | |||||
* public void testException() { | |||||
* try { | |||||
* rule.executeTarget("failingTarget"); | |||||
* fail("Target should have thrown a BuildException"); | |||||
* } catch (BuildException ex) { | |||||
* assertContains("Exception did not contain correct text", "Could not find compiler on classpath", ex.getMessage()); | |||||
* } | |||||
* } | |||||
* | |||||
* } | |||||
* </code> | |||||
*/ | |||||
public class BuildFileRule extends ExternalResource { | |||||
private Project project; | |||||
private StringBuffer logBuffer; | |||||
private StringBuffer fullLogBuffer; | |||||
private StringBuffer outputBuffer; | |||||
private StringBuffer errorBuffer; | |||||
/** | |||||
* Tidies up following a test execution. If the currently configured | |||||
* project has a <tt>tearDown</tt> target then this will automatically | |||||
* be called, otherwise this method will not perform any actions. | |||||
*/ | |||||
@Override | |||||
protected void after() { | |||||
if (project == null) { | |||||
// configureProject has not been called - nothing we can clean-up | |||||
return; | |||||
} | |||||
final String tearDown = "tearDown"; | |||||
if (project.getTargets().containsKey(tearDown)) { | |||||
project.executeTarget(tearDown); | |||||
} | |||||
} | |||||
/** | |||||
* Gets the INFO, WARNING and ERROR message from the current execution, | |||||
* unless the logging level is set above any of these level in which case | |||||
* the message is excluded. | |||||
* This is only valid if configureProject() has been called. | |||||
* | |||||
* @return The INFO, WARN and ERROR messages in the log. | |||||
*/ | |||||
public String getLog() { | |||||
return logBuffer.toString(); | |||||
} | |||||
/** | |||||
* Gets any messages that have been logged during the current execution, unless | |||||
* the logging level has been set above the log level defined in the message. | |||||
* | |||||
* Only valid if configureProject() has been called. | |||||
* @return the content of the log. | |||||
*/ | |||||
public String getFullLog() { | |||||
return fullLogBuffer.toString(); | |||||
} | |||||
/** | |||||
* Provides all output sent to the System.out stream during the current execution. | |||||
* @return all output messages in a single string, normalised to have platform independent line breaks. | |||||
*/ | |||||
public String getOutput() { | |||||
return cleanBuffer(outputBuffer); | |||||
} | |||||
/** | |||||
* Provides all output sent to the System.err stream during the current execution. | |||||
* @return all error messages in a single string, normalised to have platform independent line breaks. | |||||
*/ | |||||
public String getError() { | |||||
return cleanBuffer(errorBuffer); | |||||
} | |||||
private String cleanBuffer(StringBuffer buffer) { | |||||
StringBuilder cleanedBuffer = new StringBuilder(); | |||||
for (int i = 0; i < buffer.length(); i++) { | |||||
char ch = buffer.charAt(i); | |||||
if (ch != '\r') { | |||||
cleanedBuffer.append(ch); | |||||
} | |||||
} | |||||
return cleanedBuffer.toString(); | |||||
} | |||||
/** | |||||
* Sets up to run the named project | |||||
* | |||||
* @param filename name of project file to run | |||||
*/ | |||||
public void configureProject(String filename) throws BuildException { | |||||
configureProject(filename, Project.MSG_DEBUG); | |||||
} | |||||
/** | |||||
* Sets up to run the named project | |||||
* | |||||
* @param filename name of project file to run | |||||
*/ | |||||
public void configureProject(String filename, int logLevel) throws BuildException { | |||||
logBuffer = new StringBuffer(); | |||||
fullLogBuffer = new StringBuffer(); | |||||
project = new Project(); | |||||
project.init(); | |||||
File antFile = new File(System.getProperty("root"), filename); | |||||
project.setProperty("ant.processid", ProcessUtil.getProcessId("<Process>")); | |||||
project.setProperty("ant.threadname", Thread.currentThread().getName()); | |||||
project.setUserProperty("ant.file" , antFile.getAbsolutePath()); | |||||
project.addBuildListener(new AntTestListener(logLevel)); | |||||
ProjectHelper.configureProject(project, antFile); | |||||
} | |||||
/** | |||||
* Executes a target in the configured Ant build file. Requires #configureProject() | |||||
* to have been invoked before this call. | |||||
* | |||||
* @param targetName the target in the currently configured build file to run. | |||||
*/ | |||||
public void executeTarget(String targetName) { | |||||
outputBuffer = new StringBuffer(); | |||||
PrintStream out = new PrintStream(new AntOutputStream(outputBuffer)); | |||||
errorBuffer = new StringBuffer(); | |||||
PrintStream err = new PrintStream(new AntOutputStream(errorBuffer)); | |||||
logBuffer = new StringBuffer(); | |||||
fullLogBuffer = new StringBuffer(); | |||||
/* we synchronize to protect our custom output streams from being overridden | |||||
* by other tests executing targets concurrently. Ultimately this would only | |||||
* happen if we ran a multi-threaded test executing multiple targets at once, and | |||||
* this protection doesn't prevent a target from internally modifying the output | |||||
* stream during a test - but at least this scenario is fairly deterministic so | |||||
* easier to troubleshoot. | |||||
*/ | |||||
synchronized (System.out) { | |||||
PrintStream sysOut = System.out; | |||||
PrintStream sysErr = System.err; | |||||
sysOut.flush(); | |||||
sysErr.flush(); | |||||
try { | |||||
System.setOut(out); | |||||
System.setErr(err); | |||||
project.executeTarget(targetName); | |||||
} finally { | |||||
System.setOut(sysOut); | |||||
System.setErr(sysErr); | |||||
} | |||||
} | |||||
} | |||||
/** | |||||
* Get the project which has been configured for a test. | |||||
* | |||||
* @return the Project instance for this test. | |||||
*/ | |||||
public Project getProject() { | |||||
return project; | |||||
} | |||||
/** | |||||
* An output stream which saves contents to our buffer. | |||||
*/ | |||||
protected static class AntOutputStream extends OutputStream { | |||||
private StringBuffer buffer; | |||||
public AntOutputStream( StringBuffer buffer ) { | |||||
this.buffer = buffer; | |||||
} | |||||
public void write(int b) { | |||||
buffer.append((char)b); | |||||
} | |||||
} | |||||
/** | |||||
* Our own personal build listener. | |||||
*/ | |||||
private class AntTestListener implements BuildListener { | |||||
private int logLevel; | |||||
/** | |||||
* Constructs a test listener which will ignore log events | |||||
* above the given level. | |||||
*/ | |||||
public AntTestListener(int logLevel) { | |||||
this.logLevel = logLevel; | |||||
} | |||||
/** | |||||
* Fired before any targets are started. | |||||
*/ | |||||
public void buildStarted(BuildEvent event) { | |||||
} | |||||
/** | |||||
* Fired after the last target has finished. This event | |||||
* will still be thrown if an error occurred during the build. | |||||
* | |||||
* @see BuildEvent#getException() | |||||
*/ | |||||
public void buildFinished(BuildEvent event) { | |||||
} | |||||
/** | |||||
* Fired when a target is started. | |||||
* | |||||
* @see BuildEvent#getTarget() | |||||
*/ | |||||
public void targetStarted(BuildEvent event) { | |||||
} | |||||
/** | |||||
* Fired when a target has finished. This event will | |||||
* still be thrown if an error occurred during the build. | |||||
* | |||||
* @see BuildEvent#getException() | |||||
*/ | |||||
public void targetFinished(BuildEvent event) { | |||||
} | |||||
/** | |||||
* Fired when a task is started. | |||||
* | |||||
* @see BuildEvent#getTask() | |||||
*/ | |||||
public void taskStarted(BuildEvent event) { | |||||
} | |||||
/** | |||||
* Fired when a task has finished. This event will still | |||||
* be throw if an error occurred during the build. | |||||
* | |||||
* @see BuildEvent#getException() | |||||
*/ | |||||
public void taskFinished(BuildEvent event) { | |||||
} | |||||
/** | |||||
* Fired whenever a message is logged. | |||||
* | |||||
* @see BuildEvent#getMessage() | |||||
* @see BuildEvent#getPriority() | |||||
*/ | |||||
public void messageLogged(BuildEvent event) { | |||||
if (event.getPriority() > logLevel) { | |||||
// ignore event | |||||
return; | |||||
} | |||||
if (event.getPriority() == Project.MSG_INFO || | |||||
event.getPriority() == Project.MSG_WARN || | |||||
event.getPriority() == Project.MSG_ERR) { | |||||
logBuffer.append(event.getMessage()); | |||||
} | |||||
fullLogBuffer.append(event.getMessage()); | |||||
} | |||||
} | |||||
public File getOutputDir() { | |||||
return new File(getProject().getProperty("output")); | |||||
} | |||||
} | |||||
@@ -32,7 +32,10 @@ import org.apache.tools.ant.util.ProcessUtil; | |||||
* This class provides a number of utility methods for particular build file | * This class provides a number of utility methods for particular build file | ||||
* tests which extend this class. | * tests which extend this class. | ||||
* | * | ||||
* @deprecated as of 1.9.4. Use BuildFileRule, Assert, AntAssert and JUnit4 annotations to drive tests instead | |||||
* @see org.apache.tools.ant.BuildFileRule | |||||
*/ | */ | ||||
@Deprecated | |||||
public abstract class BuildFileTest extends TestCase { | public abstract class BuildFileTest extends TestCase { | ||||
protected Project project; | protected Project project; | ||||
@@ -18,37 +18,47 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* Simple tests of build file processing | * Simple tests of build file processing | ||||
*/ | */ | ||||
public class CaseTest extends BuildFileTest { | |||||
public CaseTest(String name) { | |||||
super(name); | |||||
} | |||||
public class CaseTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/case.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/case.xml"); | |||||
} | } | ||||
/** | /** | ||||
* Test whether the build file treats nested elements without | * Test whether the build file treats nested elements without | ||||
* regard to case. This should not cause an exception. | * regard to case. This should not cause an exception. | ||||
*/ | */ | ||||
@Test | |||||
public void testCaseSensitivity() { | public void testCaseSensitivity() { | ||||
executeTarget("case-sensitivity"); | |||||
buildRule.executeTarget("case-sensitivity"); | |||||
} | } | ||||
/** | /** | ||||
* Test whether the build file uses case when determining | * Test whether the build file uses case when determining | ||||
* task names. | * task names. | ||||
*/ | */ | ||||
@Test | |||||
public void testTaskCase() { | public void testTaskCase() { | ||||
expectBuildExceptionContaining("taskcase", | |||||
"Task names are case sensitive", | |||||
"Problem: failed to create task or type ecHO"); | |||||
try { | |||||
buildRule.executeTarget("taskcase"); | |||||
fail("Build exception should have been thrown due to case sensitivity of name"); | |||||
} catch(BuildException ex) { | |||||
assertContains("Task names should be case sensitive", "Problem: failed to create task or type ecHO", ex.getMessage()); | |||||
} | |||||
} | } | ||||
} | } | ||||
@@ -18,15 +18,15 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import java.io.PrintWriter; | |||||
import junit.framework.TestCase; | |||||
import org.apache.tools.ant.util.StringUtils; | import org.apache.tools.ant.util.StringUtils; | ||||
import org.junit.Test; | |||||
public class DefaultLoggerTest extends TestCase { | |||||
import java.io.PrintWriter; | |||||
import static org.junit.Assert.assertEquals; | |||||
public class DefaultLoggerTest { | |||||
public DefaultLoggerTest(String n) { | |||||
super(n); | |||||
} | |||||
private static String msg(Throwable error, boolean verbose) { | private static String msg(Throwable error, boolean verbose) { | ||||
StringBuffer m = new StringBuffer(); | StringBuffer m = new StringBuffer(); | ||||
@@ -34,6 +34,7 @@ public class DefaultLoggerTest extends TestCase { | |||||
return m.toString(); | return m.toString(); | ||||
} | } | ||||
@Test | |||||
public void testThrowableMessage() throws Exception { // #43398 | public void testThrowableMessage() throws Exception { // #43398 | ||||
BuildException be = new BuildException("oops", new Location("build.xml", 1, 0)); | BuildException be = new BuildException("oops", new Location("build.xml", 1, 0)); | ||||
assertEquals( | assertEquals( | ||||
@@ -18,9 +18,11 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import org.apache.tools.ant.taskdefs.condition.Os; | |||||
import org.apache.tools.ant.types.selectors.TokenizedPath; | |||||
import org.apache.tools.ant.util.SymbolicLinkUtils; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertFalse; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assume.assumeTrue; | |||||
import static org.junit.Assume.assumeFalse; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
@@ -30,34 +32,43 @@ import java.util.List; | |||||
import java.util.Set; | import java.util.Set; | ||||
import java.util.TreeSet; | import java.util.TreeSet; | ||||
import org.apache.tools.ant.taskdefs.condition.Os; | |||||
import org.apache.tools.ant.types.selectors.TokenizedPath; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
* JUnit 3 testcases for org.apache.tools.ant.DirectoryScanner | |||||
* JUnit testcases for org.apache.tools.ant.DirectoryScanner | |||||
* | * | ||||
*/ | */ | ||||
public class DirectoryScannerTest extends BuildFileTest { | |||||
public DirectoryScannerTest(String name) {super(name);} | |||||
public class DirectoryScannerTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
// keep track of what operating systems are supported here. | // keep track of what operating systems are supported here. | ||||
private boolean supportsSymlinks = Os.isFamily("unix"); | private boolean supportsSymlinks = Os.isFamily("unix"); | ||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/directoryscanner.xml"); | |||||
getProject().executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/core/directoryscanner.xml"); | |||||
buildRule.getProject().executeTarget("setUp"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha"}); | ds.setIncludes(new String[] {"alpha"}); | ||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, new String[] {} ,new String[] {"alpha"}); | compareFiles(ds, new String[] {} ,new String[] {"alpha"}); | ||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/"}); | ds.setIncludes(new String[] {"alpha/"}); | ||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, new String[] {"alpha/beta/beta.xml", | compareFiles(ds, new String[] {"alpha/beta/beta.xml", | ||||
@@ -65,9 +76,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | ||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, new String[] {"alpha/beta/beta.xml", | compareFiles(ds, new String[] {"alpha/beta/beta.xml", | ||||
"alpha/beta/gamma/gamma.xml"}, | "alpha/beta/gamma/gamma.xml"}, | ||||
@@ -75,27 +87,30 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
"alpha/beta/gamma"}); | "alpha/beta/gamma"}); | ||||
} | } | ||||
@Test | |||||
public void testFullPathMatchesCaseSensitive() { | public void testFullPathMatchesCaseSensitive() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/beta/gamma/GAMMA.XML"}); | ds.setIncludes(new String[] {"alpha/beta/gamma/GAMMA.XML"}); | ||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, new String[] {}, new String[] {}); | compareFiles(ds, new String[] {}, new String[] {}); | ||||
} | } | ||||
@Test | |||||
public void testFullPathMatchesCaseInsensitive() { | public void testFullPathMatchesCaseInsensitive() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setCaseSensitive(false); | ds.setCaseSensitive(false); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/beta/gamma/GAMMA.XML"}); | ds.setIncludes(new String[] {"alpha/beta/gamma/GAMMA.XML"}); | ||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, new String[] {"alpha/beta/gamma/gamma.xml"}, | compareFiles(ds, new String[] {"alpha/beta/gamma/gamma.xml"}, | ||||
new String[] {}); | new String[] {}); | ||||
} | } | ||||
@Test | |||||
public void test2ButCaseInsensitive() { | public void test2ButCaseInsensitive() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"ALPHA/"}); | ds.setIncludes(new String[] {"ALPHA/"}); | ||||
ds.setCaseSensitive(false); | ds.setCaseSensitive(false); | ||||
ds.scan(); | ds.scan(); | ||||
@@ -104,28 +119,28 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | ||||
} | } | ||||
@Test | |||||
public void testAllowSymlinks() { | public void testAllowSymlinks() { | ||||
if (!supportsSymlinks) { | |||||
return; | |||||
} | |||||
assumeTrue("Current system does not support Symlinks", supportsSymlinks); | |||||
getProject().executeTarget("symlink-setup"); | |||||
buildRule.getProject().executeTarget("symlink-setup"); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/beta/gamma/"}); | ds.setIncludes(new String[] {"alpha/beta/gamma/"}); | ||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, new String[] {"alpha/beta/gamma/gamma.xml"}, | compareFiles(ds, new String[] {"alpha/beta/gamma/gamma.xml"}, | ||||
new String[] {"alpha/beta/gamma"}); | new String[] {"alpha/beta/gamma"}); | ||||
} | } | ||||
@Test | |||||
public void testProhibitSymlinks() { | public void testProhibitSymlinks() { | ||||
if (!supportsSymlinks) { | |||||
return; | |||||
} | |||||
assumeTrue("Current system does not support Symlinks", supportsSymlinks); | |||||
getProject().executeTarget("symlink-setup"); | |||||
buildRule.getProject().executeTarget("symlink-setup"); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/beta/gamma/"}); | ds.setIncludes(new String[] {"alpha/beta/gamma/"}); | ||||
ds.setFollowSymlinks(false); | ds.setFollowSymlinks(false); | ||||
ds.scan(); | ds.scan(); | ||||
@@ -133,26 +148,28 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
} | } | ||||
// father and child pattern test | // father and child pattern test | ||||
@Test | |||||
public void testOrderOfIncludePatternsIrrelevant() { | public void testOrderOfIncludePatternsIrrelevant() { | ||||
String [] expectedFiles = {"alpha/beta/beta.xml", | String [] expectedFiles = {"alpha/beta/beta.xml", | ||||
"alpha/beta/gamma/gamma.xml"}; | "alpha/beta/gamma/gamma.xml"}; | ||||
String [] expectedDirectories = {"alpha/beta", "alpha/beta/gamma" }; | String [] expectedDirectories = {"alpha/beta", "alpha/beta/gamma" }; | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/be?a/**", "alpha/beta/gamma/"}); | ds.setIncludes(new String[] {"alpha/be?a/**", "alpha/beta/gamma/"}); | ||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, expectedFiles, expectedDirectories); | compareFiles(ds, expectedFiles, expectedDirectories); | ||||
// redo the test, but the 2 include patterns are inverted | // redo the test, but the 2 include patterns are inverted | ||||
ds = new DirectoryScanner(); | ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/beta/gamma/", "alpha/be?a/**"}); | ds.setIncludes(new String[] {"alpha/beta/gamma/", "alpha/be?a/**"}); | ||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, expectedFiles, expectedDirectories); | compareFiles(ds, expectedFiles, expectedDirectories); | ||||
} | } | ||||
@Test | |||||
public void testPatternsDifferInCaseScanningSensitive() { | public void testPatternsDifferInCaseScanningSensitive() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/", "ALPHA/"}); | ds.setIncludes(new String[] {"alpha/", "ALPHA/"}); | ||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, new String[] {"alpha/beta/beta.xml", | compareFiles(ds, new String[] {"alpha/beta/beta.xml", | ||||
@@ -160,9 +177,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | ||||
} | } | ||||
@Test | |||||
public void testPatternsDifferInCaseScanningInsensitive() { | public void testPatternsDifferInCaseScanningInsensitive() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/", "ALPHA/"}); | ds.setIncludes(new String[] {"alpha/", "ALPHA/"}); | ||||
ds.setCaseSensitive(false); | ds.setCaseSensitive(false); | ||||
ds.scan(); | ds.scan(); | ||||
@@ -171,9 +189,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | ||||
} | } | ||||
@Test | |||||
public void testFullpathDiffersInCaseScanningSensitive() { | public void testFullpathDiffersInCaseScanningSensitive() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] { | ds.setIncludes(new String[] { | ||||
"alpha/beta/gamma/gamma.xml", | "alpha/beta/gamma/gamma.xml", | ||||
"alpha/beta/gamma/GAMMA.XML" | "alpha/beta/gamma/GAMMA.XML" | ||||
@@ -183,9 +202,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {}); | new String[] {}); | ||||
} | } | ||||
@Test | |||||
public void testFullpathDiffersInCaseScanningInsensitive() { | public void testFullpathDiffersInCaseScanningInsensitive() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] { | ds.setIncludes(new String[] { | ||||
"alpha/beta/gamma/gamma.xml", | "alpha/beta/gamma/gamma.xml", | ||||
"alpha/beta/gamma/GAMMA.XML" | "alpha/beta/gamma/GAMMA.XML" | ||||
@@ -196,9 +216,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {}); | new String[] {}); | ||||
} | } | ||||
@Test | |||||
public void testParentDiffersInCaseScanningSensitive() { | public void testParentDiffersInCaseScanningSensitive() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/", "ALPHA/beta/"}); | ds.setIncludes(new String[] {"alpha/", "ALPHA/beta/"}); | ||||
ds.scan(); | ds.scan(); | ||||
compareFiles(ds, new String[] {"alpha/beta/beta.xml", | compareFiles(ds, new String[] {"alpha/beta/beta.xml", | ||||
@@ -206,9 +227,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); | ||||
} | } | ||||
@Test | |||||
public void testParentDiffersInCaseScanningInsensitive() { | public void testParentDiffersInCaseScanningInsensitive() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] {"alpha/", "ALPHA/beta/"}); | ds.setIncludes(new String[] {"alpha/", "ALPHA/beta/"}); | ||||
ds.setCaseSensitive(false); | ds.setCaseSensitive(false); | ||||
ds.scan(); | ds.scan(); | ||||
@@ -222,8 +244,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
* Only supports test on Linux at the moment because Java has | * Only supports test on Linux at the moment because Java has | ||||
* no real notion of symlinks built in, so an os-specfic call | * no real notion of symlinks built in, so an os-specfic call | ||||
* to Runtime.exec() must be made to create a link to test against. | * to Runtime.exec() must be made to create a link to test against. | ||||
* @throws InterruptedException | |||||
*/ | */ | ||||
public void testSetFollowLinks() throws IOException { | |||||
@Test | |||||
public void testSetFollowLinks() throws IOException, InterruptedException { | |||||
if (supportsSymlinks) { | if (supportsSymlinks) { | ||||
File linkFile = new File(System.getProperty("root"), "src/main/org/apache/tools/ThisIsALink"); | File linkFile = new File(System.getProperty("root"), "src/main/org/apache/tools/ThisIsALink"); | ||||
System.err.println("link exists pre-test? " + linkFile.exists()); | System.err.println("link exists pre-test? " + linkFile.exists()); | ||||
@@ -233,20 +257,11 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
String[] command = new String[] { | String[] command = new String[] { | ||||
"ln", "-s", "ant", linkFile.getAbsolutePath() | "ln", "-s", "ant", linkFile.getAbsolutePath() | ||||
}; | }; | ||||
try { | |||||
Runtime.getRuntime().exec(command); | |||||
// give ourselves some time for the system call | |||||
// to execute... tweak if you have a really over | |||||
// loaded system. | |||||
Thread.sleep(1000); | |||||
} catch (IOException ioe) { | |||||
fail("IOException making link "+ioe); | |||||
} catch (InterruptedException ie) { | |||||
} | |||||
Process process = Runtime.getRuntime().exec(command); | |||||
assertEquals("0 return code expected for external process", 0, process.waitFor()); | |||||
File dir = new File(System.getProperty("root"), "src/main/org/apache/tools"); | File dir = new File(System.getProperty("root"), "src/main/org/apache/tools"); | ||||
System.err.println("link exists after exec? " + linkFile.exists()); | |||||
System.err.println("Ant knows it is a link? " + SymbolicLinkUtils.getSymbolicLinkUtils().isSymbolicLink(dir, "ThisIsALink")); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
@@ -304,18 +319,19 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
!haveTaskdefsPackage); | !haveTaskdefsPackage); | ||||
} finally { | } finally { | ||||
System.err.println("link exists pre-delete? " + linkFile.exists()); | |||||
if (!linkFile.delete()) { | if (!linkFile.delete()) { | ||||
throw new RuntimeException("Failed to delete " + linkFile); | |||||
//TODO log this? | |||||
//throw new RuntimeException("Failed to delete " + linkFile); | |||||
} | } | ||||
System.err.println("link exists post-delete? " + linkFile.exists()); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testExcludeOneFile() { | public void testExcludeOneFile() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] { | ds.setIncludes(new String[] { | ||||
"**/*.xml" | "**/*.xml" | ||||
}); | }); | ||||
@@ -327,9 +343,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {}); | new String[] {}); | ||||
} | } | ||||
@Test | |||||
public void testExcludeHasPrecedence() { | public void testExcludeHasPrecedence() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] { | ds.setIncludes(new String[] { | ||||
"alpha/**" | "alpha/**" | ||||
}); | }); | ||||
@@ -342,9 +359,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
} | } | ||||
@Test | |||||
public void testAlternateIncludeExclude() { | public void testAlternateIncludeExclude() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setIncludes(new String[] { | ds.setIncludes(new String[] { | ||||
"alpha/**", | "alpha/**", | ||||
"alpha/beta/gamma/**" | "alpha/beta/gamma/**" | ||||
@@ -358,9 +376,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
} | } | ||||
@Test | |||||
public void testAlternateExcludeInclude() { | public void testAlternateExcludeInclude() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setExcludes(new String[] { | ds.setExcludes(new String[] { | ||||
"alpha/**", | "alpha/**", | ||||
"alpha/beta/gamma/**" | "alpha/beta/gamma/**" | ||||
@@ -377,10 +396,11 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
/** | /** | ||||
* Test inspired by Bug#1415. | * Test inspired by Bug#1415. | ||||
*/ | */ | ||||
@Test | |||||
public void testChildrenOfExcludedDirectory() { | public void testChildrenOfExcludedDirectory() { | ||||
getProject().executeTarget("children-of-excluded-dir-setup"); | |||||
buildRule.getProject().executeTarget("children-of-excluded-dir-setup"); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setExcludes(new String[] {"alpha/**"}); | ds.setExcludes(new String[] {"alpha/**"}); | ||||
ds.setFollowSymlinks(false); | ds.setFollowSymlinks(false); | ||||
ds.scan(); | ds.scan(); | ||||
@@ -388,7 +408,7 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {"", "delta"}); | new String[] {"", "delta"}); | ||||
ds = new DirectoryScanner(); | ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setExcludes(new String[] {"alpha"}); | ds.setExcludes(new String[] {"alpha"}); | ||||
ds.setFollowSymlinks(false); | ds.setFollowSymlinks(false); | ||||
ds.scan(); | ds.scan(); | ||||
@@ -399,35 +419,35 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
} | } | ||||
@Test | |||||
public void testIsExcludedDirectoryScanned() { | public void testIsExcludedDirectoryScanned() { | ||||
String shareclassloader = getProject().getProperty("tests.and.ant.share.classloader"); | |||||
String shareclassloader = buildRule.getProject().getProperty("tests.and.ant.share.classloader"); | |||||
// when the test is started by the build.xml of ant | // when the test is started by the build.xml of ant | ||||
// if the property tests.and.ant.share.classloader is not set in the build.xml | // if the property tests.and.ant.share.classloader is not set in the build.xml | ||||
// a sysproperty with name tests.and.ant.share.classloader and value | // a sysproperty with name tests.and.ant.share.classloader and value | ||||
// ${tests.and.ant.share.classloader} will be set | // ${tests.and.ant.share.classloader} will be set | ||||
// we are trying to catch this here. | // we are trying to catch this here. | ||||
if (shareclassloader == null | |||||
|| (shareclassloader != null && shareclassloader.startsWith("${"))) { | |||||
System.out.println("cannot execute testIsExcludedDirectoryScanned when tests are forked, " + | |||||
"package private method called"); | |||||
return; | |||||
} | |||||
getProject().executeTarget("children-of-excluded-dir-setup"); | |||||
assumeFalse("cannot execute testIsExcludedDirectoryScanned when tests are forked, " + | |||||
"package private method called", shareclassloader == null | |||||
|| (shareclassloader != null && shareclassloader.indexOf("${") == 0)); | |||||
buildRule.getProject().executeTarget("children-of-excluded-dir-setup"); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setExcludes(new String[] {"**/gamma/**"}); | ds.setExcludes(new String[] {"**/gamma/**"}); | ||||
ds.setFollowSymlinks(false); | ds.setFollowSymlinks(false); | ||||
ds.scan(); | ds.scan(); | ||||
Set set = ds.getScannedDirs(); | |||||
Set<String> set = ds.getScannedDirs(); | |||||
assertFalse("empty set", set.isEmpty()); | assertFalse("empty set", set.isEmpty()); | ||||
String s = "alpha/beta/gamma/".replace('/', File.separatorChar); | String s = "alpha/beta/gamma/".replace('/', File.separatorChar); | ||||
assertFalse("scanned " + s, set.contains(s)); | assertFalse("scanned " + s, set.contains(s)); | ||||
} | } | ||||
@Test | |||||
public void testAbsolute1() { | public void testAbsolute1() { | ||||
getProject().executeTarget("extended-setup"); | |||||
buildRule.getProject().executeTarget("extended-setup"); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
String tmpdir = getProject().getProperty("output").replace( | |||||
String tmpdir = buildRule.getProject().getProperty("output").replace( | |||||
File.separatorChar, '/'); | File.separatorChar, '/'); | ||||
ds.setIncludes(new String[] {tmpdir + "/**/*"}); | ds.setIncludes(new String[] {tmpdir + "/**/*"}); | ||||
ds.scan(); | ds.scan(); | ||||
@@ -440,6 +460,7 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
tmpdir + "/delta"}); | tmpdir + "/delta"}); | ||||
} | } | ||||
@Test | |||||
public void testAbsolute2() { | public void testAbsolute2() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setIncludes(new String[] {"alpha/**", "alpha/beta/gamma/**"}); | ds.setIncludes(new String[] {"alpha/**", "alpha/beta/gamma/**"}); | ||||
@@ -448,10 +469,11 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
compareFiles(ds, mt, mt); | compareFiles(ds, mt, mt); | ||||
} | } | ||||
@Test | |||||
public void testAbsolute3() { | public void testAbsolute3() { | ||||
getProject().executeTarget("extended-setup"); | |||||
buildRule.getProject().executeTarget("extended-setup"); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
String tmpdir = getProject().getProperty("output").replace( | |||||
String tmpdir = buildRule.getProject().getProperty("output").replace( | |||||
File.separatorChar, '/'); | File.separatorChar, '/'); | ||||
ds.setIncludes(new String[] {tmpdir + "/**/*"}); | ds.setIncludes(new String[] {tmpdir + "/**/*"}); | ||||
ds.setExcludes(new String[] {"**/alpha", | ds.setExcludes(new String[] {"**/alpha", | ||||
@@ -464,11 +486,12 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
tmpdir + "/delta"}); | tmpdir + "/delta"}); | ||||
} | } | ||||
@Test | |||||
public void testAbsolute4() { | public void testAbsolute4() { | ||||
getProject().executeTarget("extended-setup"); | |||||
buildRule.getProject().executeTarget("extended-setup"); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
String tmpdir = getProject().getProperty("output").replace( | |||||
File.separatorChar, '/') ; | |||||
String tmpdir = buildRule.getProject().getProperty("output").replace( | |||||
File.separatorChar, '/') ; | |||||
ds.setIncludes(new String[] {tmpdir + "/alpha/beta/**/*", | ds.setIncludes(new String[] {tmpdir + "/alpha/beta/**/*", | ||||
tmpdir + "/delta/*"}); | tmpdir + "/delta/*"}); | ||||
ds.setExcludes(new String[] {"**/beta.xml"}); | ds.setExcludes(new String[] {"**/beta.xml"}); | ||||
@@ -478,11 +501,10 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
new String[] {tmpdir + "/alpha/beta/gamma"}); | new String[] {tmpdir + "/alpha/beta/gamma"}); | ||||
} | } | ||||
@Test | |||||
public void testAbsolute5() { | public void testAbsolute5() { | ||||
//testing drive letter search from root: | //testing drive letter search from root: | ||||
if (!(Os.isFamily("dos") || Os.isFamily("netware"))) { | |||||
return; | |||||
} | |||||
assumeTrue("Can't use drive letters on non DOS or Netware systems", (Os.isFamily("dos") || Os.isFamily("netware"))); | |||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
String pattern = new File(File.separator).getAbsolutePath().toUpperCase() + "*"; | String pattern = new File(File.separator).getAbsolutePath().toUpperCase() + "*"; | ||||
ds.setIncludes(new String[] {pattern}); | ds.setIncludes(new String[] {pattern}); | ||||
@@ -501,18 +523,18 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
assertEquals("directories present: ", expectedDirectories.length, | assertEquals("directories present: ", expectedDirectories.length, | ||||
includedDirectories.length); | includedDirectories.length); | ||||
TreeSet files = new TreeSet(); | |||||
TreeSet<String> files = new TreeSet<String>(); | |||||
for (int counter = 0; counter < includedFiles.length; counter++) { | for (int counter = 0; counter < includedFiles.length; counter++) { | ||||
files.add(includedFiles[counter].replace(File.separatorChar, '/')); | files.add(includedFiles[counter].replace(File.separatorChar, '/')); | ||||
} | } | ||||
TreeSet directories = new TreeSet(); | |||||
TreeSet<String> directories = new TreeSet<String>(); | |||||
for (int counter = 0; counter < includedDirectories.length; counter++) { | for (int counter = 0; counter < includedDirectories.length; counter++) { | ||||
directories.add(includedDirectories[counter] | directories.add(includedDirectories[counter] | ||||
.replace(File.separatorChar, '/')); | .replace(File.separatorChar, '/')); | ||||
} | } | ||||
String currentfile; | String currentfile; | ||||
Iterator i = files.iterator(); | |||||
Iterator<String> i = files.iterator(); | |||||
int counter = 0; | int counter = 0; | ||||
while (i.hasNext()) { | while (i.hasNext()) { | ||||
currentfile = (String) i.next(); | currentfile = (String) i.next(); | ||||
@@ -520,7 +542,7 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
counter++; | counter++; | ||||
} | } | ||||
String currentdirectory; | String currentdirectory; | ||||
Iterator dirit = directories.iterator(); | |||||
Iterator<String> dirit = directories.iterator(); | |||||
counter = 0; | counter = 0; | ||||
while (dirit.hasNext()) { | while (dirit.hasNext()) { | ||||
currentdirectory = (String) dirit.next(); | currentdirectory = (String) dirit.next(); | ||||
@@ -529,19 +551,20 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testRecursiveExcludes() throws Exception { | public void testRecursiveExcludes() throws Exception { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(getProject().getProperty("output"))); | |||||
ds.setBasedir(new File(buildRule.getProject().getProperty("output"))); | |||||
ds.setExcludes(new String[] {"**/beta/**"}); | ds.setExcludes(new String[] {"**/beta/**"}); | ||||
ds.scan(); | ds.scan(); | ||||
List dirs = Arrays.asList(ds.getExcludedDirectories()); | |||||
List<String> dirs = Arrays.asList(ds.getExcludedDirectories()); | |||||
assertEquals(2, dirs.size()); | assertEquals(2, dirs.size()); | ||||
assertTrue("beta is excluded", | assertTrue("beta is excluded", | ||||
dirs.contains("alpha/beta".replace('/', File.separatorChar))); | dirs.contains("alpha/beta".replace('/', File.separatorChar))); | ||||
assertTrue("gamma is excluded", | assertTrue("gamma is excluded", | ||||
dirs.contains("alpha/beta/gamma".replace('/', | dirs.contains("alpha/beta/gamma".replace('/', | ||||
File.separatorChar))); | File.separatorChar))); | ||||
List files = Arrays.asList(ds.getExcludedFiles()); | |||||
List<String> files = Arrays.asList(ds.getExcludedFiles()); | |||||
assertEquals(2, files.size()); | assertEquals(2, files.size()); | ||||
assertTrue("beta.xml is excluded", | assertTrue("beta.xml is excluded", | ||||
files.contains("alpha/beta/beta.xml" | files.contains("alpha/beta/beta.xml" | ||||
@@ -551,6 +574,7 @@ public class DirectoryScannerTest extends BuildFileTest { | |||||
.replace('/', File.separatorChar))); | .replace('/', File.separatorChar))); | ||||
} | } | ||||
@Test | |||||
public void testContentsExcluded() { | public void testContentsExcluded() { | ||||
DirectoryScanner ds = new DirectoryScanner(); | DirectoryScanner ds = new DirectoryScanner(); | ||||
ds.setBasedir(new File(".")); | ds.setBasedir(new File(".")); | ||||
@@ -18,19 +18,29 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import static org.junit.Assert.fail; | |||||
public class DispatchTaskTest extends BuildFileTest { | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
public DispatchTaskTest(String name) { | |||||
super(name); | |||||
} | |||||
public class DispatchTaskTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/dispatch/dispatch.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/dispatch/dispatch.xml"); | |||||
} | } | ||||
@Test | |||||
public void testDisp() { | public void testDisp() { | ||||
expectBuildException("disp", "list"); | |||||
try { | |||||
buildRule.executeTarget("disp"); | |||||
fail("BuildException should have been thrown"); | |||||
} catch(BuildException ex) { | |||||
//FIXME the previous method used here ignored the build exception - what are we trying to test | |||||
} | |||||
} | } | ||||
} | } |
@@ -18,23 +18,35 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
import java.util.Vector; | import java.util.Vector; | ||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
* Executor tests | * Executor tests | ||||
*/ | */ | ||||
public class ExecutorTest extends BuildFileTest implements BuildListener { | |||||
private static final String SINGLE_CHECK | |||||
public class ExecutorTest implements BuildListener { | |||||
private static final String SINGLE_CHECK | |||||
= "org.apache.tools.ant.helper.SingleCheckExecutor"; | = "org.apache.tools.ant.helper.SingleCheckExecutor"; | ||||
private static final String IGNORE_DEPS | private static final String IGNORE_DEPS | ||||
= "org.apache.tools.ant.helper.IgnoreDependenciesExecutor"; | = "org.apache.tools.ant.helper.IgnoreDependenciesExecutor"; | ||||
private static final Vector TARGET_NAMES; | |||||
private static final Vector<String> TARGET_NAMES; | |||||
static { | static { | ||||
TARGET_NAMES = new Vector(); | |||||
TARGET_NAMES = new Vector<String>(); | |||||
TARGET_NAMES.add("a"); | TARGET_NAMES.add("a"); | ||||
TARGET_NAMES.add("b"); | TARGET_NAMES.add("b"); | ||||
} | } | ||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
private int targetCount; | private int targetCount; | ||||
/* BuildListener stuff */ | /* BuildListener stuff */ | ||||
@@ -48,14 +60,11 @@ public class ExecutorTest extends BuildFileTest implements BuildListener { | |||||
public void taskFinished(BuildEvent event) {} | public void taskFinished(BuildEvent event) {} | ||||
public void messageLogged(BuildEvent event) {} | public void messageLogged(BuildEvent event) {} | ||||
public ExecutorTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/executor.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/executor.xml"); | |||||
targetCount = 0; | targetCount = 0; | ||||
getProject().addBuildListener(this); | |||||
buildRule.getProject().addBuildListener(this); | |||||
} | } | ||||
private Project getProject(String e) { | private Project getProject(String e) { | ||||
@@ -67,7 +76,7 @@ public class ExecutorTest extends BuildFileTest implements BuildListener { | |||||
} | } | ||||
private Project getProject(String e, boolean f, boolean k) { | private Project getProject(String e, boolean f, boolean k) { | ||||
Project p = getProject(); | |||||
Project p = buildRule.getProject(); | |||||
p.setNewProperty("ant.executor.class", e); | p.setNewProperty("ant.executor.class", e); | ||||
p.setKeepGoingMode(k); | p.setKeepGoingMode(k); | ||||
if (f) { | if (f) { | ||||
@@ -76,75 +85,84 @@ public class ExecutorTest extends BuildFileTest implements BuildListener { | |||||
return p; | return p; | ||||
} | } | ||||
@Test | |||||
public void testDefaultExecutor() { | public void testDefaultExecutor() { | ||||
getProject().executeTargets(TARGET_NAMES); | |||||
buildRule.getProject().executeTargets(TARGET_NAMES); | |||||
assertEquals(4, targetCount); | assertEquals(4, targetCount); | ||||
} | } | ||||
@Test | |||||
public void testSingleCheckExecutor() { | public void testSingleCheckExecutor() { | ||||
getProject(SINGLE_CHECK).executeTargets(TARGET_NAMES); | getProject(SINGLE_CHECK).executeTargets(TARGET_NAMES); | ||||
assertEquals(3, targetCount); | assertEquals(3, targetCount); | ||||
} | } | ||||
@Test | |||||
public void testIgnoreDependenciesExecutor() { | public void testIgnoreDependenciesExecutor() { | ||||
getProject(IGNORE_DEPS).executeTargets(TARGET_NAMES); | getProject(IGNORE_DEPS).executeTargets(TARGET_NAMES); | ||||
assertEquals(2, targetCount); | assertEquals(2, targetCount); | ||||
} | } | ||||
@Test | |||||
public void testDefaultFailure() { | public void testDefaultFailure() { | ||||
try { | try { | ||||
getProject(null, true).executeTargets(TARGET_NAMES); | getProject(null, true).executeTargets(TARGET_NAMES); | ||||
fail("should fail"); | fail("should fail"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertTrue(e.getMessage().equals("failfoo")); | |||||
assertEquals("failfoo", e.getMessage()); | |||||
assertEquals(1, targetCount); | assertEquals(1, targetCount); | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testSingleCheckFailure() { | public void testSingleCheckFailure() { | ||||
try { | try { | ||||
getProject(SINGLE_CHECK, true).executeTargets(TARGET_NAMES); | getProject(SINGLE_CHECK, true).executeTargets(TARGET_NAMES); | ||||
fail("should fail"); | fail("should fail"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertTrue(e.getMessage().equals("failfoo")); | |||||
assertEquals("failfoo", e.getMessage()); | |||||
assertEquals(1, targetCount); | assertEquals(1, targetCount); | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testIgnoreDependenciesFailure() { | public void testIgnoreDependenciesFailure() { | ||||
//no foo failure; foo is never executed as dependencies are ignored! | //no foo failure; foo is never executed as dependencies are ignored! | ||||
getProject(IGNORE_DEPS, true).executeTargets(TARGET_NAMES); | getProject(IGNORE_DEPS, true).executeTargets(TARGET_NAMES); | ||||
} | } | ||||
@Test | |||||
public void testKeepGoingDefault() { | public void testKeepGoingDefault() { | ||||
try { | try { | ||||
getProject(null, true, true).executeTargets(TARGET_NAMES); | getProject(null, true, true).executeTargets(TARGET_NAMES); | ||||
fail("should fail"); | fail("should fail"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertTrue(e.getMessage().equals("failfoo")); | |||||
assertEquals("failfoo", e.getMessage()); | |||||
assertEquals(2, targetCount); | assertEquals(2, targetCount); | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testKeepGoingSingleCheck() { | public void testKeepGoingSingleCheck() { | ||||
try { | try { | ||||
getProject(SINGLE_CHECK, true, true).executeTargets(TARGET_NAMES); | getProject(SINGLE_CHECK, true, true).executeTargets(TARGET_NAMES); | ||||
fail("should fail"); | fail("should fail"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertTrue(e.getMessage().equals("failfoo")); | |||||
assertEquals("failfoo", e.getMessage()); | |||||
assertEquals(1, targetCount); | assertEquals(1, targetCount); | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testKeepGoingIgnoreDependencies() { | public void testKeepGoingIgnoreDependencies() { | ||||
try { | try { | ||||
//explicitly add foo for failure | //explicitly add foo for failure | ||||
Vector targetNames = new Vector(TARGET_NAMES); | |||||
Vector<String> targetNames = new Vector<String>(TARGET_NAMES); | |||||
targetNames.add(0, "foo"); | targetNames.add(0, "foo"); | ||||
getProject(IGNORE_DEPS, true, true).executeTargets(targetNames); | getProject(IGNORE_DEPS, true, true).executeTargets(targetNames); | ||||
fail("should fail"); | fail("should fail"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertTrue(e.getMessage().equals("failfoo")); | |||||
assertEquals("failfoo", e.getMessage()); | |||||
assertEquals(3, targetCount); | assertEquals(3, targetCount); | ||||
} | } | ||||
} | } | ||||
@@ -17,49 +17,52 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import static org.junit.Assert.fail; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
* created 16-Mar-2006 12:25:12 | * created 16-Mar-2006 12:25:12 | ||||
*/ | */ | ||||
public class ExtendedTaskdefTest extends BuildFileTest { | |||||
/** | |||||
* Constructor for the BuildFileTest object. | |||||
* | |||||
* @param name string to pass up to TestCase constructor | |||||
*/ | |||||
public ExtendedTaskdefTest(String name) { | |||||
super(name); | |||||
} | |||||
public class ExtendedTaskdefTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/extended-taskdef.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/extended-taskdef.xml"); | |||||
} | } | ||||
/** | |||||
* Automatically calls the target called "tearDown" | |||||
* from the build file tested if it exits. | |||||
* <p/> | |||||
* This allows to use Ant tasks directly in the build file | |||||
* to clean up after each test. Note that no "setUp" target | |||||
* is automatically called, since it's trivial to have a | |||||
* test target depend on it. | |||||
*/ | |||||
protected void tearDown() throws Exception { | |||||
super.tearDown(); | |||||
executeTarget("teardown"); | |||||
@After | |||||
public void tearDown() throws Exception { | |||||
buildRule.executeTarget("teardown"); | |||||
} | } | ||||
@Test | |||||
public void testRun() throws Exception { | public void testRun() throws Exception { | ||||
expectBuildExceptionContaining("testRun", | |||||
"exception thrown by the subclass", | |||||
"executing the Foo task"); | |||||
try { | |||||
buildRule.executeTarget("testRun"); | |||||
fail("BuildException should have been thrown"); | |||||
} catch(BuildException ex) { | |||||
assertContains("exception thrown by the subclass", "executing the Foo task", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testRun2() throws Exception { | public void testRun2() throws Exception { | ||||
expectBuildExceptionContaining("testRun2", | |||||
"exception thrown by the subclass", | |||||
"executing the Foo task"); | |||||
try { | |||||
buildRule.executeTarget("testRun2"); | |||||
fail("BuildException should have been thrown"); | |||||
} catch(BuildException ex) { | |||||
assertContains("exception thrown by the subclass", "executing the Foo task", ex.getMessage()); | |||||
} | |||||
} | } | ||||
} | } |
@@ -0,0 +1,88 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
* | |||||
*/ | |||||
package org.apache.tools.ant; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import java.io.File; | |||||
import java.io.FileReader; | |||||
import java.io.IOException; | |||||
import static org.junit.Assume.assumeTrue; | |||||
public class FileUtilities { | |||||
/** | |||||
* Reads the contents of a file into a String. | |||||
* @param project the project containing the base directory the file is in. | |||||
* @param fileName the path to the file from the base directory. | |||||
* @return the contents of the given file as a string. | |||||
* @throws IOException on error reading the file (not existing, not readable etc) | |||||
*/ | |||||
public static String getFileContents(Project project, String fileName) throws IOException { | |||||
return getFileContents(new File(project.getBaseDir(), fileName)); | |||||
} | |||||
/** | |||||
* Reads the contents of a file into a String. | |||||
* @param file the file to read. | |||||
* @return the contents of the given file as a string. | |||||
* @throws IOException on error reading the file (not existing, not readable etc) | |||||
*/ | |||||
public static String getFileContents(File file) throws IOException { | |||||
FileReader rdr = null; | |||||
try { | |||||
rdr = new FileReader(file); | |||||
return FileUtils.readFully(rdr); | |||||
} | |||||
finally { | |||||
if (rdr != null) { | |||||
rdr.close(); | |||||
} | |||||
} | |||||
} | |||||
/** | |||||
* Modified the timestamp on a file so it's <tt>seconds</tt> earlier than it was before. Where <tt>file</tt> | |||||
* is a directory, this function recurses into all child files (and directories) and reduces their modified | |||||
* timestamps by the same range, rather than set all timestamps to the same time. | |||||
* @param file the file to change, or the directory to change then recurse into | |||||
* @param seconds how many seconds to roll the timestamp back by | |||||
*/ | |||||
public static void rollbackTimetamps(File file, long seconds) { | |||||
if (null == file || !file.exists()) { | |||||
return; | |||||
} | |||||
assumeTrue(file.setLastModified(file.lastModified() - (seconds * 1000))); | |||||
if (file.isDirectory()) { | |||||
File[] children = file.listFiles(); | |||||
// only possible if exception occurs, or abstract path was not valid | |||||
if (children == null) { | |||||
return; | |||||
} | |||||
for (File child : children) { | |||||
rollbackTimetamps(child, seconds); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -18,61 +18,73 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertEquals; | |||||
/** | /** | ||||
*/ | */ | ||||
public class ImmutableTest extends BuildFileTest { | |||||
public class ImmutableTest { | |||||
public ImmutableTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/immutable.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/immutable.xml"); | |||||
} | } | ||||
// override allowed on <available> | // override allowed on <available> | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
executeTarget("test1"); | |||||
assertEquals("override", project.getProperty("test")); | |||||
buildRule.executeTarget("test1"); | |||||
assertEquals("override",buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// ensure <tstamp>'s new prefix attribute is working | // ensure <tstamp>'s new prefix attribute is working | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
executeTarget("test2"); | |||||
assertNotNull(project.getProperty("DSTAMP")); | |||||
assertNotNull(project.getProperty("start.DSTAMP")); | |||||
buildRule.executeTarget("test2"); | |||||
assertNotNull(buildRule.getProject().getProperty("DSTAMP")); | |||||
assertNotNull(buildRule.getProject().getProperty("start.DSTAMP")); | |||||
} | } | ||||
// ensure <tstamp> follows the immutability rule | // ensure <tstamp> follows the immutability rule | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
executeTarget("test3"); | |||||
assertEquals("original", project.getProperty("DSTAMP")); | |||||
buildRule.executeTarget("test3"); | |||||
assertEquals("original", buildRule.getProject().getProperty("DSTAMP")); | |||||
} | } | ||||
// ensure <condition> follows the immutability rule | // ensure <condition> follows the immutability rule | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
executeTarget("test4"); | |||||
assertEquals("original", project.getProperty("test")); | |||||
buildRule.executeTarget("test4"); | |||||
assertEquals("original", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// ensure <checksum> follows the immutability rule | // ensure <checksum> follows the immutability rule | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
assertEquals("original", project.getProperty("test")); | |||||
buildRule.executeTarget("test5"); | |||||
assertEquals("original", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// ensure <exec> follows the immutability rule | // ensure <exec> follows the immutability rule | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
executeTarget("test6"); | |||||
assertEquals("original", project.getProperty("test1")); | |||||
assertEquals("original", project.getProperty("test2")); | |||||
buildRule.executeTarget("test6"); | |||||
assertEquals("original", buildRule.getProject().getProperty("test1")); | |||||
assertEquals("original", buildRule.getProject().getProperty("test2")); | |||||
} | } | ||||
// ensure <pathconvert> follows the immutability rule | // ensure <pathconvert> follows the immutability rule | ||||
@Test | |||||
public void test7() { | public void test7() { | ||||
executeTarget("test7"); | |||||
assertEquals("original", project.getProperty("test")); | |||||
buildRule.executeTarget("test7"); | |||||
assertEquals("original", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
} | } | ||||
@@ -18,60 +18,75 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import junit.framework.AssertionFailedError; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
* Test the build file inclusion using XML entities. | * Test the build file inclusion using XML entities. | ||||
* | * | ||||
*/ | */ | ||||
public class IncludeTest extends BuildFileTest { | |||||
public IncludeTest(String name) { | |||||
super(name); | |||||
} | |||||
public class IncludeTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Test | |||||
public void test1() { | public void test1() { | ||||
configureProject("src/etc/testcases/core/include/basic/include.xml"); | |||||
expectLog("test1", "from included entity"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/basic/include.xml"); | |||||
buildRule.executeTarget("test1"); | |||||
assertEquals("from included entity", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
configureProject("src/etc/testcases/core/include/frag#ment/include.xml"); | |||||
expectLog("test1", "from included entity"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/frag#ment/include.xml"); | |||||
buildRule.executeTarget("test1"); | |||||
assertEquals("from included entity", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
configureProject("src/etc/testcases/core/include/frag#ment/simple.xml"); | |||||
expectLog("test1", "from simple buildfile"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/frag#ment/simple.xml"); | |||||
buildRule.executeTarget("test1"); | |||||
assertEquals("from simple buildfile", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
configureProject("src/etc/testcases/core/include/basic/relative.xml"); | |||||
expectLog("test1", "from included entity"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/basic/relative.xml"); | |||||
buildRule.executeTarget("test1"); | |||||
assertEquals("from included entity", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
configureProject("src/etc/testcases/core/include/frag#ment/relative.xml"); | |||||
expectLog("test1", "from included entity"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/frag#ment/relative.xml"); | |||||
buildRule.executeTarget("test1"); | |||||
assertEquals("from included entity", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testParseErrorInIncluding() { | public void testParseErrorInIncluding() { | ||||
try { | try { | ||||
configureProject("src/etc/testcases/core/include/including_file_parse_error/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/including_file_parse_error/build.xml"); | |||||
fail("should have caused a parser exception"); | fail("should have caused a parser exception"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertTrue(e.getLocation().toString() | |||||
assertContains(e.getLocation().toString() | |||||
+ " should refer to build.xml", | + " should refer to build.xml", | ||||
e.getLocation().toString().indexOf("build.xml:") > -1); | |||||
"build.xml:", e.getLocation().toString()); | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testTaskErrorInIncluding() { | public void testTaskErrorInIncluding() { | ||||
configureProject("src/etc/testcases/core/include/including_file_task_error/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/including_file_task_error/build.xml"); | |||||
try { | try { | ||||
executeTarget("test"); | |||||
buildRule.executeTarget("test"); | |||||
fail("should have cause a build failure"); | fail("should have cause a build failure"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertTrue(e.getMessage() | assertTrue(e.getMessage() | ||||
@@ -83,22 +98,24 @@ public class IncludeTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testParseErrorInIncluded() { | public void testParseErrorInIncluded() { | ||||
try { | try { | ||||
configureProject("src/etc/testcases/core/include/included_file_parse_error/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/included_file_parse_error/build.xml"); | |||||
fail("should have caused a parser exception"); | fail("should have caused a parser exception"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertTrue(e.getLocation().toString() | |||||
assertContains(e.getLocation().toString() | |||||
+ " should refer to included_file.xml", | + " should refer to included_file.xml", | ||||
e.getLocation().toString() | |||||
.indexOf("included_file.xml:") > -1); | |||||
"included_file.xml:", | |||||
e.getLocation().toString()); | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testTaskErrorInIncluded() { | public void testTaskErrorInIncluded() { | ||||
configureProject("src/etc/testcases/core/include/included_file_task_error/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/included_file_task_error/build.xml"); | |||||
try { | try { | ||||
executeTarget("test"); | |||||
buildRule.executeTarget("test"); | |||||
fail("should have cause a build failure"); | fail("should have cause a build failure"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertTrue(e.getMessage() | assertTrue(e.getMessage() | ||||
@@ -110,24 +127,25 @@ public class IncludeTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testWithSpaceInclude() { | public void testWithSpaceInclude() { | ||||
configureProject("src/etc/testcases/core/include/with space/include.xml"); | |||||
try { | |||||
expectLog("test1", "from included entity in 'with space'"); | |||||
} catch (Throwable t) { | |||||
throw new AssertionFailedError( | |||||
t.toString() + "; log=\n" + getFullLog()); | |||||
} | |||||
buildRule.configureProject("src/etc/testcases/core/include/with space/include.xml"); | |||||
buildRule.executeTarget("test1"); | |||||
assertEquals("from included entity in 'with space'", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testWithSpaceSimple() { | public void testWithSpaceSimple() { | ||||
configureProject("src/etc/testcases/core/include/with space/simple.xml"); | |||||
expectLog("test1", "from simple buildfile in 'with space'"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/with space/simple.xml"); | |||||
buildRule.executeTarget("test1"); | |||||
assertEquals("from simple buildfile in 'with space'", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testWithSpaceRelative() { | public void testWithSpaceRelative() { | ||||
configureProject("src/etc/testcases/core/include/with space/relative.xml"); | |||||
expectLog("test1", "from included entity in 'with space'"); | |||||
buildRule.configureProject("src/etc/testcases/core/include/with space/relative.xml"); | |||||
buildRule.executeTarget("test1"); | |||||
assertEquals("from included entity in 'with space'", buildRule.getLog()); | |||||
} | } | ||||
} | } |
@@ -18,8 +18,6 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import junit.framework.TestCase; | |||||
import junit.framework.AssertionFailedError; | |||||
import java.io.File; | import java.io.File; | ||||
import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||
import java.lang.reflect.InvocationTargetException; | import java.lang.reflect.InvocationTargetException; | ||||
@@ -31,43 +29,53 @@ import java.util.List; | |||||
import java.util.Locale; | import java.util.Locale; | ||||
import java.util.Map; | import java.util.Map; | ||||
import org.apache.tools.ant.taskdefs.condition.Os; | import org.apache.tools.ant.taskdefs.condition.Os; | ||||
import org.junit.Before; | |||||
import org.junit.ComparisonFailure; | |||||
import org.junit.Ignore; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertFalse; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* JUnit 3 testcases for org.apache.tools.ant.IntrospectionHelper. | |||||
* JUnit testcases for org.apache.tools.ant.IntrospectionHelper. | |||||
* | * | ||||
*/ | */ | ||||
public class IntrospectionHelperTest extends TestCase { | |||||
public class IntrospectionHelperTest { | |||||
private Project p; | private Project p; | ||||
private IntrospectionHelper ih; | private IntrospectionHelper ih; | ||||
private static final String projectBasedir = File.separator; | private static final String projectBasedir = File.separator; | ||||
public IntrospectionHelperTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
p = new Project(); | p = new Project(); | ||||
p.setBasedir(projectBasedir); | p.setBasedir(projectBasedir); | ||||
ih = IntrospectionHelper.getHelper(getClass()); | ih = IntrospectionHelper.getHelper(getClass()); | ||||
} | } | ||||
@Test | |||||
public void testIsDynamic() { | public void testIsDynamic() { | ||||
assertTrue("Not dynamic", false == ih.isDynamic()); | |||||
assertFalse("Not dynamic", ih.isDynamic()); | |||||
} | } | ||||
@Test | |||||
public void testIsContainer() { | public void testIsContainer() { | ||||
assertTrue("Not a container", false == ih.isContainer()); | |||||
assertFalse("Not a container", ih.isContainer()); | |||||
} | } | ||||
@Test | |||||
public void testAddText() throws BuildException { | public void testAddText() throws BuildException { | ||||
ih.addText(p, this, "test"); | ih.addText(p, this, "test"); | ||||
try { | try { | ||||
ih.addText(p, this, "test2"); | ih.addText(p, this, "test2"); | ||||
fail("test2 shouldn\'t be equal to test"); | fail("test2 shouldn\'t be equal to test"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof ComparisonFailure); | |||||
} | } | ||||
ih = IntrospectionHelper.getHelper(String.class); | ih = IntrospectionHelper.getHelper(String.class); | ||||
@@ -75,9 +83,12 @@ public class IntrospectionHelperTest extends TestCase { | |||||
ih.addText(p, "", "test"); | ih.addText(p, "", "test"); | ||||
fail("String doesn\'t support addText"); | fail("String doesn\'t support addText"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO the value should be asserted | |||||
} | } | ||||
} | } | ||||
@Test | |||||
@Ignore("This silently ignores a build exception") | |||||
public void testGetAddTextMethod() { | public void testGetAddTextMethod() { | ||||
Method m = ih.getAddTextMethod(); | Method m = ih.getAddTextMethod(); | ||||
assertMethod(m, "addText", String.class, "test", "bing!"); | assertMethod(m, "addText", String.class, "test", "bing!"); | ||||
@@ -88,6 +99,7 @@ public class IntrospectionHelperTest extends TestCase { | |||||
} catch (BuildException e) {} | } catch (BuildException e) {} | ||||
} | } | ||||
@Test | |||||
public void testSupportsCharacters() { | public void testSupportsCharacters() { | ||||
assertTrue("IntrospectionHelperTest supports addText", | assertTrue("IntrospectionHelperTest supports addText", | ||||
ih.supportsCharacters()); | ih.supportsCharacters()); | ||||
@@ -100,31 +112,37 @@ public class IntrospectionHelperTest extends TestCase { | |||||
assertEquals("test", text); | assertEquals("test", text); | ||||
} | } | ||||
@Test | |||||
public void testElementCreators() throws BuildException { | public void testElementCreators() throws BuildException { | ||||
try { | try { | ||||
ih.getElementType("one"); | ih.getElementType("one"); | ||||
fail("don't have element type one"); | fail("don't have element type one"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.getElementType("two"); | ih.getElementType("two"); | ||||
fail("createTwo takes arguments"); | fail("createTwo takes arguments"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.getElementType("three"); | ih.getElementType("three"); | ||||
fail("createThree returns void"); | fail("createThree returns void"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.getElementType("four"); | ih.getElementType("four"); | ||||
fail("createFour returns array"); | fail("createFour returns array"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.getElementType("five"); | ih.getElementType("five"); | ||||
fail("createFive returns primitive type"); | fail("createFive returns primitive type"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
assertEquals(String.class, ih.getElementType("six")); | assertEquals(String.class, ih.getElementType("six")); | ||||
assertEquals("test", ih.createElement(p, this, "six")); | assertEquals("test", ih.createElement(p, this, "six")); | ||||
@@ -133,31 +151,37 @@ public class IntrospectionHelperTest extends TestCase { | |||||
ih.getElementType("seven"); | ih.getElementType("seven"); | ||||
fail("addSeven takes two arguments"); | fail("addSeven takes two arguments"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.getElementType("eight"); | ih.getElementType("eight"); | ||||
fail("addEight takes no arguments"); | fail("addEight takes no arguments"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.getElementType("nine"); | ih.getElementType("nine"); | ||||
fail("nine return non void"); | fail("nine return non void"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.getElementType("ten"); | ih.getElementType("ten"); | ||||
fail("addTen takes array argument"); | fail("addTen takes array argument"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.getElementType("eleven"); | ih.getElementType("eleven"); | ||||
fail("addEleven takes primitive argument"); | fail("addEleven takes primitive argument"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.getElementType("twelve"); | ih.getElementType("twelve"); | ||||
fail("no primitive constructor for java.lang.Class"); | fail("no primitive constructor for java.lang.Class"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
assertEquals(StringBuffer.class, ih.getElementType("thirteen")); | assertEquals(StringBuffer.class, ih.getElementType("thirteen")); | ||||
assertEquals("test", ih.createElement(p, this, "thirteen").toString()); | assertEquals("test", ih.createElement(p, this, "thirteen").toString()); | ||||
@@ -186,6 +210,7 @@ public class IntrospectionHelperTest extends TestCase { | |||||
return elemMap; | return elemMap; | ||||
} | } | ||||
@Test | |||||
public void testGetNestedElements() { | public void testGetNestedElements() { | ||||
Map elemMap = getExpectedNestedElements(); | Map elemMap = getExpectedNestedElements(); | ||||
Enumeration e = ih.getNestedElements(); | Enumeration e = ih.getNestedElements(); | ||||
@@ -200,6 +225,7 @@ public class IntrospectionHelperTest extends TestCase { | |||||
assertTrue("Found all", elemMap.isEmpty()); | assertTrue("Found all", elemMap.isEmpty()); | ||||
} | } | ||||
@Test | |||||
public void testGetNestedElementMap() { | public void testGetNestedElementMap() { | ||||
Map elemMap = getExpectedNestedElements(); | Map elemMap = getExpectedNestedElements(); | ||||
Map actualMap = ih.getNestedElementMap(); | Map actualMap = ih.getNestedElementMap(); | ||||
@@ -217,9 +243,11 @@ public class IntrospectionHelperTest extends TestCase { | |||||
// Check it's a read-only map. | // Check it's a read-only map. | ||||
try { | try { | ||||
actualMap.clear(); | actualMap.clear(); | ||||
//TODO we should be asserting a value somewhere in here | |||||
} catch (UnsupportedOperationException e) {} | } catch (UnsupportedOperationException e) {} | ||||
} | } | ||||
@Test | |||||
public void testGetElementMethod() { | public void testGetElementMethod() { | ||||
assertElemMethod("six", "createSix", String.class, null); | assertElemMethod("six", "createSix", String.class, null); | ||||
assertElemMethod("thirteen", "addThirteen", null, StringBuffer.class); | assertElemMethod("thirteen", "addThirteen", null, StringBuffer.class); | ||||
@@ -286,85 +314,92 @@ public class IntrospectionHelperTest extends TestCase { | |||||
throw new NullPointerException(); | throw new NullPointerException(); | ||||
} | } | ||||
@Test | |||||
public void testAttributeSetters() throws BuildException { | public void testAttributeSetters() throws BuildException { | ||||
try { | try { | ||||
ih.setAttribute(p, this, "one", "test"); | ih.setAttribute(p, this, "one", "test"); | ||||
fail("setOne doesn't exist"); | fail("setOne doesn't exist"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.setAttribute(p, this, "two", "test"); | ih.setAttribute(p, this, "two", "test"); | ||||
fail("setTwo returns non void"); | fail("setTwo returns non void"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.setAttribute(p, this, "three", "test"); | ih.setAttribute(p, this, "three", "test"); | ||||
fail("setThree takes no args"); | fail("setThree takes no args"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.setAttribute(p, this, "four", "test"); | ih.setAttribute(p, this, "four", "test"); | ||||
fail("setFour takes two args"); | fail("setFour takes two args"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.setAttribute(p, this, "five", "test"); | ih.setAttribute(p, this, "five", "test"); | ||||
fail("setFive takes array arg"); | fail("setFive takes array arg"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
try { | try { | ||||
ih.setAttribute(p, this, "six", "test"); | ih.setAttribute(p, this, "six", "test"); | ||||
fail("Project doesn't have a String constructor"); | fail("Project doesn't have a String constructor"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
ih.setAttribute(p, this, "seven", "2"); | ih.setAttribute(p, this, "seven", "2"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "seven", "3"); | ih.setAttribute(p, this, "seven", "3"); | ||||
fail("2 shouldn't be equals to three"); | fail("2 shouldn't be equals to three"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof ComparisonFailure); | |||||
} | } | ||||
ih.setAttribute(p, this, "eight", "2"); | ih.setAttribute(p, this, "eight", "2"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "eight", "3"); | ih.setAttribute(p, this, "eight", "3"); | ||||
fail("2 shouldn't be equals to three - as int"); | fail("2 shouldn't be equals to three - as int"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue("Cause of error: " + be.toString(), be.getCause() instanceof AssertionError); | |||||
} | } | ||||
ih.setAttribute(p, this, "nine", "2"); | ih.setAttribute(p, this, "nine", "2"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "nine", "3"); | ih.setAttribute(p, this, "nine", "3"); | ||||
fail("2 shouldn't be equals to three - as Integer"); | fail("2 shouldn't be equals to three - as Integer"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
ih.setAttribute(p, this, "ten", "2"); | ih.setAttribute(p, this, "ten", "2"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "ten", "3"); | ih.setAttribute(p, this, "ten", "3"); | ||||
fail(projectBasedir+"2 shouldn't be equals to "+projectBasedir+"3"); | fail(projectBasedir+"2 shouldn't be equals to "+projectBasedir+"3"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
ih.setAttribute(p, this, "eleven", "2"); | ih.setAttribute(p, this, "eleven", "2"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "eleven", "on"); | ih.setAttribute(p, this, "eleven", "on"); | ||||
fail("on shouldn't be false"); | fail("on shouldn't be false"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
ih.setAttribute(p, this, "twelve", "2"); | ih.setAttribute(p, this, "twelve", "2"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "twelve", "on"); | ih.setAttribute(p, this, "twelve", "on"); | ||||
fail("on shouldn't be false"); | fail("on shouldn't be false"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.Project"); | ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.Project"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.ProjectHelper"); | ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.ProjectHelper"); | ||||
fail("org.apache.tools.ant.Project shouldn't be equal to org.apache.tools.ant.ProjectHelper"); | fail("org.apache.tools.ant.Project shouldn't be equal to org.apache.tools.ant.ProjectHelper"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
try { | try { | ||||
ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.Project2"); | ih.setAttribute(p, this, "thirteen", "org.apache.tools.ant.Project2"); | ||||
@@ -377,42 +412,42 @@ public class IntrospectionHelperTest extends TestCase { | |||||
ih.setAttribute(p, this, "fourteen", "on"); | ih.setAttribute(p, this, "fourteen", "on"); | ||||
fail("2 shouldn't be equals to three - as StringBuffer"); | fail("2 shouldn't be equals to three - as StringBuffer"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof ComparisonFailure); | |||||
} | } | ||||
ih.setAttribute(p, this, "fifteen", "abcd"); | ih.setAttribute(p, this, "fifteen", "abcd"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "fifteen", "on"); | ih.setAttribute(p, this, "fifteen", "on"); | ||||
fail("o shouldn't be equal to a"); | fail("o shouldn't be equal to a"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
ih.setAttribute(p, this, "sixteen", "abcd"); | ih.setAttribute(p, this, "sixteen", "abcd"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "sixteen", "on"); | ih.setAttribute(p, this, "sixteen", "on"); | ||||
fail("o shouldn't be equal to a"); | fail("o shouldn't be equal to a"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
ih.setAttribute(p, this, "seventeen", "17"); | ih.setAttribute(p, this, "seventeen", "17"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "seventeen", "3"); | ih.setAttribute(p, this, "seventeen", "3"); | ||||
fail("17 shouldn't be equals to three"); | fail("17 shouldn't be equals to three"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
ih.setAttribute(p, this, "eightteen", "18"); | ih.setAttribute(p, this, "eightteen", "18"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "eightteen", "3"); | ih.setAttribute(p, this, "eightteen", "3"); | ||||
fail("18 shouldn't be equals to three"); | fail("18 shouldn't be equals to three"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
ih.setAttribute(p, this, "nineteen", "19"); | ih.setAttribute(p, this, "nineteen", "19"); | ||||
try { | try { | ||||
ih.setAttribute(p, this, "nineteen", "3"); | ih.setAttribute(p, this, "nineteen", "3"); | ||||
fail("19 shouldn't be equals to three"); | fail("19 shouldn't be equals to three"); | ||||
} catch (BuildException be) { | } catch (BuildException be) { | ||||
assertTrue(be.getCause() instanceof AssertionFailedError); | |||||
assertTrue(be.getCause() instanceof AssertionError); | |||||
} | } | ||||
} | } | ||||
@@ -444,6 +479,7 @@ public class IntrospectionHelperTest extends TestCase { | |||||
return attrMap; | return attrMap; | ||||
} | } | ||||
@Test | |||||
public void testGetAttributes() { | public void testGetAttributes() { | ||||
Map attrMap = getExpectedAttributes(); | Map attrMap = getExpectedAttributes(); | ||||
Enumeration e = ih.getAttributes(); | Enumeration e = ih.getAttributes(); | ||||
@@ -459,6 +495,7 @@ public class IntrospectionHelperTest extends TestCase { | |||||
assertTrue("Found all", attrMap.isEmpty()); | assertTrue("Found all", attrMap.isEmpty()); | ||||
} | } | ||||
@Test | |||||
public void testGetAttributeMap() { | public void testGetAttributeMap() { | ||||
Map attrMap = getExpectedAttributes(); | Map attrMap = getExpectedAttributes(); | ||||
Map actualMap = ih.getAttributeMap(); | Map actualMap = ih.getAttributeMap(); | ||||
@@ -477,9 +514,11 @@ public class IntrospectionHelperTest extends TestCase { | |||||
// Check it's a read-only map. | // Check it's a read-only map. | ||||
try { | try { | ||||
actualMap.clear(); | actualMap.clear(); | ||||
//TODO we should be asserting a value somewhere in here | |||||
} catch (UnsupportedOperationException e) {} | } catch (UnsupportedOperationException e) {} | ||||
} | } | ||||
@Test | |||||
public void testGetAttributeMethod() { | public void testGetAttributeMethod() { | ||||
assertAttrMethod("seven", "setSeven", String.class, | assertAttrMethod("seven", "setSeven", String.class, | ||||
"2", "3"); | "2", "3"); | ||||
@@ -511,7 +550,9 @@ public class IntrospectionHelperTest extends TestCase { | |||||
try { | try { | ||||
assertAttrMethod("onehundred", null, null, null, null); | assertAttrMethod("onehundred", null, null, null, null); | ||||
fail("Should have raised a BuildException!"); | fail("Should have raised a BuildException!"); | ||||
} catch (BuildException e) {} | |||||
} catch (BuildException e) { | |||||
//TODO we should be asserting a value in here | |||||
} | |||||
} | } | ||||
private void assertAttrMethod(String attrName, String methodName, | private void assertAttrMethod(String attrName, String methodName, | ||||
@@ -593,6 +634,7 @@ public class IntrospectionHelperTest extends TestCase { | |||||
assertTrue("Expected 19, received " + d, diff > -1e-6 && diff < 1e-6); | assertTrue("Expected 19, received " + d, diff > -1e-6 && diff < 1e-6); | ||||
} | } | ||||
@Test | |||||
public void testGetExtensionPoints() { | public void testGetExtensionPoints() { | ||||
List extensions = ih.getExtensionPoints(); | List extensions = ih.getExtensionPoints(); | ||||
final int adders = 2; | final int adders = 2; | ||||
@@ -645,7 +687,7 @@ public class IntrospectionHelperTest extends TestCase { | |||||
throw new BuildException(e); | throw new BuildException(e); | ||||
} catch (InvocationTargetException e) { | } catch (InvocationTargetException e) { | ||||
Throwable t = e.getTargetException(); | Throwable t = e.getTargetException(); | ||||
assertTrue(t instanceof junit.framework.AssertionFailedError); | |||||
assertTrue(t.toString(), t instanceof AssertionError); | |||||
} | } | ||||
} | } | ||||
@@ -18,25 +18,35 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.fail; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
*/ | */ | ||||
public class LoaderRefTest extends BuildFileTest { | |||||
public LoaderRefTest(String name) { | |||||
super(name); | |||||
} | |||||
public class LoaderRefTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/loaderref/loaderref.xml"); | |||||
executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/core/loaderref/loaderref.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
// override allowed on <available> | // override allowed on <available> | ||||
public void testBadRef() { | |||||
expectBuildExceptionContaining("testbadref", "Should fail due to ref " | |||||
+ "not being a class loader", "does not reference a class loader"); | |||||
@Test | |||||
public void testBadRef() { | |||||
try { | |||||
buildRule.executeTarget("testbadref"); | |||||
fail("BuildRule should have thrown an exception due to a bad classloader being specified"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Should fail due to ref not being a class loader", "does not reference a class loader", ex.getMessage()); | |||||
} | |||||
} | } | ||||
} | } | ||||
@@ -21,49 +21,65 @@ package org.apache.tools.ant; | |||||
import org.apache.tools.ant.taskdefs.ConditionTask; | import org.apache.tools.ant.taskdefs.ConditionTask; | ||||
import org.apache.tools.ant.taskdefs.Echo; | import org.apache.tools.ant.taskdefs.Echo; | ||||
import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
public class LocationTest extends BuildFileTest { | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertFalse; | |||||
import static org.junit.Assert.assertTrue; | |||||
public class LocationTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/location.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/location.xml"); | |||||
} | } | ||||
@Test | |||||
public void testPlainTask() { | public void testPlainTask() { | ||||
executeTarget("testPlainTask"); | |||||
Echo e = (Echo) getProject().getReference("echo"); | |||||
buildRule.executeTarget("testPlainTask"); | |||||
Echo e = (Echo) buildRule.getProject().getReference("echo"); | |||||
assertFalse(e.getLocation() == Location.UNKNOWN_LOCATION); | assertFalse(e.getLocation() == Location.UNKNOWN_LOCATION); | ||||
assertFalse(e.getLocation().getLineNumber() == 0); | assertFalse(e.getLocation().getLineNumber() == 0); | ||||
} | } | ||||
@Test | |||||
public void testStandaloneType() { | public void testStandaloneType() { | ||||
executeTarget("testStandaloneType"); | |||||
Echo e = (Echo) getProject().getReference("echo2"); | |||||
FileSet f = (FileSet) getProject().getReference("fs"); | |||||
buildRule.executeTarget("testStandaloneType"); | |||||
Echo e = (Echo) buildRule.getProject().getReference("echo2"); | |||||
FileSet f = (FileSet) buildRule.getProject().getReference("fs"); | |||||
assertFalse(f.getLocation() == Location.UNKNOWN_LOCATION); | assertFalse(f.getLocation() == Location.UNKNOWN_LOCATION); | ||||
assertEquals(e.getLocation().getLineNumber() + 1, | assertEquals(e.getLocation().getLineNumber() + 1, | ||||
f.getLocation().getLineNumber()); | f.getLocation().getLineNumber()); | ||||
} | } | ||||
@Test | |||||
public void testConditionTask() { | public void testConditionTask() { | ||||
executeTarget("testConditionTask"); | |||||
TaskAdapter ta = (TaskAdapter) getProject().getReference("cond"); | |||||
buildRule.executeTarget("testConditionTask"); | |||||
TaskAdapter ta = (TaskAdapter) buildRule.getProject().getReference("cond"); | |||||
ConditionTask c = (ConditionTask) ta.getProxy(); | ConditionTask c = (ConditionTask) ta.getProxy(); | ||||
assertFalse(c.getLocation() == Location.UNKNOWN_LOCATION); | assertFalse(c.getLocation() == Location.UNKNOWN_LOCATION); | ||||
assertFalse(c.getLocation().getLineNumber() == 0); | assertFalse(c.getLocation().getLineNumber() == 0); | ||||
} | } | ||||
@Test | |||||
public void testMacrodefWrappedTask() { | public void testMacrodefWrappedTask() { | ||||
executeTarget("testMacrodefWrappedTask"); | |||||
Echo e = (Echo) getProject().getReference("echo3"); | |||||
assertTrue(getLog().indexOf("Line: " | |||||
buildRule.executeTarget("testMacrodefWrappedTask"); | |||||
Echo e = (Echo) buildRule.getProject().getReference("echo3"); | |||||
assertTrue(buildRule.getLog().indexOf("Line: " | |||||
+ (e.getLocation().getLineNumber() + 1)) | + (e.getLocation().getLineNumber() + 1)) | ||||
> -1); | > -1); | ||||
} | } | ||||
@Test | |||||
public void testPresetdefWrappedTask() { | public void testPresetdefWrappedTask() { | ||||
executeTarget("testPresetdefWrappedTask"); | |||||
Echo e = (Echo) getProject().getReference("echo4"); | |||||
assertTrue(getLog().indexOf("Line: " | |||||
buildRule.executeTarget("testPresetdefWrappedTask"); | |||||
Echo e = (Echo) buildRule.getProject().getReference("echo4"); | |||||
assertTrue(buildRule.getLog().indexOf("Line: " | |||||
+ (e.getLocation().getLineNumber() + 1)) | + (e.getLocation().getLineNumber() + 1)) | ||||
> -1); | > -1); | ||||
} | } | ||||
@@ -18,13 +18,14 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import java.util.Vector; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.assertEquals; | |||||
import junit.framework.Assert; | |||||
import java.util.Vector; | |||||
public class MockBuildListener extends Assert implements BuildListener { | |||||
public class MockBuildListener implements BuildListener { | |||||
private final Vector buffer = new Vector(); | |||||
private final Vector<BuildEvent> buffer = new Vector<BuildEvent>(); | |||||
private final Project project; | private final Project project; | ||||
public MockBuildListener(final Project project) { | public MockBuildListener(final Project project) { | ||||
@@ -18,14 +18,14 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import junit.framework.TestCase; | |||||
import org.junit.Test; | |||||
public class ProjectComponentTest extends TestCase { | |||||
import static org.junit.Assert.assertNotSame; | |||||
import static org.junit.Assert.assertSame; | |||||
public ProjectComponentTest(String name) { | |||||
super(name); | |||||
} | |||||
public class ProjectComponentTest { | |||||
@Test | |||||
public void testClone() throws CloneNotSupportedException { | public void testClone() throws CloneNotSupportedException { | ||||
Project expectedProject = new Project(); | Project expectedProject = new Project(); | ||||
Location expectedLocation = new Location("foo"); | Location expectedLocation = new Location("foo"); | ||||
@@ -19,17 +19,19 @@ package org.apache.tools.ant; | |||||
import java.io.File; | import java.io.File; | ||||
import junit.framework.TestCase; | |||||
import org.apache.tools.ant.helper.ProjectHelper2; | import org.apache.tools.ant.helper.ProjectHelper2; | ||||
import org.apache.tools.ant.types.Resource; | import org.apache.tools.ant.types.Resource; | ||||
import org.apache.tools.ant.types.resources.FileResource; | import org.apache.tools.ant.types.resources.FileResource; | ||||
import org.apache.tools.ant.types.resources.StringResource; | import org.apache.tools.ant.types.resources.StringResource; | ||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* Testing around the management of the project helpers | * Testing around the management of the project helpers | ||||
*/ | */ | ||||
public class ProjectHelperRepositoryTest extends TestCase { | |||||
public class ProjectHelperRepositoryTest { | |||||
public static class SomeHelper extends ProjectHelper { | public static class SomeHelper extends ProjectHelper { | ||||
public boolean canParseBuildFile(Resource buildFile) { | public boolean canParseBuildFile(Resource buildFile) { | ||||
@@ -42,6 +44,7 @@ public class ProjectHelperRepositoryTest extends TestCase { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testFind() throws Exception { | public void testFind() throws Exception { | ||||
ProjectHelperRepository repo = ProjectHelperRepository.getInstance(); | ProjectHelperRepository repo = ProjectHelperRepository.getInstance(); | ||||
repo.registerProjectHelper(SomeHelper.class); | repo.registerProjectHelper(SomeHelper.class); | ||||
@@ -71,7 +74,9 @@ public class ProjectHelperRepositoryTest extends TestCase { | |||||
assertTrue(helper instanceof ProjectHelper2); | assertTrue(helper instanceof ProjectHelper2); | ||||
} | } | ||||
public void testNoDefaultConstructor() throws Exception { | |||||
@Test | |||||
public void testNoDefaultContructor() throws Exception { | |||||
class IncrrectHelper extends ProjectHelper { | class IncrrectHelper extends ProjectHelper { | ||||
// the default constructor is not visible to ant here | // the default constructor is not visible to ant here | ||||
} | } | ||||
@@ -82,9 +87,11 @@ public class ProjectHelperRepositoryTest extends TestCase { | |||||
fail("Registring an helper with no default constructor should fail"); | fail("Registring an helper with no default constructor should fail"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
// ok | // ok | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testUnkwnowHelper() throws Exception { | public void testUnkwnowHelper() throws Exception { | ||||
ProjectHelperRepository repo = ProjectHelperRepository.getInstance(); | ProjectHelperRepository repo = ProjectHelperRepository.getInstance(); | ||||
try { | try { | ||||
@@ -92,6 +99,7 @@ public class ProjectHelperRepositoryTest extends TestCase { | |||||
fail("Registring an unknwon helper should fail"); | fail("Registring an unknwon helper should fail"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
// ok | // ok | ||||
//TODO we should be asserting a value in here | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -22,26 +22,39 @@ import org.apache.tools.ant.input.DefaultInputHandler; | |||||
import org.apache.tools.ant.input.InputHandler; | import org.apache.tools.ant.input.InputHandler; | ||||
import org.apache.tools.ant.input.PropertyFileInputHandler; | import org.apache.tools.ant.input.PropertyFileInputHandler; | ||||
import org.apache.tools.ant.taskdefs.condition.Os; | import org.apache.tools.ant.taskdefs.condition.Os; | ||||
import org.apache.tools.ant.types.*; | |||||
import java.io.File; | import java.io.File; | ||||
import junit.framework.TestCase; | |||||
import org.apache.tools.ant.types.FileSet; | |||||
import org.apache.tools.ant.types.Path; | |||||
import org.apache.tools.ant.types.PatternSet; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertNull; | |||||
import static org.junit.Assert.assertSame; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* Very limited test class for Project. Waiting to be extended. | * Very limited test class for Project. Waiting to be extended. | ||||
* | * | ||||
*/ | */ | ||||
public class ProjectTest extends TestCase { | |||||
public class ProjectTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
private Project p; | private Project p; | ||||
private String root; | private String root; | ||||
private MockBuildListener mbl; | private MockBuildListener mbl; | ||||
public ProjectTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
p = new Project(); | p = new Project(); | ||||
p.init(); | p.init(); | ||||
@@ -49,6 +62,7 @@ public class ProjectTest extends TestCase { | |||||
mbl = new MockBuildListener(p); | mbl = new MockBuildListener(p); | ||||
} | } | ||||
@Test | |||||
public void testDataTypes() throws BuildException { | public void testDataTypes() throws BuildException { | ||||
assertNull("dummy is not a known data type", | assertNull("dummy is not a known data type", | ||||
p.createDataType("dummy")); | p.createDataType("dummy")); | ||||
@@ -63,6 +77,7 @@ public class ProjectTest extends TestCase { | |||||
/** | /** | ||||
* This test has been a starting point for moving the code to FileUtils. | * This test has been a starting point for moving the code to FileUtils. | ||||
*/ | */ | ||||
@Test | |||||
public void testResolveFile() { | public void testResolveFile() { | ||||
if (Os.isFamily("netware") || Os.isFamily("dos")) { | if (Os.isFamily("netware") || Os.isFamily("dos")) { | ||||
assertEqualsIgnoreDriveCase(localize(File.separator), | assertEqualsIgnoreDriveCase(localize(File.separator), | ||||
@@ -178,6 +193,7 @@ public class ProjectTest extends TestCase { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testAddTaskDefinition() { | public void testAddTaskDefinition() { | ||||
p.addBuildListener(mbl); | p.addBuildListener(mbl); | ||||
@@ -209,6 +225,7 @@ public class ProjectTest extends TestCase { | |||||
assertEquals(DummyTaskWithNonVoidExecute.class, p.getTaskDefinitions().get("NonVoidExecute")); | assertEquals(DummyTaskWithNonVoidExecute.class, p.getTaskDefinitions().get("NonVoidExecute")); | ||||
} | } | ||||
@Test | |||||
public void testInputHandler() { | public void testInputHandler() { | ||||
InputHandler ih = p.getInputHandler(); | InputHandler ih = p.getInputHandler(); | ||||
assertNotNull(ih); | assertNotNull(ih); | ||||
@@ -218,33 +235,38 @@ public class ProjectTest extends TestCase { | |||||
assertSame(pfih, p.getInputHandler()); | assertSame(pfih, p.getInputHandler()); | ||||
} | } | ||||
@Test | |||||
public void testTaskDefinitionContainsKey() { | public void testTaskDefinitionContainsKey() { | ||||
assertTrue(p.getTaskDefinitions().containsKey("echo")); | assertTrue(p.getTaskDefinitions().containsKey("echo")); | ||||
} | } | ||||
@Test | |||||
public void testTaskDefinitionContains() { | public void testTaskDefinitionContains() { | ||||
assertTrue(p.getTaskDefinitions().contains(org.apache.tools.ant.taskdefs.Echo.class)); | assertTrue(p.getTaskDefinitions().contains(org.apache.tools.ant.taskdefs.Echo.class)); | ||||
} | } | ||||
@Test | |||||
public void testDuplicateTargets() { | public void testDuplicateTargets() { | ||||
// fail, because buildfile contains two targets with the same name | // fail, because buildfile contains two targets with the same name | ||||
try { | try { | ||||
BFT bft = new BFT("", "core/duplicate-target.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/duplicate-target.xml"); | |||||
fail("Should throw BuildException about duplicate target"); | |||||
} catch (BuildException ex) { | } catch (BuildException ex) { | ||||
assertEquals("specific message", | assertEquals("specific message", | ||||
"Duplicate target 'twice'", | "Duplicate target 'twice'", | ||||
ex.getMessage()); | ex.getMessage()); | ||||
return; | |||||
} | } | ||||
fail("Should throw BuildException about duplicate target"); | |||||
} | } | ||||
@Test | |||||
public void testDuplicateTargetsImport() { | public void testDuplicateTargetsImport() { | ||||
// overriding target from imported buildfile is allowed | // overriding target from imported buildfile is allowed | ||||
BFT bft = new BFT("", "core/duplicate-target2.xml"); | |||||
bft.expectLog("once", "once from buildfile"); | |||||
buildRule.configureProject("src/etc/testcases/core/duplicate-target2.xml"); | |||||
buildRule.executeTarget("once"); | |||||
assertContains("once from buildfile", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testOutputDuringMessageLoggedIsSwallowed() | public void testOutputDuringMessageLoggedIsSwallowed() | ||||
throws InterruptedException { | throws InterruptedException { | ||||
final String FOO = "foo", BAR = "bar"; | final String FOO = "foo", BAR = "bar"; | ||||
@@ -277,8 +299,10 @@ public class ProjectTest extends TestCase { | |||||
} | } | ||||
/** | /** | ||||
* @see https://issues.apache.org/bugzilla/show_bug.cgi?id=47623 | |||||
* @see <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=47623"> | |||||
* https://issues.apache.org/bugzilla/show_bug.cgi?id=47623</a> | |||||
*/ | */ | ||||
@Test | |||||
public void testNullThrowableMessageLog() { | public void testNullThrowableMessageLog() { | ||||
p.log(new Task() {}, null, new Throwable(), Project.MSG_ERR); | p.log(new Task() {}, null, new Throwable(), Project.MSG_ERR); | ||||
// be content if no exception has been thrown | // be content if no exception has been thrown | ||||
@@ -294,42 +318,10 @@ public class ProjectTest extends TestCase { | |||||
public void execute() {} | public void execute() {} | ||||
} | } | ||||
private class BFT extends org.apache.tools.ant.BuildFileTest { | |||||
BFT(String name, String buildfile) { | |||||
super(name); | |||||
this.buildfile = buildfile; | |||||
setUp(); | |||||
} | |||||
// avoid multiple configurations | |||||
boolean isConfigured = false; | |||||
// the buildfile to use | |||||
String buildfile = ""; | |||||
public void setUp() { | |||||
if (!isConfigured) { | |||||
configureProject("src/etc/testcases/"+buildfile); | |||||
isConfigured = true; | |||||
} | |||||
} | |||||
public void tearDown() { } | |||||
// call a target | |||||
public void doTarget(String target) { | |||||
if (!isConfigured) setUp(); | |||||
executeTarget(target); | |||||
} | |||||
public org.apache.tools.ant.Project getProject() { | |||||
return super.getProject(); | |||||
} | |||||
}//class-BFT | |||||
} | |||||
class DummyTaskPackage extends Task { | |||||
public DummyTaskPackage() {} | |||||
public void execute() {} | |||||
} | |||||
class DummyTaskPackage extends Task { | |||||
public DummyTaskPackage() {} | |||||
public void execute() {} | |||||
} | |||||
} |
@@ -19,33 +19,39 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import org.junit.Before; | |||||
import org.junit.Ignore; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
/** | /** | ||||
* class to look at how we expand properties | * class to look at how we expand properties | ||||
*/ | */ | ||||
public class PropertyExpansionTest extends BuildFileTest { | |||||
public PropertyExpansionTest(String name) { | |||||
super(name); | |||||
} | |||||
public class PropertyExpansionTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
/** | /** | ||||
* we bind to an existing test file because we are too lazy to write our | * we bind to an existing test file because we are too lazy to write our | ||||
* own, and we don't really care what it is | * own, and we don't really care what it is | ||||
*/ | */ | ||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/immutable.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/immutable.xml"); | |||||
} | } | ||||
/** | /** | ||||
* run through the test cases of expansion | * run through the test cases of expansion | ||||
*/ | */ | ||||
@Test | |||||
public void testPropertyExpansion() { | public void testPropertyExpansion() { | ||||
assertExpandsTo("",""); | assertExpandsTo("",""); | ||||
assertExpandsTo("$","$"); | assertExpandsTo("$","$"); | ||||
assertExpandsTo("$$-","$-"); | assertExpandsTo("$$-","$-"); | ||||
assertExpandsTo("$$","$"); | assertExpandsTo("$$","$"); | ||||
project.setProperty("expanded","EXPANDED"); | |||||
buildRule.getProject().setProperty("expanded","EXPANDED"); | |||||
assertExpandsTo("a${expanded}b","aEXPANDEDb"); | assertExpandsTo("a${expanded}b","aEXPANDEDb"); | ||||
assertExpandsTo("${expanded}${expanded}","EXPANDEDEXPANDED"); | assertExpandsTo("${expanded}${expanded}","EXPANDEDEXPANDED"); | ||||
assertExpandsTo("$$$","$$"); | assertExpandsTo("$$$","$$"); | ||||
@@ -57,6 +63,7 @@ public class PropertyExpansionTest extends BuildFileTest { | |||||
/** | /** | ||||
* new things we want | * new things we want | ||||
*/ | */ | ||||
@Test | |||||
public void testDollarPassthru() { | public void testDollarPassthru() { | ||||
assertExpandsTo("$-","$-"); | assertExpandsTo("$-","$-"); | ||||
assertExpandsTo("Class$subclass","Class$subclass"); | assertExpandsTo("Class$subclass","Class$subclass"); | ||||
@@ -71,6 +78,8 @@ public class PropertyExpansionTest extends BuildFileTest { | |||||
/** | /** | ||||
* old things we dont want; not a test no more | * old things we dont want; not a test no more | ||||
*/ | */ | ||||
@Test | |||||
@Ignore("Previously disabled through naming convention") | |||||
public void oldtestQuirkyLegacyBehavior() { | public void oldtestQuirkyLegacyBehavior() { | ||||
assertExpandsTo("Class$subclass","Classsubclass"); | assertExpandsTo("Class$subclass","Classsubclass"); | ||||
assertExpandsTo("$$$-","$-"); | assertExpandsTo("$$$-","$-"); | ||||
@@ -82,7 +91,7 @@ public class PropertyExpansionTest extends BuildFileTest { | |||||
* little helper method to validate stuff | * little helper method to validate stuff | ||||
*/ | */ | ||||
private void assertExpandsTo(String source,String expected) { | private void assertExpandsTo(String source,String expected) { | ||||
String actual=project.replaceProperties(source); | |||||
String actual = buildRule.getProject().replaceProperties(source); | |||||
assertEquals(source,expected,actual); | assertEquals(source,expected,actual); | ||||
} | } | ||||
@@ -21,11 +21,14 @@ package org.apache.tools.ant; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileReader; | import java.io.FileReader; | ||||
import java.io.FileWriter; | import java.io.FileWriter; | ||||
import junit.framework.TestCase; | |||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.junit.Test; | |||||
public class PropertyFileCLITest extends TestCase { | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
public class PropertyFileCLITest { | |||||
@Test | |||||
public void testPropertyResolution() throws Exception { | public void testPropertyResolution() throws Exception { | ||||
FileUtils fu = FileUtils.getFileUtils(); | FileUtils fu = FileUtils.getFileUtils(); | ||||
File props = fu.createTempFile("propertyfilecli", ".properties", | File props = fu.createTempFile("propertyfilecli", ".properties", | ||||
@@ -51,8 +54,7 @@ public class PropertyFileCLITest extends TestCase { | |||||
"-l", log.getAbsolutePath() | "-l", log.getAbsolutePath() | ||||
}, null, null); | }, null, null); | ||||
String l = FileUtils.safeReadFully(fr = new FileReader(log)); | String l = FileUtils.safeReadFully(fr = new FileReader(log)); | ||||
assertTrue("expected log to contain 'Hello, world' but was " + l, | |||||
l.indexOf("Hello, world") > -1); | |||||
assertContains("Hello, world", l); | |||||
} finally { | } finally { | ||||
FileUtils.close(fw); | FileUtils.close(fw); | ||||
FileUtils.close(fr); | FileUtils.close(fr); | ||||
@@ -18,40 +18,49 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
public class TaskContainerTest extends BuildFileTest { | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
public TaskContainerTest(String name) { | |||||
super(name); | |||||
} | |||||
import static org.junit.Assert.assertTrue; | |||||
public class TaskContainerTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/taskcontainer.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/taskcontainer.xml"); | |||||
} | } | ||||
@Test | |||||
public void testPropertyExpansion() { | public void testPropertyExpansion() { | ||||
executeTarget("testPropertyExpansion"); | |||||
buildRule.executeTarget("testPropertyExpansion"); | |||||
assertTrue("attribute worked", | assertTrue("attribute worked", | ||||
getLog().indexOf("As attribute: it worked") > -1); | |||||
buildRule.getLog().indexOf("As attribute: it worked") > -1); | |||||
assertTrue("nested text worked", | assertTrue("nested text worked", | ||||
getLog().indexOf("As nested text: it worked") > -1); | |||||
buildRule.getLog().indexOf("As nested text: it worked") > -1); | |||||
} | } | ||||
@Test | |||||
public void testTaskdef() { | public void testTaskdef() { | ||||
executeTarget("testTaskdef"); | |||||
buildRule.executeTarget("testTaskdef"); | |||||
assertTrue("attribute worked", | assertTrue("attribute worked", | ||||
getLog().indexOf("As attribute: it worked") > -1); | |||||
buildRule.getLog().indexOf("As attribute: it worked") > -1); | |||||
assertTrue("nested text worked", | assertTrue("nested text worked", | ||||
getLog().indexOf("As nested text: it worked") > -1); | |||||
buildRule.getLog().indexOf("As nested text: it worked") > -1); | |||||
assertTrue("nested text worked", | assertTrue("nested text worked", | ||||
getLog().indexOf("As nested task: it worked") > -1); | |||||
buildRule.getLog().indexOf("As nested task: it worked") > -1); | |||||
} | } | ||||
@Test | |||||
public void testCaseInsensitive() { | public void testCaseInsensitive() { | ||||
executeTarget("testCaseInsensitive"); | |||||
buildRule.executeTarget("testCaseInsensitive"); | |||||
assertTrue("works outside of container", | assertTrue("works outside of container", | ||||
getLog().indexOf("hello ") > -1); | |||||
buildRule.getLog().indexOf("hello ") > -1); | |||||
assertTrue("works inside of container", | assertTrue("works inside of container", | ||||
getLog().indexOf("world") > -1); | |||||
buildRule.getLog().indexOf("world") > -1); | |||||
} | } | ||||
} | } |
@@ -21,29 +21,39 @@ package org.apache.tools.ant; | |||||
// This test will fail with embed, or if top-level is moved out of | // This test will fail with embed, or if top-level is moved out of | ||||
// dependency - as 'echo' happens as part of configureProject stage. | // dependency - as 'echo' happens as part of configureProject stage. | ||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
/** | /** | ||||
* Tests for builds with tasks at the top level | * Tests for builds with tasks at the top level | ||||
* | * | ||||
* @since Ant 1.6 | * @since Ant 1.6 | ||||
*/ | */ | ||||
public class TopLevelTaskTest extends BuildFileTest { | |||||
public class TopLevelTaskTest { | |||||
public TopLevelTaskTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Test | |||||
public void testNoTarget() { | public void testNoTarget() { | ||||
configureProject("src/etc/testcases/core/topleveltasks/notarget.xml"); | |||||
expectLog("", "Called"); | |||||
buildRule.configureProject("src/etc/testcases/core/topleveltasks/notarget.xml"); | |||||
buildRule.executeTarget(""); | |||||
assertEquals("Called", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testCalledFromTopLevelAnt() { | public void testCalledFromTopLevelAnt() { | ||||
configureProject("src/etc/testcases/core/topleveltasks/toplevelant.xml"); | |||||
expectLog("", "Called"); | |||||
buildRule.configureProject("src/etc/testcases/core/topleveltasks/toplevelant.xml"); | |||||
buildRule.executeTarget(""); | |||||
assertEquals("Called", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testCalledFromTargetLevelAnt() { | public void testCalledFromTargetLevelAnt() { | ||||
configureProject("src/etc/testcases/core/topleveltasks/targetlevelant.xml"); | |||||
expectLog("foo", "Called"); | |||||
buildRule.configureProject("src/etc/testcases/core/topleveltasks/targetlevelant.xml"); | |||||
buildRule.executeTarget("foo"); | |||||
assertEquals("Called", buildRule.getLog()); | |||||
} | } | ||||
} | } |
@@ -18,26 +18,45 @@ | |||||
package org.apache.tools.ant; | package org.apache.tools.ant; | ||||
import org.junit.Before; | |||||
import org.junit.Ignore; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.Iterator; | import java.util.Iterator; | ||||
import java.util.List; | import java.util.List; | ||||
public class UnknownElementTest extends BuildFileTest { | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.assertNotNull; | |||||
public class UnknownElementTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/core/unknownelement.xml"); | |||||
buildRule.configureProject("src/etc/testcases/core/unknownelement.xml"); | |||||
} | } | ||||
@Test | |||||
public void testMaybeConfigure() { | public void testMaybeConfigure() { | ||||
// make sure we do not get a NPE | // make sure we do not get a NPE | ||||
executeTarget("testMaybeConfigure"); | |||||
buildRule.executeTarget("testMaybeConfigure"); | |||||
} | } | ||||
/** | /** | ||||
* Not really a UnknownElement test but rather one of "what | * Not really a UnknownElement test but rather one of "what | ||||
* information is available in taskFinished". | * information is available in taskFinished". | ||||
* @see https://issues.apache.org/bugzilla/show_bug.cgi?id=26197 | |||||
* @see <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=26197"> | |||||
* https://issues.apache.org/bugzilla/show_bug.cgi?id=26197</a> | |||||
*/ | */ | ||||
@Test | |||||
@Ignore("Previously disabled through naming convention") | |||||
public void XtestTaskFinishedEvent() { | public void XtestTaskFinishedEvent() { | ||||
getProject().addBuildListener(new BuildListener() { | |||||
buildRule.getProject().addBuildListener(new BuildListener() { | |||||
public void buildStarted(BuildEvent event) {} | public void buildStarted(BuildEvent event) {} | ||||
public void buildFinished(BuildEvent event) {} | public void buildFinished(BuildEvent event) {} | ||||
public void targetStarted(BuildEvent event) {} | public void targetStarted(BuildEvent event) {} | ||||
@@ -58,7 +77,7 @@ public class UnknownElementTest extends BuildFileTest { | |||||
t.getClass().getName()); | t.getClass().getName()); | ||||
} | } | ||||
}); | }); | ||||
executeTarget("echo"); | |||||
buildRule.executeTarget("echo"); | |||||
} | } | ||||
public static class Child extends Task { | public static class Child extends Task { | ||||
@@ -21,16 +21,21 @@ package org.apache.tools.ant.filters; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.apache.tools.ant.util.StringUtils; | import org.apache.tools.ant.util.StringUtils; | ||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
/** | /** | ||||
* JUnit Testcases for ConcatReader | * JUnit Testcases for ConcatReader | ||||
*/ | */ | ||||
public class ConcatFilterTest extends BuildFileTest { | |||||
public class ConcatFilterTest { | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
private static final String lSep = StringUtils.LINE_SEP; | private static final String lSep = StringUtils.LINE_SEP; | ||||
private static final String FILE_PREPEND_WITH = | private static final String FILE_PREPEND_WITH = | ||||
@@ -65,48 +70,55 @@ public class ConcatFilterTest extends BuildFileTest { | |||||
+ "Line 60" + lSep | + "Line 60" + lSep | ||||
; | ; | ||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
public ConcatFilterTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/filters/concat.xml"); | |||||
buildRule.configureProject("src/etc/testcases/filters/concat.xml"); | |||||
} | } | ||||
@Test | |||||
public void testFilterReaderNoArgs() throws IOException { | public void testFilterReaderNoArgs() throws IOException { | ||||
executeTarget("testFilterReaderNoArgs"); | |||||
File expected = new File(getProject().getProperty("output"), "concatfilter.test"); | |||||
File result = new File(getProject().getProperty("output"), "concat.FilterReaderNoArgs.test"); | |||||
assertTrue("testFilterReaderNoArgs: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testFilterReaderNoArgs"); | |||||
File expected = new File(buildRule.getProject().getProperty("output"), "concatfilter.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output"), "concat.FilterReaderNoArgs.test"); | |||||
assertEquals("testFilterReaderNoArgs: Result not like expected", FileUtilities.getFileContents(expected), | |||||
FileUtilities.getFileContents(result)); | |||||
} | } | ||||
public void testFilterReaderBefore() { | |||||
@Test | |||||
public void testFilterReaderBefore() throws IOException { | |||||
doTest("testFilterReaderPrepend", FILE_PREPEND_WITH, FILE_APPEND); | doTest("testFilterReaderPrepend", FILE_PREPEND_WITH, FILE_APPEND); | ||||
} | } | ||||
public void testFilterReaderAfter() { | |||||
@Test | |||||
public void testFilterReaderAfter() throws IOException { | |||||
doTest("testFilterReaderAppend", FILE_PREPEND, FILE_APPEND_WITH); | doTest("testFilterReaderAppend", FILE_PREPEND, FILE_APPEND_WITH); | ||||
} | } | ||||
public void testFilterReaderBeforeAfter() { | |||||
@Test | |||||
public void testFilterReaderBeforeAfter() throws IOException { | |||||
doTest("testFilterReaderPrependAppend", FILE_PREPEND_WITH, FILE_APPEND_WITH); | doTest("testFilterReaderPrependAppend", FILE_PREPEND_WITH, FILE_APPEND_WITH); | ||||
} | } | ||||
public void testConcatFilter() { | |||||
@Test | |||||
public void testConcatFilter() throws IOException { | |||||
doTest("testConcatFilter", FILE_PREPEND, FILE_APPEND); | doTest("testConcatFilter", FILE_PREPEND, FILE_APPEND); | ||||
} | } | ||||
public void testConcatFilterBefore() { | |||||
@Test | |||||
public void testConcatFilterBefore() throws IOException { | |||||
doTest("testConcatFilterPrepend", FILE_PREPEND_WITH, FILE_APPEND); | doTest("testConcatFilterPrepend", FILE_PREPEND_WITH, FILE_APPEND); | ||||
} | } | ||||
public void testConcatFilterAfter() { | |||||
@Test | |||||
public void testConcatFilterAfter() throws IOException { | |||||
doTest("testConcatFilterAppend", FILE_PREPEND, FILE_APPEND_WITH); | doTest("testConcatFilterAppend", FILE_PREPEND, FILE_APPEND_WITH); | ||||
} | } | ||||
public void testConcatFilterBeforeAfter() { | |||||
@Test | |||||
public void testConcatFilterBeforeAfter() throws IOException { | |||||
doTest("testConcatFilterPrependAppend", FILE_PREPEND_WITH, FILE_APPEND_WITH); | doTest("testConcatFilterPrependAppend", FILE_PREPEND_WITH, FILE_APPEND_WITH); | ||||
} | } | ||||
@@ -119,33 +131,13 @@ public class ConcatFilterTest extends BuildFileTest { | |||||
* @param expectedStart The string which should be at the beginning of the file | * @param expectedStart The string which should be at the beginning of the file | ||||
* @param expectedEnd The string which should be at the end of the file | * @param expectedEnd The string which should be at the end of the file | ||||
*/ | */ | ||||
protected void doTest(String target, String expectedStart, String expectedEnd) { | |||||
executeTarget(target); | |||||
String resultContent = read(getProject().getProperty("output") + "/concat." + target.substring(4) + ".test"); | |||||
protected void doTest(String target, String expectedStart, String expectedEnd) throws IOException { | |||||
buildRule.executeTarget(target); | |||||
String resultContent = FileUtilities.getFileContents( | |||||
new File(buildRule.getProject().getProperty("output") + "/concat." + target.substring(4) + ".test")); | |||||
assertTrue("First 5 lines differs.", resultContent.startsWith(expectedStart)); | assertTrue("First 5 lines differs.", resultContent.startsWith(expectedStart)); | ||||
assertTrue("Last 5 lines differs.", resultContent.endsWith(expectedEnd)); | assertTrue("Last 5 lines differs.", resultContent.endsWith(expectedEnd)); | ||||
} | } | ||||
/** | |||||
* Wrapper for FileUtils.readFully(). | |||||
* Additionally it resolves the filename according the the projects basedir | |||||
* and closes the used reader. | |||||
* @param filename The name of the file to read | |||||
* @return the content of the file or <i>null</i> if something goes wrong | |||||
*/ | |||||
protected String read(String filename) { | |||||
String content = null; | |||||
try { | |||||
File file = FILE_UTILS.resolveFile(getProject().getBaseDir(), filename); | |||||
java.io.FileReader rdr = new java.io.FileReader(file); | |||||
content = FileUtils.readFully(rdr); | |||||
rdr.close(); | |||||
rdr = null; | |||||
} catch (Exception e) { | |||||
e.printStackTrace(); | |||||
} | |||||
return content; | |||||
} | |||||
} | } |
@@ -18,67 +18,38 @@ | |||||
package org.apache.tools.ant.filters; | package org.apache.tools.ant.filters; | ||||
import java.io.File; | |||||
import java.io.Reader; | import java.io.Reader; | ||||
import java.io.FileReader; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | |||||
*/ | |||||
public class DynamicFilterTest extends BuildFileTest { | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
public DynamicFilterTest(String name) { | |||||
super(name); | |||||
} | |||||
public class DynamicFilterTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/filters/dynamicfilter.xml"); | |||||
executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/filters/dynamicfilter.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
@Test | |||||
public void testCustomFilter() throws IOException { | public void testCustomFilter() throws IOException { | ||||
expectFileContains("dynamicfilter", getProject().getProperty("output") + "/dynamicfilter", | |||||
"hellO wOrld"); | |||||
buildRule.executeTarget("dynamicfilter"); | |||||
String content = FileUtilities.getFileContents( | |||||
new File(buildRule.getProject().getProperty("output") + "/dynamicfilter")); | |||||
assertContains("hellO wOrld", content); | |||||
} | } | ||||
// ------------------------------------------------------ | |||||
// Helper methods | |||||
// ----------------------------------------------------- | |||||
private String getFileString(String filename) | |||||
throws IOException | |||||
{ | |||||
Reader r = null; | |||||
try { | |||||
r = new FileReader(FILE_UTILS.resolveFile(getProject().getBaseDir(), filename)); | |||||
return FileUtils.readFully(r); | |||||
} | |||||
finally { | |||||
FileUtils.close(r); | |||||
} | |||||
} | |||||
private void expectFileContains(String name, String contains) | |||||
throws IOException | |||||
{ | |||||
String content = getFileString(name); | |||||
assertTrue( | |||||
"expecting file " + name + " to contain " + contains + | |||||
" but got " + content, content.indexOf(contains) > -1); | |||||
} | |||||
private void expectFileContains( | |||||
String target, String name, String contains) | |||||
throws IOException | |||||
{ | |||||
executeTarget(target); | |||||
expectFileContains(name, contains); | |||||
} | |||||
public static class CustomFilter implements ChainableReader { | public static class CustomFilter implements ChainableReader { | ||||
char replace = 'x'; | char replace = 'x'; | ||||
@@ -21,28 +21,30 @@ package org.apache.tools.ant.filters; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | |||||
*/ | |||||
public class EscapeUnicodeTest extends BuildFileTest { | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
import static org.junit.Assert.assertEquals; | |||||
public EscapeUnicodeTest(String name) { | |||||
super(name); | |||||
} | |||||
public class EscapeUnicodeTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/filters/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/filters/build.xml"); | |||||
} | } | ||||
@Test | |||||
public void testEscapeUnicode() throws IOException { | public void testEscapeUnicode() throws IOException { | ||||
executeTarget("testEscapeUnicode"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(), "expected/escapeunicode.test"); | |||||
File result = new File(getProject().getProperty("output"), "escapeunicode.test"); | |||||
assertTrue(FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testEscapeUnicode"); | |||||
File expected = buildRule.getProject().resolveFile("expected/escapeunicode.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output"), "escapeunicode.test"); | |||||
assertEquals(FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
} | } |
@@ -21,105 +21,117 @@ package org.apache.tools.ant.filters; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
/** JUnit Testcases for TailFilter and HeadFilter | /** JUnit Testcases for TailFilter and HeadFilter | ||||
*/ | */ | ||||
/* I wrote the testcases in one java file because I want also to test the | /* I wrote the testcases in one java file because I want also to test the | ||||
* combined behaviour (see end of the class). | * combined behaviour (see end of the class). | ||||
*/ | */ | ||||
public class HeadTailTest extends BuildFileTest { | |||||
public class HeadTailTest { | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
public HeadTailTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/filters/head-tail.xml"); | |||||
buildRule.configureProject("src/etc/testcases/filters/head-tail.xml"); | |||||
} | } | ||||
@Test | |||||
public void testHead() throws IOException { | public void testHead() throws IOException { | ||||
executeTarget("testHead"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(), "expected/head-tail.head.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.head.test"); | |||||
assertTrue("testHead: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testHead"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.head.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.head.test"); | |||||
assertEquals("testHead: Result not like expected", FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testHeadLines() throws IOException { | public void testHeadLines() throws IOException { | ||||
executeTarget("testHeadLines"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(), "expected/head-tail.headLines.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.headLines.test"); | |||||
assertTrue("testHeadLines: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testHeadLines"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.headLines.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.headLines.test"); | |||||
assertEquals("testHeadLines: Result not like expected", FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testHeadSkip() throws IOException { | public void testHeadSkip() throws IOException { | ||||
executeTarget("testHeadSkip"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/head-tail.headSkip.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.headSkip.test"); | |||||
assertTrue("testHeadSkip: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testHeadSkip"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.headSkip.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.headSkip.test"); | |||||
assertEquals("testHeadSkip: Result not like expected", FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testHeadLinesSkip() throws IOException { | public void testHeadLinesSkip() throws IOException { | ||||
executeTarget("testHeadLinesSkip"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/head-tail.headLinesSkip.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.headLinesSkip.test"); | |||||
assertTrue("testHeadLinesSkip: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testHeadLinesSkip"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.headLinesSkip.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.headLinesSkip.test"); | |||||
assertEquals("testHeadLinesSkip: Result not like expected", FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testFilterReaderHeadLinesSkip() throws IOException { | public void testFilterReaderHeadLinesSkip() throws IOException { | ||||
executeTarget("testFilterReaderHeadLinesSkip"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(), | |||||
"expected/head-tail.headLinesSkip.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.filterReaderHeadLinesSkip.test"); | |||||
assertTrue("testFilterReaderHeadLinesSkip: Result not like expected", | |||||
FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testFilterReaderHeadLinesSkip"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.headLinesSkip.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.filterReaderHeadLinesSkip.test"); | |||||
assertEquals("testFilterReaderHeadLinesSkip: Result not like expected", | |||||
FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testTail() throws IOException { | public void testTail() throws IOException { | ||||
executeTarget("testTail"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/head-tail.tail.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.tail.test"); | |||||
assertTrue("testTail: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testTail"); | |||||
File expected =buildRule.getProject().resolveFile("expected/head-tail.tail.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.tail.test"); | |||||
assertEquals("testTail: Result not like expected", FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testTailLines() throws IOException { | public void testTailLines() throws IOException { | ||||
executeTarget("testTailLines"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/head-tail.tailLines.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.tailLines.test"); | |||||
assertTrue("testTailLines: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testTailLines"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.tailLines.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.tailLines.test"); | |||||
assertEquals("testTailLines: Result not like expected", FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testTailSkip() throws IOException { | public void testTailSkip() throws IOException { | ||||
executeTarget("testTailSkip"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/head-tail.tailSkip.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.tailSkip.test"); | |||||
assertTrue("testTailSkip: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testTailSkip"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.tailSkip.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.tailSkip.test"); | |||||
assertEquals("testTailSkip: Result not like expected", FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testTailLinesSkip() throws IOException { | public void testTailLinesSkip() throws IOException { | ||||
executeTarget("testTailLinesSkip"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/head-tail.tailLinesSkip.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.tailLinesSkip.test"); | |||||
assertTrue("testTailLinesSkip: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testTailLinesSkip"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.tailLinesSkip.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.tailLinesSkip.test"); | |||||
assertEquals("testTailLinesSkip: Result not like expected", FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testFilterReaderTailLinesSkip() throws IOException { | public void testFilterReaderTailLinesSkip() throws IOException { | ||||
executeTarget("testFilterReaderTailLinesSkip"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(), | |||||
"expected/head-tail.tailLinesSkip.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.filterReaderTailLinesSkip.test"); | |||||
assertTrue("testFilterReaderTailLinesSkip: Result not like expected", | |||||
FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testFilterReaderTailLinesSkip"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.tailLinesSkip.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.filterReaderTailLinesSkip.test"); | |||||
assertEquals("testFilterReaderTailLinesSkip: Result not like expected", | |||||
FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testHeadTail() throws IOException { | public void testHeadTail() throws IOException { | ||||
executeTarget("testHeadTail"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/head-tail.headtail.test"); | |||||
File result = new File(getProject().getProperty("output") + "/head-tail.headtail.test"); | |||||
assertTrue("testHeadTail: Result not like expected", FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testHeadTail"); | |||||
File expected = buildRule.getProject().resolveFile("expected/head-tail.headtail.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output") + "/head-tail.headtail.test"); | |||||
assertEquals("testHeadTail: Result not like expected", FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
} | } |
@@ -21,32 +21,37 @@ package org.apache.tools.ant.filters; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | |||||
*/ | |||||
public class LineContainsTest extends BuildFileTest { | |||||
import static org.junit.Assert.assertEquals; | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
public LineContainsTest(String name) { | |||||
super(name); | |||||
} | |||||
public class LineContainsTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/filters/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/filters/build.xml"); | |||||
} | } | ||||
@Test | |||||
public void testLineContains() throws IOException { | public void testLineContains() throws IOException { | ||||
executeTarget("testLineContains"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/linecontains.test"); | |||||
File result = new File(getProject().getProperty("output"),"linecontains.test"); | |||||
assertTrue(FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testLineContains"); | |||||
File expected = buildRule.getProject().resolveFile("expected/linecontains.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output"),"linecontains.test"); | |||||
assertEquals(FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testNegateLineContains() throws IOException { | public void testNegateLineContains() throws IOException { | ||||
executeTarget("testNegateLineContains"); | |||||
buildRule.executeTarget("testNegateLineContains"); | |||||
} | } | ||||
} | } |
@@ -20,24 +20,29 @@ package org.apache.tools.ant.filters; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** JUnit Testcases for No new line when filterchain used | /** JUnit Testcases for No new line when filterchain used | ||||
*/ | */ | ||||
public class NoNewLineTest extends BuildFileTest { | |||||
public class NoNewLineTest { | |||||
public NoNewLineTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/filters/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/filters/build.xml"); | |||||
} | } | ||||
@Test | |||||
public void testNoAddNewLine() throws IOException { | public void testNoAddNewLine() throws IOException { | ||||
executeTarget("testNoAddNewLine"); | |||||
buildRule.executeTarget("testNoAddNewLine"); | |||||
} | } | ||||
@@ -21,35 +21,39 @@ package org.apache.tools.ant.filters; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | |||||
*/ | |||||
public class ReplaceTokensTest extends BuildFileTest { | |||||
import static org.junit.Assert.assertEquals; | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
public class ReplaceTokensTest { | |||||
public ReplaceTokensTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/filters/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/filters/build.xml"); | |||||
} | } | ||||
@Test | |||||
public void testReplaceTokens() throws IOException { | public void testReplaceTokens() throws IOException { | ||||
executeTarget("testReplaceTokens"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/replacetokens.test"); | |||||
File result = new File(getProject().getProperty("output"), "replacetokens.test"); | |||||
assertTrue(FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testReplaceTokens"); | |||||
File expected = buildRule.getProject().resolveFile("expected/replacetokens.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output"), "replacetokens.test"); | |||||
assertEquals(FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
@Test | |||||
public void testReplaceTokensPropertyFile() throws IOException { | public void testReplaceTokensPropertyFile() throws IOException { | ||||
executeTarget("testReplaceTokensPropertyFile"); | |||||
File expected = FILE_UTILS.resolveFile(getProjectDir(), "expected/replacetokens.test"); | |||||
File result = new File(getProject().getProperty("output"), "replacetokensPropertyFile.test"); | |||||
assertTrue(FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testReplaceTokensPropertyFile"); | |||||
File expected = buildRule.getProject().resolveFile("expected/replacetokens.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output"), "replacetokensPropertyFile.test"); | |||||
assertEquals(FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
} | } |
@@ -21,28 +21,31 @@ package org.apache.tools.ant.filters; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | |||||
*/ | |||||
public class StripJavaCommentsTest extends BuildFileTest { | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
import static org.junit.Assert.assertEquals; | |||||
public StripJavaCommentsTest(String name) { | |||||
super(name); | |||||
} | |||||
public class StripJavaCommentsTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/filters/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/filters/build.xml"); | |||||
} | } | ||||
@Test | |||||
public void testStripJavaComments() throws IOException { | public void testStripJavaComments() throws IOException { | ||||
executeTarget("testStripJavaComments"); | |||||
File expected = FILE_UTILS.resolveFile(getProject().getBaseDir(),"expected/stripjavacomments.test"); | |||||
File result = new File(getProject().getProperty("output"), "stripjavacomments.test"); | |||||
assertTrue(FILE_UTILS.contentEquals(expected, result)); | |||||
buildRule.executeTarget("testStripJavaComments"); | |||||
File expected = buildRule.getProject().resolveFile("expected/stripjavacomments.test"); | |||||
File result = new File(buildRule.getProject().getProperty("output"), "stripjavacomments.test"); | |||||
assertEquals(FileUtilities.getFileContents(expected), FileUtilities.getFileContents(result)); | |||||
} | } | ||||
} | } |
@@ -18,265 +18,252 @@ | |||||
package org.apache.tools.ant.filters; | package org.apache.tools.ant.filters; | ||||
import java.io.Reader; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.apache.tools.ant.AntAssert.assertNotContains; | |||||
import static org.junit.Assert.assertFalse; | |||||
import static org.junit.Assert.assertTrue; | |||||
import java.io.FileReader; | import java.io.FileReader; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.Reader; | |||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.junit.Assume; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
*/ | */ | ||||
public class TokenFilterTest extends BuildFileTest { | |||||
public class TokenFilterTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | ||||
public TokenFilterTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/filters/tokenfilter.xml"); | |||||
executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/filters/tokenfilter.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
/** make sure tokenfilter exists */ | /** make sure tokenfilter exists */ | ||||
@Test | |||||
public void testTokenfilter() throws IOException { | public void testTokenfilter() throws IOException { | ||||
executeTarget("tokenfilter"); | |||||
buildRule.executeTarget("tokenfilter"); | |||||
} | } | ||||
@Test | |||||
public void testTrimignore() throws IOException { | public void testTrimignore() throws IOException { | ||||
expectLogContaining("trimignore", "Hello-World"); | |||||
buildRule.executeTarget("trimignore"); | |||||
assertContains("Hello-World", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testStringTokenizer() throws IOException { | public void testStringTokenizer() throws IOException { | ||||
expectLogContaining( | |||||
"stringtokenizer", "#This#is#a#number#of#words#"); | |||||
buildRule.executeTarget("stringtokenizer"); | |||||
assertContains("#This#is#a#number#of#words#", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testUnixLineOutput() throws IOException { | public void testUnixLineOutput() throws IOException { | ||||
expectFileContains( | |||||
"unixlineoutput", getProject().getProperty("output") + "/unixlineoutput", | |||||
"\nThis\nis\na\nnumber\nof\nwords\n"); | |||||
buildRule.executeTarget("unixlineoutput"); | |||||
assertContains("\nThis\nis\na\nnumber\nof\nwords\n", | |||||
getFileString(buildRule.getProject().getProperty("output") + "/unixlineoutput")); | |||||
} | } | ||||
@Test | |||||
public void testDosLineOutput() throws IOException { | public void testDosLineOutput() throws IOException { | ||||
expectFileContains( | |||||
"doslineoutput", getProject().getProperty("output") + "/doslineoutput", | |||||
"\r\nThis\r\nis\r\na\r\nnumber\r\nof\r\nwords\r\n"); | |||||
buildRule.executeTarget("doslineoutput"); | |||||
assertContains("\r\nThis\r\nis\r\na\r\nnumber\r\nof\r\nwords\r\n", | |||||
getFileString(buildRule.getProject().getProperty("output") + "/doslineoutput")); | |||||
} | } | ||||
@Test | |||||
public void testFileTokenizer() throws IOException { | public void testFileTokenizer() throws IOException { | ||||
String contents = getFileString( | |||||
"filetokenizer", getProject().getProperty("output") + "/filetokenizer"); | |||||
assertStringContains(contents, " of words"); | |||||
assertStringNotContains(contents, " This is"); | |||||
buildRule.executeTarget("filetokenizer"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/filetokenizer"); | |||||
assertContains(" of words", contents); | |||||
assertNotContains(" This is", contents); | |||||
} | } | ||||
@Test | |||||
public void testReplaceString() throws IOException { | public void testReplaceString() throws IOException { | ||||
expectFileContains( | |||||
"replacestring", getProject().getProperty("output") + "/replacestring", | |||||
"this is the moon"); | |||||
buildRule.executeTarget("replacestring"); | |||||
assertContains("this is the moon", | |||||
getFileString(buildRule.getProject().getProperty("output") + "/replacestring")); | |||||
} | } | ||||
@Test | |||||
public void testReplaceStrings() throws IOException { | public void testReplaceStrings() throws IOException { | ||||
expectLogContaining("replacestrings", "bar bar bar"); | |||||
buildRule.executeTarget("replacestrings"); | |||||
assertContains("bar bar bar", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testContainsString() throws IOException { | public void testContainsString() throws IOException { | ||||
String contents = getFileString( | |||||
"containsstring", getProject().getProperty("output") + "/containsstring"); | |||||
assertStringContains(contents, "this is a line contains foo"); | |||||
assertStringNotContains(contents, "this line does not"); | |||||
buildRule.executeTarget("containsstring"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/containsstring"); | |||||
assertContains("this is a line contains foo", contents); | |||||
assertNotContains("this line does not", contents); | |||||
} | } | ||||
@Test | |||||
public void testReplaceRegex() throws IOException { | public void testReplaceRegex() throws IOException { | ||||
if (! hasRegex("testReplaceRegex")) | |||||
return; | |||||
String contents = getFileString( | |||||
"replaceregex", getProject().getProperty("output") + "/replaceregex"); | |||||
assertStringContains(contents, "world world world world"); | |||||
assertStringContains(contents, "dog Cat dog"); | |||||
assertStringContains(contents, "moon Sun Sun"); | |||||
assertStringContains(contents, "found WhiteSpace"); | |||||
assertStringContains(contents, "Found digits [1234]"); | |||||
assertStringNotContains(contents, "This is a line with digits"); | |||||
buildRule.executeTarget("hasregex"); | |||||
Assume.assumeTrue("Regex not present", | |||||
getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||||
buildRule.executeTarget("replaceregex"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/replaceregex"); | |||||
assertContains("world world world world", contents); | |||||
assertContains("dog Cat dog", contents); | |||||
assertContains("moon Sun Sun", contents); | |||||
assertContains("found WhiteSpace", contents); | |||||
assertContains("Found digits [1234]", contents); | |||||
assertNotContains("This is a line with digits", contents); | |||||
} | } | ||||
@Test | |||||
public void testFilterReplaceRegex() throws IOException { | public void testFilterReplaceRegex() throws IOException { | ||||
if (! hasRegex("testFilterReplaceRegex")) | |||||
return; | |||||
String contents = getFileString( | |||||
"filterreplaceregex", getProject().getProperty("output") + "/filterreplaceregex"); | |||||
assertStringContains(contents, "world world world world"); | |||||
buildRule.executeTarget("hasregex"); | |||||
Assume.assumeTrue("Regex not present", | |||||
getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||||
buildRule.executeTarget("filterreplaceregex"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/filterreplaceregex"); | |||||
assertContains("world world world world", contents); | |||||
} | } | ||||
@Test | |||||
public void testHandleDollerMatch() throws IOException { | public void testHandleDollerMatch() throws IOException { | ||||
if (! hasRegex("testFilterReplaceRegex")) | |||||
return; | |||||
executeTarget("dollermatch"); | |||||
buildRule.executeTarget("hasregex"); | |||||
Assume.assumeTrue("Regex not present", getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||||
buildRule.executeTarget("dollermatch"); | |||||
} | } | ||||
@Test | |||||
public void testTrimFile() throws IOException { | public void testTrimFile() throws IOException { | ||||
String contents = getFileString( | |||||
"trimfile", getProject().getProperty("output") + "/trimfile"); | |||||
buildRule.executeTarget("trimfile"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/trimfile"); | |||||
assertTrue("no ws at start", contents.startsWith("This is th")); | assertTrue("no ws at start", contents.startsWith("This is th")); | ||||
assertTrue("no ws at end", contents.endsWith("second line.")); | assertTrue("no ws at end", contents.endsWith("second line.")); | ||||
assertStringContains(contents, " This is the second"); | |||||
assertContains(" This is the second", contents); | |||||
} | } | ||||
@Test | |||||
public void testTrimFileByLine() throws IOException { | public void testTrimFileByLine() throws IOException { | ||||
String contents = getFileString( | |||||
"trimfilebyline", getProject().getProperty("output") + "/trimfilebyline"); | |||||
buildRule.executeTarget("trimfilebyline"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/trimfilebyline"); | |||||
assertFalse("no ws at start", contents.startsWith("This is th")); | assertFalse("no ws at start", contents.startsWith("This is th")); | ||||
assertFalse("no ws at end", contents.endsWith("second line.")); | assertFalse("no ws at end", contents.endsWith("second line.")); | ||||
assertStringNotContains(contents, " This is the second"); | |||||
assertStringContains(contents, "file.\nThis is the second"); | |||||
assertNotContains(" This is the second", contents); | |||||
assertContains("file.\nThis is the second", contents); | |||||
} | } | ||||
@Test | |||||
public void testFilterReplaceString() throws IOException { | public void testFilterReplaceString() throws IOException { | ||||
String contents = getFileString( | |||||
"filterreplacestring", getProject().getProperty("output") + "/filterreplacestring"); | |||||
assertStringContains(contents, "This is the moon"); | |||||
buildRule.executeTarget("filterreplacestring"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/filterreplacestring"); | |||||
assertContains("This is the moon", contents); | |||||
} | } | ||||
@Test | |||||
public void testFilterReplaceStrings() throws IOException { | public void testFilterReplaceStrings() throws IOException { | ||||
expectLogContaining("filterreplacestrings", "bar bar bar"); | |||||
buildRule.executeTarget("filterreplacestrings"); | |||||
assertContains("bar bar bar", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testContainsRegex() throws IOException { | public void testContainsRegex() throws IOException { | ||||
if (! hasRegex("testContainsRegex")) | |||||
return; | |||||
String contents = getFileString( | |||||
"containsregex", getProject().getProperty("output") + "/containsregex"); | |||||
assertStringContains(contents, "hello world"); | |||||
assertStringNotContains(contents, "this is the moon"); | |||||
assertStringContains(contents, "World here"); | |||||
buildRule.executeTarget("hasregex"); | |||||
Assume.assumeTrue("Regex not present", getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||||
//expectFileContains(buildRule.getProject().getProperty("output") + "/replaceregexp", "bye world"); | |||||
buildRule.executeTarget("containsregex"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/containsregex"); | |||||
assertContains("hello world", contents); | |||||
assertNotContains("this is the moon", contents); | |||||
assertContains("World here", contents); | |||||
} | } | ||||
@Test | |||||
public void testFilterContainsRegex() throws IOException { | public void testFilterContainsRegex() throws IOException { | ||||
if (! hasRegex("testFilterContainsRegex")) | |||||
return; | |||||
String contents = getFileString( | |||||
"filtercontainsregex", getProject().getProperty("output") + "/filtercontainsregex"); | |||||
assertStringContains(contents, "hello world"); | |||||
assertStringNotContains(contents, "this is the moon"); | |||||
assertStringContains(contents, "World here"); | |||||
buildRule.executeTarget("hasregex"); | |||||
Assume.assumeTrue("Regex not present", getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||||
buildRule.executeTarget("filtercontainsregex"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/filtercontainsregex"); | |||||
assertContains("hello world", contents); | |||||
assertNotContains("this is the moon", contents); | |||||
assertContains("World here", contents); | |||||
} | } | ||||
@Test | |||||
public void testContainsRegex2() throws IOException { | public void testContainsRegex2() throws IOException { | ||||
if (! hasRegex("testContainsRegex2")) | |||||
return; | |||||
String contents = getFileString( | |||||
"containsregex2", getProject().getProperty("output") + "/containsregex2"); | |||||
assertStringContains(contents, "void register_bits();"); | |||||
buildRule.executeTarget("hasregex"); | |||||
Assume.assumeTrue("Regex not present", getFileString(buildRule.getProject().getProperty("output") + "/replaceregexp").contains("bye world")); | |||||
buildRule.executeTarget("containsregex2"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/containsregex2"); | |||||
assertContains("void register_bits();", contents); | |||||
} | } | ||||
@Test | |||||
public void testDeleteCharacters() throws IOException { | public void testDeleteCharacters() throws IOException { | ||||
String contents = getFileString( | |||||
"deletecharacters", getProject().getProperty("output") + "/deletechars"); | |||||
assertStringNotContains(contents, "#"); | |||||
assertStringNotContains(contents, "*"); | |||||
assertStringContains(contents, "This is some "); | |||||
buildRule.executeTarget("deletecharacters"); | |||||
String contents = getFileString(buildRule.getProject().getProperty("output") + "/deletechars"); | |||||
assertNotContains("#", contents); | |||||
assertNotContains("*", contents); | |||||
assertContains("This is some ", contents); | |||||
} | } | ||||
@Test | |||||
public void testScriptFilter() throws IOException { | public void testScriptFilter() throws IOException { | ||||
if (! hasScript("testScriptFilter")) | |||||
return; | |||||
Assume.assumeTrue("Project does not have 'testScriptFilter' target", | |||||
buildRule.getProject().getTargets().contains("testScriptFilter")); | |||||
buildRule.executeTarget("scriptfilter"); | |||||
assertContains("HELLO WORLD", getFileString(buildRule.getProject().getProperty("output") + "/scriptfilter")); | |||||
expectFileContains("scriptfilter", getProject().getProperty("output") + "/scriptfilter", | |||||
"HELLO WORLD"); | |||||
} | } | ||||
@Test | |||||
public void testScriptFilter2() throws IOException { | public void testScriptFilter2() throws IOException { | ||||
if (! hasScript("testScriptFilter")) | |||||
return; | |||||
expectFileContains("scriptfilter2", getProject().getProperty("output") + "/scriptfilter2", | |||||
"HELLO MOON"); | |||||
Assume.assumeTrue("Project does not have 'testScriptFilter' target", buildRule.getProject().getTargets().contains("testScriptFilter")); | |||||
buildRule.executeTarget("scriptfilter2"); | |||||
assertContains("HELLO MOON", getFileString(buildRule.getProject().getProperty("output") + "/scriptfilter2")); | |||||
} | } | ||||
@Test | |||||
public void testCustomTokenFilter() throws IOException { | public void testCustomTokenFilter() throws IOException { | ||||
expectFileContains("customtokenfilter", getProject().getProperty("output") + "/custom", | |||||
"Hello World"); | |||||
buildRule.executeTarget("customtokenfilter"); | |||||
assertContains("Hello World", getFileString(buildRule.getProject().getProperty("output") + "/custom")); | |||||
} | } | ||||
// ------------------------------------------------------ | // ------------------------------------------------------ | ||||
// Helper methods | // Helper methods | ||||
// ----------------------------------------------------- | // ----------------------------------------------------- | ||||
private boolean hasScript(String test) { | |||||
try { | |||||
executeTarget("hasscript"); | |||||
} | |||||
catch (Throwable ex) { | |||||
System.out.println( | |||||
test + ": skipped - script not present "); | |||||
return false; | |||||
} | |||||
return true; | |||||
} | |||||
private boolean hasRegex(String test) { | |||||
try { | |||||
executeTarget("hasregex"); | |||||
expectFileContains(getProject().getProperty("output") + "/replaceregexp", "bye world"); | |||||
} | |||||
catch (Throwable ex) { | |||||
System.out.println(test + ": skipped - regex not present " | |||||
+ ex); | |||||
return false; | |||||
} | |||||
return true; | |||||
} | |||||
private void assertStringContains(String string, String contains) { | |||||
assertTrue("[" + string + "] does not contain [" + contains +"]", | |||||
string.indexOf(contains) > -1); | |||||
} | |||||
private void assertStringNotContains(String string, String contains) { | |||||
assertTrue("[" + string + "] does contain [" + contains +"]", | |||||
string.indexOf(contains) == -1); | |||||
} | |||||
private String getFileString(String filename) | private String getFileString(String filename) | ||||
throws IOException | throws IOException | ||||
{ | { | ||||
Reader r = null; | Reader r = null; | ||||
try { | try { | ||||
r = new FileReader(FILE_UTILS.resolveFile(getProject().getBaseDir(),filename)); | |||||
r = new FileReader(FILE_UTILS.resolveFile(buildRule.getProject().getBaseDir(),filename)); | |||||
return FileUtils.readFully(r); | return FileUtils.readFully(r); | ||||
} | } | ||||
finally { | finally { | ||||
FileUtils.close(r); | FileUtils.close(r); | ||||
} | } | ||||
} | |||||
private String getFileString(String target, String filename) | |||||
throws IOException | |||||
{ | |||||
executeTarget(target); | |||||
return getFileString(filename); | |||||
} | |||||
private void expectFileContains(String name, String contains) | |||||
throws IOException | |||||
{ | |||||
String content = getFileString(name); | |||||
assertTrue( | |||||
"expecting file " + name + " to contain " + contains + | |||||
" but got " + content, content.indexOf(contains) > -1); | |||||
} | } | ||||
private void expectFileContains( | |||||
String target, String name, String contains) | |||||
throws IOException | |||||
{ | |||||
executeTarget(target); | |||||
expectFileContains(name, contains); | |||||
} | |||||
public static class Capitalize | public static class Capitalize | ||||
implements TokenFilter.Filter | implements TokenFilter.Filter | ||||
@@ -17,39 +17,27 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.launch; | package org.apache.tools.ant.launch; | ||||
import junit.framework.TestCase; | |||||
import java.io.File; | import java.io.File; | ||||
import org.apache.tools.ant.taskdefs.condition.Os; | import org.apache.tools.ant.taskdefs.condition.Os; | ||||
import org.junit.Before; | |||||
import org.junit.Ignore; | |||||
import org.junit.Test; | |||||
import static junit.framework.Assert.assertEquals; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.fail; | |||||
/** Test the locator in the ant-launch JAR */ | /** Test the locator in the ant-launch JAR */ | ||||
public class LocatorTest extends TestCase { | |||||
public class LocatorTest { | |||||
private boolean windows; | private boolean windows; | ||||
private boolean unix; | private boolean unix; | ||||
private static final String LAUNCHER_JAR = "//morzine/slo/Java/Apache/ant/lib/ant-launcher.jar"; | private static final String LAUNCHER_JAR = "//morzine/slo/Java/Apache/ant/lib/ant-launcher.jar"; | ||||
private static final String SHARED_JAR_URI = "jar:file:"+ LAUNCHER_JAR +"!/org/apache/tools/ant/launch/Launcher.class"; | private static final String SHARED_JAR_URI = "jar:file:"+ LAUNCHER_JAR +"!/org/apache/tools/ant/launch/Launcher.class"; | ||||
/** | |||||
* No-arg constructor to enable serialization. This method is not intended to be used by mere mortals without calling | |||||
* setName(). | |||||
*/ | |||||
public LocatorTest() { | |||||
} | |||||
/** Constructs a test case with the given name. | |||||
* @param name | |||||
*/ | |||||
public LocatorTest(String name) { | |||||
super(name); | |||||
} | |||||
/** | |||||
* Sets up the fixture, for example, open a network connection. | |||||
* This method is called before a test is executed. | |||||
*/ | |||||
protected void setUp() throws Exception { | |||||
super.setUp(); | |||||
@Before | |||||
public void setUp() throws Exception { | |||||
windows = Os.isFamily(Os.FAMILY_DOS); | windows = Os.isFamily(Os.FAMILY_DOS); | ||||
unix = Os.isFamily(Os.FAMILY_UNIX); | unix = Os.isFamily(Os.FAMILY_UNIX); | ||||
} | } | ||||
@@ -105,26 +93,27 @@ public class LocatorTest extends TestCase { | |||||
"\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar"); | "\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar"); | ||||
} | } | ||||
/** | |||||
* This is not being tested as we don't appear to generate paths like this in the launcher | |||||
* @throws Exception | |||||
*/ | |||||
public void NotestTripleForwardSlashNetworkURI() throws Exception { | |||||
@Ignore("We don't appear to generate paths like this in the launcher") | |||||
@Test | |||||
public void testTripleForwardSlashNetworkURI() throws Exception { | |||||
resolveTo("file:///PC03/jclasses/lib/ant-1.7.0.jar", | resolveTo("file:///PC03/jclasses/lib/ant-1.7.0.jar", | ||||
"///PC03/jclasses/lib/ant-1.7.0.jar", | "///PC03/jclasses/lib/ant-1.7.0.jar", | ||||
"\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar"); | "\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar"); | ||||
} | } | ||||
@Test | |||||
public void testUnixNetworkPath() throws Exception { | public void testUnixNetworkPath() throws Exception { | ||||
resolveTo("file://cluster/home/ant/lib", | resolveTo("file://cluster/home/ant/lib", | ||||
"//cluster/home/ant/lib", | "//cluster/home/ant/lib", | ||||
"\\\\cluster\\home\\ant\\lib"); | "\\\\cluster\\home\\ant\\lib"); | ||||
} | } | ||||
@Test | |||||
public void testUnixPath() throws Exception { | public void testUnixPath() throws Exception { | ||||
resolveTo("file:/home/ant/lib", "/home/ant/lib", null); | resolveTo("file:/home/ant/lib", "/home/ant/lib", null); | ||||
} | } | ||||
@Test | |||||
public void testSpacedURI() throws Exception { | public void testSpacedURI() throws Exception { | ||||
resolveTo("file:C:\\Program Files\\Ant\\lib", | resolveTo("file:C:\\Program Files\\Ant\\lib", | ||||
"C:\\Program Files\\Ant\\lib", | "C:\\Program Files\\Ant\\lib", | ||||
@@ -135,6 +124,7 @@ public class LocatorTest extends TestCase { | |||||
* Bug 42275; Ant failing to run off a remote share | * Bug 42275; Ant failing to run off a remote share | ||||
* @throws Throwable if desired | * @throws Throwable if desired | ||||
*/ | */ | ||||
@Test | |||||
public void testAntOnRemoteShare() throws Throwable { | public void testAntOnRemoteShare() throws Throwable { | ||||
String resolved=Locator.fromJarURI(SHARED_JAR_URI); | String resolved=Locator.fromJarURI(SHARED_JAR_URI); | ||||
assertResolved(SHARED_JAR_URI, LAUNCHER_JAR, resolved, unix); | assertResolved(SHARED_JAR_URI, LAUNCHER_JAR, resolved, unix); | ||||
@@ -147,6 +137,7 @@ public class LocatorTest extends TestCase { | |||||
* | * | ||||
* @throws Throwable if desired | * @throws Throwable if desired | ||||
*/ | */ | ||||
@Test | |||||
public void testFileFromRemoteShare() throws Throwable { | public void testFileFromRemoteShare() throws Throwable { | ||||
String resolved = Locator.fromJarURI(SHARED_JAR_URI); | String resolved = Locator.fromJarURI(SHARED_JAR_URI); | ||||
File f = new File(resolved); | File f = new File(resolved); | ||||
@@ -156,17 +147,20 @@ public class LocatorTest extends TestCase { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testHttpURI() throws Exception { | public void testHttpURI() throws Exception { | ||||
String url = "http://ant.apache.org"; | String url = "http://ant.apache.org"; | ||||
try { | try { | ||||
Locator.fromURI(url); | Locator.fromURI(url); | ||||
fail("Exception should have been thrown"); | |||||
} catch (IllegalArgumentException e) { | } catch (IllegalArgumentException e) { | ||||
String message = e.getMessage(); | String message = e.getMessage(); | ||||
assertTrue(message, message.indexOf(Locator.ERROR_NOT_FILE_URI) >= 0); | |||||
assertTrue(message, message.indexOf(url) >= 0); | |||||
assertContains(Locator.ERROR_NOT_FILE_URI, message); | |||||
assertContains(url, message); | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testInternationalURI() throws Exception { | public void testInternationalURI() throws Exception { | ||||
String result = assertResolves("L\u00f6wenbrau.aus.M\u00fcnchen"); | String result = assertResolves("L\u00f6wenbrau.aus.M\u00fcnchen"); | ||||
char umlauted = result.charAt(1); | char umlauted = result.charAt(1); | ||||
@@ -178,6 +172,7 @@ public class LocatorTest extends TestCase { | |||||
assertEquals("file:/tmp/hezky \u010Desky", Locator.decodeUri("file:/tmp/hezky%20\u010Desky")); // non-ISO-8859-1 variant | assertEquals("file:/tmp/hezky \u010Desky", Locator.decodeUri("file:/tmp/hezky%20\u010Desky")); // non-ISO-8859-1 variant | ||||
} | } | ||||
@Test | |||||
public void testOddLowAsciiURI() throws Exception { | public void testOddLowAsciiURI() throws Exception { | ||||
assertResolves("hash# and percent%"); | assertResolves("hash# and percent%"); | ||||
} | } | ||||
@@ -21,19 +21,26 @@ package org.apache.tools.ant.loader; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.net.URL; | import java.net.URL; | ||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import junit.framework.TestCase; | |||||
import org.apache.tools.ant.AntClassLoader; | import org.apache.tools.ant.AntClassLoader; | ||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
import org.apache.tools.ant.util.CollectionUtils; | import org.apache.tools.ant.util.CollectionUtils; | ||||
import org.junit.Test; | |||||
public class AntClassLoader5Test extends TestCase { | |||||
import static org.junit.Assert.assertFalse; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertNull; | |||||
import static org.junit.Assert.assertTrue; | |||||
public class AntClassLoader5Test { | |||||
/** | /** | ||||
* Asserts that getResources won't return resources that cannot be | * Asserts that getResources won't return resources that cannot be | ||||
* seen by AntClassLoader but by ClassLoader.this.parent. | * seen by AntClassLoader but by ClassLoader.this.parent. | ||||
* | * | ||||
* @see https://issues.apache.org/bugzilla/show_bug.cgi?id=46752 | |||||
* @see <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=46752"> | |||||
* https://issues.apache.org/bugzilla/show_bug.cgi?id=46752</a> | |||||
*/ | */ | ||||
@Test | |||||
public void testGetResources() throws IOException { | public void testGetResources() throws IOException { | ||||
AntClassLoader acl = new AntClassLoader5(new EmptyLoader(), null, | AntClassLoader acl = new AntClassLoader5(new EmptyLoader(), null, | ||||
new Path(null), true); | new Path(null), true); | ||||
@@ -46,6 +53,7 @@ public class AntClassLoader5Test extends TestCase { | |||||
assertTrue(acl.getResources("META-INF/MANIFEST.MF").hasMoreElements()); | assertTrue(acl.getResources("META-INF/MANIFEST.MF").hasMoreElements()); | ||||
} | } | ||||
@Test | |||||
public void testGetResourcesUsingFactory() throws IOException { | public void testGetResourcesUsingFactory() throws IOException { | ||||
AntClassLoader acl = | AntClassLoader acl = | ||||
AntClassLoader.newAntClassLoader(new EmptyLoader(), null, | AntClassLoader.newAntClassLoader(new EmptyLoader(), null, | ||||
@@ -17,38 +17,55 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.AntAssert; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.io.File; | import java.io.File; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import static org.junit.Assert.assertTrue; | |||||
/** | /** | ||||
*/ | */ | ||||
public class AbstractCvsTaskTest extends BuildFileTest { | |||||
public class AbstractCvsTaskTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
public AbstractCvsTaskTest() { | |||||
this( "AbstractCvsTaskTest" ); | |||||
@Before | |||||
public void setUp() { | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/abstractcvstask.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
public AbstractCvsTaskTest(String name) { | |||||
super(name); | |||||
@After | |||||
public void tearDown() { | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
public void setUp() { | |||||
configureProject("src/etc/testcases/taskdefs/abstractcvstask.xml"); | |||||
executeTarget("setUp"); | |||||
@Test | |||||
public void testAbstractCvsTask() { | |||||
buildRule.executeTarget("all"); | |||||
} | } | ||||
@Test | |||||
public void testPackageAttribute() { | public void testPackageAttribute() { | ||||
File f = new File(getProject().getProperty("output") + "/src/Makefile"); | |||||
File f = new File(buildRule.getProject().getProperty("output") + "/src/Makefile"); | |||||
assertTrue("starting empty", !f.exists()); | assertTrue("starting empty", !f.exists()); | ||||
expectLogContaining("package-attribute", "U src/Makefile"); | |||||
buildRule.executeTarget("package-attribute"); | |||||
AntAssert.assertContains("U src/Makefile", buildRule.getLog()); | |||||
assertTrue("now it is there", f.exists()); | assertTrue("now it is there", f.exists()); | ||||
} | } | ||||
@Test | |||||
public void testTagAttribute() { | public void testTagAttribute() { | ||||
File f = new File(getProject().getProperty("output") + "/src/Makefile"); | |||||
File f = new File(buildRule.getProject().getProperty("output") + "/src/Makefile"); | |||||
assertTrue("starting empty", !f.exists()); | assertTrue("starting empty", !f.exists()); | ||||
expectLogContaining("tag-attribute", "OPENBSD_5_3"); | |||||
buildRule.executeTarget("tag-attribute"); | |||||
AntAssert.assertContains("OPENBSD_5_3", buildRule.getLog()); | |||||
assertTrue("now it is there", f.exists()); | assertTrue("now it is there", f.exists()); | ||||
} | } | ||||
} | } |
@@ -19,19 +19,25 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* @since Ant 1.6 | * @since Ant 1.6 | ||||
*/ | */ | ||||
public class AntLikeTasksAtTopLevelTest extends BuildFileTest { | |||||
public AntLikeTasksAtTopLevelTest(String name) { | |||||
super(name); | |||||
} | |||||
public class AntLikeTasksAtTopLevelTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Test | |||||
public void testAnt() { | public void testAnt() { | ||||
try { | try { | ||||
configureProject("src/etc/testcases/taskdefs/toplevelant.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/toplevelant.xml"); | |||||
fail("no exception thrown"); | fail("no exception thrown"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertEquals("ant task at the top level must not invoke its own" | assertEquals("ant task at the top level must not invoke its own" | ||||
@@ -39,9 +45,10 @@ public class AntLikeTasksAtTopLevelTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testSubant() { | public void testSubant() { | ||||
try { | try { | ||||
configureProject("src/etc/testcases/taskdefs/toplevelsubant.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/toplevelsubant.xml"); | |||||
fail("no exception thrown"); | fail("no exception thrown"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertEquals("subant task at the top level must not invoke its own" | assertEquals("subant task at the top level must not invoke its own" | ||||
@@ -49,9 +56,10 @@ public class AntLikeTasksAtTopLevelTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testAntcall() { | public void testAntcall() { | ||||
try { | try { | ||||
configureProject("src/etc/testcases/taskdefs/toplevelantcall.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/toplevelantcall.xml"); | |||||
fail("no exception thrown"); | fail("no exception thrown"); | ||||
} catch (BuildException e) { | } catch (BuildException e) { | ||||
assertEquals("antcall must not be used at the top level.", | assertEquals("antcall must not be used at the top level.", | ||||
@@ -18,40 +18,57 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.AntAssert; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.Project; | |||||
import org.junit.After; | |||||
import org.junit.Assert; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.io.PrintWriter; | import java.io.PrintWriter; | ||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import junit.framework.Assert; | |||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.Project; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class AntStructureTest extends BuildFileTest { | |||||
public class AntStructureTest { | |||||
public AntStructureTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/antstructure.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/antstructure.xml"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("tearDown"); | |||||
buildRule.executeTarget("tearDown"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testCustomPrinter() { | public void testCustomPrinter() { | ||||
executeTarget("testCustomPrinter"); | |||||
buildRule.executeTarget("testCustomPrinter"); | |||||
// can't access the booleans in MyPrinter here (even if they | // can't access the booleans in MyPrinter here (even if they | ||||
// were static) since the MyPrinter instance that was used in | // were static) since the MyPrinter instance that was used in | ||||
// the test has likely been loaded via a different classloader | // the test has likely been loaded via a different classloader | ||||
// than this class. Therefore we make the printer assert its | // than this class. Therefore we make the printer assert its | ||||
// state and only check for the tail invocation. | // state and only check for the tail invocation. | ||||
assertLogContaining(MyPrinter.TAIL_CALLED); | |||||
AntAssert.assertContains(MyPrinter.TAIL_CALLED, buildRule.getLog()); | |||||
} | } | ||||
public static class MyPrinter implements AntStructure.StructurePrinter { | public static class MyPrinter implements AntStructure.StructurePrinter { | ||||
@@ -22,94 +22,145 @@ import java.io.File; | |||||
import junit.framework.AssertionFailedError; | import junit.framework.AssertionFailedError; | ||||
import org.apache.tools.ant.AntAssert; | |||||
import org.apache.tools.ant.BuildEvent; | import org.apache.tools.ant.BuildEvent; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.BuildListener; | import org.apache.tools.ant.BuildListener; | ||||
import org.apache.tools.ant.input.InputHandler; | import org.apache.tools.ant.input.InputHandler; | ||||
import org.apache.tools.ant.input.PropertyFileInputHandler; | import org.apache.tools.ant.input.PropertyFileInputHandler; | ||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertNull; | |||||
import static org.junit.Assert.assertSame; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class AntTest extends BuildFileTest { | |||||
public AntTest(String name) { | |||||
super(name); | |||||
} | |||||
public class AntTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/ant.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/ant.xml"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "recursive call"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("recursive call"); | |||||
} catch(BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
// target must be specified | // target must be specified | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("required argument not specified"); | |||||
} catch(BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
// Should fail since a recursion will occur... | // Should fail since a recursion will occur... | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test1", "recursive call"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("recursive call"); | |||||
} catch(BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
expectBuildException("test4", "target attribute must not be empty"); | |||||
try { | |||||
buildRule.executeTarget("test4"); | |||||
fail("target attribute must not be empty"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test4b() { | public void test4b() { | ||||
expectBuildException("test4b", "target doesn't exist"); | |||||
try { | |||||
buildRule.executeTarget("test4b"); | |||||
fail("target doesn't exist"); | |||||
} catch(BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
buildRule.executeTarget("test5"); | |||||
} | } | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
executeTarget("test6"); | |||||
buildRule.executeTarget("test6"); | |||||
} | } | ||||
@Test | |||||
public void testExplicitBasedir1() { | public void testExplicitBasedir1() { | ||||
File dir1 = getProjectDir(); | |||||
File dir2 = project.resolveFile(".."); | |||||
File dir1 = buildRule.getProject().getBaseDir(); | |||||
File dir2 = buildRule.getProject().resolveFile(".."); | |||||
testBaseDirs("explicitBasedir1", | testBaseDirs("explicitBasedir1", | ||||
new String[] {dir1.getAbsolutePath(), | new String[] {dir1.getAbsolutePath(), | ||||
dir2.getAbsolutePath() | dir2.getAbsolutePath() | ||||
}); | }); | ||||
} | } | ||||
@Test | |||||
public void testExplicitBasedir2() { | public void testExplicitBasedir2() { | ||||
File dir1 = getProjectDir(); | |||||
File dir2 = project.resolveFile(".."); | |||||
File dir1 = buildRule.getProject().getBaseDir(); | |||||
File dir2 = buildRule.getProject().resolveFile(".."); | |||||
testBaseDirs("explicitBasedir2", | testBaseDirs("explicitBasedir2", | ||||
new String[] {dir1.getAbsolutePath(), | new String[] {dir1.getAbsolutePath(), | ||||
dir2.getAbsolutePath() | dir2.getAbsolutePath() | ||||
}); | }); | ||||
} | } | ||||
@Test | |||||
public void testInheritBasedir() { | public void testInheritBasedir() { | ||||
String basedir = getProjectDir().getAbsolutePath(); | |||||
String basedir = buildRule.getProject().getBaseDir().getAbsolutePath(); | |||||
testBaseDirs("inheritBasedir", new String[] {basedir, basedir}); | testBaseDirs("inheritBasedir", new String[] {basedir, basedir}); | ||||
} | } | ||||
@Test | |||||
public void testDoNotInheritBasedir() { | public void testDoNotInheritBasedir() { | ||||
File dir1 = getProjectDir(); | |||||
File dir2 = project.resolveFile("ant"); | |||||
File dir1 = buildRule.getProject().getBaseDir(); | |||||
File dir2 = buildRule.getProject().resolveFile("ant"); | |||||
testBaseDirs("doNotInheritBasedir", | testBaseDirs("doNotInheritBasedir", | ||||
new String[] {dir1.getAbsolutePath(), | new String[] {dir1.getAbsolutePath(), | ||||
dir2.getAbsolutePath() | dir2.getAbsolutePath() | ||||
}); | }); | ||||
} | } | ||||
@Test | |||||
public void testBasedirTripleCall() { | public void testBasedirTripleCall() { | ||||
File dir1 = getProjectDir(); | |||||
File dir2 = project.resolveFile("ant"); | |||||
File dir1 = buildRule.getProject().getBaseDir(); | |||||
File dir2 = buildRule.getProject().resolveFile("ant"); | |||||
testBaseDirs("tripleCall", | testBaseDirs("tripleCall", | ||||
new String[] {dir1.getAbsolutePath(), | new String[] {dir1.getAbsolutePath(), | ||||
dir2.getAbsolutePath(), | dir2.getAbsolutePath(), | ||||
@@ -119,20 +170,21 @@ public class AntTest extends BuildFileTest { | |||||
protected void testBaseDirs(String target, String[] dirs) { | protected void testBaseDirs(String target, String[] dirs) { | ||||
BasedirChecker bc = new BasedirChecker(dirs); | BasedirChecker bc = new BasedirChecker(dirs); | ||||
project.addBuildListener(bc); | |||||
executeTarget(target); | |||||
buildRule.getProject().addBuildListener(bc); | |||||
buildRule.executeTarget(target); | |||||
AssertionFailedError ae = bc.getError(); | AssertionFailedError ae = bc.getError(); | ||||
if (ae != null) { | if (ae != null) { | ||||
throw ae; | throw ae; | ||||
} | } | ||||
project.removeBuildListener(bc); | |||||
buildRule.getProject().removeBuildListener(bc); | |||||
} | } | ||||
@Test | |||||
public void testReferenceInheritance() { | public void testReferenceInheritance() { | ||||
Path p = Path.systemClasspath; | Path p = Path.systemClasspath; | ||||
p.setProject(project); | |||||
project.addReference("path", p); | |||||
project.addReference("no-override", p); | |||||
p.setProject(buildRule.getProject()); | |||||
buildRule.getProject().addReference("path", p); | |||||
buildRule.getProject().addReference("no-override", p); | |||||
testReference("testInherit", new String[] {"path", "path"}, | testReference("testInherit", new String[] {"path", "path"}, | ||||
new boolean[] {true, true}, p); | new boolean[] {true, true}, p); | ||||
testReference("testInherit", | testReference("testInherit", | ||||
@@ -143,11 +195,12 @@ public class AntTest extends BuildFileTest { | |||||
new boolean[] {false, false}, null); | new boolean[] {false, false}, null); | ||||
} | } | ||||
@Test | |||||
public void testReferenceNoInheritance() { | public void testReferenceNoInheritance() { | ||||
Path p = Path.systemClasspath; | Path p = Path.systemClasspath; | ||||
p.setProject(project); | |||||
project.addReference("path", p); | |||||
project.addReference("no-override", p); | |||||
p.setProject(buildRule.getProject()); | |||||
buildRule.getProject().addReference("path", p); | |||||
buildRule.getProject().addReference("no-override", p); | |||||
testReference("testNoInherit", new String[] {"path", "path"}, | testReference("testNoInherit", new String[] {"path", "path"}, | ||||
new boolean[] {true, false}, p); | new boolean[] {true, false}, p); | ||||
testReference("testNoInherit", new String[] {"path", "path"}, | testReference("testNoInherit", new String[] {"path", "path"}, | ||||
@@ -160,10 +213,11 @@ public class AntTest extends BuildFileTest { | |||||
new boolean[] {false, false}, null); | new boolean[] {false, false}, null); | ||||
} | } | ||||
@Test | |||||
public void testReferenceRename() { | public void testReferenceRename() { | ||||
Path p = Path.systemClasspath; | Path p = Path.systemClasspath; | ||||
p.setProject(project); | |||||
project.addReference("path", p); | |||||
p.setProject(buildRule.getProject()); | |||||
buildRule.getProject().addReference("path", p); | |||||
testReference("testRename", new String[] {"path", "path"}, | testReference("testRename", new String[] {"path", "path"}, | ||||
new boolean[] {true, false}, p); | new boolean[] {true, false}, p); | ||||
testReference("testRename", new String[] {"path", "path"}, | testReference("testRename", new String[] {"path", "path"}, | ||||
@@ -172,35 +226,37 @@ public class AntTest extends BuildFileTest { | |||||
new boolean[] {false, true}, p); | new boolean[] {false, true}, p); | ||||
} | } | ||||
@Test | |||||
public void testInheritPath() { | public void testInheritPath() { | ||||
executeTarget("testInheritPath"); | |||||
buildRule.executeTarget("testInheritPath"); | |||||
} | } | ||||
protected void testReference(String target, String[] keys, | protected void testReference(String target, String[] keys, | ||||
boolean[] expect, Object value) { | boolean[] expect, Object value) { | ||||
ReferenceChecker rc = new ReferenceChecker(keys, expect, value); | ReferenceChecker rc = new ReferenceChecker(keys, expect, value); | ||||
project.addBuildListener(rc); | |||||
executeTarget(target); | |||||
buildRule.getProject().addBuildListener(rc); | |||||
buildRule.executeTarget(target); | |||||
AssertionFailedError ae = rc.getError(); | AssertionFailedError ae = rc.getError(); | ||||
if (ae != null) { | if (ae != null) { | ||||
throw ae; | throw ae; | ||||
} | } | ||||
project.removeBuildListener(rc); | |||||
buildRule.getProject().removeBuildListener(rc); | |||||
} | } | ||||
@Test | |||||
public void testLogfilePlacement() { | public void testLogfilePlacement() { | ||||
File[] logFiles = new File[] { | File[] logFiles = new File[] { | ||||
getProject().resolveFile("test1.log"), | |||||
getProject().resolveFile("test2.log"), | |||||
getProject().resolveFile("ant/test3.log"), | |||||
getProject().resolveFile("ant/test4.log") | |||||
buildRule.getProject().resolveFile("test1.log"), | |||||
buildRule.getProject().resolveFile("test2.log"), | |||||
buildRule.getProject().resolveFile("ant/test3.log"), | |||||
buildRule.getProject().resolveFile("ant/test4.log") | |||||
}; | }; | ||||
for (int i=0; i<logFiles.length; i++) { | for (int i=0; i<logFiles.length; i++) { | ||||
assertTrue(logFiles[i].getName()+" doesn\'t exist", | assertTrue(logFiles[i].getName()+" doesn\'t exist", | ||||
!logFiles[i].exists()); | !logFiles[i].exists()); | ||||
} | } | ||||
executeTarget("testLogfilePlacement"); | |||||
buildRule.executeTarget("testLogfilePlacement"); | |||||
for (int i=0; i<logFiles.length; i++) { | for (int i=0; i<logFiles.length; i++) { | ||||
assertTrue(logFiles[i].getName()+" exists", | assertTrue(logFiles[i].getName()+" exists", | ||||
@@ -208,84 +264,106 @@ public class AntTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testInputHandlerInheritance() { | public void testInputHandlerInheritance() { | ||||
InputHandler ih = new PropertyFileInputHandler(); | InputHandler ih = new PropertyFileInputHandler(); | ||||
getProject().setInputHandler(ih); | |||||
buildRule.getProject().setInputHandler(ih); | |||||
InputHandlerChecker ic = new InputHandlerChecker(ih); | InputHandlerChecker ic = new InputHandlerChecker(ih); | ||||
getProject().addBuildListener(ic); | |||||
executeTarget("tripleCall"); | |||||
buildRule.getProject().addBuildListener(ic); | |||||
buildRule.executeTarget("tripleCall"); | |||||
AssertionFailedError ae = ic.getError(); | AssertionFailedError ae = ic.getError(); | ||||
if (ae != null) { | if (ae != null) { | ||||
throw ae; | throw ae; | ||||
} | } | ||||
getProject().removeBuildListener(ic); | |||||
buildRule.getProject().removeBuildListener(ic); | |||||
} | } | ||||
@Test | |||||
public void testRefId() { | public void testRefId() { | ||||
Path testPath = new Path(project); | |||||
Path testPath = new Path(buildRule.getProject()); | |||||
testPath.createPath().setPath(System.getProperty("java.class.path")); | testPath.createPath().setPath(System.getProperty("java.class.path")); | ||||
PropertyChecker pc = | PropertyChecker pc = | ||||
new PropertyChecker("testprop", | new PropertyChecker("testprop", | ||||
new String[] {null, | new String[] {null, | ||||
testPath.toString()}); | testPath.toString()}); | ||||
project.addBuildListener(pc); | |||||
executeTarget("testRefid"); | |||||
buildRule.getProject().addBuildListener(pc); | |||||
buildRule.executeTarget("testRefid"); | |||||
AssertionFailedError ae = pc.getError(); | AssertionFailedError ae = pc.getError(); | ||||
if (ae != null) { | if (ae != null) { | ||||
throw ae; | throw ae; | ||||
} | } | ||||
project.removeBuildListener(pc); | |||||
buildRule.getProject().removeBuildListener(pc); | |||||
} | } | ||||
@Test | |||||
public void testUserPropertyWinsInheritAll() { | public void testUserPropertyWinsInheritAll() { | ||||
getProject().setUserProperty("test", "7"); | |||||
expectLogContaining("test-property-override-inheritall-start", | |||||
"The value of test is 7"); | |||||
buildRule.getProject().setUserProperty("test", "7"); | |||||
buildRule.executeTarget("test-property-override-inheritall-start"); | |||||
AntAssert.assertContains("The value of test is 7", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testUserPropertyWinsNoInheritAll() { | public void testUserPropertyWinsNoInheritAll() { | ||||
getProject().setUserProperty("test", "7"); | |||||
expectLogContaining("test-property-override-no-inheritall-start", | |||||
"The value of test is 7"); | |||||
buildRule.getProject().setUserProperty("test", "7"); | |||||
buildRule.executeTarget("test-property-override-no-inheritall-start"); | |||||
AntAssert.assertContains("The value of test is 7", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testOverrideWinsInheritAll() { | public void testOverrideWinsInheritAll() { | ||||
expectLogContaining("test-property-override-inheritall-start", | |||||
"The value of test is 4"); | |||||
buildRule.executeTarget("test-property-override-inheritall-start"); | |||||
AntAssert.assertContains("The value of test is 4", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testOverrideWinsNoInheritAll() { | public void testOverrideWinsNoInheritAll() { | ||||
expectLogContaining("test-property-override-no-inheritall-start", | |||||
"The value of test is 4"); | |||||
buildRule.executeTarget("test-property-override-no-inheritall-start"); | |||||
AntAssert.assertContains("The value of test is 4", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testPropertySet() { | public void testPropertySet() { | ||||
executeTarget("test-propertyset"); | |||||
assertTrue(getLog().indexOf("test1 is ${test1}") > -1); | |||||
assertTrue(getLog().indexOf("test2 is ${test2}") > -1); | |||||
assertTrue(getLog().indexOf("test1.x is 1") > -1); | |||||
buildRule.executeTarget("test-propertyset"); | |||||
assertTrue(buildRule.getLog().indexOf("test1 is ${test1}") > -1); | |||||
assertTrue(buildRule.getLog().indexOf("test2 is ${test2}") > -1); | |||||
assertTrue(buildRule.getLog().indexOf("test1.x is 1") > -1); | |||||
} | } | ||||
@Test | |||||
public void testInfiniteLoopViaDepends() { | public void testInfiniteLoopViaDepends() { | ||||
expectBuildException("infinite-loop-via-depends", "recursive call"); | |||||
try { | |||||
buildRule.executeTarget("infinite-loop-via-depends"); | |||||
fail("recursive call"); | |||||
} catch(BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testMultiSameProperty() { | public void testMultiSameProperty() { | ||||
expectLog("multi-same-property", "prop is two"); | |||||
buildRule.executeTarget("multi-same-property"); | |||||
assertEquals("prop is two", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testTopLevelTarget() { | public void testTopLevelTarget() { | ||||
expectLog("topleveltarget", "Hello world"); | |||||
buildRule.executeTarget("topleveltarget"); | |||||
assertEquals("Hello world", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testMultiplePropertyFileChildren() { | public void testMultiplePropertyFileChildren() { | ||||
PropertyChecker pcBar = new PropertyChecker("bar", | PropertyChecker pcBar = new PropertyChecker("bar", | ||||
new String[] {null, "Bar"}); | new String[] {null, "Bar"}); | ||||
PropertyChecker pcFoo = new PropertyChecker("foo", | PropertyChecker pcFoo = new PropertyChecker("foo", | ||||
new String[] {null, "Foo"}); | new String[] {null, "Foo"}); | ||||
project.addBuildListener(pcBar); | |||||
project.addBuildListener(pcFoo); | |||||
executeTarget("multiple-property-file-children"); | |||||
buildRule.getProject().addBuildListener(pcBar); | |||||
buildRule.getProject().addBuildListener(pcFoo); | |||||
buildRule.executeTarget("multiple-property-file-children"); | |||||
AssertionFailedError aeBar = pcBar.getError(); | AssertionFailedError aeBar = pcBar.getError(); | ||||
if (aeBar != null) { | if (aeBar != null) { | ||||
throw aeBar; | throw aeBar; | ||||
@@ -294,26 +372,37 @@ public class AntTest extends BuildFileTest { | |||||
if (aeFoo != null) { | if (aeFoo != null) { | ||||
throw aeFoo; | throw aeFoo; | ||||
} | } | ||||
project.removeBuildListener(pcBar); | |||||
project.removeBuildListener(pcFoo); | |||||
buildRule.getProject().removeBuildListener(pcBar); | |||||
buildRule.getProject().removeBuildListener(pcFoo); | |||||
} | } | ||||
@Test | |||||
public void testBlankTarget() { | public void testBlankTarget() { | ||||
expectBuildException("blank-target", "target name must not be empty"); | |||||
try { | |||||
buildRule.executeTarget("blank-target"); | |||||
fail("target name must not be empty"); | |||||
} catch(BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testMultipleTargets() { | public void testMultipleTargets() { | ||||
expectLog("multiple-targets", "tadadctbdbtc"); | |||||
buildRule.executeTarget("multiple-targets"); | |||||
assertEquals("tadadctbdbtc", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testMultipleTargets2() { | public void testMultipleTargets2() { | ||||
expectLog("multiple-targets-2", "dadctb"); | |||||
buildRule.executeTarget("multiple-targets-2"); | |||||
assertEquals("dadctb", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testAntCoreLib() { | public void testAntCoreLib() { | ||||
// Cf. #42263 | // Cf. #42263 | ||||
executeTarget("sub-show-ant.core.lib"); | |||||
String realLog = getLog(); | |||||
buildRule.executeTarget("sub-show-ant.core.lib"); | |||||
String realLog = buildRule.getLog(); | |||||
assertTrue("found ant.core.lib in: " + realLog, realLog.matches(".*(ant[.]jar|build.classes).*")); | assertTrue("found ant.core.lib in: " + realLog, realLog.matches(".*(ant[.]jar|build.classes).*")); | ||||
} | } | ||||
@@ -18,19 +18,26 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.junit.Assume; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
/** | /** | ||||
*/ | */ | ||||
public class AntlibTest extends BuildFileTest { | |||||
public AntlibTest(String name) { | |||||
super(name); | |||||
} | |||||
public class AntlibTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/antlib.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/antlib.xml"); | |||||
} | } | ||||
/** | /** | ||||
@@ -42,8 +49,10 @@ public class AntlibTest extends BuildFileTest { | |||||
return property!=null && Project.toBoolean(property); | return property!=null && Project.toBoolean(property); | ||||
} | } | ||||
@Test | |||||
public void testAntlibFile() { | public void testAntlibFile() { | ||||
expectLog("antlib.file", "MyTask called"); | |||||
buildRule.executeTarget("antlib.file"); | |||||
assertEquals("MyTask called", buildRule.getLog()); | |||||
} | } | ||||
/** | /** | ||||
@@ -51,31 +60,34 @@ public class AntlibTest extends BuildFileTest { | |||||
* can collect several antlibs in one Definer call. | * can collect several antlibs in one Definer call. | ||||
* @see "http://issues.apache.org/bugzilla/show_bug.cgi?id=24024" | * @see "http://issues.apache.org/bugzilla/show_bug.cgi?id=24024" | ||||
*/ | */ | ||||
@Test | |||||
public void testAntlibResource() { | public void testAntlibResource() { | ||||
expectLog("antlib.resource", "MyTask called-and-then-MyTask2 called"); | |||||
buildRule.executeTarget("antlib.resource"); | |||||
assertEquals("MyTask called-and-then-MyTask2 called", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testNsCurrent() { | public void testNsCurrent() { | ||||
expectLog("ns.current", "Echo2 inside a macroHello from x:p"); | |||||
buildRule.executeTarget("ns.current"); | |||||
assertEquals("Echo2 inside a macroHello from x:p", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testAntlib_uri() { | public void testAntlib_uri() { | ||||
if (isSharedJVM()) { | |||||
executeTarget("antlib_uri"); | |||||
} | |||||
Assume.assumeTrue("Test requires shared JVM", isSharedJVM()); | |||||
buildRule.executeTarget("antlib_uri"); | |||||
} | } | ||||
@Test | |||||
public void testAntlib_uri_auto() { | public void testAntlib_uri_auto() { | ||||
if (isSharedJVM()) { | |||||
executeTarget("antlib_uri_auto"); | |||||
} | |||||
Assume.assumeTrue("Test requires shared JVM", isSharedJVM()); | |||||
buildRule.executeTarget("antlib_uri_auto"); | |||||
} | } | ||||
@Test | |||||
public void testAntlib_uri_auto2() { | public void testAntlib_uri_auto2() { | ||||
if (isSharedJVM()) { | |||||
executeTarget("antlib_uri_auto2"); | |||||
} | |||||
Assume.assumeTrue("Test requires shared JVM", isSharedJVM()); | |||||
buildRule.executeTarget("antlib_uri_auto2"); | |||||
} | } | ||||
public static class MyTask extends Task { | public static class MyTask extends Task { | ||||
@@ -18,102 +18,140 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNull; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* JUnit test for the Available task/condition. | * JUnit test for the Available task/condition. | ||||
*/ | */ | ||||
public class AvailableTest extends BuildFileTest { | |||||
public AvailableTest(String name) { | |||||
super(name); | |||||
} | |||||
public class AvailableTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/available.xml"); | |||||
executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/available.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
// Nothing specified -> Fail | // Nothing specified -> Fail | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
// Only property specified -> Fail | // Only property specified -> Fail | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
// Only file specified -> Fail | // Only file specified -> Fail | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test3", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
// file doesn't exist -> property 'test' == null | // file doesn't exist -> property 'test' == null | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
executeTarget("test4"); | |||||
assertTrue(project.getProperty("test") == null); | |||||
buildRule.executeTarget("test4"); | |||||
assertTrue(buildRule.getProject().getProperty("test") == null); | |||||
} | } | ||||
// file does exist -> property 'test' == 'true' | // file does exist -> property 'test' == 'true' | ||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test5"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// resource doesn't exist -> property 'test' == null | // resource doesn't exist -> property 'test' == null | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
executeTarget("test6"); | |||||
assertTrue(project.getProperty("test") == null); | |||||
buildRule.executeTarget("test6"); | |||||
assertTrue(buildRule.getProject().getProperty("test") == null); | |||||
} | } | ||||
// resource does exist -> property 'test' == 'true' | // resource does exist -> property 'test' == 'true' | ||||
@Test | |||||
public void test7() { | public void test7() { | ||||
executeTarget("test7"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test7"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// class doesn't exist -> property 'test' == null | // class doesn't exist -> property 'test' == null | ||||
@Test | |||||
public void test8() { | public void test8() { | ||||
executeTarget("test8"); | |||||
assertTrue(project.getProperty("test") == null); | |||||
buildRule.executeTarget("test8"); | |||||
assertTrue(buildRule.getProject().getProperty("test") == null); | |||||
} | } | ||||
// class does exist -> property 'test' == 'true' | // class does exist -> property 'test' == 'true' | ||||
@Test | |||||
public void test9() { | public void test9() { | ||||
executeTarget("test9"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test9"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// All three specified and all three exist -> true | // All three specified and all three exist -> true | ||||
@Test | |||||
public void test10() { | public void test10() { | ||||
executeTarget("test10"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test10"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// All three specified but class missing -> null | // All three specified but class missing -> null | ||||
@Test | |||||
public void test11() { | public void test11() { | ||||
executeTarget("test11"); | |||||
assertNull(project.getProperty("test")); | |||||
buildRule.executeTarget("test11"); | |||||
assertNull(buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Specified property-name is "" -> true | // Specified property-name is "" -> true | ||||
@Test | |||||
public void test12() { | public void test12() { | ||||
executeTarget("test12"); | |||||
assertNull(project.getProperty("test")); | |||||
assertEquals("true", project.getProperty("")); | |||||
buildRule.executeTarget("test12"); | |||||
assertNull(buildRule.getProject().getProperty("test")); | |||||
assertEquals("true", buildRule.getProject().getProperty("")); | |||||
} | } | ||||
// Specified file is "" -> invalid files do not exist | // Specified file is "" -> invalid files do not exist | ||||
@Test | |||||
public void test13() { | public void test13() { | ||||
executeTarget("test13"); | |||||
assertNull(project.getProperty("test")); | |||||
buildRule.executeTarget("test13"); | |||||
assertNull(buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Specified file is "" actually a directory, so it should pass | // Specified file is "" actually a directory, so it should pass | ||||
@Test | |||||
public void test13b() { | public void test13b() { | ||||
executeTarget("test13b"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test13b"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Specified resource is "" -> can such a thing exist? | // Specified resource is "" -> can such a thing exist? | ||||
@@ -121,94 +159,114 @@ public class AvailableTest extends BuildFileTest { | |||||
* returns non null IBM JDK 1.3 Linux | * returns non null IBM JDK 1.3 Linux | ||||
*/ | */ | ||||
// public void test14() { | // public void test14() { | ||||
// executeTarget("test14"); | |||||
// assertEquals(project.getProperty("test"), null); | |||||
// buildRule.executeTarget("test14"); | |||||
// assertEquals(buildRule.getProject().getProperty("test"), null); | |||||
// } | // } | ||||
// Specified class is "" -> can not exist | // Specified class is "" -> can not exist | ||||
@Test | |||||
public void test15() { | public void test15() { | ||||
executeTarget("test15"); | |||||
assertNull(project.getProperty("test")); | |||||
buildRule.executeTarget("test15"); | |||||
assertNull(buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Specified dir is "" -> this is the current directory and should | // Specified dir is "" -> this is the current directory and should | ||||
// always exist | // always exist | ||||
@Test | |||||
public void test16() { | public void test16() { | ||||
executeTarget("test16"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test16"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Specified dir is "../taskdefs" -> should exist since it's the | // Specified dir is "../taskdefs" -> should exist since it's the | ||||
// location of the buildfile used... | // location of the buildfile used... | ||||
@Test | |||||
public void test17() { | public void test17() { | ||||
executeTarget("test17"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test17"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Specified dir is "../this_dir_should_never_exist" -> null | // Specified dir is "../this_dir_should_never_exist" -> null | ||||
@Test | |||||
public void test18() { | public void test18() { | ||||
executeTarget("test18"); | |||||
assertNull(project.getProperty("test")); | |||||
buildRule.executeTarget("test18"); | |||||
assertNull(buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Invalid type specified | // Invalid type specified | ||||
@Test | |||||
public void test19() { | public void test19() { | ||||
expectBuildException("test19", "Invalid value for type attribute."); | |||||
try { | |||||
buildRule.executeTarget("test19"); | |||||
fail("Invalid value for type attribute"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
// Core class that exists in system classpath is ignored | // Core class that exists in system classpath is ignored | ||||
@Test | |||||
public void test20() { | public void test20() { | ||||
executeTarget("test20"); | |||||
assertNull(project.getProperty("test")); | |||||
buildRule.executeTarget("test20"); | |||||
assertNull(buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Core class that exists in system classpath is ignored, but found in specified classpath | // Core class that exists in system classpath is ignored, but found in specified classpath | ||||
@Test | |||||
public void test21() { | public void test21() { | ||||
executeTarget("test21"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test21"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Core class that exists in system classpath is not ignored with ignoresystemclass="false" | // Core class that exists in system classpath is not ignored with ignoresystemclass="false" | ||||
@Test | |||||
public void test22() { | public void test22() { | ||||
executeTarget("test22"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test22"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Core class that exists in system classpath is not ignored with default ignoresystemclasses value | // Core class that exists in system classpath is not ignored with default ignoresystemclasses value | ||||
@Test | |||||
public void test23() { | public void test23() { | ||||
executeTarget("test23"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test23"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// Class is found in specified classpath | // Class is found in specified classpath | ||||
@Test | |||||
public void test24() { | public void test24() { | ||||
executeTarget("test24"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("test24"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// File is not found in specified filepath | // File is not found in specified filepath | ||||
@Test | |||||
public void testSearchInPathNotThere() { | public void testSearchInPathNotThere() { | ||||
executeTarget("searchInPathNotThere"); | |||||
assertNull(project.getProperty("test")); | |||||
buildRule.executeTarget("searchInPathNotThere"); | |||||
assertNull(buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// File is not found in specified filepath | // File is not found in specified filepath | ||||
@Test | |||||
public void testSearchInPathIsThere() { | public void testSearchInPathIsThere() { | ||||
executeTarget("searchInPathIsThere"); | |||||
assertEquals("true", project.getProperty("test")); | |||||
buildRule.executeTarget("searchInPathIsThere"); | |||||
assertEquals("true", buildRule.getProject().getProperty("test")); | |||||
} | } | ||||
// test when file begins with basedir twice | // test when file begins with basedir twice | ||||
@Test | |||||
public void testDoubleBasedir() { | public void testDoubleBasedir() { | ||||
executeTarget("testDoubleBasedir"); | |||||
buildRule.executeTarget("testDoubleBasedir"); | |||||
} | } | ||||
// test for searching parents | // test for searching parents | ||||
@Test | |||||
public void testSearchParents() { | public void testSearchParents() { | ||||
executeTarget("search-parents"); | |||||
buildRule.executeTarget("search-parents"); | |||||
} | } | ||||
// test for not searching parents | // test for not searching parents | ||||
@Test | |||||
public void testSearchParentsNot() { | public void testSearchParentsNot() { | ||||
executeTarget("search-parents-not"); | |||||
buildRule.executeTarget("search-parents-not"); | |||||
} | } | ||||
} | } |
@@ -18,45 +18,49 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
/** | |||||
*/ | |||||
public class BUnzip2Test extends BuildFileTest { | |||||
/** Utilities used for file operations */ | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
public class BUnzip2Test { | |||||
public BUnzip2Test(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/bunzip2.xml"); | |||||
executeTarget("prepare"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/bunzip2.xml"); | |||||
buildRule.executeTarget("prepare"); | |||||
} | } | ||||
@Test | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
@Test | |||||
public void testRealTest() throws java.io.IOException { | public void testRealTest() throws java.io.IOException { | ||||
testRealTest("realTest"); | testRealTest("realTest"); | ||||
} | } | ||||
@Test | |||||
public void testRealTestWithResource() throws java.io.IOException { | public void testRealTestWithResource() throws java.io.IOException { | ||||
testRealTest("realTestWithResource"); | testRealTest("realTestWithResource"); | ||||
} | } | ||||
private void testRealTest(String target) throws java.io.IOException { | private void testRealTest(String target) throws java.io.IOException { | ||||
executeTarget(target); | |||||
assertTrue("File content mismatch after bunzip2", | |||||
FILE_UTILS.contentEquals(project.resolveFile("expected/asf-logo-huge.tar"), | |||||
project.resolveFile("asf-logo-huge.tar"))); | |||||
buildRule.executeTarget(target); | |||||
assertEquals("File content mismatch after bunzip2", | |||||
FileUtilities.getFileContents(buildRule.getProject().resolveFile("expected/asf-logo-huge.tar")), | |||||
FileUtilities.getFileContents(buildRule.getProject().resolveFile("asf-logo-huge.tar"))); | |||||
} | } | ||||
@Test | |||||
public void testDocumentationClaimsOnCopy() throws java.io.IOException { | public void testDocumentationClaimsOnCopy() throws java.io.IOException { | ||||
testRealTest("testDocumentationClaimsOnCopy"); | testRealTest("testDocumentationClaimsOnCopy"); | ||||
} | } | ||||
@@ -18,34 +18,44 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.bzip2.CBZip2InputStream; | import org.apache.tools.bzip2.CBZip2InputStream; | ||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.io.BufferedInputStream; | import java.io.BufferedInputStream; | ||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileInputStream; | import java.io.FileInputStream; | ||||
import java.io.InputStream; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class BZip2Test extends BuildFileTest { | |||||
public class BZip2Test { | |||||
public BZip2Test(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/bzip2.xml"); | |||||
executeTarget("prepare"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/bzip2.xml"); | |||||
buildRule.executeTarget("prepare"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
@Test | |||||
public void testRealTest() throws IOException { | public void testRealTest() throws IOException { | ||||
executeTarget("realTest"); | |||||
buildRule.executeTarget("realTest"); | |||||
// doesn't work: Depending on the compression engine used, | // doesn't work: Depending on the compression engine used, | ||||
// compressed bytes may differ. False errors would be | // compressed bytes may differ. False errors would be | ||||
@@ -57,8 +67,8 @@ public class BZip2Test extends BuildFileTest { | |||||
// We have to compare the decompressed content instead: | // We have to compare the decompressed content instead: | ||||
File originalFile = | File originalFile = | ||||
project.resolveFile("expected/asf-logo-huge.tar.bz2"); | |||||
File actualFile = project.resolveFile("asf-logo-huge.tar.bz2"); | |||||
buildRule.getProject().resolveFile("expected/asf-logo-huge.tar.bz2"); | |||||
File actualFile = buildRule.getProject().resolveFile("asf-logo-huge.tar.bz2"); | |||||
InputStream originalIn = | InputStream originalIn = | ||||
new BufferedInputStream(new FileInputStream(originalFile)); | new BufferedInputStream(new FileInputStream(originalFile)); | ||||
@@ -92,13 +102,15 @@ public class BZip2Test extends BuildFileTest { | |||||
actualIn.close(); | actualIn.close(); | ||||
} | } | ||||
@Test | |||||
public void testResource(){ | public void testResource(){ | ||||
executeTarget("realTestWithResource"); | |||||
buildRule.executeTarget("realTestWithResource"); | |||||
} | } | ||||
@Test | |||||
public void testDateCheck(){ | public void testDateCheck(){ | ||||
executeTarget("testDateCheck"); | |||||
String log = getLog(); | |||||
buildRule.executeTarget("testDateCheck"); | |||||
String log = buildRule.getLog(); | |||||
assertTrue( | assertTrue( | ||||
"Expecting message ending with 'asf-logo.gif.bz2 is up to date.' but got '" + log + "'", | "Expecting message ending with 'asf-logo.gif.bz2 is up to date.' but got '" + log + "'", | ||||
log.endsWith("asf-logo.gif.bz2 is up to date.")); | log.endsWith("asf-logo.gif.bz2 is up to date.")); | ||||
@@ -18,65 +18,96 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class BasenameTest extends BuildFileTest { | |||||
public class BasenameTest { | |||||
public BasenameTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/basename.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/basename.xml"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required attribute missing"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("Required attribute missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "required attribute missing"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("Required attribute missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test3", "required attribute missing"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("Required attribute missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception message | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
executeTarget("test4"); | |||||
String checkprop = project.getProperty("file.w.suf"); | |||||
buildRule.executeTarget("test4"); | |||||
String checkprop = buildRule.getProject().getProperty("file.w.suf"); | |||||
assertEquals("foo.txt", checkprop); | assertEquals("foo.txt", checkprop); | ||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
String checkprop = project.getProperty("file.wo.suf"); | |||||
buildRule.executeTarget("test5"); | |||||
String checkprop = buildRule.getProject().getProperty("file.wo.suf"); | |||||
assertEquals("foo", checkprop); | assertEquals("foo", checkprop); | ||||
} | } | ||||
@Test | |||||
public void testMultipleDots() { | public void testMultipleDots() { | ||||
executeTarget("testMultipleDots"); | |||||
String checkprop = project.getProperty("file.wo.suf"); | |||||
buildRule.executeTarget("testMultipleDots"); | |||||
String checkprop = buildRule.getProject().getProperty("file.wo.suf"); | |||||
assertEquals("foo.bar", checkprop); | assertEquals("foo.bar", checkprop); | ||||
} | } | ||||
@Test | |||||
public void testNoDots() { | public void testNoDots() { | ||||
executeTarget("testNoDots"); | |||||
String checkprop = project.getProperty("file.wo.suf"); | |||||
buildRule.executeTarget("testNoDots"); | |||||
String checkprop = buildRule.getProject().getProperty("file.wo.suf"); | |||||
assertEquals("foo.bar", checkprop); | assertEquals("foo.bar", checkprop); | ||||
} | } | ||||
@Test | |||||
public void testValueEqualsSuffixWithDot() { | public void testValueEqualsSuffixWithDot() { | ||||
executeTarget("testValueEqualsSuffixWithDot"); | |||||
String checkprop = project.getProperty("file.wo.suf"); | |||||
buildRule.executeTarget("testValueEqualsSuffixWithDot"); | |||||
String checkprop = buildRule.getProject().getProperty("file.wo.suf"); | |||||
assertEquals("", checkprop); | assertEquals("", checkprop); | ||||
} | } | ||||
@Test | |||||
public void testValueEqualsSuffixWithoutDot() { | public void testValueEqualsSuffixWithoutDot() { | ||||
executeTarget("testValueEqualsSuffixWithoutDot"); | |||||
String checkprop = project.getProperty("file.wo.suf"); | |||||
buildRule.executeTarget("testValueEqualsSuffixWithoutDot"); | |||||
String checkprop = buildRule.getProject().getProperty("file.wo.suf"); | |||||
assertEquals("", checkprop); | assertEquals("", checkprop); | ||||
} | } | ||||
@@ -19,14 +19,24 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.*; | import java.io.*; | ||||
import org.apache.tools.ant.*; | |||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* Tests CVSLogin task. | * Tests CVSLogin task. | ||||
* | * | ||||
*/ | */ | ||||
public class CVSPassTest extends BuildFileTest { | |||||
public class CVSPassTest { | |||||
private final String EOL = System.getProperty("line.separator"); | private final String EOL = System.getProperty("line.separator"); | ||||
private static final String JAKARTA_URL = | private static final String JAKARTA_URL = | ||||
":pserver:anoncvs@jakarta.apache.org:/home/cvspublic Ay=0=h<Z"; | ":pserver:anoncvs@jakarta.apache.org:/home/cvspublic Ay=0=h<Z"; | ||||
@@ -34,63 +44,69 @@ public class CVSPassTest extends BuildFileTest { | |||||
":pserver:anoncvs@xml.apache.org:/home/cvspublic Ay=0=h<Z"; | ":pserver:anoncvs@xml.apache.org:/home/cvspublic Ay=0=h<Z"; | ||||
private static final String TIGRIS_URL = | private static final String TIGRIS_URL = | ||||
":pserver:guest@cvs.tigris.org:/cvs AIbdZ,"; | ":pserver:guest@cvs.tigris.org:/cvs AIbdZ,"; | ||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
public CVSPassTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/cvspass.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/cvspass.xml"); | |||||
} | } | ||||
@Test | |||||
public void testNoCVSRoot() { | public void testNoCVSRoot() { | ||||
try{ | try{ | ||||
executeTarget("test1"); | |||||
buildRule.executeTarget("test1"); | |||||
fail("BuildException not thrown"); | fail("BuildException not thrown"); | ||||
}catch(BuildException e){ | }catch(BuildException e){ | ||||
assertEquals("cvsroot is required", e.getMessage()); | assertEquals("cvsroot is required", e.getMessage()); | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testNoPassword() { | public void testNoPassword() { | ||||
try{ | try{ | ||||
executeTarget("test2"); | |||||
buildRule.executeTarget("test2"); | |||||
fail("BuildException not thrown"); | fail("BuildException not thrown"); | ||||
}catch(BuildException e){ | }catch(BuildException e){ | ||||
assertEquals("password is required", e.getMessage()); | assertEquals("password is required", e.getMessage()); | ||||
} | } | ||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
@Test | |||||
public void testPassFile() throws Exception { | public void testPassFile() throws Exception { | ||||
executeTarget("test3"); | |||||
File f = new File(getProjectDir(), "testpassfile.tmp"); | |||||
buildRule.executeTarget("test3"); | |||||
File f = new File(buildRule.getProject().getBaseDir(), "testpassfile.tmp"); | |||||
assertTrue( "Passfile "+f+" not created", f.exists()); | assertTrue( "Passfile "+f+" not created", f.exists()); | ||||
assertEquals(JAKARTA_URL+EOL, readFile(f)); | |||||
assertEquals(JAKARTA_URL+EOL, FileUtilities.getFileContents(f)); | |||||
} | } | ||||
@Test | |||||
public void testPassFileDuplicateEntry() throws Exception { | public void testPassFileDuplicateEntry() throws Exception { | ||||
executeTarget("test4"); | |||||
File f = new File(getProjectDir(), "testpassfile.tmp"); | |||||
buildRule.executeTarget("test4"); | |||||
File f = new File(buildRule.getProject().getBaseDir(), "testpassfile.tmp"); | |||||
assertTrue( "Passfile "+f+" not created", f.exists()); | assertTrue( "Passfile "+f+" not created", f.exists()); | ||||
assertEquals( | assertEquals( | ||||
JAKARTA_URL+ EOL+ | JAKARTA_URL+ EOL+ | ||||
TIGRIS_URL+ EOL, | TIGRIS_URL+ EOL, | ||||
readFile(f)); | |||||
FileUtilities.getFileContents(f)); | |||||
} | } | ||||
@Test | |||||
public void testPassFileMultipleEntry() throws Exception { | public void testPassFileMultipleEntry() throws Exception { | ||||
executeTarget("test5"); | |||||
File f = new File(getProjectDir(), "testpassfile.tmp"); | |||||
buildRule.executeTarget("test5"); | |||||
File f = new File(buildRule.getProject().getBaseDir(), "testpassfile.tmp"); | |||||
assertTrue( "Passfile "+f+" not created", f.exists()); | assertTrue( "Passfile "+f+" not created", f.exists()); | ||||
@@ -98,25 +114,6 @@ public class CVSPassTest extends BuildFileTest { | |||||
JAKARTA_URL+ EOL+ | JAKARTA_URL+ EOL+ | ||||
XML_URL+ EOL+ | XML_URL+ EOL+ | ||||
TIGRIS_URL+ EOL, | TIGRIS_URL+ EOL, | ||||
readFile(f)); | |||||
} | |||||
private String readFile(File f) throws Exception { | |||||
BufferedReader reader = null; | |||||
try { | |||||
reader = new BufferedReader(new FileReader(f)); | |||||
StringBuffer buf = new StringBuffer(); | |||||
String line=null; | |||||
while((line=reader.readLine())!=null){ | |||||
buf.append(line + EOL); | |||||
} | |||||
return buf.toString(); | |||||
} finally { | |||||
if (reader != null) { | |||||
reader.close(); | |||||
} | |||||
} | |||||
FileUtilities.getFileContents(f)); | |||||
} | } | ||||
} | } |
@@ -18,53 +18,75 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.AntAssert; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.util.Vector; | import java.util.Vector; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class CallTargetTest extends BuildFileTest { | |||||
public class CallTargetTest { | |||||
public CallTargetTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/calltarget.xml"); | |||||
executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/calltarget.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
// see bugrep 21724 (references not passing through with antcall) | // see bugrep 21724 (references not passing through with antcall) | ||||
@Test | |||||
public void testInheritRefFileSet() { | public void testInheritRefFileSet() { | ||||
expectLogContaining("testinheritreffileset", "calltarget.xml"); | |||||
buildRule.executeTarget("testinheritreffileset"); | |||||
AntAssert.assertContains("calltarget.xml", buildRule.getLog()); | |||||
} | } | ||||
// see bugrep 21724 (references not passing through with antcall) | // see bugrep 21724 (references not passing through with antcall) | ||||
@Test | |||||
public void testInheritFilterset() { | public void testInheritFilterset() { | ||||
project.executeTarget("testinheritreffilterset"); | |||||
buildRule.getProject().executeTarget("testinheritreffilterset"); | |||||
} | } | ||||
// see bugrep 11418 (In repeated calls to the same target, | // see bugrep 11418 (In repeated calls to the same target, | ||||
// params will not be passed in) | // params will not be passed in) | ||||
@Test | |||||
public void testMultiCall() { | public void testMultiCall() { | ||||
Vector v = new Vector(); | |||||
Vector<String> v = new Vector<String>(); | |||||
v.add("call-multi"); | v.add("call-multi"); | ||||
v.add("call-multi"); | v.add("call-multi"); | ||||
project.executeTargets(v); | |||||
assertLogContaining("multi is SETmulti is SET"); | |||||
buildRule.getProject().executeTargets(v); | |||||
AntAssert.assertContains("multi is SETmulti is SET", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testBlankTarget() { | public void testBlankTarget() { | ||||
expectBuildException("blank-target", "target name must not be empty"); | |||||
try { | |||||
buildRule.executeTarget("blank-target"); | |||||
fail("target name must not be empty"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert exception contents | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testMultipleTargets() { | public void testMultipleTargets() { | ||||
expectLog("multiple-targets", "tadadctbdbtc"); | |||||
buildRule.executeTarget("multiple-targets"); | |||||
assertEquals("tadadctbdbtc", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testMultipleTargets2() { | public void testMultipleTargets2() { | ||||
expectLog("multiple-targets-2", "dadctb"); | |||||
buildRule.executeTarget("multiple-targets-2"); | |||||
assertEquals("dadctb", buildRule.getLog()); | |||||
} | } | ||||
} | } |
@@ -18,76 +18,92 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
/** | |||||
*/ | |||||
public class ChecksumTest extends BuildFileTest { | |||||
public ChecksumTest(String name) { | |||||
super(name); | |||||
} | |||||
public class ChecksumTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/checksum.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/checksum.xml"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
@Test | |||||
public void testCreateMd5() throws IOException { | public void testCreateMd5() throws IOException { | ||||
executeTarget("createMd5"); | |||||
buildRule.executeTarget("createMd5"); | |||||
} | } | ||||
@Test | |||||
public void testCreateMD5SUMformat() throws IOException { | public void testCreateMD5SUMformat() throws IOException { | ||||
executeTarget("createMD5SUMformat"); | |||||
buildRule.executeTarget("createMD5SUMformat"); | |||||
} | } | ||||
@Test | |||||
public void testCreateSVFformat() throws IOException { | public void testCreateSVFformat() throws IOException { | ||||
executeTarget("createSVFformat"); | |||||
buildRule.executeTarget("createSVFformat"); | |||||
} | } | ||||
@Test | |||||
public void testCreatePattern() throws IOException { | public void testCreatePattern() throws IOException { | ||||
executeTarget("createPattern"); | |||||
buildRule.executeTarget("createPattern"); | |||||
} | } | ||||
@Test | |||||
public void testSetProperty() { | public void testSetProperty() { | ||||
executeTarget("setProperty"); | |||||
buildRule.executeTarget("setProperty"); | |||||
} | } | ||||
@Test | |||||
public void testVerifyTotal() { | public void testVerifyTotal() { | ||||
executeTarget("verifyTotal"); | |||||
buildRule.executeTarget("verifyTotal"); | |||||
} | } | ||||
@Test | |||||
public void testVerifyTotalRC() { | public void testVerifyTotalRC() { | ||||
executeTarget("verifyTotalRC"); | |||||
buildRule.executeTarget("verifyTotalRC"); | |||||
} | } | ||||
@Test | |||||
public void testVerifyChecksumdir() { | public void testVerifyChecksumdir() { | ||||
executeTarget("verifyChecksumdir"); | |||||
buildRule.executeTarget("verifyChecksumdir"); | |||||
} | } | ||||
@Test | |||||
public void testVerifyAsTask() { | public void testVerifyAsTask() { | ||||
executeTarget("verifyAsTask"); | |||||
buildRule.executeTarget("verifyAsTask"); | |||||
} | } | ||||
@Test | |||||
public void testVerifyMD5SUMAsTask() { | public void testVerifyMD5SUMAsTask() { | ||||
executeTarget("verifyMD5SUMAsTask"); | |||||
buildRule.executeTarget("verifyMD5SUMAsTask"); | |||||
} | } | ||||
@Test | |||||
public void testVerifyAsCondition() { | public void testVerifyAsCondition() { | ||||
executeTarget("verifyAsCondition"); | |||||
buildRule.executeTarget("verifyAsCondition"); | |||||
} | } | ||||
@Test | |||||
public void testVerifyFromProperty() { | public void testVerifyFromProperty() { | ||||
executeTarget("verifyFromProperty"); | |||||
buildRule.executeTarget("verifyFromProperty"); | |||||
} | } | ||||
@Test | |||||
public void testVerifyChecksumdirNoTotal() { | public void testVerifyChecksumdirNoTotal() { | ||||
executeTarget("verifyChecksumdirNoTotal"); | |||||
buildRule.executeTarget("verifyChecksumdirNoTotal"); | |||||
} | } | ||||
} | } |
@@ -18,21 +18,28 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileReader; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.Reader; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* A test class for the 'concat' task, used to concatenate a series of | * A test class for the 'concat' task, used to concatenate a series of | ||||
* files into a single stream. | * files into a single stream. | ||||
* | * | ||||
*/ | */ | ||||
public class ConcatTest | |||||
extends BuildFileTest { | |||||
public class ConcatTest { | |||||
/** | /** | ||||
* The name of the temporary file. | * The name of the temporary file. | ||||
@@ -44,57 +51,68 @@ public class ConcatTest | |||||
*/ | */ | ||||
private static final String tempFile2 = "concat.tmp.2"; | private static final String tempFile2 = "concat.tmp.2"; | ||||
/** Utilities used for file operations */ | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
/** | |||||
* Required constructor. | |||||
*/ | |||||
public ConcatTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
/** | /** | ||||
* Test set up, called by the unit test framework prior to each | * Test set up, called by the unit test framework prior to each | ||||
* test. | * test. | ||||
*/ | */ | ||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/concat.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/concat.xml"); | |||||
} | } | ||||
/** | /** | ||||
* Test tear down, called by the unit test framework prior to each | * Test tear down, called by the unit test framework prior to each | ||||
* test. | * test. | ||||
*/ | */ | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
/** | /** | ||||
* Expect an exception when insufficient information is provided. | * Expect an exception when insufficient information is provided. | ||||
*/ | */ | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "Insufficient information."); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("BuildException should have been thrown - Insufficient information"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Expect an exception when the destination file is invalid. | * Expect an exception when the destination file is invalid. | ||||
*/ | */ | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "Invalid destination file."); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("BuildException should have been thrown - Invalid destination file"); | |||||
} catch(BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Cats the string 'Hello, World!' to a temporary file. | * Cats the string 'Hello, World!' to a temporary file. | ||||
*/ | */ | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
File file = new File(getProjectDir(), tempFile); | |||||
File file = new File(buildRule.getProject().getBaseDir(), tempFile); | |||||
if (file.exists()) { | if (file.exists()) { | ||||
file.delete(); | file.delete(); | ||||
} | } | ||||
executeTarget("test3"); | |||||
buildRule.executeTarget("test3"); | |||||
assertTrue(file.exists()); | assertTrue(file.exists()); | ||||
} | } | ||||
@@ -102,15 +120,16 @@ public class ConcatTest | |||||
/** | /** | ||||
* Cats the file created in test3 three times. | * Cats the file created in test3 three times. | ||||
*/ | */ | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
test3(); | test3(); | ||||
File file = new File(getProjectDir(), tempFile); | |||||
File file = new File(buildRule.getProject().getBaseDir(), tempFile); | |||||
final long origSize = file.length(); | final long origSize = file.length(); | ||||
executeTarget("test4"); | |||||
buildRule.executeTarget("test4"); | |||||
File file2 = new File(getProjectDir(), tempFile2); | |||||
File file2 = new File(buildRule.getProject().getBaseDir(), tempFile2); | |||||
final long newSize = file2.length(); | final long newSize = file2.length(); | ||||
assertEquals(origSize * 3, newSize); | assertEquals(origSize * 3, newSize); | ||||
@@ -119,170 +138,178 @@ public class ConcatTest | |||||
/** | /** | ||||
* Cats the string 'Hello, World!' to the console. | * Cats the string 'Hello, World!' to the console. | ||||
*/ | */ | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
expectLog("test5", "Hello, World!"); | |||||
buildRule.executeTarget("test5"); | |||||
assertEquals("Hello, World!", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
String filename = "src/etc/testcases/taskdefs/thisfiledoesnotexist" | String filename = "src/etc/testcases/taskdefs/thisfiledoesnotexist" | ||||
.replace('/', File.separatorChar); | .replace('/', File.separatorChar); | ||||
expectLogContaining("test6", filename +" does not exist."); | |||||
buildRule.executeTarget("test6"); | |||||
assertContains(filename + " does not exist", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testConcatNoNewline() { | public void testConcatNoNewline() { | ||||
expectLog("testConcatNoNewline", "ab"); | |||||
buildRule.executeTarget("testConcatNoNewline"); | |||||
assertEquals("ab", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testConcatNoNewlineEncoding() { | public void testConcatNoNewlineEncoding() { | ||||
expectLog("testConcatNoNewlineEncoding", "ab"); | |||||
buildRule.executeTarget("testConcatNoNewlineEncoding"); | |||||
assertEquals("ab", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testPath() { | public void testPath() { | ||||
test3(); | test3(); | ||||
File file = new File(getProjectDir(), tempFile); | |||||
File file = new File(buildRule.getProject().getBaseDir(), tempFile); | |||||
final long origSize = file.length(); | final long origSize = file.length(); | ||||
executeTarget("testPath"); | |||||
buildRule.executeTarget("testPath"); | |||||
File file2 = new File(getProjectDir(), tempFile2); | |||||
File file2 = new File(buildRule.getProject().getBaseDir(), tempFile2); | |||||
final long newSize = file2.length(); | final long newSize = file2.length(); | ||||
assertEquals(origSize, newSize); | assertEquals(origSize, newSize); | ||||
} | } | ||||
@Test | |||||
public void testAppend() { | public void testAppend() { | ||||
test3(); | test3(); | ||||
File file = new File(getProjectDir(), tempFile); | |||||
File file = new File(buildRule.getProject().getBaseDir(), tempFile); | |||||
final long origSize = file.length(); | final long origSize = file.length(); | ||||
executeTarget("testAppend"); | |||||
buildRule.executeTarget("testAppend"); | |||||
File file2 = new File(getProjectDir(), tempFile2); | |||||
File file2 = new File(buildRule.getProject().getBaseDir(), tempFile2); | |||||
final long newSize = file2.length(); | final long newSize = file2.length(); | ||||
assertEquals(origSize*2, newSize); | assertEquals(origSize*2, newSize); | ||||
} | } | ||||
@Test | |||||
public void testFilter() { | public void testFilter() { | ||||
executeTarget("testfilter"); | |||||
assertTrue(getLog().indexOf("REPLACED") > -1); | |||||
buildRule.executeTarget("testfilter"); | |||||
assertTrue(buildRule.getLog().indexOf("REPLACED") > -1); | |||||
} | } | ||||
@Test | |||||
public void testNoOverwrite() { | public void testNoOverwrite() { | ||||
executeTarget("testnooverwrite"); | |||||
File file2 = new File(getProjectDir(), tempFile2); | |||||
buildRule.executeTarget("testnooverwrite"); | |||||
File file2 = new File(buildRule.getProject().getBaseDir(), tempFile2); | |||||
long size = file2.length(); | long size = file2.length(); | ||||
assertEquals(size, 0); | assertEquals(size, 0); | ||||
} | } | ||||
@Test | |||||
public void testOverwrite() { | public void testOverwrite() { | ||||
executeTarget("testoverwrite"); | |||||
File file2 = new File(getProjectDir(), tempFile2); | |||||
buildRule.executeTarget("testoverwrite"); | |||||
File file2 = new File(buildRule.getProject().getBaseDir(), tempFile2); | |||||
long size = file2.length(); | long size = file2.length(); | ||||
assertTrue(size > 0); | assertTrue(size > 0); | ||||
} | } | ||||
@Test | |||||
public void testheaderfooter() { | public void testheaderfooter() { | ||||
test3(); | test3(); | ||||
expectLog("testheaderfooter", "headerHello, World!footer"); | |||||
buildRule.executeTarget("testheaderfooter"); | |||||
assertEquals("headerHello, World!footer", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testfileheader() { | public void testfileheader() { | ||||
test3(); | test3(); | ||||
expectLog("testfileheader", "Hello, World!Hello, World!"); | |||||
buildRule.executeTarget("testfileheader"); | |||||
assertEquals("Hello, World!Hello, World!", buildRule.getLog()); | |||||
} | } | ||||
/** | /** | ||||
* Expect an exception when attempting to cat an file to itself | * Expect an exception when attempting to cat an file to itself | ||||
*/ | */ | ||||
@Test | |||||
public void testsame() { | public void testsame() { | ||||
expectBuildException("samefile", "output file same as input"); | |||||
try { | |||||
buildRule.executeTarget("samefile"); | |||||
fail("Build exception should have been thrown - output file same as input"); | |||||
} catch(BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Check if filter inline works | * Check if filter inline works | ||||
*/ | */ | ||||
@Test | |||||
public void testfilterinline() { | public void testfilterinline() { | ||||
executeTarget("testfilterinline"); | |||||
assertTrue(getLog().indexOf("REPLACED") > -1); | |||||
buildRule.executeTarget("testfilterinline"); | |||||
assertTrue(buildRule.getLog().indexOf("REPLACED") > -1); | |||||
} | } | ||||
/** | /** | ||||
* Check if multireader works | * Check if multireader works | ||||
*/ | */ | ||||
@Test | |||||
public void testmultireader() { | public void testmultireader() { | ||||
executeTarget("testmultireader"); | |||||
assertTrue(getLog().indexOf("Bye") > -1); | |||||
assertTrue(getLog().indexOf("Hello") == -1); | |||||
buildRule.executeTarget("testmultireader"); | |||||
assertTrue(buildRule.getLog().indexOf("Bye") > -1); | |||||
assertTrue(buildRule.getLog().indexOf("Hello") == -1); | |||||
} | } | ||||
/** | /** | ||||
* Check if fixlastline works | * Check if fixlastline works | ||||
*/ | */ | ||||
@Test | |||||
public void testfixlastline() | public void testfixlastline() | ||||
throws IOException | throws IOException | ||||
{ | { | ||||
expectFileContains( | |||||
"testfixlastline", "concat.line4", | |||||
"end of line" + System.getProperty("line.separator") | |||||
+ "This has"); | |||||
buildRule.executeTarget("testfixlastline"); | |||||
assertContains("end of line" + System.getProperty("line.separator") + "This has", | |||||
FileUtilities.getFileContents(buildRule.getProject(), "concat.line4")); | |||||
} | } | ||||
/** | /** | ||||
* Check if fixlastline works with eol | * Check if fixlastline works with eol | ||||
*/ | */ | ||||
@Test | |||||
public void testfixlastlineeol() | public void testfixlastlineeol() | ||||
throws IOException | throws IOException | ||||
{ | { | ||||
expectFileContains( | |||||
"testfixlastlineeol", "concat.linecr", | |||||
"end of line\rThis has"); | |||||
buildRule.executeTarget("testfixlastlineeol"); | |||||
assertContains("end of line\rThis has", FileUtilities.getFileContents(buildRule.getProject(), "concat.linecr")); | |||||
} | } | ||||
// ------------------------------------------------------ | |||||
// Helper methods - should be in BuildFileTest | |||||
// ----------------------------------------------------- | |||||
private String getFileString(String filename) | |||||
throws IOException | |||||
{ | |||||
Reader r = null; | |||||
try { | |||||
r = new FileReader(getProject().resolveFile(filename)); | |||||
return FileUtils.readFully(r); | |||||
} | |||||
finally { | |||||
FileUtils.close(r); | |||||
} | |||||
} | |||||
private String getFileString(String target, String filename) | |||||
throws IOException | |||||
{ | |||||
executeTarget(target); | |||||
return getFileString(filename); | |||||
@Test | |||||
public void testTranscoding() throws IOException { | |||||
buildRule.executeTarget("testTranscoding"); | |||||
File f1 = buildRule.getProject().resolveFile("copy/expected/utf-8"); | |||||
File f2 = buildRule.getProject().resolveFile("concat.utf8"); | |||||
assertEquals(f1.toString() + " differs from " + f2.toString(), | |||||
FileUtilities.getFileContents(f1), FileUtilities.getFileContents(f2)); | |||||
} | } | ||||
private void expectFileContains( | |||||
// ------------------------------------------------------ | |||||
// Helper methods - should be in a utility class | |||||
// ----------------------------------------------------- | |||||
private void expectFileContainsx( | |||||
String target, String filename, String contains) | String target, String filename, String contains) | ||||
throws IOException | throws IOException | ||||
{ | { | ||||
String content = getFileString(target, filename); | |||||
buildRule.executeTarget(target); | |||||
String content = FileUtilities.getFileContents(buildRule.getProject(), filename); | |||||
assertTrue( | assertTrue( | ||||
"expecting file " + filename + " to contain " + | "expecting file " + filename + " to contain " + | ||||
contains + | contains + | ||||
" but got " + content, content.indexOf(contains) > -1); | " but got " + content, content.indexOf(contains) > -1); | ||||
} | } | ||||
public void testTranscoding() throws IOException { | |||||
executeTarget("testTranscoding"); | |||||
File f1 = getProject().resolveFile("copy/expected/utf-8"); | |||||
File f2 = getProject().resolveFile("concat.utf8"); | |||||
assertTrue(f1.toString() + " differs from " + f2.toString(), | |||||
FILE_UTILS.contentEquals(f1, f2)); | |||||
} | |||||
} | } |
@@ -17,259 +17,363 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | |||||
* @created 13 January 2002 | |||||
*/ | |||||
public class ConditionTest extends BuildFileTest { | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNull; | |||||
import static org.junit.Assert.fail; | |||||
/** | |||||
* Constructor for the ConditionTest object | |||||
* | |||||
* @param name we dont know | |||||
*/ | |||||
public ConditionTest(String name) { | |||||
super(name); | |||||
} | |||||
public class ConditionTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
/** | /** | ||||
* The JUnit setup method | * The JUnit setup method | ||||
*/ | */ | ||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/condition.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/condition.xml"); | |||||
} | } | ||||
/** | /** | ||||
* The teardown method for JUnit | * The teardown method for JUnit | ||||
*/ | */ | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
@Test | |||||
public void testBasic() { | public void testBasic() { | ||||
expectPropertySet("basic","basic"); | |||||
buildRule.executeTarget("basic"); | |||||
assertEquals("true", buildRule.getProject().getProperty("basic")); | |||||
} | } | ||||
@Test | |||||
public void testConditionIncomplete() { | public void testConditionIncomplete() { | ||||
expectSpecificBuildException("condition-incomplete", | |||||
"property attribute has been omitted", | |||||
"The property attribute is required."); | |||||
try { | |||||
buildRule.executeTarget("condition-incomplete"); | |||||
fail("BuildException should have been thrown - property attribute has been omitted"); | |||||
} catch (BuildException ex) { | |||||
assertEquals("The property attribute is required.", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testConditionEmpty() { | public void testConditionEmpty() { | ||||
expectSpecificBuildException("condition-empty", | |||||
"no conditions", | |||||
"You must nest a condition into <condition>"); | |||||
try { | |||||
buildRule.executeTarget("condition-empty"); | |||||
fail("BuildException should have been thrown - no conditions"); | |||||
} catch(BuildException ex) { | |||||
assertEquals("You must nest a condition into <condition>", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testShortcut() { | public void testShortcut() { | ||||
expectPropertySet("shortcut","shortcut","set"); | |||||
buildRule.executeTarget("shortcut"); | |||||
assertEquals("set", buildRule.getProject().getProperty("shortcut")); | |||||
} | } | ||||
@Test | |||||
public void testUnset() { | public void testUnset() { | ||||
expectPropertyUnset("dontset","dontset"); | |||||
buildRule.executeTarget("dontset"); | |||||
assertNull(buildRule.getProject().getProperty("dontset")); | |||||
} | } | ||||
@Test | |||||
public void testSetValue() { | public void testSetValue() { | ||||
expectPropertySet("setvalue","setvalue","woowoo"); | |||||
buildRule.executeTarget("setvalue"); | |||||
assertEquals("woowoo", buildRule.getProject().getProperty("setvalue")); | |||||
} | } | ||||
@Test | |||||
public void testNegation() { | public void testNegation() { | ||||
expectPropertySet("negation","negation"); | |||||
buildRule.executeTarget("negation"); | |||||
assertEquals("true", buildRule.getProject().getProperty("negation")); | |||||
} | } | ||||
@Test | |||||
public void testNegationFalse() { | public void testNegationFalse() { | ||||
expectPropertyUnset("negationfalse","negationfalse"); | |||||
buildRule.executeTarget("negationfalse"); | |||||
assertNull(buildRule.getProject().getProperty("negationfalse")); | |||||
} | } | ||||
@Test | |||||
public void testNegationIncomplete() { | public void testNegationIncomplete() { | ||||
expectSpecificBuildException("negationincomplete", | |||||
"no conditions in <not>", | |||||
"You must nest a condition into <not>"); | |||||
try { | |||||
buildRule.executeTarget("negationincomplete"); | |||||
fail("BuildException should have been thrown - no conditions in <not>"); | |||||
} catch (BuildException ex) { | |||||
assertEquals("You must nest a condition into <not>", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testAnd() { | public void testAnd() { | ||||
expectPropertySet("and","and"); | |||||
buildRule.executeTarget("and"); | |||||
assertEquals("true", buildRule.getProject().getProperty("and")); | |||||
} | } | ||||
@Test | |||||
public void testAndFails() { | public void testAndFails() { | ||||
expectPropertyUnset("andfails","andfails"); | |||||
buildRule.executeTarget("andfails"); | |||||
assertNull(buildRule.getProject().getProperty("andfails")); | |||||
} | } | ||||
@Test | |||||
public void testAndIncomplete() { | public void testAndIncomplete() { | ||||
expectPropertyUnset("andincomplete","andincomplete"); | |||||
buildRule.executeTarget("andincomplete"); | |||||
assertNull(buildRule.getProject().getProperty("andincomplete")); | |||||
} | } | ||||
@Test | |||||
public void testAndempty() { | public void testAndempty() { | ||||
expectPropertySet("andempty","andempty"); | |||||
buildRule.executeTarget("andempty"); | |||||
assertEquals("true", buildRule.getProject().getProperty("andempty")); | |||||
} | } | ||||
@Test | |||||
public void testOr() { | public void testOr() { | ||||
expectPropertySet("or","or"); | |||||
buildRule.executeTarget("or"); | |||||
assertEquals("true", buildRule.getProject().getProperty("or")); | |||||
} | } | ||||
@Test | |||||
public void testOrincomplete() { | public void testOrincomplete() { | ||||
expectPropertySet("or","or"); | |||||
buildRule.executeTarget("or"); | |||||
assertEquals("true", buildRule.getProject().getProperty("or")); | |||||
} | } | ||||
@Test | |||||
public void testOrFails() { | public void testOrFails() { | ||||
expectPropertyUnset("orfails","orfails"); | |||||
buildRule.executeTarget("orfails"); | |||||
assertNull(buildRule.getProject().getProperty("orfails")); | |||||
} | } | ||||
@Test | |||||
public void testOrboth() { | public void testOrboth() { | ||||
expectPropertySet("orboth","orboth"); | |||||
buildRule.executeTarget("orboth"); | |||||
assertEquals("true", buildRule.getProject().getProperty("orboth")); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchIdentical() { | public void testFilesmatchIdentical() { | ||||
expectPropertySet("filesmatch-identical","filesmatch-identical"); | |||||
buildRule.executeTarget("filesmatch-identical"); | |||||
assertEquals("true", buildRule.getProject().getProperty("filesmatch-identical")); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchIncomplete() { | public void testFilesmatchIncomplete() { | ||||
expectSpecificBuildException("filesmatch-incomplete", | |||||
"Missing file2 attribute", | |||||
"both file1 and file2 are required in filesmatch"); | |||||
try { | |||||
buildRule.executeTarget("filesmatch-incomplete"); | |||||
fail("Build exception should have been thrown - Missing file2 attirbute"); | |||||
} catch (BuildException ex) { | |||||
assertEquals("both file1 and file2 are required in filesmatch", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchOddsizes() { | public void testFilesmatchOddsizes() { | ||||
expectPropertyUnset("filesmatch-oddsizes","filesmatch-oddsizes"); | |||||
buildRule.executeTarget("filesmatch-oddsizes"); | |||||
assertNull(buildRule.getProject().getProperty("filesmatch-oddsizes")); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchExistence() { | public void testFilesmatchExistence() { | ||||
expectPropertyUnset("filesmatch-existence", "filesmatch-existence"); | |||||
buildRule.executeTarget("filesmatch-existence"); | |||||
assertNull(buildRule.getProject().getProperty("filesmatch-existence")); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchDifferent() { | public void testFilesmatchDifferent() { | ||||
expectPropertyUnset("filesmatch-different","filesmatch-different"); | |||||
buildRule.executeTarget("filesmatch-different"); | |||||
assertNull(buildRule.getProject().getProperty("filesmatch-different")); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchMatch() { | public void testFilesmatchMatch() { | ||||
expectPropertySet("filesmatch-match","filesmatch-match"); | |||||
buildRule.executeTarget("filesmatch-match"); | |||||
assertEquals("true", buildRule.getProject().getProperty("filesmatch-match")); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchDifferentSizes() { | public void testFilesmatchDifferentSizes() { | ||||
expectPropertyUnset("filesmatch-different-sizes", | |||||
"filesmatch-different-sizes"); | |||||
buildRule.executeTarget("filesmatch-different-sizes"); | |||||
assertNull(buildRule.getProject().getProperty("filesmatch-different-sizes")); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchDifferentOnemissing() { | public void testFilesmatchDifferentOnemissing() { | ||||
expectPropertyUnset("filesmatch-different-onemissing", | |||||
"filesmatch-different-onemissing"); | |||||
buildRule.executeTarget("filesmatch-different-onemissing"); | |||||
assertNull(buildRule.getProject().getProperty("filesmatch-different-onemissing")); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchDifferentEol() { | public void testFilesmatchDifferentEol() { | ||||
executeTarget("filesmatch-different-eol"); | |||||
buildRule.executeTarget("filesmatch-different-eol"); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchSameEol() { | public void testFilesmatchSameEol() { | ||||
executeTarget("filesmatch-same-eol"); | |||||
buildRule.executeTarget("filesmatch-same-eol"); | |||||
} | } | ||||
@Test | |||||
public void testFilesmatchNeitherExist() { | public void testFilesmatchNeitherExist() { | ||||
executeTarget("filesmatch-neitherexist"); | |||||
buildRule.executeTarget("filesmatch-neitherexist"); | |||||
} | } | ||||
@Test | |||||
public void testContains() { | public void testContains() { | ||||
expectPropertySet("contains","contains"); | |||||
buildRule.executeTarget("contains"); | |||||
assertEquals("true", buildRule.getProject().getProperty("contains")); | |||||
} | } | ||||
@Test | |||||
public void testContainsDoesnt() { | public void testContainsDoesnt() { | ||||
expectPropertyUnset("contains-doesnt","contains-doesnt"); | |||||
buildRule.executeTarget("contains-doesnt"); | |||||
assertNull(buildRule.getProject().getProperty("contains-doesnt")); | |||||
} | } | ||||
@Test | |||||
public void testContainsAnycase() { | public void testContainsAnycase() { | ||||
expectPropertySet("contains-anycase","contains-anycase"); | |||||
buildRule.executeTarget("contains-anycase"); | |||||
assertEquals("true", buildRule.getProject().getProperty("contains-anycase")); | |||||
} | } | ||||
@Test | |||||
public void testContainsIncomplete1() { | public void testContainsIncomplete1() { | ||||
expectSpecificBuildException("contains-incomplete1", | |||||
"Missing contains attribute", | |||||
"both string and substring are required in contains"); | |||||
try { | |||||
buildRule.executeTarget("contains-incomplete1"); | |||||
fail("BuildException should have been thrown - Missing contains attribute"); | |||||
} catch(BuildException ex) { | |||||
assertEquals("both string and substring are required in contains", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testContainsIncomplete2() { | public void testContainsIncomplete2() { | ||||
expectSpecificBuildException("contains-incomplete2", | |||||
"Missing contains attribute", | |||||
"both string and substring are required in contains"); | |||||
try { | |||||
buildRule.executeTarget("contains-incomplete2"); | |||||
fail("BuildException should have been thrown - Missing contains attribute"); | |||||
} catch(BuildException ex) { | |||||
assertEquals("both string and substring are required in contains", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testIstrue() { | public void testIstrue() { | ||||
expectPropertySet("istrue","istrue"); | |||||
buildRule.executeTarget("istrue"); | |||||
assertEquals("true", buildRule.getProject().getProperty("istrue")); | |||||
} | } | ||||
@Test | |||||
public void testIstrueNot() { | public void testIstrueNot() { | ||||
expectPropertyUnset("istrue-not","istrue-not"); | |||||
buildRule.executeTarget("istrue-not"); | |||||
assertNull(buildRule.getProject().getProperty("istrue-not")); | |||||
} | } | ||||
@Test | |||||
public void testIstrueFalse() { | public void testIstrueFalse() { | ||||
expectPropertyUnset("istrue-false","istrue-false"); | |||||
buildRule.executeTarget("istrue-false"); | |||||
assertNull(buildRule.getProject().getProperty("istrue-false")); | |||||
} | } | ||||
@Test | |||||
public void testIstrueIncomplete1() { | public void testIstrueIncomplete1() { | ||||
expectSpecificBuildException("istrue-incomplete", | |||||
"Missing attribute", | |||||
"Nothing to test for truth"); | |||||
try { | |||||
buildRule.executeTarget("istrue-incomplete"); | |||||
fail("BuildException should have been thrown - Missing attribute"); | |||||
} catch(BuildException ex) { | |||||
assertEquals("Nothing to test for truth", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testIsfalseTrue() { | public void testIsfalseTrue() { | ||||
expectPropertyUnset("isfalse-true","isfalse-true"); | |||||
buildRule.executeTarget("isfalse-true"); | |||||
assertNull(buildRule.getProject().getProperty("isfalse-true")); | |||||
} | } | ||||
@Test | |||||
public void testIsfalseNot() { | public void testIsfalseNot() { | ||||
expectPropertySet("isfalse-not","isfalse-not"); | |||||
buildRule.executeTarget("isfalse-not"); | |||||
assertEquals("true", buildRule.getProject().getProperty("isfalse-not")); | |||||
} | } | ||||
@Test | |||||
public void testIsfalseFalse() { | public void testIsfalseFalse() { | ||||
expectPropertySet("isfalse-false","isfalse-false"); | |||||
} | |||||
buildRule.executeTarget("isfalse-false"); | |||||
assertEquals("true", buildRule.getProject().getProperty("isfalse-false")); | |||||
} | |||||
@Test | |||||
public void testIsfalseIncomplete1() { | public void testIsfalseIncomplete1() { | ||||
expectSpecificBuildException("isfalse-incomplete", | |||||
"Missing attribute", | |||||
"Nothing to test for falsehood"); | |||||
try { | |||||
buildRule.executeTarget("isfalse-incomplete"); | |||||
fail("BuildException should have been thrown - Missing attribute"); | |||||
} catch(BuildException ex) { | |||||
assertEquals("Nothing to test for falsehood", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testElse() { | public void testElse() { | ||||
executeTarget("testElse"); | |||||
buildRule.executeTarget("testElse"); | |||||
} | } | ||||
@Test | |||||
public void testResourcesmatchError() { | public void testResourcesmatchError() { | ||||
expectBuildException("resourcesmatch-error", | |||||
"should fail because no resources specified"); | |||||
try { | |||||
buildRule.executeTarget("resourcematch-error"); | |||||
fail("BuildException should have been thrown - no resources specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testResourcesmatchEmpty() { | public void testResourcesmatchEmpty() { | ||||
executeTarget("resourcesmatch-match-empty"); | |||||
buildRule.executeTarget("resourcesmatch-match-empty"); | |||||
} | } | ||||
@Test | |||||
public void testResourcesmatchOne() { | public void testResourcesmatchOne() { | ||||
executeTarget("resourcesmatch-match-one"); | |||||
buildRule.executeTarget("resourcesmatch-match-one"); | |||||
} | } | ||||
@Test | |||||
public void testResourcesmatchBinary() { | public void testResourcesmatchBinary() { | ||||
executeTarget("resourcesmatch-match-binary"); | |||||
buildRule.executeTarget("resourcesmatch-match-binary"); | |||||
} | } | ||||
@Test | |||||
public void testResourcesmatchMultipleBinary() { | public void testResourcesmatchMultipleBinary() { | ||||
executeTarget("resourcesmatch-match-multiple-binary"); | |||||
buildRule.executeTarget("resourcesmatch-match-multiple-binary"); | |||||
} | } | ||||
@Test | |||||
public void testResourcesmatchDiffer() { | public void testResourcesmatchDiffer() { | ||||
executeTarget("resourcesmatch-differ"); | |||||
buildRule.executeTarget("resourcesmatch-differ"); | |||||
} | } | ||||
@Test | |||||
public void testResourcesmatchText() { | public void testResourcesmatchText() { | ||||
executeTarget("resourcesmatch-match-text"); | |||||
buildRule.executeTarget("resourcesmatch-match-text"); | |||||
} | } | ||||
@Test | |||||
public void testResourcesmatchNoneExist() { | public void testResourcesmatchNoneExist() { | ||||
executeTarget("resourcesmatch-noneexist"); | |||||
buildRule.executeTarget("resourcesmatch-noneexist"); | |||||
} | } | ||||
} | } |
@@ -18,55 +18,72 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.junit.Before; | |||||
import org.junit.Ignore; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileReader; | import java.io.FileReader; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* Tests FileSet using the Copy task. | * Tests FileSet using the Copy task. | ||||
* | * | ||||
*/ | */ | ||||
public class CopyTest extends BuildFileTest { | |||||
public class CopyTest { | |||||
/** Utilities used for file operations */ | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
public CopyTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/copy.xml"); | |||||
executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/copy.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
executeTarget("test1"); | |||||
File f = new File(getOutputDir(), "copytest1.tmp"); | |||||
buildRule.executeTarget("test1"); | |||||
File f = new File(buildRule.getProject().getProperty("output"), "copytest1.tmp"); | |||||
if ( !f.exists()) { | if ( !f.exists()) { | ||||
fail("Copy failed"); | fail("Copy failed"); | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
executeTarget("test2"); | |||||
File f = new File(getOutputDir(), "copytest1dir/copy.xml"); | |||||
buildRule.executeTarget("test2"); | |||||
File f = new File(buildRule.getProject().getProperty("output"), "copytest1dir/copy.xml"); | |||||
if ( !f.exists()) { | if ( !f.exists()) { | ||||
fail("Copy failed"); | fail("Copy failed"); | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
executeTarget("test3"); | |||||
File file3 = new File(getOutputDir(), "copytest3.tmp"); | |||||
buildRule.executeTarget("test3"); | |||||
File file3 = new File(buildRule.getProject().getProperty("output"), "copytest3.tmp"); | |||||
//rollback file timestamp instead of delaying test | |||||
FileUtilities.rollbackTimetamps(file3, 3); | |||||
buildRule.executeTarget("test3Part2"); | |||||
assertTrue(file3.exists()); | assertTrue(file3.exists()); | ||||
File file3a = new File(getOutputDir(), "copytest3a.tmp"); | |||||
File file3a = new File(buildRule.getProject().getProperty("output"), "copytest3a.tmp"); | |||||
assertTrue(file3a.exists()); | assertTrue(file3a.exists()); | ||||
File file3b = new File(getOutputDir(), "copytest3b.tmp"); | |||||
File file3b = new File(buildRule.getProject().getProperty("output"), "copytest3b.tmp"); | |||||
assertTrue(file3b.exists()); | assertTrue(file3b.exists()); | ||||
File file3c = new File(getOutputDir(), "copytest3c.tmp"); | |||||
File file3c = new File(buildRule.getProject().getProperty("output"), "copytest3c.tmp"); | |||||
assertTrue(file3c.exists()); | assertTrue(file3c.exists()); | ||||
//file length checks rely on touch generating a zero byte file | //file length checks rely on touch generating a zero byte file | ||||
@@ -86,96 +103,120 @@ public class CopyTest extends BuildFileTest { | |||||
} | } | ||||
@Test | |||||
public void testFilterTest() { | public void testFilterTest() { | ||||
executeTarget("filtertest"); | |||||
assertTrue(getOutput().indexOf("loop in tokens") == -1); | |||||
buildRule.executeTarget("filtertest"); | |||||
assertTrue(buildRule.getLog().indexOf("loop in tokens") == -1); | |||||
} | } | ||||
@Test | |||||
public void testInfiniteFilter() { | public void testInfiniteFilter() { | ||||
executeTarget("infinitetest"); | |||||
assertTrue(getOutput().indexOf("loop in tokens") != -1); | |||||
buildRule.executeTarget("infinitetest"); | |||||
assertContains("loop in tokens", buildRule.getOutput()); | |||||
} | } | ||||
@Test | |||||
public void testFilterSet() throws IOException { | public void testFilterSet() throws IOException { | ||||
executeTarget("testFilterSet"); | |||||
File tmp = new File(getOutputDir(), "copy.filterset.tmp"); | |||||
File check = new File(getProjectDir(), "expected/copy.filterset.filtered"); | |||||
buildRule.executeTarget("testFilterSet"); | |||||
File tmp = new File(buildRule.getProject().getProperty("output"), "copy.filterset.tmp"); | |||||
File check = new File(buildRule.getProject().getBaseDir(), "expected/copy.filterset.filtered"); | |||||
assertTrue(tmp.exists()); | assertTrue(tmp.exists()); | ||||
assertTrue(FILE_UTILS.contentEquals(tmp, check)); | |||||
assertEquals(FileUtilities.getFileContents(tmp), FileUtilities.getFileContents(check)); | |||||
} | } | ||||
@Test | |||||
public void testFilterChain() throws IOException { | public void testFilterChain() throws IOException { | ||||
executeTarget("testFilterChain"); | |||||
File tmp = new File(getOutputDir(), "copy.filterchain.tmp"); | |||||
File check = new File(getProjectDir(), "expected/copy.filterset.filtered"); | |||||
buildRule.executeTarget("testFilterChain"); | |||||
File tmp = new File(buildRule.getProject().getProperty("output"), "copy.filterchain.tmp"); | |||||
File check = new File(buildRule.getProject().getBaseDir(), "expected/copy.filterset.filtered"); | |||||
assertTrue(tmp.exists()); | assertTrue(tmp.exists()); | ||||
assertTrue(FILE_UTILS.contentEquals(tmp, check)); | |||||
assertEquals(FileUtilities.getFileContents(tmp), FileUtilities.getFileContents(check)); | |||||
} | } | ||||
@Test | |||||
public void testSingleFileFileset() { | public void testSingleFileFileset() { | ||||
executeTarget("test_single_file_fileset"); | |||||
File file = new File(getOutputDir(), | |||||
buildRule.executeTarget("test_single_file_fileset"); | |||||
File file = new File(buildRule.getProject().getProperty("output"), | |||||
"copytest_single_file_fileset.tmp"); | "copytest_single_file_fileset.tmp"); | ||||
assertTrue(file.exists()); | assertTrue(file.exists()); | ||||
} | } | ||||
@Test | |||||
public void testSingleFilePath() { | public void testSingleFilePath() { | ||||
executeTarget("test_single_file_path"); | |||||
File file = new File(getOutputDir(), | |||||
buildRule.executeTarget("test_single_file_path"); | |||||
File file = new File(buildRule.getProject().getProperty("output"), | |||||
"copytest_single_file_path.tmp"); | "copytest_single_file_path.tmp"); | ||||
assertTrue(file.exists()); | assertTrue(file.exists()); | ||||
} | } | ||||
@Test | |||||
public void testTranscoding() throws IOException { | public void testTranscoding() throws IOException { | ||||
executeTarget("testTranscoding"); | |||||
File f1 = getProject().resolveFile("copy/expected/utf-8"); | |||||
File f2 = new File(getOutputDir(), "copytest1.tmp"); | |||||
assertTrue(FILE_UTILS.contentEquals(f1, f2)); | |||||
buildRule.executeTarget("testTranscoding"); | |||||
File f1 = buildRule.getProject().resolveFile("copy/expected/utf-8"); | |||||
File f2 = new File(buildRule.getProject().getProperty("output"), "copytest1.tmp"); | |||||
assertEquals(FileUtilities.getFileContents(f1), FileUtilities.getFileContents(f2)); | |||||
} | } | ||||
@Test | |||||
public void testMissingFileIgnore() { | public void testMissingFileIgnore() { | ||||
expectLogContaining("testMissingFileIgnore", | |||||
"Warning: Could not find file "); | |||||
buildRule.executeTarget("testMissingFileIgnore"); | |||||
assertContains("Warning: Could not find file", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testMissingFileBail() { | public void testMissingFileBail() { | ||||
expectBuildException("testMissingFileBail", "not-there doesn't exist"); | |||||
assertTrue(getBuildException().getMessage() | |||||
.startsWith("Warning: Could not find file ")); | |||||
try { | |||||
buildRule.executeTarget("testMissingFileBail"); | |||||
fail("not-there doesn't exist"); | |||||
} catch (BuildException ex) { | |||||
assertTrue(ex.getMessage() | |||||
.startsWith("Warning: Could not find file ")); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testMissingDirIgnore() { | public void testMissingDirIgnore() { | ||||
expectLogContaining("testMissingDirIgnore", "Warning: "); | |||||
buildRule.executeTarget("testMissingDirIgnore"); | |||||
assertContains("Warning: ", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testMissingDirBail() { | public void testMissingDirBail() { | ||||
expectBuildException("testMissingDirBail", "not-there doesn't exist"); | |||||
assertTrue(getBuildException().getMessage().endsWith(" does not exist.")); | |||||
try { | |||||
buildRule.executeTarget("testMissingDirBail"); | |||||
fail("not-there doesn't exist"); | |||||
} catch (BuildException ex) { | |||||
assertTrue(ex.getMessage().endsWith(" does not exist.")); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testFileResourcePlain() { | public void testFileResourcePlain() { | ||||
executeTarget("testFileResourcePlain"); | |||||
File file1 = new File(getProject().getProperty("to.dir")+"/file1.txt"); | |||||
File file2 = new File(getProject().getProperty("to.dir")+"/file2.txt"); | |||||
File file3 = new File(getProject().getProperty("to.dir")+"/file3.txt"); | |||||
buildRule.executeTarget("testFileResourcePlain"); | |||||
File file1 = new File(buildRule.getProject().getProperty("to.dir")+"/file1.txt"); | |||||
File file2 = new File(buildRule.getProject().getProperty("to.dir")+"/file2.txt"); | |||||
File file3 = new File(buildRule.getProject().getProperty("to.dir")+"/file3.txt"); | |||||
assertTrue(file1.exists()); | assertTrue(file1.exists()); | ||||
assertTrue(file2.exists()); | assertTrue(file2.exists()); | ||||
assertTrue(file3.exists()); | assertTrue(file3.exists()); | ||||
} | } | ||||
public void _testFileResourceWithMapper() { | |||||
executeTarget("testFileResourceWithMapper"); | |||||
File file1 = new File(getProject().getProperty("to.dir")+"/file1.txt.bak"); | |||||
File file2 = new File(getProject().getProperty("to.dir")+"/file2.txt.bak"); | |||||
File file3 = new File(getProject().getProperty("to.dir")+"/file3.txt.bak"); | |||||
@Ignore("Previously ignored by naming convention") | |||||
@Test | |||||
public void testFileResourceWithMapper() { | |||||
buildRule.executeTarget("testFileResourceWithMapper"); | |||||
File file1 = new File(buildRule.getProject().getProperty("to.dir")+"/file1.txt.bak"); | |||||
File file2 = new File(buildRule.getProject().getProperty("to.dir")+"/file2.txt.bak"); | |||||
File file3 = new File(buildRule.getProject().getProperty("to.dir")+"/file3.txt.bak"); | |||||
assertTrue(file1.exists()); | assertTrue(file1.exists()); | ||||
assertTrue(file2.exists()); | assertTrue(file2.exists()); | ||||
assertTrue(file3.exists()); | assertTrue(file3.exists()); | ||||
} | } | ||||
@Test | |||||
public void testFileResourceWithFilter() { | public void testFileResourceWithFilter() { | ||||
executeTarget("testFileResourceWithFilter"); | |||||
File file1 = new File(getProject().getProperty("to.dir")+"/fileNR.txt"); | |||||
buildRule.executeTarget("testFileResourceWithFilter"); | |||||
File file1 = new File(buildRule.getProject().getProperty("to.dir")+"/fileNR.txt"); | |||||
assertTrue(file1.exists()); | assertTrue(file1.exists()); | ||||
try { | try { | ||||
String file1Content = FileUtils.readFully(new FileReader(file1)); | String file1Content = FileUtils.readFully(new FileReader(file1)); | ||||
@@ -185,44 +226,55 @@ public class CopyTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testPathAsResource() { | public void testPathAsResource() { | ||||
executeTarget("testPathAsResource"); | |||||
File file1 = new File(getProject().getProperty("to.dir")+"/file1.txt"); | |||||
File file2 = new File(getProject().getProperty("to.dir")+"/file2.txt"); | |||||
File file3 = new File(getProject().getProperty("to.dir")+"/file3.txt"); | |||||
buildRule.executeTarget("testPathAsResource"); | |||||
File file1 = new File(buildRule.getProject().getProperty("to.dir")+"/file1.txt"); | |||||
File file2 = new File(buildRule.getProject().getProperty("to.dir")+"/file2.txt"); | |||||
File file3 = new File(buildRule.getProject().getProperty("to.dir")+"/file3.txt"); | |||||
assertTrue(file1.exists()); | assertTrue(file1.exists()); | ||||
assertTrue(file2.exists()); | assertTrue(file2.exists()); | ||||
assertTrue(file3.exists()); | assertTrue(file3.exists()); | ||||
} | } | ||||
@Test | |||||
public void testZipfileset() { | public void testZipfileset() { | ||||
executeTarget("testZipfileset"); | |||||
File file1 = new File(getProject().getProperty("to.dir")+"/file1.txt"); | |||||
File file2 = new File(getProject().getProperty("to.dir")+"/file2.txt"); | |||||
File file3 = new File(getProject().getProperty("to.dir")+"/file3.txt"); | |||||
buildRule.executeTarget("testZipfileset"); | |||||
File file1 = new File(buildRule.getProject().getProperty("to.dir")+"/file1.txt"); | |||||
File file2 = new File(buildRule.getProject().getProperty("to.dir")+"/file2.txt"); | |||||
File file3 = new File(buildRule.getProject().getProperty("to.dir")+"/file3.txt"); | |||||
assertTrue(file1.exists()); | assertTrue(file1.exists()); | ||||
assertTrue(file2.exists()); | assertTrue(file2.exists()); | ||||
assertTrue(file3.exists()); | assertTrue(file3.exists()); | ||||
} | } | ||||
@Test | |||||
public void testDirset() { | public void testDirset() { | ||||
executeTarget("testDirset"); | |||||
buildRule.executeTarget("testDirset"); | |||||
} | } | ||||
public void _testResourcePlain() { | |||||
executeTarget("testResourcePlain"); | |||||
@Ignore("Previously ignored due to naming convention") | |||||
@Test | |||||
public void testResourcePlain() { | |||||
buildRule.executeTarget("testResourcePlain"); | |||||
} | } | ||||
public void _testResourcePlainWithMapper() { | |||||
executeTarget("testResourcePlainWithMapper"); | |||||
@Ignore("Previously ignored due to naming convention") | |||||
@Test | |||||
public void testResourcePlainWithMapper() { | |||||
buildRule.executeTarget("testResourcePlainWithMapper"); | |||||
} | } | ||||
public void _testResourcePlainWithFilter() { | |||||
executeTarget("testResourcePlainWithFilter"); | |||||
@Ignore("Previously ignored due to naming convention") | |||||
@Test | |||||
public void testResourcePlainWithFilter() { | |||||
buildRule.executeTarget("testResourcePlainWithFilter"); | |||||
} | } | ||||
public void _testOnlineResources() { | |||||
executeTarget("testOnlineResources"); | |||||
@Ignore("Previously ignored due to naming convention") | |||||
@Test | |||||
public void testOnlineResources() { | |||||
buildRule.executeTarget("testOnlineResources"); | |||||
} | } | ||||
} | } |
@@ -18,48 +18,83 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Test; | |||||
/** | |||||
*/ | |||||
public class CopydirTest extends BuildFileTest { | |||||
import java.io.File; | |||||
public CopydirTest(String name) { | |||||
super(name); | |||||
} | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
public class CopydirTest { | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/copydir.xml"); | |||||
executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/copydir.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
// TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
// TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test3", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
// TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
expectLog("test4", "DEPRECATED - The copydir task is deprecated. Use copy instead.Warning: src == dest"); | |||||
buildRule.executeTarget("test4"); | |||||
assertEquals("DEPRECATED - The copydir task is deprecated. Use copy instead.Warning: src == dest", | |||||
buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
java.io.File f = new java.io.File(getOutputDir(), "taskdefs.tmp"); | |||||
buildRule.executeTarget("test5"); | |||||
java.io.File f = new java.io.File(new File(buildRule.getProject().getProperty("output")), "taskdefs.tmp"); | |||||
if (!f.exists() || !f.isDirectory()) { | if (!f.exists() || !f.isDirectory()) { | ||||
fail("Copy failed"); | fail("Copy failed"); | ||||
} | } | ||||
// We keep this, so we have something to delete in later tests :-) | // We keep this, so we have something to delete in later tests :-) | ||||
} | } | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
expectBuildException("test6", "target is file"); | |||||
try { | |||||
buildRule.executeTarget("test6"); | |||||
fail("target is file"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
} | } |
@@ -18,46 +18,83 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Test; | |||||
import java.io.File; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class CopyfileTest extends BuildFileTest { | |||||
public class CopyfileTest { | |||||
public void test6() { | |||||
expectBuildException("test6", "target is directory"); | |||||
} | |||||
public CopyfileTest(String name) { | |||||
super(name); | |||||
} | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/copyfile.xml"); | |||||
executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/copyfile.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
// TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
// TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test3", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
// TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
expectLog("test4", "DEPRECATED - The copyfile task is deprecated. Use copy instead.Warning: src == dest"); | |||||
buildRule.executeTarget("test4"); | |||||
assertEquals("DEPRECATED - The copyfile task is deprecated. Use copy instead.Warning: src == dest", | |||||
buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
java.io.File f = new java.io.File(getOutputDir(), "copyfile.tmp"); | |||||
if (!f.exists()) { | |||||
buildRule.executeTarget("test5"); | |||||
File f = new File(new File(buildRule.getProject().getProperty("output")), "copyfile.tmp"); | |||||
if (f.exists()) { | |||||
f.delete(); | |||||
} else { | |||||
fail("Copy failed"); | fail("Copy failed"); | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void test6() { | |||||
try { | |||||
buildRule.executeTarget("test6"); | |||||
fail("Required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
// TODO assert value | |||||
} | |||||
} | |||||
} | } |
@@ -18,26 +18,35 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.DirectoryScanner; | import org.apache.tools.ant.DirectoryScanner; | ||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
/** | /** | ||||
*/ | */ | ||||
public class DefaultExcludesTest extends BuildFileTest { | |||||
public class DefaultExcludesTest { | |||||
public DefaultExcludesTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/defaultexcludes.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/defaultexcludes.xml"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
project.executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
// Output the default excludes | // Output the default excludes | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
String[] expected = { | String[] expected = { | ||||
"**/*~", | "**/*~", | ||||
@@ -68,11 +77,12 @@ public class DefaultExcludesTest extends BuildFileTest { | |||||
"**/.bzr/**", | "**/.bzr/**", | ||||
"**/.bzrignore", | "**/.bzrignore", | ||||
"**/.DS_Store"}; | "**/.DS_Store"}; | ||||
project.executeTarget("test1"); | |||||
assertEquals("current default excludes", expected, DirectoryScanner.getDefaultExcludes()); | |||||
buildRule.getProject().executeTarget("test1"); | |||||
assertArrayContentsEquals("current default excludes", expected, DirectoryScanner.getDefaultExcludes()); | |||||
} | } | ||||
// adding something to the excludes' | // adding something to the excludes' | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
String[] expected = { | String[] expected = { | ||||
"**/*~", | "**/*~", | ||||
@@ -104,11 +114,12 @@ public class DefaultExcludesTest extends BuildFileTest { | |||||
"**/.bzrignore", | "**/.bzrignore", | ||||
"**/.DS_Store", | "**/.DS_Store", | ||||
"foo"}; | "foo"}; | ||||
project.executeTarget("test2"); | |||||
assertEquals("current default excludes", expected, DirectoryScanner.getDefaultExcludes()); | |||||
buildRule.executeTarget("test2"); | |||||
assertArrayContentsEquals("current default excludes", expected, DirectoryScanner.getDefaultExcludes()); | |||||
} | } | ||||
// removing something from the defaults | // removing something from the defaults | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
String[] expected = { | String[] expected = { | ||||
"**/*~", | "**/*~", | ||||
@@ -139,10 +150,11 @@ public class DefaultExcludesTest extends BuildFileTest { | |||||
"**/.bzr/**", | "**/.bzr/**", | ||||
"**/.bzrignore", | "**/.bzrignore", | ||||
"**/.DS_Store"}; | "**/.DS_Store"}; | ||||
project.executeTarget("test3"); | |||||
assertEquals("current default excludes", expected, DirectoryScanner.getDefaultExcludes()); | |||||
buildRule.executeTarget("test3"); | |||||
assertArrayContentsEquals("current default excludes", expected, DirectoryScanner.getDefaultExcludes()); | |||||
} | } | ||||
private void assertEquals(String message, String[] expected, String[] actual) { | |||||
private void assertArrayContentsEquals(String message, String[] expected, String[] actual) { | |||||
// check that both arrays have the same size | // check that both arrays have the same size | ||||
assertEquals(message + " : string array length match", expected.length, actual.length); | assertEquals(message + " : string array length match", expected.length, actual.length); | ||||
for (int counter=0; counter < expected.length; counter++) { | for (int counter=0; counter < expected.length; counter++) { | ||||
@@ -151,7 +163,7 @@ public class DefaultExcludesTest extends BuildFileTest { | |||||
found |= expected[counter].equals(actual[i]); | found |= expected[counter].equals(actual[i]); | ||||
} | } | ||||
assertTrue(message + " : didn't find element " | assertTrue(message + " : didn't find element " | ||||
+ expected[counter] + " in array match", found); | |||||
+ expected[counter] + " in array match", found); | |||||
} | } | ||||
} | } | ||||
@@ -18,68 +18,95 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class DeleteTest extends BuildFileTest { | |||||
public class DeleteTest { | |||||
public DeleteTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/delete.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/delete.xml"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
executeTarget("test2"); | |||||
buildRule.executeTarget("test2"); | |||||
} | } | ||||
//where oh where has my test case 3 gone? | //where oh where has my test case 3 gone? | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
executeTarget("test4"); | |||||
buildRule.executeTarget("test4"); | |||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
buildRule.executeTarget("test5"); | |||||
} | } | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
executeTarget("test6"); | |||||
buildRule.executeTarget("test6"); | |||||
} | } | ||||
@Test | |||||
public void test7() { | public void test7() { | ||||
executeTarget("test7"); | |||||
buildRule.executeTarget("test7"); | |||||
} | } | ||||
@Test | |||||
public void test8() { | public void test8() { | ||||
executeTarget("test8"); | |||||
buildRule.executeTarget("test8"); | |||||
} | } | ||||
@Test | |||||
public void test9() { | public void test9() { | ||||
executeTarget("test9"); | |||||
buildRule.executeTarget("test9"); | |||||
} | } | ||||
@Test | |||||
public void test10() { | public void test10() { | ||||
executeTarget("test10"); | |||||
buildRule.executeTarget("test10"); | |||||
} | } | ||||
@Test | |||||
public void test11() { | public void test11() { | ||||
executeTarget("test11"); | |||||
buildRule.executeTarget("test11"); | |||||
} | } | ||||
@Test | |||||
public void test12() { | public void test12() { | ||||
executeTarget("test12"); | |||||
buildRule.executeTarget("test12"); | |||||
} | } | ||||
@Test | |||||
public void test13() { | public void test13() { | ||||
executeTarget("test13"); | |||||
buildRule.executeTarget("test13"); | |||||
} | } | ||||
@Test | |||||
public void test14() { | public void test14() { | ||||
executeTarget("test14"); | |||||
buildRule.executeTarget("test14"); | |||||
} | } | ||||
@Test | |||||
public void test15() { | public void test15() { | ||||
executeTarget("test15"); | |||||
buildRule.executeTarget("test15"); | |||||
} | } | ||||
@Test | |||||
public void test16() { | public void test16() { | ||||
executeTarget("test16"); | |||||
buildRule.executeTarget("test16"); | |||||
} | } | ||||
@Test | |||||
public void test17() { | public void test17() { | ||||
executeTarget("test17"); | |||||
buildRule.executeTarget("test17"); | |||||
} | } | ||||
} | } |
@@ -18,27 +18,38 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | |||||
*/ | |||||
public class DeltreeTest extends BuildFileTest { | |||||
import static org.junit.Assert.fail; | |||||
public DeltreeTest(String name) { | |||||
super(name); | |||||
} | |||||
public class DeltreeTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/deltree.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/deltree.xml"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
// We try to delete the directory created in CopydirTest | // We try to delete the directory created in CopydirTest | ||||
executeTarget("test2"); | |||||
buildRule.executeTarget("test2"); | |||||
} | } | ||||
} | } |
@@ -18,53 +18,75 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.taskdefs.condition.Os; | import org.apache.tools.ant.taskdefs.condition.Os; | ||||
import org.junit.Assume; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
*/ | */ | ||||
public class DirnameTest extends BuildFileTest { | |||||
public DirnameTest(String name) { | |||||
super(name); | |||||
} | |||||
public class DirnameTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/dirname.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/dirname.xml"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "property attribute required"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("Build exception should have been thrown as property attribute is required"); | |||||
} catch(BuildException ex) { | |||||
assertEquals("property attribute required", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "file attribute required"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("Build exception should have been thrown as file attribute is required"); | |||||
} catch(BuildException ex) { | |||||
assertEquals("file attribute required", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test3", "property attribute required"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("Build exception should have been thrown as property attribute is required"); | |||||
} catch(BuildException ex) { | |||||
assertEquals("property attribute required", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
if (Os.isFamily("netware") || Os.isFamily("dos")) { | |||||
return; | |||||
} | |||||
executeTarget("test4"); | |||||
Assume.assumeFalse("Test not possible on DOS or Netware family OS", Os.isFamily("netware") || Os.isFamily("dos")); | |||||
buildRule.executeTarget("test4"); | |||||
String filesep = System.getProperty("file.separator"); | String filesep = System.getProperty("file.separator"); | ||||
String expected = filesep + "usr" + filesep + "local"; | String expected = filesep + "usr" + filesep + "local"; | ||||
String checkprop = project.getProperty("local.dir"); | |||||
if (!checkprop.equals(expected)) { | |||||
fail("dirname failed"); | |||||
} | |||||
String checkprop = buildRule.getProject().getProperty("local.dir"); | |||||
assertEquals("dirname failed", expected, checkprop); | |||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
String expected = project.getProperty("basedir"); | |||||
String checkprop = project.getProperty("base.dir"); | |||||
if (!checkprop.equals(expected)) { | |||||
fail("dirname failed"); | |||||
} | |||||
buildRule.executeTarget("test5"); | |||||
String expected = buildRule.getProject().getProperty("basedir"); | |||||
String checkprop = buildRule.getProject().getProperty("base.dir"); | |||||
assertEquals("dirname failed", expected, checkprop); | |||||
} | } | ||||
} | } |
@@ -18,23 +18,29 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
public class DynamicTest extends BuildFileTest { | |||||
import static org.junit.Assert.assertEquals; | |||||
public DynamicTest(String name) { | |||||
super(name); | |||||
} | |||||
public class DynamicTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/dynamictask.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/dynamictask.xml"); | |||||
} | } | ||||
@Test | |||||
public void testSimple() { | public void testSimple() { | ||||
executeTarget("simple"); | |||||
assertEquals("1", project.getProperty("prop1")); | |||||
assertEquals("2", project.getProperty("prop2")); | |||||
assertEquals("3", project.getProperty("prop3")); | |||||
assertEquals("4", project.getProperty("prop4")); | |||||
buildRule.executeTarget("simple"); | |||||
assertEquals("1", buildRule.getProject().getProperty("prop1")); | |||||
assertEquals("2", buildRule.getProject().getProperty("prop2")); | |||||
assertEquals("3", buildRule.getProject().getProperty("prop3")); | |||||
assertEquals("4", buildRule.getProject().getProperty("prop4")); | |||||
} | } | ||||
} | } |
@@ -18,28 +18,29 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.*; | |||||
import junit.framework.TestCase; | |||||
import java.io.ByteArrayOutputStream; | |||||
import java.io.File; | |||||
import java.io.FileInputStream; | |||||
import java.io.IOException; | |||||
import java.io.InputStreamReader; | |||||
import java.io.PrintStream; | |||||
import org.apache.tools.ant.DefaultLogger; | import org.apache.tools.ant.DefaultLogger; | ||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.junit.After; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
/** | /** | ||||
* Test Java-dependent parts of the Echo task. | * Test Java-dependent parts of the Echo task. | ||||
*/ | */ | ||||
public class EchoTest extends TestCase { | |||||
public class EchoTest { | |||||
private File removeThis; | private File removeThis; | ||||
/** | |||||
* Create a new EchoTest. | |||||
* @param name | |||||
*/ | |||||
public EchoTest(String name) { | |||||
super(name); | |||||
} | |||||
@Test | |||||
public void testLogBlankEcho() { | public void testLogBlankEcho() { | ||||
Project p = new Project(); | Project p = new Project(); | ||||
p.init(); | p.init(); | ||||
@@ -52,7 +53,8 @@ public class EchoTest extends TestCase { | |||||
assertEquals("[testLogBlankEcho] ", logger.lastLoggedMessage ); | assertEquals("[testLogBlankEcho] ", logger.lastLoggedMessage ); | ||||
} | } | ||||
public void testLogUTF8Echo() { | |||||
@Test | |||||
public void testLogUTF8Echo() throws IOException { | |||||
Project p = new Project(); | Project p = new Project(); | ||||
p.init(); | p.init(); | ||||
EchoTestLogger logger = new EchoTestLogger(); | EchoTestLogger logger = new EchoTestLogger(); | ||||
@@ -65,15 +67,11 @@ public class EchoTest extends TestCase { | |||||
echo.setFile(removeThis); | echo.setFile(removeThis); | ||||
echo.setEncoding("UTF-8"); | echo.setEncoding("UTF-8"); | ||||
echo.execute(); | echo.execute(); | ||||
FileUtils fu = FileUtils.getFileUtils(); | |||||
try { | |||||
String x = FileUtils.readFully(new InputStreamReader(new FileInputStream(removeThis), "UTF-8" )); | String x = FileUtils.readFully(new InputStreamReader(new FileInputStream(removeThis), "UTF-8" )); | ||||
assertEquals(x,"\u00e4\u00a9"); | |||||
} catch (Exception exc) { | |||||
} | |||||
assertEquals(x,"\u00e4\u00a9"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
if (removeThis != null && removeThis.exists()) { | if (removeThis != null && removeThis.exists()) { | ||||
if (!removeThis.delete()) | if (!removeThis.delete()) | ||||
@@ -18,32 +18,54 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
public class EchoXMLTest extends BuildFileTest { | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.fail; | |||||
public EchoXMLTest(String name) { | |||||
super(name); | |||||
} | |||||
public class EchoXMLTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/echoxml.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/echoxml.xml"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("tearDown"); | |||||
buildRule.executeTarget("tearDown"); | |||||
} | } | ||||
@Test | |||||
public void testPass() { | public void testPass() { | ||||
executeTarget("testPass"); | |||||
buildRule.executeTarget("testPass"); | |||||
} | } | ||||
@Test | |||||
public void testFail() { | public void testFail() { | ||||
expectBuildExceptionContaining("testFail", "must fail", "${foo}=bar"); | |||||
try { | |||||
buildRule.executeTarget("testFail"); | |||||
fail("BuildException expected: must fail"); | |||||
} catch (BuildException ex) { | |||||
assertContains("${foo}=bar", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testEmpty() { | public void testEmpty() { | ||||
expectBuildExceptionContaining("testEmpty", "must fail", "No nested XML specified"); | |||||
try { | |||||
buildRule.executeTarget("testEmpty"); | |||||
fail("BuildException expected: must fail"); | |||||
} catch (BuildException ex) { | |||||
assertContains("No nested XML specified", ex.getMessage()); | |||||
} | |||||
} | } | ||||
} | } |
@@ -18,16 +18,31 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.*; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import static org.junit.Assert.assertTrue; | |||||
import java.io.File; | import java.io.File; | ||||
import java.util.GregorianCalendar; | import java.util.GregorianCalendar; | ||||
import org.apache.tools.ant.BuildEvent; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.BuildListener; | |||||
import org.apache.tools.ant.Project; | |||||
import org.apache.tools.ant.ProjectHelper; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.junit.Assume; | |||||
import org.junit.Before; | |||||
import org.junit.Ignore; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
* Unit test for the <exec> task. | * Unit test for the <exec> task. | ||||
*/ | */ | ||||
public class ExecTaskTest extends BuildFileTest { | |||||
public class ExecTaskTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
private static final String BUILD_PATH = "src/etc/testcases/taskdefs/exec/"; | private static final String BUILD_PATH = "src/etc/testcases/taskdefs/exec/"; | ||||
private static final String BUILD_FILE = BUILD_PATH + "exec.xml"; | private static final String BUILD_FILE = BUILD_PATH + "exec.xml"; | ||||
private static final int TIME_TO_WAIT = 1; | private static final int TIME_TO_WAIT = 1; | ||||
@@ -44,21 +59,19 @@ public class ExecTaskTest extends BuildFileTest { | |||||
private MonitoredBuild myBuild = null; | private MonitoredBuild myBuild = null; | ||||
volatile private boolean buildFinished = false; | volatile private boolean buildFinished = false; | ||||
public ExecTaskTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject(BUILD_FILE); | |||||
buildRule.configureProject(BUILD_FILE); | |||||
} | } | ||||
public void testspawn() { | |||||
project.executeTarget("setUp"); | |||||
if (project.getProperty("test.can.run") == null) { | |||||
return; | |||||
} | |||||
@Test | |||||
public void testspawn() throws InterruptedException { | |||||
buildRule.getProject().executeTarget("setUp"); | |||||
Assume.assumeNotNull(buildRule.getProject().getProperty("test.can.run")); | |||||
myBuild = new MonitoredBuild(new File(System.getProperty("root"), BUILD_FILE), "spawn"); | myBuild = new MonitoredBuild(new File(System.getProperty("root"), BUILD_FILE), "spawn"); | ||||
logFile = FILE_UTILS.createTempFile("spawn", "log", getOutputDir(), false, false); | |||||
logFile = FILE_UTILS.createTempFile("spawn", "log", new File(buildRule.getProject().getProperty("output")), | |||||
false, false); | |||||
// this is guaranteed by FileUtils#createTempFile | // this is guaranteed by FileUtils#createTempFile | ||||
assertTrue("log file not existing", !logFile.exists()); | assertTrue("log file not existing", !logFile.exists()); | ||||
// make the spawned process run 4 seconds | // make the spawned process run 4 seconds | ||||
@@ -69,11 +82,7 @@ public class ExecTaskTest extends BuildFileTest { | |||||
GregorianCalendar startwait = new GregorianCalendar(); | GregorianCalendar startwait = new GregorianCalendar(); | ||||
// this loop runs parallel to the build | // this loop runs parallel to the build | ||||
while (!buildFinished) { | while (!buildFinished) { | ||||
try { | |||||
Thread.sleep(10); | |||||
} catch (InterruptedException e) { | |||||
System.out.println("my sleep was interrupted"); | |||||
} | |||||
Thread.sleep(10); | |||||
GregorianCalendar now = new GregorianCalendar(); | GregorianCalendar now = new GregorianCalendar(); | ||||
// security | // security | ||||
if (now.getTime().getTime() - startwait.getTime().getTime() > MAX_BUILD_TIME) { | if (now.getTime().getTime() - startwait.getTime().getTime() > MAX_BUILD_TIME) { | ||||
@@ -84,11 +93,7 @@ public class ExecTaskTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
// now wait until the spawned process is finished | // now wait until the spawned process is finished | ||||
try { | |||||
Thread.sleep((TIME_TO_WAIT) * 1000 + SECURITY_MARGIN); | |||||
} catch (InterruptedException e) { | |||||
System.out.println("my sleep was interrupted"); | |||||
} | |||||
Thread.sleep((TIME_TO_WAIT) * 1000 + SECURITY_MARGIN); | |||||
// time of the build in milli seconds | // time of the build in milli seconds | ||||
long elapsed = myBuild.getTimeElapsed(); | long elapsed = myBuild.getTimeElapsed(); | ||||
assertTrue("we waited more than the process lasted", | assertTrue("we waited more than the process lasted", | ||||
@@ -97,29 +102,26 @@ public class ExecTaskTest extends BuildFileTest { | |||||
assertTrue("log file found after spawn", logFile.exists()); | assertTrue("log file found after spawn", logFile.exists()); | ||||
} | } | ||||
/* TODO #50507 - fails at least on Linux | |||||
@Test | |||||
@Ignore("#50507 - fails at least on Linux") | |||||
/* TODO #50507 - fails at least on Linux */ | |||||
public void testOutAndErr() { | public void testOutAndErr() { | ||||
project.executeTarget("test-out-and-err"); | |||||
buildRule.getProject().executeTarget("test-out-and-err"); | |||||
} | } | ||||
*/ | |||||
private static class MonitoredBuild implements Runnable { | private static class MonitoredBuild implements Runnable { | ||||
private Thread worker; | private Thread worker; | ||||
private File myBuildFile = null; | private File myBuildFile = null; | ||||
private String target = null; | private String target = null; | ||||
private Project project = null; | private Project project = null; | ||||
private int timeToWait = 0; | |||||
private String logFile = null; | |||||
private GregorianCalendar timeStarted = null; | private GregorianCalendar timeStarted = null; | ||||
private GregorianCalendar timeFinished = null; | private GregorianCalendar timeFinished = null; | ||||
public void setLogFile(String logFile) { | public void setLogFile(String logFile) { | ||||
this.logFile = logFile; | |||||
project.setProperty("logFile", logFile); | project.setProperty("logFile", logFile); | ||||
} | } | ||||
public void setTimeToWait(int timeToWait) { | public void setTimeToWait(int timeToWait) { | ||||
this.timeToWait = timeToWait; | |||||
project.setProperty("timeToWait", Long.toString(timeToWait)); | project.setProperty("timeToWait", Long.toString(timeToWait)); | ||||
} | } | ||||
@@ -23,14 +23,17 @@ import org.apache.tools.ant.Project; | |||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
import org.apache.tools.ant.types.Commandline; | import org.apache.tools.ant.types.Commandline; | ||||
import junit.framework.TestCase; | |||||
import org.junit.Before; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertTrue; | |||||
/** | /** | ||||
* Simple testcase for the ExecuteJava class - mostly stolen from | * Simple testcase for the ExecuteJava class - mostly stolen from | ||||
* ExecuteWatchdogTest. | * ExecuteWatchdogTest. | ||||
* | * | ||||
*/ | */ | ||||
public class ExecuteJavaTest extends TestCase { | |||||
public class ExecuteJavaTest { | |||||
private final static int TIME_OUT = 5000; | private final static int TIME_OUT = 5000; | ||||
@@ -41,13 +44,10 @@ public class ExecuteJavaTest extends TestCase { | |||||
private Project project; | private Project project; | ||||
private Path cp; | private Path cp; | ||||
public ExecuteJavaTest(String name) { | |||||
super(name); | |||||
} | |||||
protected void setUp(){ | |||||
@Before | |||||
public void setUp(){ | |||||
ej = new ExecuteJava(); | ej = new ExecuteJava(); | ||||
ej.setTimeout(new Long(TIME_OUT)); | |||||
ej.setTimeout((long)TIME_OUT); | |||||
project = new Project(); | project = new Project(); | ||||
project.setBasedir("."); | project.setBasedir("."); | ||||
project.setProperty(MagicNames.ANT_HOME, System.getProperty(MagicNames.ANT_HOME)); | project.setProperty(MagicNames.ANT_HOME, System.getProperty(MagicNames.ANT_HOME)); | ||||
@@ -62,6 +62,7 @@ public class ExecuteJavaTest extends TestCase { | |||||
return cmd; | return cmd; | ||||
} | } | ||||
@Test | |||||
public void testNoTimeOut() throws Exception { | public void testNoTimeOut() throws Exception { | ||||
Commandline cmd = getCommandline(TIME_OUT/2); | Commandline cmd = getCommandline(TIME_OUT/2); | ||||
ej.setJavaCommand(cmd); | ej.setJavaCommand(cmd); | ||||
@@ -70,6 +71,7 @@ public class ExecuteJavaTest extends TestCase { | |||||
} | } | ||||
// test that the watchdog ends the process | // test that the watchdog ends the process | ||||
@Test | |||||
public void testTimeOut() throws Exception { | public void testTimeOut() throws Exception { | ||||
Commandline cmd = getCommandline(TIME_OUT*2); | Commandline cmd = getCommandline(TIME_OUT*2); | ||||
ej.setJavaCommand(cmd); | ej.setJavaCommand(cmd); | ||||
@@ -86,7 +88,7 @@ public class ExecuteJavaTest extends TestCase { | |||||
elapsed < TIME_OUT*2); | elapsed < TIME_OUT*2); | ||||
} | } | ||||
@Test | |||||
public void testNoTimeOutForked() throws Exception { | public void testNoTimeOutForked() throws Exception { | ||||
Commandline cmd = getCommandline(TIME_OUT/2); | Commandline cmd = getCommandline(TIME_OUT/2); | ||||
ej.setJavaCommand(cmd); | ej.setJavaCommand(cmd); | ||||
@@ -95,6 +97,7 @@ public class ExecuteJavaTest extends TestCase { | |||||
} | } | ||||
// test that the watchdog ends the process | // test that the watchdog ends the process | ||||
@Test | |||||
public void testTimeOutForked() throws Exception { | public void testTimeOutForked() throws Exception { | ||||
Commandline cmd = getCommandline(TIME_OUT*2); | Commandline cmd = getCommandline(TIME_OUT*2); | ||||
ej.setJavaCommand(cmd); | ej.setJavaCommand(cmd); | ||||
@@ -18,17 +18,25 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.BufferedReader; | |||||
import java.io.InputStreamReader; | |||||
import org.apache.tools.ant.util.JavaEnvUtils; | import org.apache.tools.ant.util.JavaEnvUtils; | ||||
import junit.framework.*; | |||||
import java.io.*; | |||||
import org.junit.Before; | |||||
import org.junit.Test; | |||||
import org.junit.internal.AssumptionViolatedException; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertFalse; | |||||
import static org.junit.Assert.assertTrue; | |||||
/** | /** | ||||
* Simple testcase for the ExecuteWatchdog class. | * Simple testcase for the ExecuteWatchdog class. | ||||
* | * | ||||
*/ | */ | ||||
public class ExecuteWatchdogTest extends TestCase { | |||||
public class ExecuteWatchdogTest { | |||||
private final static long TIME_OUT = 5000; | |||||
private final static long TIME_OUT = 500; | |||||
private final static String TEST_CLASSPATH = getTestClassPath(); | private final static String TEST_CLASSPATH = getTestClassPath(); | ||||
@@ -37,17 +45,14 @@ public class ExecuteWatchdogTest extends TestCase { | |||||
private ExecuteWatchdog watchdog; | private ExecuteWatchdog watchdog; | ||||
public ExecuteWatchdogTest(String name) { | |||||
super(name); | |||||
} | |||||
protected void setUp(){ | |||||
@Before | |||||
public void setUp(){ | |||||
watchdog = new ExecuteWatchdog(TIME_OUT); | watchdog = new ExecuteWatchdog(TIME_OUT); | ||||
} | } | ||||
/** | /** | ||||
* Dangerous method to obtain the classpath for the test. This is | * Dangerous method to obtain the classpath for the test. This is | ||||
* severely tighted to the build.xml properties. | |||||
* severely tied to the build.xml properties. | |||||
*/ | */ | ||||
private static String getTestClassPath(){ | private static String getTestClassPath(){ | ||||
String classpath = System.getProperty("build.tests"); | String classpath = System.getProperty("build.tests"); | ||||
@@ -90,6 +95,7 @@ public class ExecuteWatchdogTest extends TestCase { | |||||
return retcode; | return retcode; | ||||
} | } | ||||
@Test | |||||
public void testNoTimeOut() throws Exception { | public void testNoTimeOut() throws Exception { | ||||
Process process = getProcess(TIME_OUT/2); | Process process = getProcess(TIME_OUT/2); | ||||
watchdog.start(process); | watchdog.start(process); | ||||
@@ -99,6 +105,7 @@ public class ExecuteWatchdogTest extends TestCase { | |||||
} | } | ||||
// test that the watchdog ends the process | // test that the watchdog ends the process | ||||
@Test | |||||
public void testTimeOut() throws Exception { | public void testTimeOut() throws Exception { | ||||
Process process = getProcess(TIME_OUT*2); | Process process = getProcess(TIME_OUT*2); | ||||
long now = System.currentTimeMillis(); | long now = System.currentTimeMillis(); | ||||
@@ -112,6 +119,7 @@ public class ExecuteWatchdogTest extends TestCase { | |||||
} | } | ||||
// test a process that runs and failed | // test a process that runs and failed | ||||
@Test | |||||
public void testFailed() throws Exception { | public void testFailed() throws Exception { | ||||
Process process = getProcess(-1); // process should abort | Process process = getProcess(-1); // process should abort | ||||
watchdog.start(process); | watchdog.start(process); | ||||
@@ -120,6 +128,7 @@ public class ExecuteWatchdogTest extends TestCase { | |||||
assertTrue("return code is invalid: " + retCode, retCode!=0); | assertTrue("return code is invalid: " + retCode, retCode!=0); | ||||
} | } | ||||
@Test | |||||
public void testManualStop() throws Exception { | public void testManualStop() throws Exception { | ||||
final Process process = getProcess(TIME_OUT*2); | final Process process = getProcess(TIME_OUT*2); | ||||
watchdog.start(process); | watchdog.start(process); | ||||
@@ -131,7 +140,7 @@ public class ExecuteWatchdogTest extends TestCase { | |||||
process.waitFor(); | process.waitFor(); | ||||
} catch(InterruptedException e){ | } catch(InterruptedException e){ | ||||
// not very nice but will do the job | // not very nice but will do the job | ||||
fail("process interrupted in thread"); | |||||
throw new AssumptionViolatedException("process interrupted in thread", e); | |||||
} | } | ||||
} | } | ||||
}; | }; | ||||
@@ -19,57 +19,79 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class FailTest extends BuildFileTest { | |||||
public class FailTest { | |||||
public FailTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/fail.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/fail.xml"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildExceptionContaining("test1", | |||||
"it is required to fail :-)", | |||||
"No message"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("it is required to fail :-)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals("No message", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectSpecificBuildException("test2", | |||||
"it is required to fail :-)", | |||||
"test2"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("it is required to fail :-)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals("test2", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testText() { | public void testText() { | ||||
expectSpecificBuildException("testText", | |||||
"it is required to fail :-)", | |||||
"testText"); | |||||
try { | |||||
buildRule.executeTarget("testText"); | |||||
fail("it is required to fail :-)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals("testText", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testIf() { | public void testIf() { | ||||
buildRule.executeTarget("testIf"); | |||||
buildRule.getProject().setProperty("foo", ""); | |||||
try { | try { | ||||
executeTarget("testIf"); | |||||
} catch (BuildException be) { | |||||
fail("foo has not been defined, testIf must not fail"); | |||||
buildRule.executeTarget("testIf"); | |||||
fail("testIf must fail if foo has been set") ; | |||||
} catch (BuildException ex) { | |||||
//TODO assert result | |||||
} | } | ||||
project.setProperty("foo", ""); | |||||
expectBuildException("testIf", "testIf must fail if foo has been set"); | |||||
} | } | ||||
@Test | |||||
public void testUnless() { | public void testUnless() { | ||||
expectBuildException("testUnless", | |||||
"testUnless must fail unless foo has been set"); | |||||
project.setProperty("foo", ""); | |||||
try { | try { | ||||
executeTarget("testUnless"); | |||||
} catch (BuildException be) { | |||||
fail("foo has been defined, testUnless must not fail"); | |||||
buildRule.executeTarget("testUnless"); | |||||
fail("testUnless must fail unless foo has been set") ; | |||||
} catch (BuildException ex) { | |||||
//TODO assert rules | |||||
} | } | ||||
buildRule.getProject().setProperty("foo", ""); | |||||
buildRule.executeTarget("testUnless"); | |||||
} | } | ||||
/** | /** | ||||
@@ -77,51 +99,58 @@ public class FailTest extends BuildFileTest { | |||||
* that the autogenerated text contains information | * that the autogenerated text contains information | ||||
* about which condition was not met | * about which condition was not met | ||||
*/ | */ | ||||
@Test | |||||
public void testIfAndUnless() { | public void testIfAndUnless() { | ||||
//neither | //neither | ||||
executeTarget("testIfAndUnless"); | |||||
project.setProperty("if", ""); | |||||
expectBuildExceptionContaining("testIfAndUnless", | |||||
"expect fail on defined(if)", | |||||
"if=if and unless=unless"); | |||||
project.setProperty("unless", ""); | |||||
buildRule.executeTarget("testIfAndUnless"); | |||||
buildRule.getProject().setProperty("if", ""); | |||||
try { | |||||
buildRule.executeTarget("testIfAndUnless"); | |||||
fail("expect fail on defined(if)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals("if=if and unless=unless", ex.getMessage()); | |||||
} | |||||
buildRule.getProject().setProperty("unless", ""); | |||||
//this call should succeed as unless overrides if | //this call should succeed as unless overrides if | ||||
executeTarget("testIfAndUnless"); | |||||
buildRule.executeTarget("testIfAndUnless"); | |||||
} | } | ||||
/** | /** | ||||
* see that the different combinations work, and | * see that the different combinations work, and | ||||
* that the autogenerated text contains information | * that the autogenerated text contains information | ||||
* about which condition was not met | * about which condition was not met | ||||
*/ | */ | ||||
@Test | |||||
public void testIfAndUnless2() { | public void testIfAndUnless2() { | ||||
project.setProperty("unless", ""); | |||||
try { | |||||
executeTarget("testIfAndUnless"); | |||||
} catch (BuildException be) { | |||||
fail("defined(if) && !defined(unless); testIfAndUnless must not fail"); | |||||
} | |||||
buildRule.getProject().setProperty("unless", ""); | |||||
buildRule.executeTarget("testIfAndUnless"); | |||||
} | } | ||||
@Test | |||||
public void testNested1() { | public void testNested1() { | ||||
expectSpecificBuildException("testNested1", | |||||
"it is required to fail :-)", | |||||
"condition satisfied"); | |||||
try { | |||||
buildRule.executeTarget("testNested1"); | |||||
fail("it is required to fail :-)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals("condition satisfied", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testNested2() { | public void testNested2() { | ||||
try { | |||||
executeTarget("testNested2"); | |||||
} catch (BuildException be) { | |||||
fail("condition not satisfied; testNested2 must not fail"); | |||||
} | |||||
buildRule.executeTarget("testNested2"); | |||||
} | } | ||||
@Test | |||||
public void testNested3() { | public void testNested3() { | ||||
expectSpecificBuildException("testNested3", | |||||
"it is required to fail :-)", | |||||
"testNested3"); | |||||
try { | |||||
buildRule.executeTarget("testNested3"); | |||||
fail("it is required to fail :-)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals("testNested3", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testNested4() { | public void testNested4() { | ||||
String specificMessage = "Nested conditions " | String specificMessage = "Nested conditions " | ||||
+ "not permitted in conjunction with if/unless attributes"; | + "not permitted in conjunction with if/unless attributes"; | ||||
@@ -131,23 +160,36 @@ public class FailTest extends BuildFileTest { | |||||
for (int i = 0; i < c.length; i++) { | for (int i = 0; i < c.length; i++) { | ||||
target.setCharAt(target.length() - 1, c[i]); | target.setCharAt(target.length() - 1, c[i]); | ||||
expectSpecificBuildException(target.toString(), | |||||
"it is required to fail :-)", specificMessage); | |||||
try { | |||||
buildRule.executeTarget(target.toString()); | |||||
fail("it is required to fail :-)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals(specificMessage, ex.getMessage()); | |||||
} | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testNested5() { | public void testNested5() { | ||||
expectSpecificBuildException("testNested5", | |||||
"it is required to fail :-)", | |||||
"Only one nested condition is allowed."); | |||||
try { | |||||
buildRule.executeTarget("testNested5"); | |||||
fail("it is required to fail :-)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals("Only one nested condition is allowed.", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testNested6() { | public void testNested6() { | ||||
expectSpecificBuildException("testNested6", | |||||
"it is required to fail :-)", | |||||
"testNested6\ntestNested6\ntestNested6"); | |||||
try { | |||||
buildRule.executeTarget("testNested6"); | |||||
fail("it is required to fail :-)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals("testNested6\ntestNested6\ntestNested6", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testNested7() { | public void testNested7() { | ||||
String specificMessage = "A single nested condition is required."; | String specificMessage = "A single nested condition is required."; | ||||
@@ -156,8 +198,12 @@ public class FailTest extends BuildFileTest { | |||||
for (int i = 0; i < c.length; i++) { | for (int i = 0; i < c.length; i++) { | ||||
target.setCharAt(target.length() - 1, c[i]); | target.setCharAt(target.length() - 1, c[i]); | ||||
expectSpecificBuildException(target.toString(), | |||||
"it is required to fail :-)", specificMessage); | |||||
try { | |||||
buildRule.executeTarget(target.toString()); | |||||
fail("it is required to fail :-)") ; | |||||
} catch (BuildException ex) { | |||||
assertEquals(specificMessage, ex.getMessage()); | |||||
} | |||||
} | } | ||||
} | } | ||||
@@ -23,67 +23,100 @@ import java.io.File; | |||||
import java.io.FileNotFoundException; | import java.io.FileNotFoundException; | ||||
import java.io.FileReader; | import java.io.FileReader; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
/** | |||||
*/ | |||||
public class FilterTest extends BuildFileTest { | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
public FilterTest(String name) { | |||||
super(name); | |||||
} | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
public class FilterTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/filter.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/filter.xml"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test3", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
executeTarget("test4"); | |||||
buildRule.executeTarget("test4"); | |||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
buildRule.executeTarget("test5"); | |||||
assertEquals("2000", | assertEquals("2000", | ||||
getFilteredFile("5", "filtered.tmp")); | getFilteredFile("5", "filtered.tmp")); | ||||
} | } | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
executeTarget("test6"); | |||||
buildRule.executeTarget("test6"); | |||||
assertEquals("2000", | assertEquals("2000", | ||||
getFilteredFile("6", "taskdefs.tmp/filter1.txt")); | getFilteredFile("6", "taskdefs.tmp/filter1.txt")); | ||||
} | } | ||||
@Test | |||||
public void test7() { | public void test7() { | ||||
executeTarget("test7"); | |||||
buildRule.executeTarget("test7"); | |||||
assertEquals("<%@ include file=\"root/some/include.jsp\"%>", | assertEquals("<%@ include file=\"root/some/include.jsp\"%>", | ||||
getFilteredFile("7", "filtered.tmp")); | getFilteredFile("7", "filtered.tmp")); | ||||
} | } | ||||
@Test | |||||
public void test8() { | public void test8() { | ||||
executeTarget("test8"); | |||||
buildRule.executeTarget("test8"); | |||||
assertEquals("<%@ include file=\"root/some/include.jsp\"%>", | assertEquals("<%@ include file=\"root/some/include.jsp\"%>", | ||||
getFilteredFile("8", "taskdefs.tmp/filter2.txt")); | getFilteredFile("8", "taskdefs.tmp/filter2.txt")); | ||||
} | } | ||||
@Test | |||||
public void test9() { | public void test9() { | ||||
executeTarget("test9"); | |||||
buildRule.executeTarget("test9"); | |||||
assertEquals("included", | assertEquals("included", | ||||
getFilteredFile("9", "taskdefs.tmp/filter3.txt")); | getFilteredFile("9", "taskdefs.tmp/filter3.txt")); | ||||
} | } | ||||
@@ -91,7 +124,7 @@ public class FilterTest extends BuildFileTest { | |||||
private String getFilteredFile(String testNumber, String filteredFile) { | private String getFilteredFile(String testNumber, String filteredFile) { | ||||
String line = null; | String line = null; | ||||
File f = new File(getProjectDir(), filteredFile); | |||||
File f = new File(buildRule.getProject().getBaseDir(), filteredFile); | |||||
if (!f.exists()) { | if (!f.exists()) { | ||||
fail("filter test"+testNumber+" failed"); | fail("filter test"+testNumber+" failed"); | ||||
} else { | } else { | ||||
@@ -26,103 +26,136 @@ import java.io.InputStream; | |||||
import junit.framework.AssertionFailedError; | import junit.framework.AssertionFailedError; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.AntAssert; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class FixCrLfTest extends BuildFileTest { | |||||
public class FixCrLfTest { | |||||
public FixCrLfTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/fixcrlf/build.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/fixcrlf/build.xml"); | |||||
} | } | ||||
@Test | |||||
public void test1() throws IOException { | public void test1() throws IOException { | ||||
executeTarget("test1"); | |||||
buildRule.executeTarget("test1"); | |||||
} | } | ||||
@Test | |||||
public void test2() throws IOException { | public void test2() throws IOException { | ||||
executeTarget("test2"); | |||||
buildRule.executeTarget("test2"); | |||||
} | } | ||||
@Test | |||||
public void test3() throws IOException { | public void test3() throws IOException { | ||||
executeTarget("test3"); | |||||
buildRule.executeTarget("test3"); | |||||
} | } | ||||
@Test | |||||
public void test4() throws IOException { | public void test4() throws IOException { | ||||
executeTarget("test4"); | |||||
buildRule.executeTarget("test4"); | |||||
} | } | ||||
@Test | |||||
public void test5() throws IOException { | public void test5() throws IOException { | ||||
executeTarget("test5"); | |||||
buildRule.executeTarget("test5"); | |||||
} | } | ||||
@Test | |||||
public void test6() throws IOException { | public void test6() throws IOException { | ||||
executeTarget("test6"); | |||||
buildRule.executeTarget("test6"); | |||||
} | } | ||||
@Test | |||||
public void test7() throws IOException { | public void test7() throws IOException { | ||||
executeTarget("test7"); | |||||
buildRule.executeTarget("test7"); | |||||
} | } | ||||
@Test | |||||
public void test8() throws IOException { | public void test8() throws IOException { | ||||
executeTarget("test8"); | |||||
buildRule.executeTarget("test8"); | |||||
} | } | ||||
@Test | |||||
public void test9() throws IOException { | public void test9() throws IOException { | ||||
executeTarget("test9"); | |||||
buildRule.executeTarget("test9"); | |||||
} | } | ||||
@Test | |||||
public void testMacLines() throws IOException { | public void testMacLines() throws IOException { | ||||
executeTarget("testMacLines"); | |||||
buildRule.executeTarget("testMacLines"); | |||||
} | } | ||||
@Test | |||||
public void testNoOverwrite() throws IOException { | public void testNoOverwrite() throws IOException { | ||||
executeTarget("testNoOverwrite"); | |||||
buildRule.executeTarget("testNoOverwrite"); | |||||
} | } | ||||
@Test | |||||
public void testEncoding() throws IOException { | public void testEncoding() throws IOException { | ||||
executeTarget("testEncoding"); | |||||
buildRule.executeTarget("testEncoding"); | |||||
} | } | ||||
@Test | |||||
public void testOutputEncoding() throws IOException { | public void testOutputEncoding() throws IOException { | ||||
executeTarget("testOutputEncoding"); | |||||
buildRule.executeTarget("testOutputEncoding"); | |||||
} | } | ||||
@Test | |||||
public void testLongLines() throws IOException { | public void testLongLines() throws IOException { | ||||
executeTarget("testLongLines"); | |||||
buildRule.executeTarget("testLongLines"); | |||||
} | } | ||||
@Test | |||||
public void testCrCrLfSequenceUnix() throws IOException { | public void testCrCrLfSequenceUnix() throws IOException { | ||||
executeTarget("testCrCrLfSequence-unix"); | |||||
buildRule.executeTarget("testCrCrLfSequence-unix"); | |||||
} | } | ||||
@Test | |||||
public void testCrCrLfSequenceDos() throws IOException { | public void testCrCrLfSequenceDos() throws IOException { | ||||
executeTarget("testCrCrLfSequence-dos"); | |||||
buildRule.executeTarget("testCrCrLfSequence-dos"); | |||||
} | } | ||||
@Test | |||||
public void testCrCrLfSequenceMac() throws IOException { | public void testCrCrLfSequenceMac() throws IOException { | ||||
executeTarget("testCrCrLfSequence-mac"); | |||||
buildRule.executeTarget("testCrCrLfSequence-mac"); | |||||
} | } | ||||
@Test | |||||
public void testFixlastDos() throws IOException { | public void testFixlastDos() throws IOException { | ||||
executeTarget("testFixlastDos"); | |||||
buildRule.executeTarget("testFixlastDos"); | |||||
} | } | ||||
@Test | |||||
public void testFixlastFalseMac() throws IOException { | public void testFixlastFalseMac() throws IOException { | ||||
executeTarget("testFixlastFalseMac"); | |||||
buildRule.executeTarget("testFixlastFalseMac"); | |||||
} | } | ||||
@Test | |||||
public void testFixFile() throws Exception { | public void testFixFile() throws Exception { | ||||
executeTarget("testFixFile"); | |||||
buildRule.executeTarget("testFixFile"); | |||||
} | } | ||||
@Test | |||||
public void testFixFileExclusive() throws Exception { | public void testFixFileExclusive() throws Exception { | ||||
expectBuildExceptionContaining("testFixFileExclusive", | |||||
FixCRLF.ERROR_FILE_AND_SRCDIR, FixCRLF.ERROR_FILE_AND_SRCDIR); | |||||
try { | |||||
buildRule.executeTarget("testFixFileExclusive"); | |||||
fail(FixCRLF.ERROR_FILE_AND_SRCDIR); | |||||
} catch (BuildException ex) { | |||||
AntAssert.assertContains(FixCRLF.ERROR_FILE_AND_SRCDIR, ex.getMessage()); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
@@ -131,59 +164,73 @@ public class FixCrLfTest extends BuildFileTest { | |||||
* Will fail with an exception if the parent directories do not | * Will fail with an exception if the parent directories do not | ||||
* get created. | * get created. | ||||
*/ | */ | ||||
@Test | |||||
public void testCreateParentDirs() { | public void testCreateParentDirs() { | ||||
executeTarget("createParentDirs"); | |||||
buildRule.executeTarget("createParentDirs"); | |||||
} | } | ||||
@Test | |||||
public void testPreserveLastModified() { | public void testPreserveLastModified() { | ||||
executeTarget("testPreserveLastModified"); | |||||
buildRule.executeTarget("testPreserveLastModified"); | |||||
} | } | ||||
@Test | |||||
public void testFilter1() { | public void testFilter1() { | ||||
executeTarget("testFilter1"); | |||||
buildRule.executeTarget("testFilter1"); | |||||
} | } | ||||
@Test | |||||
public void testFilter2() { | public void testFilter2() { | ||||
executeTarget("testFilter2"); | |||||
buildRule.executeTarget("testFilter2"); | |||||
} | } | ||||
@Test | |||||
public void testFilter3() { | public void testFilter3() { | ||||
executeTarget("testFilter3"); | |||||
buildRule.executeTarget("testFilter3"); | |||||
} | } | ||||
@Test | |||||
public void testFilter4() { | public void testFilter4() { | ||||
executeTarget("testFilter4"); | |||||
buildRule.executeTarget("testFilter4"); | |||||
} | } | ||||
@Test | |||||
public void testFilter5() { | public void testFilter5() { | ||||
executeTarget("testFilter5"); | |||||
buildRule.executeTarget("testFilter5"); | |||||
} | } | ||||
@Test | |||||
public void testFilter6() { | public void testFilter6() { | ||||
executeTarget("testFilter6"); | |||||
buildRule.executeTarget("testFilter6"); | |||||
} | } | ||||
@Test | |||||
public void testFilter7() { | public void testFilter7() { | ||||
executeTarget("testFilter7"); | |||||
buildRule.executeTarget("testFilter7"); | |||||
} | } | ||||
@Test | |||||
public void testFilter8() { | public void testFilter8() { | ||||
executeTarget("testFilter8"); | |||||
buildRule.executeTarget("testFilter8"); | |||||
} | } | ||||
@Test | |||||
public void testFilter9() { | public void testFilter9() { | ||||
executeTarget("testFilter9"); | |||||
buildRule.executeTarget("testFilter9"); | |||||
} | } | ||||
@Test | |||||
public void testCannotDoubleEof() { | public void testCannotDoubleEof() { | ||||
executeTarget("testCannotDoubleEof"); | |||||
buildRule.executeTarget("testCannotDoubleEof"); | |||||
} | } | ||||
@Test | |||||
public void testTabInLiteralInComment() { | public void testTabInLiteralInComment() { | ||||
executeTarget("testTabInLiteralInComment"); | |||||
buildRule.executeTarget("testTabInLiteralInComment"); | |||||
} | } | ||||
// not used, but public so theoretically must remain for BC? | // not used, but public so theoretically must remain for BC? | ||||
@Deprecated | |||||
public void assertEqualContent(File expect, File result) | public void assertEqualContent(File expect, File result) | ||||
throws AssertionFailedError, IOException { | throws AssertionFailedError, IOException { | ||||
if (!result.exists()) { | if (!result.exists()) { | ||||
@@ -17,54 +17,74 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | |||||
*/ | |||||
public class GUnzipTest extends BuildFileTest { | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
/** Utilities used for file operations */ | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
public class GUnzipTest { | |||||
public GUnzipTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/gunzip.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/gunzip.xml"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "attribute src invalid"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("attribute src invalid"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testRealTest() throws java.io.IOException { | public void testRealTest() throws java.io.IOException { | ||||
testRealTest("realTest"); | testRealTest("realTest"); | ||||
} | } | ||||
@Test | |||||
public void testRealTestWithResource() throws java.io.IOException { | public void testRealTestWithResource() throws java.io.IOException { | ||||
testRealTest("realTestWithResource"); | testRealTest("realTestWithResource"); | ||||
} | } | ||||
private void testRealTest(String target) throws java.io.IOException { | private void testRealTest(String target) throws java.io.IOException { | ||||
executeTarget(target); | |||||
assertTrue(FILE_UTILS.contentEquals(project.resolveFile("../asf-logo.gif"), | |||||
project.resolveFile("asf-logo.gif"))); | |||||
buildRule.executeTarget(target); | |||||
assertEquals(FileUtilities.getFileContents(buildRule.getProject().resolveFile("../asf-logo.gif")), | |||||
FileUtilities.getFileContents(buildRule.getProject().resolveFile("asf-logo.gif"))); | |||||
} | } | ||||
@Test | |||||
public void testTestGzipTask() throws java.io.IOException { | public void testTestGzipTask() throws java.io.IOException { | ||||
testRealTest("testGzipTask"); | testRealTest("testGzipTask"); | ||||
} | } | ||||
@Test | |||||
public void testDocumentationClaimsOnCopy() throws java.io.IOException { | public void testDocumentationClaimsOnCopy() throws java.io.IOException { | ||||
testRealTest("testDocumentationClaimsOnCopy"); | testRealTest("testDocumentationClaimsOnCopy"); | ||||
} | } | ||||
@@ -18,58 +18,105 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class GetTest extends BuildFileTest { | |||||
public class GetTest { | |||||
public GetTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/get.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/get.xml"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test3", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
expectBuildException("test4", "src invalid"); | |||||
try { | |||||
buildRule.executeTarget("test4"); | |||||
fail("src invalid"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
expectBuildException("test5", "dest invalid (or no http-server on local machine)"); | |||||
try { | |||||
buildRule.executeTarget("test5"); | |||||
fail("dest invalid (or no http-server on local machine"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
executeTarget("test6"); | |||||
buildRule.executeTarget("test6"); | |||||
} | } | ||||
@Test | |||||
public void test7() { | public void test7() { | ||||
expectBuildException("test7", "userAgent may not be null or empty"); | |||||
try { | |||||
buildRule.executeTarget("test7"); | |||||
fail("userAgent may not be null or empty"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testUseTimestamp() { | public void testUseTimestamp() { | ||||
executeTarget("testUseTimestamp"); | |||||
buildRule.executeTarget("testUseTimestamp"); | |||||
} | } | ||||
@Test | |||||
public void testUseTomorrow() { | public void testUseTomorrow() { | ||||
executeTarget("testUseTomorrow"); | |||||
buildRule.executeTarget("testUseTomorrow"); | |||||
} | } | ||||
} | } |
@@ -18,59 +18,96 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class GzipTest extends BuildFileTest { | |||||
public class GzipTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
public GzipTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/gzip.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/gzip.xml"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("BuildException expected: required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("BuildException expected: required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test3", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("BuildException expected: required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
expectBuildException("test4", "zipfile must not point to a directory"); | |||||
try { | |||||
buildRule.executeTarget("test4"); | |||||
fail("BuildException expected: zipfile must not point to a directory"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testGZip(){ | public void testGZip(){ | ||||
executeTarget("realTest"); | |||||
String log = getLog(); | |||||
buildRule.executeTarget("realTest"); | |||||
String log = buildRule.getLog(); | |||||
assertTrue("Expecting message starting with 'Building:' but got '" | assertTrue("Expecting message starting with 'Building:' but got '" | ||||
+ log + "'", log.startsWith("Building:")); | + log + "'", log.startsWith("Building:")); | ||||
assertTrue("Expecting message ending with 'asf-logo.gif.gz' but got '" | assertTrue("Expecting message ending with 'asf-logo.gif.gz' but got '" | ||||
+ log + "'", log.endsWith("asf-logo.gif.gz")); | + log + "'", log.endsWith("asf-logo.gif.gz")); | ||||
} | } | ||||
@Test | |||||
public void testResource(){ | public void testResource(){ | ||||
executeTarget("realTestWithResource"); | |||||
buildRule.executeTarget("realTestWithResource"); | |||||
} | } | ||||
@Test | |||||
public void testDateCheck(){ | public void testDateCheck(){ | ||||
executeTarget("testDateCheck"); | |||||
String log = getLog(); | |||||
buildRule.executeTarget("testDateCheck"); | |||||
String log = buildRule.getLog(); | |||||
assertTrue( | assertTrue( | ||||
"Expecting message ending with 'asf-logo.gif.gz is up to date.' but got '" + log + "'", | "Expecting message ending with 'asf-logo.gif.gz is up to date.' but got '" + log + "'", | ||||
log.endsWith("asf-logo.gif.gz is up to date.")); | log.endsWith("asf-logo.gif.gz is up to date.")); | ||||
} | } | ||||
@After | |||||
public void tearDown(){ | public void tearDown(){ | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
} | } |
@@ -18,141 +18,141 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertNull; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.Location; | import org.apache.tools.ant.Location; | ||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.junit.Assume; | |||||
import org.junit.Ignore; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | |||||
*/ | |||||
public class ImportTest extends BuildFileTest { | |||||
public ImportTest(String name) { | |||||
super(name); | |||||
} | |||||
public void setUp() { | |||||
} | |||||
public void tearDown() { | |||||
} | |||||
public class ImportTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Test | |||||
public void testSimpleImport() { | public void testSimpleImport() { | ||||
configureProject("src/etc/testcases/taskdefs/import/import.xml"); | |||||
assertLogContaining("Before importIn imported topAfter import"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/import/import.xml"); | |||||
assertContains("Before importIn imported topAfter import", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testUnnamedNesting() { | public void testUnnamedNesting() { | ||||
configureProject("src/etc/testcases/taskdefs/import/unnamedImport.xml", | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/import/unnamedImport.xml", | |||||
Project.MSG_WARN); | Project.MSG_WARN); | ||||
String log = getLog(); | |||||
String log = buildRule.getLog(); | |||||
assertTrue("Warnings logged when not expected: " + log, | assertTrue("Warnings logged when not expected: " + log, | ||||
log.length() == 0); | log.length() == 0); | ||||
} | } | ||||
@Test | |||||
public void testSerial() { | public void testSerial() { | ||||
configureProject("src/etc/testcases/taskdefs/import/subdir/serial.xml"); | |||||
assertLogContaining("Unnamed2.xmlUnnamed1.xml"); | |||||
String fullLog = getFullLog(); | |||||
String substring = "Skipped already imported file"; | |||||
assertTrue("expecting full log to contain \"" + substring | |||||
+ "\" full log was \"" + fullLog + "\"", | |||||
fullLog.indexOf(substring) >= 0); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/import/subdir/serial.xml"); | |||||
assertContains("Unnamed2.xmlUnnamed1.xml", buildRule.getLog()); | |||||
assertContains("Expected string was not found in log", | |||||
"Skipped already imported file", buildRule.getFullLog()); | |||||
} | } | ||||
// allow this as imported in targets are only tested when a target is run | // allow this as imported in targets are only tested when a target is run | ||||
public void testImportInTargetNoEffect() { | |||||
configureProject("src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); | |||||
expectPropertyUnset("no-import", "foo"); | |||||
assertTrue(null == getProject().getReference("baz")); | |||||
@Test | |||||
public void testImportInTargetNoEffect() { | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); | |||||
buildRule.executeTarget("no-import"); | |||||
assertNull(buildRule.getProject().getProperty("foo")); | |||||
assertNull(buildRule.getProject().getReference("baz")); | |||||
} | } | ||||
// deactivate this test as imports within targets are not allowed | |||||
@Ignore("deactivate this test as imports within targets are not allowed") | |||||
@Test | |||||
public void notTestImportInTargetWithEffect() { | public void notTestImportInTargetWithEffect() { | ||||
configureProject("src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); | |||||
expectPropertySet("do-import", "foo", "bar"); | |||||
assertNotNull(getProject().getReference("baz")); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); | |||||
buildRule.executeTarget("do-import"); | |||||
assertEquals(buildRule.getProject().getProperty("foo"), "bar"); | |||||
assertNotNull(buildRule.getProject().getReference("baz")); | |||||
} | } | ||||
@Test | |||||
public void testImportInTargetNotAllowed() { | public void testImportInTargetNotAllowed() { | ||||
configureProject( | |||||
buildRule.configureProject( | |||||
"src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); | "src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); | ||||
expectBuildExceptionContaining( | |||||
"do-import", "not a top level task", | |||||
"import only allowed as a top-level task"); | |||||
try { | |||||
buildRule.executeTarget("do-import"); | |||||
fail("Build exception should have been thrown as import only allowed in top level task"); | |||||
} catch(BuildException ex) { | |||||
assertContains( "not a top level task", "import only allowed as a top-level task", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testImportInSequential() { | public void testImportInSequential() { | ||||
configureProject( | |||||
buildRule.configureProject( | |||||
"src/etc/testcases/taskdefs/import/subdir/importinsequential.xml"); | "src/etc/testcases/taskdefs/import/subdir/importinsequential.xml"); | ||||
expectPropertySet("within-imported", "foo", "bar"); | |||||
assertNotNull(getProject().getReference("baz")); | |||||
buildRule.executeTarget("within-imported"); | |||||
assertEquals(buildRule.getProject().getProperty("foo"), "bar"); | |||||
assertNotNull(buildRule.getProject().getReference("baz")); | |||||
} | } | ||||
@Test | |||||
public void testImportSameTargets() { | public void testImportSameTargets() { | ||||
try { | try { | ||||
configureProject( | |||||
buildRule.configureProject( | |||||
"src/etc/testcases/taskdefs/import/same_target.xml"); | "src/etc/testcases/taskdefs/import/same_target.xml"); | ||||
fail("Expected build exception"); | |||||
} catch (BuildException ex) { | } catch (BuildException ex) { | ||||
String message = ex.getMessage(); | |||||
if (message.indexOf("Duplicate target") == -1) { | |||||
assertTrue("Did not see 'Duplicate target' in '" + message +"'", false); | |||||
} | |||||
return; | |||||
assertContains("Message did not contain expected contents", "Duplicate target", ex.getMessage()); | |||||
} | } | ||||
assertTrue( | |||||
"Did not see build exception", | |||||
false); | |||||
} | } | ||||
@Test | |||||
public void testImportError() { | public void testImportError() { | ||||
try { | try { | ||||
configureProject( | |||||
buildRule.configureProject( | |||||
"src/etc/testcases/taskdefs/import/import_bad_import.xml"); | "src/etc/testcases/taskdefs/import/import_bad_import.xml"); | ||||
fail("Build exception should have been thrown"); | |||||
} catch (BuildException ex) { | } catch (BuildException ex) { | ||||
Location lo = ex.getLocation(); | Location lo = ex.getLocation(); | ||||
assertTrue( | |||||
"expected location of build exception to be set", | |||||
(lo != null)); | |||||
assertTrue( | |||||
"expected location to contain calling file", | |||||
lo.getFileName().indexOf("import_bad_import.xml") != -1); | |||||
assertTrue( | |||||
"expected message of ex to contain called file", | |||||
ex.getMessage().indexOf("bad.xml") != -1); | |||||
return; | |||||
assertNotNull( | |||||
"expected location of build exception to be set", lo); | |||||
assertContains( | |||||
"expected location to contain calling file", "import_bad_import.xml", lo.getFileName()); | |||||
assertContains( | |||||
"expected message of ex to contain called file", "bad.xml", ex.getMessage()); | |||||
} | } | ||||
assertTrue( | |||||
"Did not see build exception", | |||||
false); | |||||
} | } | ||||
@Test | |||||
public void testSymlinkedImports() throws Exception { | public void testSymlinkedImports() throws Exception { | ||||
String ln = "/usr/bin/ln"; | String ln = "/usr/bin/ln"; | ||||
if (!new File(ln).exists()) { | if (!new File(ln).exists()) { | ||||
ln = "/bin/ln"; | ln = "/bin/ln"; | ||||
} | } | ||||
if (!new File(ln).exists()) { | |||||
// Running on Windows or something, so skip it. | |||||
return; | |||||
} | |||||
Assume.assumeTrue("Current system does not support Symlinks", new File(ln).exists()); | |||||
String symlink = "src/etc/testcases/taskdefs/import/symlinks/d3b"; | String symlink = "src/etc/testcases/taskdefs/import/symlinks/d3b"; | ||||
File symlinkFile = new File(System.getProperty("root"), symlink); | File symlinkFile = new File(System.getProperty("root"), symlink); | ||||
if (Runtime.getRuntime().exec(new String[] {ln, "-s", "d3a", symlinkFile.getAbsolutePath()}).waitFor() != 0) { | if (Runtime.getRuntime().exec(new String[] {ln, "-s", "d3a", symlinkFile.getAbsolutePath()}).waitFor() != 0) { | ||||
throw new IOException("'" + ln + " -s d3a " + symlink + "' failed"); | throw new IOException("'" + ln + " -s d3a " + symlink + "' failed"); | ||||
} | } | ||||
try { | try { | ||||
configureProject( | |||||
buildRule.configureProject( | |||||
"src/etc/testcases/taskdefs/import/symlinks/d1/p1.xml"); | "src/etc/testcases/taskdefs/import/symlinks/d1/p1.xml"); | ||||
assertPropertyEquals( | |||||
"ant.file.p2", | |||||
assertEquals( | |||||
buildRule.getProject().getProperty("ant.file.p2"), | |||||
new File(System.getProperty("root"), "src/etc/testcases/taskdefs/import/symlinks/d2/p2.xml") | new File(System.getProperty("root"), "src/etc/testcases/taskdefs/import/symlinks/d2/p2.xml") | ||||
.getAbsolutePath()); | .getAbsolutePath()); | ||||
assertPropertyEquals( | |||||
"ant.file.p3", | |||||
assertEquals( | |||||
buildRule.getProject().getProperty("ant.file.p3"), | |||||
new File(System.getProperty("root"), "src/etc/testcases/taskdefs/import/symlinks/d3b/p3.xml") | new File(System.getProperty("root"), "src/etc/testcases/taskdefs/import/symlinks/d3b/p3.xml") | ||||
.getAbsolutePath()); | .getAbsolutePath()); | ||||
} finally { | } finally { | ||||
@@ -160,13 +160,15 @@ public class ImportTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testTargetFirst() { | public void testTargetFirst() { | ||||
configureProject("src/etc/testcases/taskdefs/import/importtargetfirst.xml"); | |||||
assertLogContaining("Importing targetfirstAfter target firstAfter importing"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/import/importtargetfirst.xml"); | |||||
assertContains("Importing targetfirstAfter target firstAfter importing", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testTargetName() { | public void testTargetName() { | ||||
configureProject("src/etc/testcases/taskdefs/import/c.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/import/c.xml"); | |||||
} | } | ||||
} | } |
@@ -22,41 +22,54 @@ import java.io.File; | |||||
import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.PrintStream; | import java.io.PrintStream; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
/** | /** | ||||
* Test to see if static initializers are invoked the same way | * Test to see if static initializers are invoked the same way | ||||
* when <java> is invoked in forked and unforked modes. | * when <java> is invoked in forked and unforked modes. | ||||
* | * | ||||
*/ | */ | ||||
public class InitializeClassTest extends BuildFileTest { | |||||
public class InitializeClassTest { | |||||
/** Utilities used for file operations */ | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
private File f1 = new File(System.getProperty("root"), "src/etc/testcases/taskdefs/forkedout"); | private File f1 = new File(System.getProperty("root"), "src/etc/testcases/taskdefs/forkedout"); | ||||
private File f2 = new File(System.getProperty("root"), "src/etc/testcases/taskdefs/unforkedout"); | private File f2 = new File(System.getProperty("root"), "src/etc/testcases/taskdefs/unforkedout"); | ||||
public InitializeClassTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/initializeclass.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/initializeclass.xml"); | |||||
} | } | ||||
@Test | |||||
public void testAll() throws IOException { | public void testAll() throws IOException { | ||||
executeTarget("forked"); | |||||
PrintStream ps = System.out; | |||||
PrintStream newps = new PrintStream(new FileOutputStream(f2)); | |||||
System.setOut(newps); | |||||
project.executeTarget("unforked"); | |||||
System.setOut(ps); | |||||
newps.close(); | |||||
assertTrue("Forked - non-forked mismatch", FILE_UTILS.contentEquals(f1, f2)); | |||||
buildRule.executeTarget("forked"); | |||||
synchronized (System.out) { | |||||
PrintStream ps = System.out; | |||||
PrintStream newps = new PrintStream(new FileOutputStream(f2)); | |||||
try { | |||||
System.setOut(newps); | |||||
buildRule.getProject().executeTarget("unforked"); | |||||
} finally { | |||||
System.setOut(ps); | |||||
newps.close(); | |||||
} | |||||
} | |||||
assertEquals(FileUtilities.getFileContents(f1), FileUtilities.getFileContents(f2)); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
f1.delete(); | f1.delete(); | ||||
f2.delete(); | f2.delete(); | ||||
@@ -19,88 +19,108 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.FileInputStream; | import java.io.FileInputStream; | ||||
import java.io.IOException; | |||||
import java.io.InputStream; | |||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.input.PropertyFileInputHandler; | import org.apache.tools.ant.input.PropertyFileInputHandler; | ||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
public class InputTest extends BuildFileTest { | |||||
public InputTest(String name) { | |||||
super(name); | |||||
} | |||||
public class InputTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
private InputStream originalStdIn; | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/input.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/input.xml"); | |||||
System.getProperties() | System.getProperties() | ||||
.put(PropertyFileInputHandler.FILE_NAME_KEY, | .put(PropertyFileInputHandler.FILE_NAME_KEY, | ||||
getProject().resolveFile("input.properties") | |||||
buildRule.getProject().resolveFile("input.properties") | |||||
.getAbsolutePath()); | .getAbsolutePath()); | ||||
getProject().setInputHandler(new PropertyFileInputHandler()); | |||||
buildRule.getProject().setInputHandler(new PropertyFileInputHandler()); | |||||
originalStdIn = System.in; | |||||
} | |||||
@After | |||||
public void tearDown() { | |||||
System.setIn(originalStdIn); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
executeTarget("test1"); | |||||
buildRule.executeTarget("test1"); | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
executeTarget("test2"); | |||||
buildRule.executeTarget("test2"); | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectSpecificBuildException("test3", "invalid input", | |||||
"Found invalid input test for \'" | |||||
+ getKey("All data is" | |||||
+ " going to be deleted from DB" | |||||
+ " continue?") | |||||
+ "\'"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("BuildException expected: invalid input"); | |||||
} catch (BuildException ex) { | |||||
assertEquals("Found invalid input test for 'All data is going to be deleted from DB continue?'", | |||||
ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
buildRule.executeTarget("test5"); | |||||
} | } | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
executeTarget("test6"); | |||||
assertEquals("scott", project.getProperty("db.user")); | |||||
buildRule.executeTarget("test6"); | |||||
assertEquals("scott", buildRule.getProject().getProperty("db.user")); | |||||
} | } | ||||
@Test | |||||
public void testPropertyFileInlineHandler() { | public void testPropertyFileInlineHandler() { | ||||
executeTarget("testPropertyFileInlineHandler"); | |||||
buildRule.executeTarget("testPropertyFileInlineHandler"); | |||||
} | } | ||||
public void testDefaultInlineHandler() { | |||||
@Test | |||||
public void testDefaultInlineHandler() throws IOException { | |||||
stdin(); | stdin(); | ||||
executeTarget("testDefaultInlineHandler"); | |||||
buildRule.executeTarget("testDefaultInlineHandler"); | |||||
} | } | ||||
public void testGreedyInlineHandler() { | |||||
@Test | |||||
public void testGreedyInlineHandler() throws IOException { | |||||
stdin(); | stdin(); | ||||
executeTarget("testGreedyInlineHandler"); | |||||
buildRule.executeTarget("testGreedyInlineHandler"); | |||||
} | } | ||||
public void testGreedyInlineHandlerClassname() { | |||||
@Test | |||||
public void testGreedyInlineHandlerClassname() throws IOException { | |||||
stdin(); | stdin(); | ||||
executeTarget("testGreedyInlineHandlerClassname"); | |||||
buildRule.executeTarget("testGreedyInlineHandlerClassname"); | |||||
} | } | ||||
public void testGreedyInlineHandlerRefid() { | |||||
@Test | |||||
public void testGreedyInlineHandlerRefid() throws IOException { | |||||
stdin(); | stdin(); | ||||
executeTarget("testGreedyInlineHandlerRefid"); | |||||
} | |||||
private void stdin() { | |||||
try { | |||||
System.setIn(new FileInputStream( | |||||
getProject().resolveFile("input.stdin"))); | |||||
} catch (Exception e) { | |||||
throw e instanceof RuntimeException | |||||
? (RuntimeException) e : new RuntimeException(e.getMessage()); | |||||
} | |||||
buildRule.executeTarget("testGreedyInlineHandlerRefid"); | |||||
} | } | ||||
private String getKey(String key) { | |||||
return key; // TODO what is this for? | |||||
private void stdin() throws IOException { | |||||
System.setIn(new FileInputStream(buildRule.getProject().resolveFile("input.stdin"))); | |||||
} | } | ||||
} | } |
@@ -28,29 +28,42 @@ import java.io.Reader; | |||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import java.util.zip.ZipEntry; | import java.util.zip.ZipEntry; | ||||
import java.util.zip.ZipFile; | import java.util.zip.ZipFile; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.junit.After; | |||||
import org.junit.Assume; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertFalse; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class JarTest extends BuildFileTest { | |||||
/** Utilities used for file operations */ | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
public class JarTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
private static String tempJar = "tmp.jar"; | private static String tempJar = "tmp.jar"; | ||||
private static String tempDir = "jartmp/"; | private static String tempDir = "jartmp/"; | ||||
private Reader r1, r2; | private Reader r1, r2; | ||||
public JarTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/jar.xml"); | |||||
executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/jar.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
if (r1 != null) { | if (r1 != null) { | ||||
try { | try { | ||||
@@ -64,152 +77,192 @@ public class JarTest extends BuildFileTest { | |||||
} catch (IOException e) { | } catch (IOException e) { | ||||
} | } | ||||
} | } | ||||
try { | |||||
super.tearDown(); | |||||
} catch (Exception exc) { | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument not specified"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("BuildException expected: required argument not specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "manifest file does not exist"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("BuildException expected: manifest file does not exist"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildException("test3", "Unrecognized whenempty attribute: format C: /y"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("BuildException expected: Unrecognized whenempty attribute: format C: /y"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
private File getOutputDir() { | |||||
return new File(buildRule.getProject().getProperty("output")); | |||||
} | |||||
@Test | |||||
public void test4() { | public void test4() { | ||||
executeTarget("test4"); | |||||
buildRule.executeTarget("test4"); | |||||
File jarFile = new File(getOutputDir(), tempJar); | File jarFile = new File(getOutputDir(), tempJar); | ||||
assertTrue(jarFile.exists()); | assertTrue(jarFile.exists()); | ||||
} | } | ||||
@Test | |||||
public void testNoRecreateWithoutUpdate() { | public void testNoRecreateWithoutUpdate() { | ||||
testNoRecreate("test4"); | testNoRecreate("test4"); | ||||
} | } | ||||
@Test | |||||
public void testNoRecreateWithUpdate() { | public void testNoRecreateWithUpdate() { | ||||
testNoRecreate("testNoRecreateWithUpdate"); | testNoRecreate("testNoRecreateWithUpdate"); | ||||
} | } | ||||
private void testNoRecreate(String secondTarget) { | private void testNoRecreate(String secondTarget) { | ||||
executeTarget("test4"); | |||||
buildRule.executeTarget("test4"); | |||||
File jarFile = new File(getOutputDir(), tempJar); | File jarFile = new File(getOutputDir(), tempJar); | ||||
// move the modified date back a couple of seconds rather than delay the test on each run | |||||
Assume.assumeTrue(jarFile.setLastModified(jarFile.lastModified() | |||||
- (FileUtils.getFileUtils().getFileTimestampGranularity() * 3))); | |||||
long jarModifiedDate = jarFile.lastModified(); | long jarModifiedDate = jarFile.lastModified(); | ||||
try { | |||||
Thread.sleep(2500); | |||||
} catch (InterruptedException e) { | |||||
} // end of try-catch | |||||
executeTarget(secondTarget); | |||||
buildRule.executeTarget(secondTarget); | |||||
assertEquals("jar has not been recreated in " + secondTarget, | assertEquals("jar has not been recreated in " + secondTarget, | ||||
jarModifiedDate, jarFile.lastModified()); | jarModifiedDate, jarFile.lastModified()); | ||||
} | } | ||||
@Test | |||||
public void testRecreateWithoutUpdateAdditionalFiles() { | public void testRecreateWithoutUpdateAdditionalFiles() { | ||||
testRecreate("test4", "testRecreateWithoutUpdateAdditionalFiles"); | testRecreate("test4", "testRecreateWithoutUpdateAdditionalFiles"); | ||||
} | } | ||||
@Test | |||||
public void testRecreateWithUpdateAdditionalFiles() { | public void testRecreateWithUpdateAdditionalFiles() { | ||||
testRecreate("test4", "testRecreateWithUpdateAdditionalFiles"); | testRecreate("test4", "testRecreateWithUpdateAdditionalFiles"); | ||||
} | } | ||||
@Test | |||||
public void testRecreateWithoutUpdateNewerFile() { | public void testRecreateWithoutUpdateNewerFile() { | ||||
testRecreate("testRecreateNewerFileSetup", | testRecreate("testRecreateNewerFileSetup", | ||||
"testRecreateWithoutUpdateNewerFile"); | "testRecreateWithoutUpdateNewerFile"); | ||||
} | } | ||||
@Test | |||||
public void testRecreateWithUpdateNewerFile() { | public void testRecreateWithUpdateNewerFile() { | ||||
testRecreate("testRecreateNewerFileSetup", | testRecreate("testRecreateNewerFileSetup", | ||||
"testRecreateWithUpdateNewerFile"); | "testRecreateWithUpdateNewerFile"); | ||||
} | } | ||||
private void testRecreate(String firstTarget, String secondTarget) { | private void testRecreate(String firstTarget, String secondTarget) { | ||||
executeTarget(firstTarget); | |||||
long sleeptime = 3000 | |||||
+ FILE_UTILS.getFileTimestampGranularity(); | |||||
try { | |||||
Thread.sleep(sleeptime); | |||||
} catch (InterruptedException e) { | |||||
} // end of try-catch | |||||
//Move the modified date on all input back a couple of seconds rather then delay the test to achieve a similar effect | |||||
FileUtilities.rollbackTimetamps(buildRule.getProject().getBaseDir(), 5); | |||||
buildRule.executeTarget(firstTarget); | |||||
File jarFile = new File(getOutputDir(), tempJar); | File jarFile = new File(getOutputDir(), tempJar); | ||||
//Move the modified date back a couple of seconds rather then delay the test to achieve a similar effect | |||||
FileUtilities.rollbackTimetamps(buildRule.getOutputDir(), 5); | |||||
long jarModifiedDate = jarFile.lastModified(); | long jarModifiedDate = jarFile.lastModified(); | ||||
executeTarget(secondTarget); | |||||
buildRule.executeTarget(secondTarget); | |||||
jarFile = new File(getOutputDir(), tempJar); | jarFile = new File(getOutputDir(), tempJar); | ||||
assertTrue("jar has been recreated in " + secondTarget, | assertTrue("jar has been recreated in " + secondTarget, | ||||
jarModifiedDate < jarFile.lastModified()); | jarModifiedDate < jarFile.lastModified()); | ||||
} | } | ||||
@Test | |||||
public void testManifestStaysIntact() | public void testManifestStaysIntact() | ||||
throws IOException, ManifestException { | throws IOException, ManifestException { | ||||
executeTarget("testManifestStaysIntact"); | |||||
buildRule.executeTarget("testManifestStaysIntact"); | |||||
r1 = new FileReader(new File(getOutputDir(), | r1 = new FileReader(new File(getOutputDir(), | ||||
tempDir + "manifest")); | tempDir + "manifest")); | ||||
r2 = new FileReader(new File(getOutputDir(), | r2 = new FileReader(new File(getOutputDir(), | ||||
tempDir + "META-INF/MANIFEST.MF")); | tempDir + "META-INF/MANIFEST.MF")); | ||||
Manifest mf1 = new Manifest(r1); | Manifest mf1 = new Manifest(r1); | ||||
Manifest mf2 = new Manifest(r2); | Manifest mf2 = new Manifest(r2); | ||||
assertEquals(mf1, mf2); | assertEquals(mf1, mf2); | ||||
} | } | ||||
@Test | |||||
public void testNoRecreateBasedirExcludesWithUpdate() { | public void testNoRecreateBasedirExcludesWithUpdate() { | ||||
testNoRecreate("testNoRecreateBasedirExcludesWithUpdate"); | testNoRecreate("testNoRecreateBasedirExcludesWithUpdate"); | ||||
} | } | ||||
@Test | |||||
public void testNoRecreateBasedirExcludesWithoutUpdate() { | public void testNoRecreateBasedirExcludesWithoutUpdate() { | ||||
testNoRecreate("testNoRecreateBasedirExcludesWithoutUpdate"); | testNoRecreate("testNoRecreateBasedirExcludesWithoutUpdate"); | ||||
} | } | ||||
@Test | |||||
public void testNoRecreateZipfilesetExcludesWithUpdate() { | public void testNoRecreateZipfilesetExcludesWithUpdate() { | ||||
testNoRecreate("testNoRecreateZipfilesetExcludesWithUpdate"); | testNoRecreate("testNoRecreateZipfilesetExcludesWithUpdate"); | ||||
} | } | ||||
@Test | |||||
public void testNoRecreateZipfilesetExcludesWithoutUpdate() { | public void testNoRecreateZipfilesetExcludesWithoutUpdate() { | ||||
testNoRecreate("testNoRecreateZipfilesetExcludesWithoutUpdate"); | testNoRecreate("testNoRecreateZipfilesetExcludesWithoutUpdate"); | ||||
} | } | ||||
@Test | |||||
public void testRecreateZipfilesetWithoutUpdateAdditionalFiles() { | public void testRecreateZipfilesetWithoutUpdateAdditionalFiles() { | ||||
testRecreate("test4", | testRecreate("test4", | ||||
"testRecreateZipfilesetWithoutUpdateAdditionalFiles"); | "testRecreateZipfilesetWithoutUpdateAdditionalFiles"); | ||||
} | } | ||||
@Test | |||||
public void testRecreateZipfilesetWithUpdateAdditionalFiles() { | public void testRecreateZipfilesetWithUpdateAdditionalFiles() { | ||||
testRecreate("test4", | testRecreate("test4", | ||||
"testRecreateZipfilesetWithUpdateAdditionalFiles"); | "testRecreateZipfilesetWithUpdateAdditionalFiles"); | ||||
} | } | ||||
@Test | |||||
public void testRecreateZipfilesetWithoutUpdateNewerFile() { | public void testRecreateZipfilesetWithoutUpdateNewerFile() { | ||||
testRecreate("testRecreateNewerFileSetup", | testRecreate("testRecreateNewerFileSetup", | ||||
"testRecreateZipfilesetWithoutUpdateNewerFile"); | "testRecreateZipfilesetWithoutUpdateNewerFile"); | ||||
} | } | ||||
@Test | |||||
public void testRecreateZipfilesetWithUpdateNewerFile() { | public void testRecreateZipfilesetWithUpdateNewerFile() { | ||||
testRecreate("testRecreateNewerFileSetup", | testRecreate("testRecreateNewerFileSetup", | ||||
"testRecreateZipfilesetWithUpdateNewerFile"); | "testRecreateZipfilesetWithUpdateNewerFile"); | ||||
} | } | ||||
@Test | |||||
public void testCreateWithEmptyFileset() { | public void testCreateWithEmptyFileset() { | ||||
executeTarget("testCreateWithEmptyFilesetSetUp"); | |||||
executeTarget("testCreateWithEmptyFileset"); | |||||
executeTarget("testCreateWithEmptyFileset"); | |||||
buildRule.executeTarget("testCreateWithEmptyFilesetSetUp"); | |||||
buildRule.executeTarget("testCreateWithEmptyFileset"); | |||||
buildRule.executeTarget("testCreateWithEmptyFileset"); | |||||
} | } | ||||
@Test | |||||
public void testUpdateIfOnlyManifestHasChanged() { | public void testUpdateIfOnlyManifestHasChanged() { | ||||
executeTarget("testUpdateIfOnlyManifestHasChanged"); | |||||
buildRule.executeTarget("testUpdateIfOnlyManifestHasChanged"); | |||||
File jarXml = new File(getOutputDir(), tempDir + "jar.xml"); | File jarXml = new File(getOutputDir(), tempDir + "jar.xml"); | ||||
assertTrue(jarXml.exists()); | assertTrue(jarXml.exists()); | ||||
} | } | ||||
// bugzilla report 10262 | // bugzilla report 10262 | ||||
@Test | |||||
public void testNoDuplicateIndex() throws IOException { | public void testNoDuplicateIndex() throws IOException { | ||||
ZipFile archive = null; | ZipFile archive = null; | ||||
try { | try { | ||||
executeTarget("testIndexTests"); | |||||
buildRule.executeTarget("testIndexTests"); | |||||
archive = new ZipFile(new File(getOutputDir(), tempJar)); | archive = new ZipFile(new File(getOutputDir(), tempJar)); | ||||
Enumeration e = archive.entries(); | Enumeration e = archive.entries(); | ||||
int numberOfIndexLists = 0; | int numberOfIndexLists = 0; | ||||
@@ -228,10 +281,11 @@ public class JarTest extends BuildFileTest { | |||||
} | } | ||||
// bugzilla report 16972 | // bugzilla report 16972 | ||||
@Test | |||||
public void testRootFilesInIndex() throws IOException { | public void testRootFilesInIndex() throws IOException { | ||||
ZipFile archive = null; | ZipFile archive = null; | ||||
try { | try { | ||||
executeTarget("testIndexTests"); | |||||
buildRule.executeTarget("testIndexTests"); | |||||
archive = new ZipFile(new File(getOutputDir(), tempJar)); | archive = new ZipFile(new File(getOutputDir(), tempJar)); | ||||
ZipEntry ze = archive.getEntry("META-INF/INDEX.LIST"); | ZipEntry ze = archive.getEntry("META-INF/INDEX.LIST"); | ||||
InputStream is = archive.getInputStream(ze); | InputStream is = archive.getInputStream(ze); | ||||
@@ -262,46 +316,60 @@ public class JarTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testManifestOnlyJar() { | public void testManifestOnlyJar() { | ||||
expectLogContaining("testManifestOnlyJar", "Building MANIFEST-only jar: "); | |||||
buildRule.executeTarget("testManifestOnlyJar"); | |||||
assertContains("Building MANIFEST-only jar: ", buildRule.getLog()); | |||||
File manifestFile = new File(getOutputDir(), tempDir + "META-INF" + File.separator + "MANIFEST.MF"); | File manifestFile = new File(getOutputDir(), tempDir + "META-INF" + File.separator + "MANIFEST.MF"); | ||||
assertTrue(manifestFile.exists()); | assertTrue(manifestFile.exists()); | ||||
} | } | ||||
@Test | |||||
public void testIndexJarsPlusJarMarker() { | public void testIndexJarsPlusJarMarker() { | ||||
executeTarget("testIndexJarsPlusJarMarker"); | |||||
buildRule.executeTarget("testIndexJarsPlusJarMarker"); | |||||
} | } | ||||
@Test | |||||
public void testNoVersionInfoFail() { | public void testNoVersionInfoFail() { | ||||
expectBuildExceptionContaining("testNoVersionInfoFail", "Manifest Implemention information missing.", "No Implementation-Title set."); | |||||
try { | |||||
buildRule.executeTarget("testNoVersionInfoFail"); | |||||
fail("BuildException expected: Manifest Implemention information missing."); | |||||
} catch (BuildException ex) { | |||||
assertContains("No Implementation-Title set.", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testNoVersionInfoIgnore() { | public void testNoVersionInfoIgnore() { | ||||
executeTarget("testNoVersionInfoIgnore"); | |||||
assertTrue( getFullLog().indexOf("No Implementation-Title set.") > -1 ); | |||||
assertTrue( getFullLog().indexOf("No Implementation-Version set.") > -1 ); | |||||
assertTrue( getFullLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||||
buildRule.executeTarget("testNoVersionInfoIgnore"); | |||||
assertTrue(buildRule.getFullLog().indexOf("No Implementation-Title set.") > -1 ); | |||||
assertTrue(buildRule.getFullLog().indexOf("No Implementation-Version set.") > -1 ); | |||||
assertTrue(buildRule.getFullLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||||
} | } | ||||
@Test | |||||
public void testNoVersionInfoWarn() { | public void testNoVersionInfoWarn() { | ||||
executeTarget("testNoVersionInfoWarn"); | |||||
assertTrue( getLog().indexOf("No Implementation-Title set.") > -1 ); | |||||
assertTrue( getLog().indexOf("No Implementation-Version set.") > -1 ); | |||||
assertTrue( getLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||||
buildRule.executeTarget("testNoVersionInfoWarn"); | |||||
assertTrue(buildRule.getLog().indexOf("No Implementation-Title set.") > -1 ); | |||||
assertTrue(buildRule.getLog().indexOf("No Implementation-Version set.") > -1 ); | |||||
assertTrue(buildRule.getLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||||
} | } | ||||
@Test | |||||
public void testNoVersionInfoNoStrict() { | public void testNoVersionInfoNoStrict() { | ||||
executeTarget("testNoVersionInfoNoStrict"); | |||||
assertFalse( getLog().indexOf("No Implementation-Title set.") > -1 ); | |||||
assertFalse( getLog().indexOf("No Implementation-Version set.") > -1 ); | |||||
assertFalse( getLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||||
buildRule.executeTarget("testNoVersionInfoNoStrict"); | |||||
assertFalse(buildRule.getLog().indexOf("No Implementation-Title set.") > -1 ); | |||||
assertFalse(buildRule.getLog().indexOf("No Implementation-Version set.") > -1 ); | |||||
assertFalse(buildRule.getLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||||
} | } | ||||
@Test | |||||
public void testHasVersionInfo() { | public void testHasVersionInfo() { | ||||
executeTarget("testHasVersionInfo"); | |||||
assertFalse( getLog().indexOf("No Implementation-Title set.") > -1 ); | |||||
assertFalse( getLog().indexOf("No Implementation-Version set.") > -1 ); | |||||
assertFalse( getLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||||
buildRule.executeTarget("testHasVersionInfo"); | |||||
assertFalse(buildRule.getLog().indexOf("No Implementation-Title set.") > -1 ); | |||||
assertFalse(buildRule.getLog().indexOf("No Implementation-Version set.") > -1 ); | |||||
assertFalse(buildRule.getLog().indexOf("No Implementation-Vendor set.") > -1 ); | |||||
} | } | ||||
} | } |
@@ -29,15 +29,29 @@ import java.io.OutputStreamWriter; | |||||
import java.io.PipedInputStream; | import java.io.PipedInputStream; | ||||
import java.io.PipedOutputStream; | import java.io.PipedOutputStream; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.input.DefaultInputHandler; | import org.apache.tools.ant.input.DefaultInputHandler; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.apache.tools.ant.util.TeeOutputStream; | import org.apache.tools.ant.util.TeeOutputStream; | ||||
import org.junit.Assume; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import org.junit.internal.AssumptionViolatedException; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* stress out java task | * stress out java task | ||||
* */ | * */ | ||||
public class JavaTest extends BuildFileTest { | |||||
public class JavaTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
private static final int TIME_TO_WAIT = 1; | private static final int TIME_TO_WAIT = 1; | ||||
// wait 1 second extra to allow for java to start ... | // wait 1 second extra to allow for java to start ... | ||||
@@ -49,18 +63,16 @@ public class JavaTest extends BuildFileTest { | |||||
private boolean runFatalTests=false; | private boolean runFatalTests=false; | ||||
public JavaTest(String name) { | |||||
super(name); | |||||
} | |||||
/** | /** | ||||
* configure the project. | * configure the project. | ||||
* if the property junit.run.fatal.tests is set we run | * if the property junit.run.fatal.tests is set we run | ||||
* the fatal tests | * the fatal tests | ||||
*/ | */ | ||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/java.xml"); | |||||
project.executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/java.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
//final String propname="tests-classpath.value"; | //final String propname="tests-classpath.value"; | ||||
//String testClasspath=System.getProperty(propname); | //String testClasspath=System.getProperty(propname); | ||||
@@ -70,32 +82,49 @@ public class JavaTest extends BuildFileTest { | |||||
runFatalTests=true; | runFatalTests=true; | ||||
} | } | ||||
@Test | |||||
public void testNoJarNoClassname(){ | public void testNoJarNoClassname(){ | ||||
expectBuildExceptionContaining("testNoJarNoClassname", | |||||
"parameter validation", | |||||
"Classname must not be null."); | |||||
try { | |||||
buildRule.executeTarget("testNoJarNoClassname"); | |||||
fail("Build exception should have been thrown - parameter validation"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Classname must not be null.", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testJarNoFork() { | public void testJarNoFork() { | ||||
expectBuildExceptionContaining("testJarNoFork", | |||||
"parameter validation", | |||||
"Cannot execute a jar in non-forked mode. " | |||||
+ "Please set fork='true'. "); | |||||
try { | |||||
buildRule.executeTarget("testJarNoFork"); | |||||
fail("Build exception should have been thrown - parameter validation"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Cannot execute a jar in non-forked mode. Please set fork='true'. ", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testJarAndClassName() { | public void testJarAndClassName() { | ||||
expectBuildException("testJarAndClassName", | |||||
"Should not be able to set both classname AND jar"); | |||||
try { | |||||
buildRule.executeTarget("testJarAndClassName"); | |||||
fail("Build exception should have been thrown - both classname and JAR are not allowed"); | |||||
} catch (BuildException ex) { | |||||
assertEquals("Cannot use 'jar' and 'classname' attributes in same command", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testClassnameAndJar() { | public void testClassnameAndJar() { | ||||
expectBuildException("testClassnameAndJar", | |||||
"Should not be able to set both classname AND jar"); | |||||
try { | |||||
buildRule.executeTarget("testClassnameAndJar"); | |||||
fail("Build exception should have been thrown - both classname and JAR are not allowed"); | |||||
} catch (BuildException ex) { | |||||
assertEquals("Cannot use 'jar' and 'classname' attributes in same command.", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testRun() { | public void testRun() { | ||||
executeTarget("testRun"); | |||||
buildRule.executeTarget("testRun"); | |||||
} | } | ||||
@@ -103,90 +132,117 @@ public class JavaTest extends BuildFileTest { | |||||
/** this test fails but we ignore the return value; | /** this test fails but we ignore the return value; | ||||
* we verify that failure only matters when failonerror is set | * we verify that failure only matters when failonerror is set | ||||
*/ | */ | ||||
@Test | |||||
public void testRunFail() { | public void testRunFail() { | ||||
if(runFatalTests) { | |||||
executeTarget("testRunFail"); | |||||
} | |||||
Assume.assumeTrue("Fatal tests have not been set to run", runFatalTests); | |||||
buildRule.executeTarget("testRunFail"); | |||||
} | } | ||||
@Test | |||||
public void testRunFailFoe() { | public void testRunFailFoe() { | ||||
if(runFatalTests) { | |||||
expectBuildExceptionContaining("testRunFailFoe", | |||||
"java failures being propagated", | |||||
"Java returned:"); | |||||
Assume.assumeTrue("Fatal tests have not been set to run", runFatalTests); | |||||
try { | |||||
buildRule.executeTarget("testRunFailFoe"); | |||||
fail("Build exception should have been thrown - " + "java failures being propagated"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Java returned:", ex.getMessage()); | |||||
} | } | ||||
} | |||||
} | |||||
@Test | |||||
public void testRunFailFoeFork() { | public void testRunFailFoeFork() { | ||||
expectBuildExceptionContaining("testRunFailFoeFork", | |||||
"java failures being propagated", | |||||
"Java returned:"); | |||||
try { | |||||
buildRule.executeTarget("testRunFailFoeFork"); | |||||
fail("Build exception should have been thrown - " + "java failures being propagated"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Java returned:", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testExcepting() { | public void testExcepting() { | ||||
expectLogContaining("testExcepting", | |||||
"Exception raised inside called program"); | |||||
buildRule.executeTarget("testExcepting"); | |||||
assertContains("Exception raised inside called program", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testExceptingFork() { | public void testExceptingFork() { | ||||
expectLogContaining("testExceptingFork", | |||||
"Java Result:"); | |||||
buildRule.executeTarget("testExceptingFork"); | |||||
assertContains("Java Result:", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testExceptingFoe() { | public void testExceptingFoe() { | ||||
expectBuildExceptionContaining("testExceptingFoe", | |||||
"passes exception through", | |||||
"Exception raised inside called program"); | |||||
try { | |||||
buildRule.executeTarget("testExceptingFoe"); | |||||
fail("Build exception should have been thrown - " + "passes exception through"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Exception raised inside called program", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testExceptingFoeFork() { | public void testExceptingFoeFork() { | ||||
expectBuildExceptionContaining("testExceptingFoeFork", | |||||
"exceptions turned into error codes", | |||||
"Java returned:"); | |||||
try { | |||||
buildRule.executeTarget("testExceptingFoeFork"); | |||||
fail("Build exception should have been thrown - " + "exceptions turned into error codes"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Java returned:", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testResultPropertyZero() { | public void testResultPropertyZero() { | ||||
executeTarget("testResultPropertyZero"); | |||||
assertEquals("0",project.getProperty("exitcode")); | |||||
buildRule.executeTarget("testResultPropertyZero"); | |||||
assertEquals("0", buildRule.getProject().getProperty("exitcode")); | |||||
} | } | ||||
@Test | |||||
public void testResultPropertyNonZero() { | public void testResultPropertyNonZero() { | ||||
executeTarget("testResultPropertyNonZero"); | |||||
assertEquals("2",project.getProperty("exitcode")); | |||||
buildRule.executeTarget("testResultPropertyNonZero"); | |||||
assertEquals("2", buildRule.getProject().getProperty("exitcode")); | |||||
} | } | ||||
@Test | |||||
public void testResultPropertyZeroNoFork() { | public void testResultPropertyZeroNoFork() { | ||||
executeTarget("testResultPropertyZeroNoFork"); | |||||
assertEquals("0",project.getProperty("exitcode")); | |||||
buildRule.executeTarget("testResultPropertyZeroNoFork"); | |||||
assertEquals("0", buildRule.getProject().getProperty("exitcode")); | |||||
} | } | ||||
@Test | |||||
public void testResultPropertyNonZeroNoFork() { | public void testResultPropertyNonZeroNoFork() { | ||||
executeTarget("testResultPropertyNonZeroNoFork"); | |||||
assertEquals("-1",project.getProperty("exitcode")); | |||||
buildRule.executeTarget("testResultPropertyNonZeroNoFork"); | |||||
assertEquals("-1", buildRule.getProject().getProperty("exitcode")); | |||||
} | } | ||||
@Test | |||||
public void testRunFailWithFailOnError() { | public void testRunFailWithFailOnError() { | ||||
expectBuildExceptionContaining("testRunFailWithFailOnError", | |||||
"non zero return code", | |||||
"Java returned:"); | |||||
try { | |||||
buildRule.executeTarget("testRunFailWithFailOnError"); | |||||
fail("Build exception should have been thrown - " + "non zero return code"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Java returned:", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testRunSuccessWithFailOnError() { | public void testRunSuccessWithFailOnError() { | ||||
executeTarget("testRunSuccessWithFailOnError"); | |||||
buildRule.executeTarget("testRunSuccessWithFailOnError"); | |||||
} | } | ||||
public void testSpawn() { | |||||
File logFile = FILE_UTILS.createTempFile("spawn","log", getOutputDir(), false, false); | |||||
@Test | |||||
public void testSpawn() throws InterruptedException { | |||||
File logFile = FILE_UTILS.createTempFile("spawn", "log", | |||||
new File(buildRule.getProject().getProperty("output")), false, false); | |||||
// this is guaranteed by FileUtils#createTempFile | // this is guaranteed by FileUtils#createTempFile | ||||
assertTrue("log file not existing", !logFile.exists()); | assertTrue("log file not existing", !logFile.exists()); | ||||
project.setProperty("logFile", logFile.getAbsolutePath()); | |||||
project.setProperty("timeToWait", Long.toString(TIME_TO_WAIT)); | |||||
project.executeTarget("testSpawn"); | |||||
try { | |||||
Thread.sleep(TIME_TO_WAIT * 1000 + SECURITY_MARGIN); | |||||
} catch (Exception ex) { | |||||
System.out.println("my sleep was interrupted"); | |||||
} | |||||
buildRule.getProject().setProperty("logFile", logFile.getAbsolutePath()); | |||||
buildRule.getProject().setProperty("timeToWait", Long.toString(TIME_TO_WAIT)); | |||||
buildRule.getProject().executeTarget("testSpawn"); | |||||
Thread.sleep(TIME_TO_WAIT * 1000 + SECURITY_MARGIN); | |||||
// let's be nice with the next generation of developers | // let's be nice with the next generation of developers | ||||
if (!logFile.exists()) { | if (!logFile.exists()) { | ||||
System.out.println("suggestion: increase the constant" | System.out.println("suggestion: increase the constant" | ||||
@@ -195,38 +251,44 @@ public class JavaTest extends BuildFileTest { | |||||
assertTrue("log file exists", logFile.exists()); | assertTrue("log file exists", logFile.exists()); | ||||
} | } | ||||
@Test | |||||
public void testRedirect1() { | public void testRedirect1() { | ||||
executeTarget("redirect1"); | |||||
buildRule.executeTarget("redirect1"); | |||||
} | } | ||||
@Test | |||||
public void testRedirect2() { | public void testRedirect2() { | ||||
executeTarget("redirect2"); | |||||
buildRule.executeTarget("redirect2"); | |||||
} | } | ||||
@Test | |||||
public void testRedirect3() { | public void testRedirect3() { | ||||
executeTarget("redirect3"); | |||||
buildRule.executeTarget("redirect3"); | |||||
} | } | ||||
@Test | |||||
public void testRedirector1() { | public void testRedirector1() { | ||||
executeTarget("redirector1"); | |||||
buildRule.executeTarget("redirector1"); | |||||
} | } | ||||
@Test | |||||
public void testRedirector2() { | public void testRedirector2() { | ||||
executeTarget("redirector2"); | |||||
buildRule.executeTarget("redirector2"); | |||||
} | } | ||||
@Test | |||||
public void testReleasedInput() throws Exception { | public void testReleasedInput() throws Exception { | ||||
PipedOutputStream out = new PipedOutputStream(); | PipedOutputStream out = new PipedOutputStream(); | ||||
final PipedInputStream in = new PipedInputStream(out); | final PipedInputStream in = new PipedInputStream(out); | ||||
project.setInputHandler(new DefaultInputHandler() { | |||||
buildRule.getProject().setInputHandler(new DefaultInputHandler() { | |||||
protected InputStream getInputStream() { | protected InputStream getInputStream() { | ||||
return in; | return in; | ||||
} | } | ||||
}); | }); | ||||
project.setDefaultInputStream(in); | |||||
buildRule.getProject().setDefaultInputStream(in); | |||||
Java java = new Java(); | Java java = new Java(); | ||||
java.setProject(project); | |||||
java.setProject(buildRule.getProject()); | |||||
java.setClassname("org.apache.tools.ant.Main"); | java.setClassname("org.apache.tools.ant.Main"); | ||||
java.setArgs("-version"); | java.setArgs("-version"); | ||||
java.setFork(true); | java.setFork(true); | ||||
@@ -237,7 +299,7 @@ public class JavaTest extends BuildFileTest { | |||||
Thread inputThread = new Thread(new Runnable() { | Thread inputThread = new Thread(new Runnable() { | ||||
public void run() { | public void run() { | ||||
Input input = new Input(); | Input input = new Input(); | ||||
input.setProject(project); | |||||
input.setProject(buildRule.getProject()); | |||||
input.setAddproperty("input.value"); | input.setAddproperty("input.value"); | ||||
input.execute(); | input.execute(); | ||||
} | } | ||||
@@ -259,18 +321,19 @@ public class JavaTest extends BuildFileTest { | |||||
inputThread.join(2000); | inputThread.join(2000); | ||||
assertEquals("foo", project.getProperty("input.value")); | |||||
assertEquals("foo", buildRule.getProject().getProperty("input.value")); | |||||
} | } | ||||
@Test | |||||
public void testFlushedInput() throws Exception { | public void testFlushedInput() throws Exception { | ||||
final PipedOutputStream out = new PipedOutputStream(); | final PipedOutputStream out = new PipedOutputStream(); | ||||
final PipedInputStream in = new PipedInputStream(out); | final PipedInputStream in = new PipedInputStream(out); | ||||
project.setInputHandler(new DefaultInputHandler() { | |||||
buildRule.getProject().setInputHandler(new DefaultInputHandler() { | |||||
protected InputStream getInputStream() { | protected InputStream getInputStream() { | ||||
return in; | return in; | ||||
} | } | ||||
}); | }); | ||||
project.setDefaultInputStream(in); | |||||
buildRule.getProject().setDefaultInputStream(in); | |||||
final boolean[] timeout = new boolean[1]; | final boolean[] timeout = new boolean[1]; | ||||
timeout[0] = false; | timeout[0] = false; | ||||
@@ -281,7 +344,7 @@ public class JavaTest extends BuildFileTest { | |||||
// wait a little bit to have the target executed | // wait a little bit to have the target executed | ||||
Thread.sleep(500); | Thread.sleep(500); | ||||
} catch (InterruptedException e) { | } catch (InterruptedException e) { | ||||
// don't care | |||||
throw new AssumptionViolatedException("Thread interrupted", e); | |||||
} | } | ||||
try { | try { | ||||
out.write("foo-FlushedInput\n".getBytes()); | out.write("foo-FlushedInput\n".getBytes()); | ||||
@@ -293,7 +356,7 @@ public class JavaTest extends BuildFileTest { | |||||
writingThread.setDaemon(true); | writingThread.setDaemon(true); | ||||
writingThread.start(); | writingThread.start(); | ||||
executeTarget("flushedInput"); | |||||
buildRule.executeTarget("flushedInput"); | |||||
} | } | ||||
/** | /** | ||||
@@ -348,7 +411,7 @@ public class JavaTest extends BuildFileTest { | |||||
* test class for spawn | * test class for spawn | ||||
*/ | */ | ||||
public static class SpawnEntryPoint { | public static class SpawnEntryPoint { | ||||
public static void main(String [] argv) { | |||||
public static void main(String [] argv) throws InterruptedException { | |||||
int sleepTime = 10; | int sleepTime = 10; | ||||
String logFile = "spawn.log"; | String logFile = "spawn.log"; | ||||
if (argv.length >= 1) { | if (argv.length >= 1) { | ||||
@@ -359,11 +422,7 @@ public class JavaTest extends BuildFileTest { | |||||
logFile = argv[1]; | logFile = argv[1]; | ||||
} | } | ||||
OutputStreamWriter out = null; | OutputStreamWriter out = null; | ||||
try { | |||||
Thread.sleep(sleepTime * 1000); | |||||
} catch (InterruptedException ex) { | |||||
System.out.println("my sleep was interrupted"); | |||||
} | |||||
Thread.sleep(sleepTime * 1000); | |||||
try { | try { | ||||
File dest = new File(logFile); | File dest = new File(logFile); | ||||
@@ -386,7 +445,7 @@ public class JavaTest extends BuildFileTest { | |||||
/** | /** | ||||
* pipe input to specified output | * pipe input to specified output | ||||
*/ | */ | ||||
public static void main(String[] args) { | |||||
public static void main(String[] args) throws InterruptedException { | |||||
OutputStream os = null; | OutputStream os = null; | ||||
if (args.length > 0) { | if (args.length > 0) { | ||||
if ("out".equalsIgnoreCase(args[0])) { | if ("out".equalsIgnoreCase(args[0])) { | ||||
@@ -401,10 +460,7 @@ public class JavaTest extends BuildFileTest { | |||||
Thread t = new Thread(new StreamPumper(System.in, os, true)); | Thread t = new Thread(new StreamPumper(System.in, os, true)); | ||||
t.setName("PipeEntryPoint " + args[0]); | t.setName("PipeEntryPoint " + args[0]); | ||||
t.start(); | t.start(); | ||||
try { | |||||
t.join(); | |||||
} catch (InterruptedException eyeEx) { | |||||
} | |||||
t.join(); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -18,35 +18,31 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.io.File; | |||||
import java.io.IOException; | |||||
import java.text.SimpleDateFormat; | |||||
import java.util.Arrays; | |||||
import java.util.Date; | |||||
import java.util.List; | |||||
import junit.framework.TestCase; | |||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapter; | import org.apache.tools.ant.taskdefs.compilers.CompilerAdapter; | ||||
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory; | import org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory; | ||||
import org.apache.tools.ant.taskdefs.compilers.Javac13; | import org.apache.tools.ant.taskdefs.compilers.Javac13; | ||||
import org.apache.tools.ant.taskdefs.compilers.JavacExternal; | import org.apache.tools.ant.taskdefs.compilers.JavacExternal; | ||||
import org.apache.tools.ant.types.Path; | |||||
import org.junit.Before; | |||||
import org.junit.Test; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertNull; | |||||
import static org.junit.Assert.assertTrue; | |||||
/** | /** | ||||
* Testcase for <javac>. | * Testcase for <javac>. | ||||
* | * | ||||
*/ | */ | ||||
public class JavacTest extends TestCase { | |||||
public class JavacTest { | |||||
private Project project; | private Project project; | ||||
private Javac javac; | private Javac javac; | ||||
public JavacTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
project = new Project(); | project = new Project(); | ||||
project.init(); | project.init(); | ||||
@@ -57,6 +53,7 @@ public class JavacTest extends TestCase { | |||||
/** | /** | ||||
* Test setting the name of the javac executable. | * Test setting the name of the javac executable. | ||||
*/ | */ | ||||
@Test | |||||
public void testForkedExecutableName() { | public void testForkedExecutableName() { | ||||
assertNull("no fork means no executable", javac.getJavacExecutable()); | assertNull("no fork means no executable", javac.getJavacExecutable()); | ||||
@@ -65,14 +62,13 @@ public class JavacTest extends TestCase { | |||||
javac.setFork(true); | javac.setFork(true); | ||||
assertNotNull("normal fork", javac.getJavacExecutable()); | assertNotNull("normal fork", javac.getJavacExecutable()); | ||||
assertTrue("name should contain \"javac\"", | |||||
javac.getJavacExecutable().indexOf("javac") > -1); | |||||
assertContains("name should contain \"javac\"", "javac", | |||||
javac.getJavacExecutable()); | |||||
project.setProperty("build.compiler", "extJavac"); | project.setProperty("build.compiler", "extJavac"); | ||||
javac.setFork(false); | javac.setFork(false); | ||||
assertNotNull("fork via property", javac.getJavacExecutable()); | assertNotNull("fork via property", javac.getJavacExecutable()); | ||||
assertTrue("name should contain \"javac\"", | |||||
javac.getJavacExecutable().indexOf("javac") > -1); | |||||
assertContains("name should contain \"javac\"", "javac", javac.getJavacExecutable()); | |||||
project.setProperty("build.compiler", "whatever"); | project.setProperty("build.compiler", "whatever"); | ||||
assertNull("no fork and not extJavac means no executable", | assertNull("no fork and not extJavac means no executable", | ||||
@@ -87,6 +83,7 @@ public class JavacTest extends TestCase { | |||||
/** | /** | ||||
* Test nested compiler args. | * Test nested compiler args. | ||||
*/ | */ | ||||
@Test | |||||
public void testCompilerArg() { | public void testCompilerArg() { | ||||
String[] args = javac.getCurrentCompilerArgs(); | String[] args = javac.getCurrentCompilerArgs(); | ||||
assertNotNull(args); | assertNotNull(args); | ||||
@@ -129,6 +126,7 @@ public class JavacTest extends TestCase { | |||||
* Test nested compiler args in the fork="true" and | * Test nested compiler args in the fork="true" and | ||||
* implementation="extJavac" case. | * implementation="extJavac" case. | ||||
*/ | */ | ||||
@Test | |||||
public void testCompilerArgForForkAndExtJavac() { | public void testCompilerArgForForkAndExtJavac() { | ||||
Javac.ImplementationSpecificArgument arg = javac.createCompilerArg(); | Javac.ImplementationSpecificArgument arg = javac.createCompilerArg(); | ||||
String ford = "Ford"; | String ford = "Ford"; | ||||
@@ -145,6 +143,7 @@ public class JavacTest extends TestCase { | |||||
/** | /** | ||||
* Test compiler attribute. | * Test compiler attribute. | ||||
*/ | */ | ||||
@Test | |||||
public void testCompilerAttribute() { | public void testCompilerAttribute() { | ||||
// check defaults | // check defaults | ||||
String compiler = javac.getCompiler(); | String compiler = javac.getCompiler(); | ||||
@@ -194,6 +193,7 @@ public class JavacTest extends TestCase { | |||||
assertEquals("jvc", compiler); | assertEquals("jvc", compiler); | ||||
} | } | ||||
@Test | |||||
public void testCompilerAdapter() { | public void testCompilerAdapter() { | ||||
javac.setCompiler("javac1.4"); | javac.setCompiler("javac1.4"); | ||||
@@ -209,30 +209,36 @@ public class JavacTest extends TestCase { | |||||
assertTrue(adapter instanceof JavacExternal); | assertTrue(adapter instanceof JavacExternal); | ||||
} | } | ||||
@Test | |||||
public void testSourceNoDefault() { | public void testSourceNoDefault() { | ||||
assertNull(javac.getSource()); | assertNull(javac.getSource()); | ||||
} | } | ||||
@Test | |||||
public void testSourceWithDefault() { | public void testSourceWithDefault() { | ||||
project.setNewProperty("ant.build.javac.source", "1.4"); | project.setNewProperty("ant.build.javac.source", "1.4"); | ||||
assertEquals("1.4", javac.getSource()); | assertEquals("1.4", javac.getSource()); | ||||
} | } | ||||
@Test | |||||
public void testSourceOverridesDefault() { | public void testSourceOverridesDefault() { | ||||
project.setNewProperty("ant.build.javac.source", "1.4"); | project.setNewProperty("ant.build.javac.source", "1.4"); | ||||
javac.setSource("1.5"); | javac.setSource("1.5"); | ||||
assertEquals("1.5", javac.getSource()); | assertEquals("1.5", javac.getSource()); | ||||
} | } | ||||
@Test | |||||
public void testTargetNoDefault() { | public void testTargetNoDefault() { | ||||
assertNull(javac.getTarget()); | assertNull(javac.getTarget()); | ||||
} | } | ||||
@Test | |||||
public void testTargetWithDefault() { | public void testTargetWithDefault() { | ||||
project.setNewProperty("ant.build.javac.target", "1.4"); | project.setNewProperty("ant.build.javac.target", "1.4"); | ||||
assertEquals("1.4", javac.getTarget()); | assertEquals("1.4", javac.getTarget()); | ||||
} | } | ||||
@Test | |||||
public void testTargetOverridesDefault() { | public void testTargetOverridesDefault() { | ||||
project.setNewProperty("ant.build.javac.target", "1.4"); | project.setNewProperty("ant.build.javac.target", "1.4"); | ||||
javac.setTarget("1.5"); | javac.setTarget("1.5"); | ||||
@@ -18,122 +18,115 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
public class JavadocTest extends BuildFileTest { | |||||
public class JavadocTest { | |||||
public JavadocTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
private static final String BUILD_PATH = "src/etc/testcases/taskdefs/javadoc/"; | private static final String BUILD_PATH = "src/etc/testcases/taskdefs/javadoc/"; | ||||
private static final String BUILD_FILENAME = "javadoc.xml"; | private static final String BUILD_FILENAME = "javadoc.xml"; | ||||
private static final String BUILD_FILE = BUILD_PATH + BUILD_FILENAME; | private static final String BUILD_FILE = BUILD_PATH + BUILD_FILENAME; | ||||
protected void setUp() throws Exception { | |||||
super.setUp(); | |||||
configureProject(BUILD_FILE); | |||||
@Before | |||||
public void setUp() { | |||||
buildRule.configureProject(BUILD_FILE); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testDirsetPath() throws Exception { | |||||
executeTarget("dirsetPath"); | |||||
@Test | |||||
public void testDirsetPath() { | |||||
buildRule.executeTarget("dirsetPath"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testDirsetPathWithoutPackagenames() throws Exception { | |||||
try { | |||||
executeTarget("dirsetPathWithoutPackagenames"); | |||||
} catch (BuildException e) { | |||||
fail("Contents of path should be picked up without specifying package names: " + e); | |||||
} | |||||
@Test | |||||
public void testDirsetPathWithoutPackagenames() { | |||||
buildRule.executeTarget("dirsetPathWithoutPackagenames"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testNestedDirsetPath() throws Exception { | |||||
executeTarget("nestedDirsetPath"); | |||||
@Test | |||||
public void testNestedDirsetPath() { | |||||
buildRule.executeTarget("nestedDirsetPath"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testFilesetPath() throws Exception { | |||||
try { | |||||
executeTarget("filesetPath"); | |||||
} catch (BuildException e) { | |||||
fail("A path can contain filesets: " + e); | |||||
} | |||||
@Test | |||||
public void testFilesetPath() { | |||||
buildRule.executeTarget("filesetPath"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testNestedFilesetPath() throws Exception { | |||||
try { | |||||
executeTarget("nestedFilesetPath"); | |||||
} catch (BuildException e) { | |||||
fail("A path can contain nested filesets: " + e); | |||||
} | |||||
@Test | |||||
public void testNestedFilesetPath() { | |||||
buildRule.executeTarget("nestedFilesetPath"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testFilelistPath() throws Exception { | |||||
try { | |||||
executeTarget("filelistPath"); | |||||
} catch (BuildException e) { | |||||
fail("A path can contain filelists: " + e); | |||||
} | |||||
@Test | |||||
public void testFilelistPath() { | |||||
buildRule.executeTarget("filelistPath"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testNestedFilelistPath() throws Exception { | |||||
try { | |||||
executeTarget("nestedFilelistPath"); | |||||
} catch (BuildException e) { | |||||
fail("A path can contain nested filelists: " + e); | |||||
} | |||||
@Test | |||||
public void testNestedFilelistPath() { | |||||
buildRule.executeTarget("nestedFilelistPath"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testPathelementPath() throws Exception { | |||||
executeTarget("pathelementPath"); | |||||
@Test | |||||
public void testPathelementPath() { | |||||
buildRule.executeTarget("pathelementPath"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testPathelementLocationPath() throws Exception { | |||||
try { | |||||
executeTarget("pathelementLocationPath"); | |||||
} catch (BuildException e) { | |||||
fail("A path can contain pathelements pointing to a file: " + e); | |||||
} | |||||
@Test | |||||
public void testPathelementLocationPath() { | |||||
buildRule.executeTarget("pathelementLocationPath"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testNestedSource() throws Exception { | |||||
executeTarget("nestedSource"); | |||||
@Test | |||||
public void testNestedSource() { | |||||
buildRule.executeTarget("nestedSource"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testNestedFilesetRef() throws Exception { | |||||
executeTarget("nestedFilesetRef"); | |||||
@Test | |||||
public void testNestedFilesetRef() { | |||||
buildRule.executeTarget("nestedFilesetRef"); | |||||
} | } | ||||
// PR 38370 | // PR 38370 | ||||
public void testNestedFilesetRefInPath() throws Exception { | |||||
executeTarget("nestedFilesetRefInPath"); | |||||
@Test | |||||
public void testNestedFilesetRefInPath() { | |||||
buildRule.executeTarget("nestedFilesetRefInPath"); | |||||
} | } | ||||
public void testNestedFilesetNoPatterns() throws Exception { | |||||
executeTarget("nestedFilesetNoPatterns"); | |||||
@Test | |||||
public void testNestedFilesetNoPatterns() { | |||||
buildRule.executeTarget("nestedFilesetNoPatterns"); | |||||
} | } | ||||
public void testDoublyNestedFileset() throws Exception { | |||||
executeTarget("doublyNestedFileset"); | |||||
@Test | |||||
public void testDoublyNestedFileset() { | |||||
buildRule.executeTarget("doublyNestedFileset"); | |||||
} | } | ||||
public void testDoublyNestedFilesetNoPatterns() throws Exception { | |||||
executeTarget("doublyNestedFilesetNoPatterns"); | |||||
@Test | |||||
public void testDoublyNestedFilesetNoPatterns() { | |||||
buildRule.executeTarget("doublyNestedFilesetNoPatterns"); | |||||
} | } | ||||
public void testNonJavaIncludes() throws Exception { // #41264 | |||||
executeTarget("nonJavaIncludes"); | |||||
@Test | |||||
public void testNonJavaIncludes() { // #41264 | |||||
buildRule.executeTarget("nonJavaIncludes"); | |||||
} | } | ||||
} | } |
@@ -18,83 +18,99 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertNull; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* Test the load file task | * Test the load file task | ||||
* | |||||
* @created 10 December 2001 | |||||
*/ | */ | ||||
public class LoadFileTest extends BuildFileTest { | |||||
/** | |||||
* Constructor for the LoadFileTest object | |||||
* | |||||
* @param name Description of Parameter | |||||
*/ | |||||
public LoadFileTest(String name) { | |||||
super(name); | |||||
} | |||||
public class LoadFileTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
/** | |||||
* The JUnit setup method | |||||
*/ | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/loadfile.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/loadfile.xml"); | |||||
} | } | ||||
/** | |||||
* The teardown method for JUnit | |||||
*/ | |||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("cleanup"); | |||||
buildRule.executeTarget("cleanup"); | |||||
} | } | ||||
/** | /** | ||||
* A unit test for JUnit | * A unit test for JUnit | ||||
*/ | */ | ||||
@Test | |||||
public void testNoSourcefileDefined() { | public void testNoSourcefileDefined() { | ||||
expectBuildException("testNoSourcefileDefined", | |||||
"source file not defined"); | |||||
try { | |||||
buildRule.executeTarget("testNoSourcefileDefined"); | |||||
fail("BuildException expected: source file not defined"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* A unit test for JUnit | * A unit test for JUnit | ||||
*/ | */ | ||||
@Test | |||||
public void testNoPropertyDefined() { | public void testNoPropertyDefined() { | ||||
expectBuildException("testNoPropertyDefined", | |||||
"output property not defined"); | |||||
try { | |||||
buildRule.executeTarget("testNoPropertyDefined"); | |||||
fail("BuildException expected: output property not defined"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* A unit test for JUnit | * A unit test for JUnit | ||||
*/ | */ | ||||
@Test | |||||
public void testNoSourcefilefound() { | public void testNoSourcefilefound() { | ||||
expectBuildExceptionContaining("testNoSourcefilefound", | |||||
"File not found", " doesn't exist"); | |||||
try { | |||||
buildRule.executeTarget("testNoSourcefilefound"); | |||||
fail("BuildException expected: File not found"); | |||||
} catch (BuildException ex) { | |||||
assertContains(" doesn't exist", ex.getMessage()); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* A unit test for JUnit | * A unit test for JUnit | ||||
*/ | */ | ||||
@Test | |||||
public void testFailOnError() | public void testFailOnError() | ||||
throws BuildException { | throws BuildException { | ||||
expectPropertyUnset("testFailOnError","testFailOnError"); | |||||
buildRule.executeTarget("testFailOnError"); | |||||
assertNull(buildRule.getProject().getProperty("testFailOnError")); | |||||
} | } | ||||
/** | /** | ||||
* A unit test for JUnit | * A unit test for JUnit | ||||
*/ | */ | ||||
@Test | |||||
public void testLoadAFile() | public void testLoadAFile() | ||||
throws BuildException { | throws BuildException { | ||||
executeTarget("testLoadAFile"); | |||||
if(project.getProperty("testLoadAFile").indexOf("eh?")<0) { | |||||
buildRule.executeTarget("testLoadAFile"); | |||||
if(buildRule.getProject().getProperty("testLoadAFile").indexOf("eh?")<0) { | |||||
fail("property is not all in the file"); | fail("property is not all in the file"); | ||||
} | } | ||||
} | } | ||||
@@ -103,21 +119,21 @@ public class LoadFileTest extends BuildFileTest { | |||||
/** | /** | ||||
* A unit test for JUnit | * A unit test for JUnit | ||||
*/ | */ | ||||
@Test | |||||
public void testLoadAFileEnc() | public void testLoadAFileEnc() | ||||
throws BuildException { | throws BuildException { | ||||
executeTarget("testLoadAFileEnc"); | |||||
if(project.getProperty("testLoadAFileEnc")==null) { | |||||
fail("file load failed"); | |||||
} | |||||
buildRule.executeTarget("testLoadAFileEnc"); | |||||
assertNotNull("file load files", buildRule.getProject().getProperty("testLoadAFileEnc")); | |||||
} | } | ||||
/** | /** | ||||
* A unit test for JUnit | * A unit test for JUnit | ||||
*/ | */ | ||||
@Test | |||||
public void testEvalProps() | public void testEvalProps() | ||||
throws BuildException { | throws BuildException { | ||||
executeTarget("testEvalProps"); | |||||
if(project.getProperty("testEvalProps").indexOf("rain")<0) { | |||||
buildRule.executeTarget("testEvalProps"); | |||||
if(buildRule.getProject().getProperty("testEvalProps").indexOf("rain")<0) { | |||||
fail("property eval broken"); | fail("property eval broken"); | ||||
} | } | ||||
} | } | ||||
@@ -125,10 +141,11 @@ public class LoadFileTest extends BuildFileTest { | |||||
/** | /** | ||||
* Test FilterChain and FilterReaders | * Test FilterChain and FilterReaders | ||||
*/ | */ | ||||
@Test | |||||
public void testFilterChain() | public void testFilterChain() | ||||
throws BuildException { | throws BuildException { | ||||
executeTarget("testFilterChain"); | |||||
if(project.getProperty("testFilterChain").indexOf("World!")<0) { | |||||
buildRule.executeTarget("testFilterChain"); | |||||
if(buildRule.getProject().getProperty("testFilterChain").indexOf("World!")<0) { | |||||
fail("Filter Chain broken"); | fail("Filter Chain broken"); | ||||
} | } | ||||
} | } | ||||
@@ -136,20 +153,18 @@ public class LoadFileTest extends BuildFileTest { | |||||
/** | /** | ||||
* Test StripJavaComments filterreader functionality. | * Test StripJavaComments filterreader functionality. | ||||
*/ | */ | ||||
@Test | |||||
public final void testStripJavaComments() | public final void testStripJavaComments() | ||||
throws BuildException { | throws BuildException { | ||||
executeTarget("testStripJavaComments"); | |||||
final String expected = project.getProperty("expected"); | |||||
final String generated = project.getProperty("testStripJavaComments"); | |||||
buildRule.executeTarget("testStripJavaComments"); | |||||
final String expected = buildRule.getProject().getProperty("expected"); | |||||
final String generated = buildRule.getProject().getProperty("testStripJavaComments"); | |||||
assertEquals(expected, generated); | assertEquals(expected, generated); | ||||
} | } | ||||
/** | |||||
* A unit test for JUnit | |||||
*/ | |||||
public void testOneLine() | |||||
throws BuildException { | |||||
expectPropertySet("testOneLine","testOneLine","1,2,3,4"); | |||||
@Test | |||||
public void testOneLine() { | |||||
buildRule.executeTarget("testOneLine"); | |||||
assertEquals("1,2,3,4", buildRule.getProject().getProperty("testOneLine")); | |||||
} | } | ||||
} | } |
@@ -19,124 +19,167 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class MacroDefTest extends BuildFileTest { | |||||
public MacroDefTest(String name) { | |||||
super(name); | |||||
} | |||||
public class MacroDefTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/macrodef.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/macrodef.xml"); | |||||
} | } | ||||
@Test | |||||
public void testSimple() { | public void testSimple() { | ||||
expectLog("simple", "Hello World"); | |||||
buildRule.executeTarget("simple"); | |||||
assertEquals("Hello World", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testText() { | public void testText() { | ||||
expectLog("text", "Inner Text"); | |||||
buildRule.executeTarget("text"); | |||||
assertEquals("Inner Text", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testDuplicateAttribute() { | public void testDuplicateAttribute() { | ||||
expectBuildException( | |||||
"duplicate.attribute", | |||||
"the attribute text has already been specified"); | |||||
try { | |||||
buildRule.executeTarget("duplicate.attribute"); | |||||
fail("BuildException expected: the attribute text has already been specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testDuplicateElement() { | public void testDuplicateElement() { | ||||
expectBuildException( | |||||
"duplicate.element", | |||||
"the element text has already been specified"); | |||||
try { | |||||
buildRule.executeTarget("duplicate.element"); | |||||
fail("BuildException expected: the element text has already been specified"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testUri() { | public void testUri() { | ||||
expectLog("uri", "Hello World"); | |||||
buildRule.executeTarget("uri"); | |||||
assertEquals("Hello World", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testNested() { | public void testNested() { | ||||
expectLog("nested", "A nested element"); | |||||
buildRule.executeTarget("nested"); | |||||
assertEquals("A nested element", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testDouble() { | public void testDouble() { | ||||
expectLog( | |||||
"double", | |||||
"@{prop} is 'property', value of ${property} is 'A property value'"); | |||||
buildRule.executeTarget("double"); | |||||
assertEquals("@{prop} is 'property', value of ${property} is 'A property value'", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testIgnoreCase() { | public void testIgnoreCase() { | ||||
expectLog( | |||||
"ignorecase", | |||||
"a is ab is b"); | |||||
buildRule.executeTarget("ignorecase"); | |||||
assertEquals("a is ab is b", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testIgnoreElementCase() { | public void testIgnoreElementCase() { | ||||
expectLog( | |||||
"ignore-element-case", | |||||
"nested elementnested element"); | |||||
buildRule.executeTarget("ignore-element-case"); | |||||
assertEquals("nested elementnested element", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testTextElement() { | public void testTextElement() { | ||||
expectLogContaining( | |||||
"textelement", "Hello world"); | |||||
buildRule.executeTarget("textelement"); | |||||
assertContains("Hello world", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testTextTrim() { | public void testTextTrim() { | ||||
expectLogContaining( | |||||
"text.trim", "[Hello world]"); | |||||
buildRule.executeTarget("text.trim"); | |||||
assertContains("[Hello world]", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testDuplicateTextName() { | public void testDuplicateTextName() { | ||||
expectBuildException( | |||||
"duplicatetextname", | |||||
"the name \"text\" is already used as an attribute"); | |||||
try { | |||||
buildRule.executeTarget("duplicatetextname"); | |||||
fail("BuildException expected: the name \"text\" is already used as an attribute"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testDuplicateTextName2() { | public void testDuplicateTextName2() { | ||||
expectBuildException( | |||||
"duplicatetextname2", | |||||
"the attribute name \"text\" has already been used by the text element"); | |||||
try { | |||||
buildRule.executeTarget("duplicatetextname2"); | |||||
fail("BuildException expected: the attribute name \"text\" has already been used by the text element"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testEscape() { | public void testEscape() { | ||||
expectLog( | |||||
"escape", | |||||
"a@b or a@b is avalue@bvalue"); | |||||
buildRule.executeTarget("escape"); | |||||
assertEquals("a@b or a@b is avalue@bvalue", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testAttributeDescription() { | public void testAttributeDescription() { | ||||
expectLog( | |||||
"attribute.description", | |||||
"description is hello world"); | |||||
buildRule.executeTarget("attribute.description"); | |||||
assertEquals("description is hello world", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testOverrideDefault() { | public void testOverrideDefault() { | ||||
expectLog( | |||||
"override.default", | |||||
"value is new"); | |||||
buildRule.executeTarget("override.default"); | |||||
assertEquals("value is new", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testImplicit() { | public void testImplicit() { | ||||
expectLog( | |||||
"implicit", "Before implicitIn implicitAfter implicit"); | |||||
buildRule.executeTarget("implicit"); | |||||
assertEquals("Before implicitIn implicitAfter implicit", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testImplicitNotOptional() { | public void testImplicitNotOptional() { | ||||
expectSpecificBuildException( | |||||
"implicit.notoptional", | |||||
"Missing nested elements for implicit element implicit", | |||||
"Missing nested elements for implicit element implicit"); | |||||
try { | |||||
buildRule.executeTarget("implicit.notoptional"); | |||||
fail("BuildException expected: Missing nested elements for implicit element implicit"); | |||||
} catch (BuildException ex) { | |||||
assertEquals("Missing nested elements for implicit element implicit", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testImplicitOptional() { | public void testImplicitOptional() { | ||||
expectLog( | |||||
"implicit.optional", "Before implicitAfter implicit"); | |||||
buildRule.executeTarget("implicit.optional"); | |||||
assertEquals("Before implicitAfter implicit", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testImplicitExplicit() { | public void testImplicitExplicit() { | ||||
expectSpecificBuildException( | |||||
"implicit.explicit", | |||||
"Only one element allowed when using implicit elements", | |||||
"Only one element allowed when using implicit elements"); | |||||
try { | |||||
buildRule.executeTarget("implicit.explicit"); | |||||
fail("BuildException expected: Only one element allowed when using implicit elements"); | |||||
} catch (BuildException ex) { | |||||
assertEquals("Only one element allowed when using implicit elements", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testBackTraceOff() { | public void testBackTraceOff() { | ||||
try { | try { | ||||
executeTarget("backtraceoff"); | |||||
buildRule.executeTarget("backtraceoff"); | |||||
} catch (BuildException ex) { | } catch (BuildException ex) { | ||||
if (ex.getMessage().indexOf("following error occurred") != -1) { | if (ex.getMessage().indexOf("following error occurred") != -1) { | ||||
fail("error message contained backtrace - " + ex.getMessage()); | fail("error message contained backtrace - " + ex.getMessage()); | ||||
@@ -144,15 +187,20 @@ public class MacroDefTest extends BuildFileTest { | |||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testBackTrace() { | public void testBackTrace() { | ||||
expectBuildExceptionContaining( | |||||
"backtraceon", | |||||
"Checking if a back trace is created", | |||||
"following error occurred"); | |||||
try { | |||||
buildRule.executeTarget("backtraceon"); | |||||
fail("BuildException expected: Checking if a back trace is created"); | |||||
} catch (BuildException ex) { | |||||
assertContains("following error occurred", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testTopLevelText() { | public void testTopLevelText() { | ||||
expectLogContaining("top-level-text", "Hello World"); | |||||
buildRule.executeTarget("top-level-text"); | |||||
assertContains("Hello World", buildRule.getLog()); | |||||
} | } | ||||
} | } | ||||
@@ -17,47 +17,82 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.io.InputStream; | import java.io.InputStream; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.net.URL; | import java.net.URL; | ||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
public class MakeUrlTest extends BuildFileTest { | |||||
public MakeUrlTest(String s) { | |||||
super(s); | |||||
} | |||||
public class MakeUrlTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/makeurl.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/makeurl.xml"); | |||||
} | } | ||||
@Test | |||||
public void testEmpty() { | public void testEmpty() { | ||||
expectBuildExceptionContaining("testEmpty", "missing property", "property"); | |||||
try { | |||||
buildRule.executeTarget("testEmpty"); | |||||
fail("BuildException expected: missing property"); | |||||
} catch (BuildException ex) { | |||||
assertContains("property", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testNoProperty() { | public void testNoProperty() { | ||||
expectBuildExceptionContaining("testNoProperty", "missing property", "property"); | |||||
try { | |||||
buildRule.executeTarget("testNoProperty"); | |||||
fail("BuildException expected: missing property"); | |||||
} catch (BuildException ex) { | |||||
assertContains("property", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testNoFile() { | public void testNoFile() { | ||||
expectBuildExceptionContaining("testNoFile", "missing file", "file"); | |||||
try { | |||||
buildRule.executeTarget("testNoFile"); | |||||
fail("BuildException expected: missing file"); | |||||
} catch (BuildException ex) { | |||||
assertContains("file", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testValidation() { | public void testValidation() { | ||||
expectBuildExceptionContaining("testValidation", MakeUrl.ERROR_MISSING_FILE, "file"); | |||||
try { | |||||
buildRule.executeTarget("testValidation"); | |||||
fail("BuildException expected: " + MakeUrl.ERROR_MISSING_FILE); | |||||
} catch (BuildException ex) { | |||||
assertContains("file", ex.getMessage()); | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testWorks() { | public void testWorks() { | ||||
executeTarget("testWorks"); | |||||
buildRule.executeTarget("testWorks"); | |||||
assertPropertyContains("testWorks", "file:"); | assertPropertyContains("testWorks", "file:"); | ||||
assertPropertyContains("testWorks", "/foo"); | assertPropertyContains("testWorks", "/foo"); | ||||
} | } | ||||
@Test | |||||
public void testIllegalChars() { | public void testIllegalChars() { | ||||
executeTarget("testIllegalChars"); | |||||
buildRule.executeTarget("testIllegalChars"); | |||||
assertPropertyContains("testIllegalChars", "file:"); | assertPropertyContains("testIllegalChars", "file:"); | ||||
assertPropertyContains("testIllegalChars", "fo%20o%25"); | assertPropertyContains("testIllegalChars", "fo%20o%25"); | ||||
} | } | ||||
@@ -67,8 +102,9 @@ public class MakeUrlTest extends BuildFileTest { | |||||
* | * | ||||
* @throws IOException | * @throws IOException | ||||
*/ | */ | ||||
@Test | |||||
public void testRoundTrip() throws IOException { | public void testRoundTrip() throws IOException { | ||||
executeTarget("testRoundTrip"); | |||||
buildRule.executeTarget("testRoundTrip"); | |||||
assertPropertyContains("testRoundTrip", "file:"); | assertPropertyContains("testRoundTrip", "file:"); | ||||
String property = getProperty("testRoundTrip"); | String property = getProperty("testRoundTrip"); | ||||
URL url = new URL(property); | URL url = new URL(property); | ||||
@@ -76,26 +112,30 @@ public class MakeUrlTest extends BuildFileTest { | |||||
instream.close(); | instream.close(); | ||||
} | } | ||||
@Test | |||||
public void testIllegalCombinations() { | public void testIllegalCombinations() { | ||||
executeTarget("testIllegalCombinations"); | |||||
buildRule.executeTarget("testIllegalCombinations"); | |||||
assertPropertyContains("testIllegalCombinations", "/foo"); | assertPropertyContains("testIllegalCombinations", "/foo"); | ||||
assertPropertyContains("testIllegalCombinations", ".xml"); | assertPropertyContains("testIllegalCombinations", ".xml"); | ||||
} | } | ||||
@Test | |||||
public void testFileset() { | public void testFileset() { | ||||
executeTarget("testFileset"); | |||||
buildRule.executeTarget("testFileset"); | |||||
assertPropertyContains("testFileset", ".xml "); | assertPropertyContains("testFileset", ".xml "); | ||||
assertPropertyEndsWith("testFileset", ".xml"); | assertPropertyEndsWith("testFileset", ".xml"); | ||||
} | } | ||||
@Test | |||||
public void testFilesetSeparator() { | public void testFilesetSeparator() { | ||||
executeTarget("testFilesetSeparator"); | |||||
buildRule.executeTarget("testFilesetSeparator"); | |||||
assertPropertyContains("testFilesetSeparator", ".xml\",\""); | assertPropertyContains("testFilesetSeparator", ".xml\",\""); | ||||
assertPropertyEndsWith("testFilesetSeparator", ".xml"); | assertPropertyEndsWith("testFilesetSeparator", ".xml"); | ||||
} | } | ||||
@Test | |||||
public void testPath() { | public void testPath() { | ||||
executeTarget("testPath"); | |||||
buildRule.executeTarget("testPath"); | |||||
assertPropertyContains("testPath", "makeurl.xml"); | assertPropertyContains("testPath", "makeurl.xml"); | ||||
} | } | ||||
@@ -131,6 +171,6 @@ public class MakeUrlTest extends BuildFileTest { | |||||
* @return | * @return | ||||
*/ | */ | ||||
protected String getProperty(String property) { | protected String getProperty(String property) { | ||||
return project.getProperty(property); | |||||
return buildRule.getProject().getProperty(property); | |||||
} | } | ||||
} | } |
@@ -18,57 +18,96 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.taskdefs.condition.Os; | |||||
import org.apache.tools.ant.util.regexp.RegexpMatcherFactory; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNull; | |||||
import static org.junit.Assert.fail; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.taskdefs.condition.Os; | |||||
import org.apache.tools.ant.util.regexp.RegexpMatcherFactory; | |||||
import org.junit.Assume; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
* Tests <bm:manifestclasspath>. | * Tests <bm:manifestclasspath>. | ||||
*/ | */ | ||||
public class ManifestClassPathTest | |||||
extends BuildFileTest { | |||||
public class ManifestClassPathTest { | |||||
@Rule | |||||
public BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/manifestclasspath.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/manifestclasspath.xml"); | |||||
} | } | ||||
@Test | |||||
public void testBadDirectory() { | public void testBadDirectory() { | ||||
expectBuildExceptionContaining("test-bad-directory", "bad-jar-dir", | |||||
"Jar's directory not found:"); | |||||
assertPropertyUnset("jar.classpath"); | |||||
try { | |||||
buildRule.executeTarget("test-bad-directory"); | |||||
fail("Build exception should have been thrown on bad directory"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Jar's directory not found:", ex.getMessage()); | |||||
} | |||||
assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||||
} | } | ||||
@Test | |||||
public void testBadNoProperty() { | public void testBadNoProperty() { | ||||
expectBuildExceptionContaining("test-bad-no-property", "no-property", | |||||
"Missing 'property' attribute!"); | |||||
assertPropertyUnset("jar.classpath"); | |||||
try { | |||||
buildRule.executeTarget("test-bad-no-property"); | |||||
fail("Build exception should have been thrown on no property"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Missing 'property' attribute!", ex.getMessage()); | |||||
} | |||||
assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||||
} | } | ||||
@Test | |||||
public void testBadPropertyExists() { | public void testBadPropertyExists() { | ||||
expectBuildExceptionContaining("test-bad-property-exists", | |||||
"property-exits", "Property 'jar.classpath' already set!"); | |||||
assertPropertyEquals("jar.classpath", "exists"); | |||||
try { | |||||
buildRule.executeTarget("test-bad-property-exists"); | |||||
fail("Build exception should have been thrown on bad property"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Property 'jar.classpath' already set!", ex.getMessage()); | |||||
} | |||||
assertEquals(buildRule.getProject().getProperty("jar.classpath"), "exists"); | |||||
} | } | ||||
@Test | |||||
public void testBadNoJarfile() { | public void testBadNoJarfile() { | ||||
expectBuildExceptionContaining("test-bad-no-jarfile", "no-jarfile", | |||||
"Missing 'jarfile' attribute!"); | |||||
assertPropertyUnset("jar.classpath"); | |||||
try { | |||||
buildRule.executeTarget("test-bad-no-jarfile"); | |||||
fail("Build exception should have been thrown on bad jar file"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Missing 'jarfile' attribute!", ex.getMessage()); | |||||
} | |||||
assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||||
} | } | ||||
@Test | |||||
public void testBadNoClassPath() { | public void testBadNoClassPath() { | ||||
expectBuildExceptionContaining("test-bad-no-classpath", "no-classpath", | |||||
"Missing nested <classpath>!"); | |||||
assertPropertyUnset("jar.classpath"); | |||||
try { | |||||
buildRule.executeTarget("test-bad-no-classpath"); | |||||
fail("Build exception should have been thrown on no classpath"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Missing nested <classpath>!", ex.getMessage()); | |||||
} | |||||
assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||||
} | } | ||||
@Test | |||||
public void testParentLevel1() { | public void testParentLevel1() { | ||||
executeTarget("test-parent-level1"); | |||||
buildRule.executeTarget("test-parent-level1"); | |||||
assertPropertyEquals("jar.classpath", "dsp-core/ " + | |||||
assertEquals(buildRule.getProject().getProperty("jar.classpath"), "dsp-core/ " + | |||||
"dsp-pres/ " + | "dsp-pres/ " + | ||||
"dsp-void/ " + | "dsp-void/ " + | ||||
"../generated/dsp-core/ " + | "../generated/dsp-core/ " + | ||||
@@ -79,10 +118,11 @@ public class ManifestClassPathTest | |||||
"../resources/dsp-void/"); | "../resources/dsp-void/"); | ||||
} | } | ||||
@Test | |||||
public void testParentLevel2() { | public void testParentLevel2() { | ||||
executeTarget("test-parent-level2"); | |||||
buildRule.executeTarget("test-parent-level2"); | |||||
assertPropertyEquals("jar.classpath", "../dsp-core/ " + | |||||
assertEquals(buildRule.getProject().getProperty("jar.classpath"), "../dsp-core/ " + | |||||
"../dsp-pres/ " + | "../dsp-pres/ " + | ||||
"../dsp-void/ " + | "../dsp-void/ " + | ||||
"../../generated/dsp-core/ " + | "../../generated/dsp-core/ " + | ||||
@@ -93,19 +133,23 @@ public class ManifestClassPathTest | |||||
"../../resources/dsp-void/"); | "../../resources/dsp-void/"); | ||||
} | } | ||||
@Test | |||||
public void testParentLevel2TooDeep() { | public void testParentLevel2TooDeep() { | ||||
expectBuildExceptionContaining("test-parent-level2-too-deep", "nopath", | |||||
"No suitable relative path from "); | |||||
assertPropertyUnset("jar.classpath"); | |||||
try { | |||||
buildRule.executeTarget("test-parent-level2-too-deep"); | |||||
fail("Build exception should have been thrown on no suitable path"); | |||||
} catch (BuildException ex) { | |||||
assertContains("No suitable relative path from ", ex.getMessage()); | |||||
} | |||||
assertNull(buildRule.getProject().getProperty("jar.classpath")); | |||||
} | } | ||||
@Test | |||||
public void testPseudoTahoeRefid() { | public void testPseudoTahoeRefid() { | ||||
if (!RegexpMatcherFactory.regexpMatcherPresent(project)) { | |||||
System.out.println("Test 'testPseudoTahoeRefid' skipped because no regexp matcher is present."); | |||||
return; | |||||
} | |||||
executeTarget("test-pseudo-tahoe-refid"); | |||||
assertPropertyEquals("jar.classpath", "classes/dsp-core/ " + | |||||
Assume.assumeTrue("No regexp matcher is present", RegexpMatcherFactory.regexpMatcherPresent(buildRule.getProject())); | |||||
buildRule.executeTarget("test-pseudo-tahoe-refid"); | |||||
assertEquals(buildRule.getProject().getProperty("jar.classpath"), "classes/dsp-core/ " + | |||||
"classes/dsp-pres/ " + | "classes/dsp-pres/ " + | ||||
"classes/dsp-void/ " + | "classes/dsp-void/ " + | ||||
"generated/dsp-core/ " + | "generated/dsp-core/ " + | ||||
@@ -113,13 +157,12 @@ public class ManifestClassPathTest | |||||
"resources/dsp-pres/"); | "resources/dsp-pres/"); | ||||
} | } | ||||
@Test | |||||
public void testPseudoTahoeNested() { | public void testPseudoTahoeNested() { | ||||
if (!RegexpMatcherFactory.regexpMatcherPresent(project)) { | |||||
System.out.println("Test 'testPseudoTahoeNested' skipped because no regexp matcher is present."); | |||||
return; | |||||
} | |||||
executeTarget("test-pseudo-tahoe-nested"); | |||||
assertPropertyEquals("jar.classpath", "classes/dsp-core/ " + | |||||
Assume.assumeTrue("No regexp matcher is present", RegexpMatcherFactory.regexpMatcherPresent(buildRule.getProject())); | |||||
buildRule.executeTarget("test-pseudo-tahoe-nested"); | |||||
assertEquals(buildRule.getProject().getProperty("jar.classpath"), "classes/dsp-core/ " + | |||||
"classes/dsp-pres/ " + | "classes/dsp-pres/ " + | ||||
"classes/dsp-void/ " + | "classes/dsp-void/ " + | ||||
"generated/dsp-core/ " + | "generated/dsp-core/ " + | ||||
@@ -127,10 +170,11 @@ public class ManifestClassPathTest | |||||
"resources/dsp-pres/"); | "resources/dsp-pres/"); | ||||
} | } | ||||
@Test | |||||
public void testParentLevel2WithJars() { | public void testParentLevel2WithJars() { | ||||
executeTarget("test-parent-level2-with-jars"); | |||||
buildRule.executeTarget("test-parent-level2-with-jars"); | |||||
assertPropertyEquals("jar.classpath", "../../lib/acme-core.jar " + | |||||
assertEquals(buildRule.getProject().getProperty("jar.classpath"), "../../lib/acme-core.jar " + | |||||
"../../lib/acme-pres.jar " + | "../../lib/acme-pres.jar " + | ||||
"../dsp-core/ " + | "../dsp-core/ " + | ||||
"../dsp-pres/ " + | "../dsp-pres/ " + | ||||
@@ -142,64 +186,64 @@ public class ManifestClassPathTest | |||||
"../../resources/dsp-pres/ " + | "../../resources/dsp-pres/ " + | ||||
"../../resources/dsp-void/"); | "../../resources/dsp-void/"); | ||||
} | } | ||||
@Test | |||||
public void testInternationalGerman() { | public void testInternationalGerman() { | ||||
executeTarget("international-german"); | |||||
expectLogContaining("run-two-jars", "beta alpha"); | |||||
buildRule.executeTarget("international-german"); | |||||
buildRule.executeTarget("run-two-jars"); | |||||
assertContains("beta alpha", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testInternationalHebrew() { | public void testInternationalHebrew() { | ||||
if (!Os.isFamily("windows")) { | |||||
executeTarget("international-hebrew"); | |||||
expectLogContaining("run-two-jars", "beta alpha"); | |||||
} else { | |||||
System.out.println("Test with hebrew path not attempted under Windows"); | |||||
} | |||||
Assume.assumeFalse("Test with hebrew path not attempted under Windows", Os.isFamily("windows")); | |||||
buildRule.executeTarget("international-hebrew"); | |||||
buildRule.executeTarget("run-two-jars"); | |||||
assertContains("beta alpha", buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testSameWindowsDrive() { | public void testSameWindowsDrive() { | ||||
if (!Os.isFamily("windows")) { | |||||
System.out.println("Test with drive letters only run on windows"); | |||||
} else { | |||||
executeTarget("testSameDrive"); | |||||
assertPropertyEquals("cp", "../a/b/x.jar"); | |||||
} | |||||
Assume.assumeTrue("Test with drive letters only run on windows", Os.isFamily("windows")); | |||||
buildRule.executeTarget("testSameDrive"); | |||||
assertEquals(buildRule.getProject().getProperty("cp"), "../a/b/x.jar"); | |||||
} | } | ||||
@Test | |||||
public void testDifferentWindowsDrive() { | public void testDifferentWindowsDrive() { | ||||
if (!Os.isFamily("windows")) { | |||||
System.out.println("Test with drive letters only run on windows"); | |||||
} else { | |||||
// the lines below try to find a drive name different than the one containing the temp dir | |||||
// if the temp dir is C will try to use D | |||||
// if the temp dir is on D or other will try to use C | |||||
File tmpdir = new File(System.getProperty("java.io.tmpdir")); | |||||
String driveLetter = "C"; | |||||
try { | |||||
String tmpCanonicalPath = tmpdir.getCanonicalPath(); | |||||
driveLetter = tmpCanonicalPath.substring(1).toUpperCase(); | |||||
} catch (IOException ioe) { | |||||
System.out.println("exception happened getting canonical path of java.io.tmpdir : " + ioe.getMessage()); | |||||
} | |||||
String altDriveLetter = null; | |||||
try { | |||||
if ("C".equals(driveLetter)) { | |||||
altDriveLetter = "D"; | |||||
} else { | |||||
altDriveLetter = "C"; | |||||
} | |||||
new java.io.File(altDriveLetter + ":/foo.txt").getCanonicalPath(); | |||||
} catch (java.io.IOException e) { | |||||
System.out.println("drive " + altDriveLetter + ": doesn't exist or is not ready," | |||||
+ " skipping test"); | |||||
return; | |||||
Assume.assumeTrue("Test with drive letters only run on windows", Os.isFamily("windows")); | |||||
// the lines below try to find a drive name different than the one containing the temp dir | |||||
// if the temp dir is C will try to use D | |||||
// if the temp dir is on D or other will try to use C | |||||
File tmpdir = new File(System.getProperty("java.io.tmpdir")); | |||||
String driveLetter = "C"; | |||||
try { | |||||
String tmpCanonicalPath = tmpdir.getCanonicalPath(); | |||||
driveLetter = tmpCanonicalPath.substring(0, 1).toUpperCase(); | |||||
} catch (IOException ioe) { | |||||
System.out.println("exception happened getting canonical path of java.io.tmpdir : " + ioe.getMessage()); | |||||
} | |||||
String altDriveLetter = null; | |||||
try { | |||||
if ("C".equals(driveLetter)) { | |||||
altDriveLetter = "D"; | |||||
} else { | |||||
altDriveLetter = "C"; | |||||
} | } | ||||
project.setProperty("altDriveLetter", altDriveLetter); | |||||
expectBuildExceptionContaining("testDifferentDrive", | |||||
"different drive", | |||||
"No suitable relative path from "); | |||||
assertPropertyUnset("cp"); | |||||
new java.io.File(altDriveLetter + ":/foo.txt").getCanonicalPath(); | |||||
} catch (java.io.IOException e) { | |||||
Assume.assumeNoException("Drive " + altDriveLetter + ": doesn't exist or is not ready", e); | |||||
} | } | ||||
buildRule.getProject().setProperty("altDriveLetter", altDriveLetter); | |||||
try { | |||||
buildRule.executeTarget("testDifferentDrive"); | |||||
fail("Build exception should have been thrown on no alternative drive"); | |||||
} catch (BuildException ex) { | |||||
assertContains("No suitable relative path from ", ex.getMessage()); | |||||
} | |||||
assertNull(buildRule.getProject().getProperty("cp")); | |||||
} | } | ||||
} // END class ManifestClassPathTest | } // END class ManifestClassPathTest | ||||
@@ -26,14 +26,28 @@ import java.util.Enumeration; | |||||
import java.util.HashSet; | import java.util.HashSet; | ||||
import java.util.Set; | import java.util.Set; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.apache.tools.ant.AntAssert.assertContains; | |||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertNotNull; | |||||
import static org.junit.Assert.assertTrue; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
* Testcase for the Manifest class used in the jar task. | * Testcase for the Manifest class used in the jar task. | ||||
* | * | ||||
*/ | */ | ||||
public class ManifestTest extends BuildFileTest { | |||||
public class ManifestTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
public static final String EXPANDED_MANIFEST | public static final String EXPANDED_MANIFEST | ||||
= "src/etc/testcases/taskdefs/manifests/META-INF/MANIFEST.MF"; | = "src/etc/testcases/taskdefs/manifests/META-INF/MANIFEST.MF"; | ||||
@@ -53,23 +67,23 @@ public class ManifestTest extends BuildFileTest { | |||||
public static final String VALUE = "NOT_LONG"; | public static final String VALUE = "NOT_LONG"; | ||||
public ManifestTest(String name) { | |||||
super(name); | |||||
} | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/manifest.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/manifest.xml"); | |||||
} | } | ||||
@After | |||||
public void tearDown() { | public void tearDown() { | ||||
executeTarget("clean"); | |||||
buildRule.executeTarget("clean"); | |||||
} | } | ||||
/** | /** | ||||
* Empty manifest - is OK | * Empty manifest - is OK | ||||
*/ | */ | ||||
@Test | |||||
public void test1() throws ManifestException, IOException { | public void test1() throws ManifestException, IOException { | ||||
executeTarget("test1"); | |||||
buildRule.executeTarget("test1"); | |||||
Manifest manifest = getManifest(EXPANDED_MANIFEST); | Manifest manifest = getManifest(EXPANDED_MANIFEST); | ||||
String version = manifest.getManifestVersion(); | String version = manifest.getManifestVersion(); | ||||
assertEquals("Manifest was not created with correct version - ", "1.0", version); | assertEquals("Manifest was not created with correct version - ", "1.0", version); | ||||
@@ -78,8 +92,9 @@ public class ManifestTest extends BuildFileTest { | |||||
/** | /** | ||||
* Simple Manifest with version 2.0 | * Simple Manifest with version 2.0 | ||||
*/ | */ | ||||
@Test | |||||
public void test2() throws ManifestException, IOException { | public void test2() throws ManifestException, IOException { | ||||
executeTarget("test2"); | |||||
buildRule.executeTarget("test2"); | |||||
Manifest manifest = getManifest(EXPANDED_MANIFEST); | Manifest manifest = getManifest(EXPANDED_MANIFEST); | ||||
String version = manifest.getManifestVersion(); | String version = manifest.getManifestVersion(); | ||||
assertEquals("Manifest was not created with correct version - ", "2.0", version); | assertEquals("Manifest was not created with correct version - ", "2.0", version); | ||||
@@ -88,25 +103,36 @@ public class ManifestTest extends BuildFileTest { | |||||
/** | /** | ||||
* Malformed manifest - no : on the line | * Malformed manifest - no : on the line | ||||
*/ | */ | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
expectBuildExceptionContaining("test3", "Manifest is invalid - no colon on header line", | |||||
"Invalid Manifest"); | |||||
try { | |||||
buildRule.executeTarget("test3"); | |||||
fail("BuildException expected: Manifest is invalid - no colon on header line"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Invalid Manifest", ex.getMessage()); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Malformed manifest - starts with continuation line | * Malformed manifest - starts with continuation line | ||||
*/ | */ | ||||
@Test | |||||
public void test4() { | public void test4() { | ||||
expectBuildExceptionContaining("test4", "Manifest is invalid - section starts with continuation line", | |||||
"Invalid Manifest"); | |||||
try { | |||||
buildRule.executeTarget("test4"); | |||||
fail("BuildException expected: Manifest is invalid - section starts with continuation line"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Invalid Manifest", ex.getMessage()); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Malformed manifest - Name attribute in main section | * Malformed manifest - Name attribute in main section | ||||
*/ | */ | ||||
@Test | |||||
public void test5() { | public void test5() { | ||||
executeTarget("test5"); | |||||
String output = getLog(); | |||||
buildRule.executeTarget("test5"); | |||||
String output = buildRule.getLog(); | |||||
boolean hasWarning = output.indexOf("Manifest warning: \"Name\" attributes should not occur in the main section") != -1; | boolean hasWarning = output.indexOf("Manifest warning: \"Name\" attributes should not occur in the main section") != -1; | ||||
assertTrue("Expected warning about Name in main section", hasWarning); | assertTrue("Expected warning about Name in main section", hasWarning); | ||||
} | } | ||||
@@ -114,29 +140,37 @@ public class ManifestTest extends BuildFileTest { | |||||
/** | /** | ||||
* New Section not starting with Name attribute. | * New Section not starting with Name attribute. | ||||
*/ | */ | ||||
@Test | |||||
public void test6() { | public void test6() { | ||||
expectBuildExceptionContaining("test6", "Manifest is invalid - section starts with incorrect attribute", | |||||
"Invalid Manifest"); | |||||
String output = getLog(); | |||||
try { | |||||
buildRule.executeTarget("test6"); | |||||
fail("BuildException expected: Manifest is invalid - section starts with incorrect attribute"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Invalid Manifest", ex.getMessage()); | |||||
} | |||||
String output = buildRule.getLog(); | |||||
boolean hasWarning = output.indexOf("Manifest sections should start with a \"Name\" attribute") != -1; | boolean hasWarning = output.indexOf("Manifest sections should start with a \"Name\" attribute") != -1; | ||||
assertTrue("Expected warning about section not starting with Name: attribute", hasWarning); | assertTrue("Expected warning about section not starting with Name: attribute", hasWarning); | ||||
} | } | ||||
/** | /** | ||||
* From attribute is illegal | * From attribute is illegal | ||||
*/ | */ | ||||
@Test | |||||
public void test7() { | public void test7() { | ||||
executeTarget("test7"); | |||||
buildRule.executeTarget("test7"); | |||||
boolean hasWarning = getLog().indexOf(Manifest.ERROR_FROM_FORBIDDEN) != -1; | |||||
boolean hasWarning = buildRule.getLog().indexOf(Manifest.ERROR_FROM_FORBIDDEN) != -1; | |||||
assertTrue("Expected warning about From: attribute", hasWarning); | assertTrue("Expected warning about From: attribute", hasWarning); | ||||
} | } | ||||
/** | /** | ||||
* Inline manifest - OK | * Inline manifest - OK | ||||
*/ | */ | ||||
@Test | |||||
public void test8() throws IOException, ManifestException { | public void test8() throws IOException, ManifestException { | ||||
executeTarget("test8"); | |||||
buildRule.executeTarget("test8"); | |||||
Manifest manifest = getManifest(EXPANDED_MANIFEST); | Manifest manifest = getManifest(EXPANDED_MANIFEST); | ||||
Manifest.Section mainSection = manifest.getMainSection(); | Manifest.Section mainSection = manifest.getMainSection(); | ||||
String classpath = mainSection.getAttributeValue("class-path"); | String classpath = mainSection.getAttributeValue("class-path"); | ||||
@@ -150,48 +184,75 @@ public class ManifestTest extends BuildFileTest { | |||||
/** | /** | ||||
* Inline manifest - Invalid since has a Name attribute in the section element | * Inline manifest - Invalid since has a Name attribute in the section element | ||||
*/ | */ | ||||
@Test | |||||
public void test9() { | public void test9() { | ||||
expectBuildExceptionContaining("test9", "Construction is invalid - Name attribute should not be used", | |||||
"Specify the section name using the \"name\" attribute of the <section> element"); | |||||
try { | |||||
buildRule.executeTarget("test9"); | |||||
fail("BuildException expected: Construction is invalid - Name attribute should not be used"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Specify the section name using the \"name\" attribute of the <section> element", | |||||
ex.getMessage()); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Inline manifest - Invalid attribute without name | * Inline manifest - Invalid attribute without name | ||||
*/ | */ | ||||
@Test | |||||
public void test10() { | public void test10() { | ||||
expectBuildExceptionContaining("test10", "Attribute has no name", | |||||
"Attributes must have name and value"); | |||||
try { | |||||
buildRule.executeTarget("test10"); | |||||
fail("BuildException expected: Attribute has no name"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Attributes must have name and value", ex.getMessage()); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Inline manifest - Invalid attribute without value | * Inline manifest - Invalid attribute without value | ||||
*/ | */ | ||||
@Test | |||||
public void test11() { | public void test11() { | ||||
expectBuildExceptionContaining("test11", "Attribute has no value", | |||||
"Attributes must have name and value"); | |||||
try { | |||||
buildRule.executeTarget("test11"); | |||||
fail("BuildException expected: Attribute has no value"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Attributes must have name and value", ex.getMessage()); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Inline manifest - Invalid attribute without value | * Inline manifest - Invalid attribute without value | ||||
*/ | */ | ||||
@Test | |||||
public void test12() { | public void test12() { | ||||
expectBuildExceptionContaining("test12", "Section with no name", | |||||
"Sections must have a name"); | |||||
try { | |||||
buildRule.executeTarget("test12"); | |||||
fail("BuildException expected: Section with no name"); | |||||
} catch (BuildException ex) { | |||||
assertContains("Sections must have a name", ex.getMessage()); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Inline manifest - Duplicate attribute | * Inline manifest - Duplicate attribute | ||||
*/ | */ | ||||
@Test | |||||
public void test13() { | public void test13() { | ||||
expectBuildExceptionContaining("test13", "Duplicate Attribute", | |||||
"The attribute \"Test\" may not occur more than once in the same section"); | |||||
try { | |||||
buildRule.executeTarget("test13"); | |||||
fail("BuildException expected: Duplicate Attribute"); | |||||
} catch (BuildException ex) { | |||||
assertContains("The attribute \"Test\" may not occur more than once in the same section", ex.getMessage()); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Inline manifest - OK since classpath entries can be duplicated. | * Inline manifest - OK since classpath entries can be duplicated. | ||||
*/ | */ | ||||
@Test | |||||
public void test14() throws IOException, ManifestException { | public void test14() throws IOException, ManifestException { | ||||
executeTarget("test14"); | |||||
buildRule.executeTarget("test14"); | |||||
Manifest manifest = getManifest(EXPANDED_MANIFEST); | Manifest manifest = getManifest(EXPANDED_MANIFEST); | ||||
Manifest.Section mainSection = manifest.getMainSection(); | Manifest.Section mainSection = manifest.getMainSection(); | ||||
String classpath = mainSection.getAttributeValue("class-path"); | String classpath = mainSection.getAttributeValue("class-path"); | ||||
@@ -202,14 +263,15 @@ public class ManifestTest extends BuildFileTest { | |||||
/** | /** | ||||
* Tets long line wrapping | * Tets long line wrapping | ||||
*/ | */ | ||||
@Test | |||||
public void testLongLine() throws IOException, ManifestException { | public void testLongLine() throws IOException, ManifestException { | ||||
Project p = getProject(); | |||||
Project p = buildRule.getProject(); | |||||
p.setUserProperty("test.longline", LONG_LINE); | p.setUserProperty("test.longline", LONG_LINE); | ||||
p.setUserProperty("test.long68name" , LONG_68_NAME); | p.setUserProperty("test.long68name" , LONG_68_NAME); | ||||
p.setUserProperty("test.long70name" , LONG_70_NAME); | p.setUserProperty("test.long70name" , LONG_70_NAME); | ||||
p.setUserProperty("test.notlongname" , NOT_LONG_NAME); | p.setUserProperty("test.notlongname" , NOT_LONG_NAME); | ||||
p.setUserProperty("test.value", VALUE); | p.setUserProperty("test.value", VALUE); | ||||
executeTarget("testLongLine"); | |||||
buildRule.executeTarget("testLongLine"); | |||||
Manifest manifest = getManifest(EXPANDED_MANIFEST); | Manifest manifest = getManifest(EXPANDED_MANIFEST); | ||||
Manifest.Section mainSection = manifest.getMainSection(); | Manifest.Section mainSection = manifest.getMainSection(); | ||||
@@ -247,8 +309,9 @@ public class ManifestTest extends BuildFileTest { | |||||
/** | /** | ||||
* Tests ordering of sections | * Tests ordering of sections | ||||
*/ | */ | ||||
@Test | |||||
public void testOrder1() throws IOException, ManifestException { | public void testOrder1() throws IOException, ManifestException { | ||||
executeTarget("testOrder1"); | |||||
buildRule.executeTarget("testOrder1"); | |||||
Manifest manifest = getManifest(EXPANDED_MANIFEST); | Manifest manifest = getManifest(EXPANDED_MANIFEST); | ||||
Enumeration e = manifest.getSectionNames(); | Enumeration e = manifest.getSectionNames(); | ||||
@@ -270,8 +333,9 @@ public class ManifestTest extends BuildFileTest { | |||||
/** | /** | ||||
* Tests ordering of sections | * Tests ordering of sections | ||||
*/ | */ | ||||
@Test | |||||
public void testOrder2() throws IOException, ManifestException { | public void testOrder2() throws IOException, ManifestException { | ||||
executeTarget("testOrder2"); | |||||
buildRule.executeTarget("testOrder2"); | |||||
Manifest manifest = getManifest(EXPANDED_MANIFEST); | Manifest manifest = getManifest(EXPANDED_MANIFEST); | ||||
Enumeration e = manifest.getSectionNames(); | Enumeration e = manifest.getSectionNames(); | ||||
@@ -293,15 +357,22 @@ public class ManifestTest extends BuildFileTest { | |||||
/** | /** | ||||
* file attribute for manifest task is required. | * file attribute for manifest task is required. | ||||
*/ | */ | ||||
@Test | |||||
public void testNoFile() { | public void testNoFile() { | ||||
expectBuildException("testNoFile", "file is required"); | |||||
try { | |||||
buildRule.executeTarget("testNoFile"); | |||||
fail("BuildException expected: file is required"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* replace changes Manifest-Version from 2.0 to 1.0 | * replace changes Manifest-Version from 2.0 to 1.0 | ||||
*/ | */ | ||||
@Test | |||||
public void testReplace() throws IOException, ManifestException { | public void testReplace() throws IOException, ManifestException { | ||||
executeTarget("testReplace"); | |||||
buildRule.executeTarget("testReplace"); | |||||
Manifest mf = getManifest("src/etc/testcases/taskdefs/mftest.mf"); | Manifest mf = getManifest("src/etc/testcases/taskdefs/mftest.mf"); | ||||
assertNotNull(mf); | assertNotNull(mf); | ||||
assertEquals(Manifest.getDefaultManifest(), mf); | assertEquals(Manifest.getDefaultManifest(), mf); | ||||
@@ -310,8 +381,9 @@ public class ManifestTest extends BuildFileTest { | |||||
/** | /** | ||||
* update keeps the Manifest-Version and adds a new attribute Foo | * update keeps the Manifest-Version and adds a new attribute Foo | ||||
*/ | */ | ||||
@Test | |||||
public void testUpdate() throws IOException, ManifestException { | public void testUpdate() throws IOException, ManifestException { | ||||
executeTarget("testUpdate"); | |||||
buildRule.executeTarget("testUpdate"); | |||||
Manifest mf = getManifest("src/etc/testcases/taskdefs/mftest.mf"); | Manifest mf = getManifest("src/etc/testcases/taskdefs/mftest.mf"); | ||||
assertNotNull(mf); | assertNotNull(mf); | ||||
assertTrue(!Manifest.getDefaultManifest().equals(mf)); | assertTrue(!Manifest.getDefaultManifest().equals(mf)); | ||||
@@ -328,28 +400,60 @@ public class ManifestTest extends BuildFileTest { | |||||
assertTrue(mfAsString.indexOf("Foo: Baz") > -1); | assertTrue(mfAsString.indexOf("Foo: Baz") > -1); | ||||
} | } | ||||
@Test | |||||
public void testFrom() { | public void testFrom() { | ||||
expectLogContaining("testFrom", Manifest.ERROR_FROM_FORBIDDEN); | |||||
buildRule.executeTarget("testFrom"); | |||||
assertContains(Manifest.ERROR_FROM_FORBIDDEN, buildRule.getLog()); | |||||
} | } | ||||
@Test | |||||
public void testIllegalName() { | public void testIllegalName() { | ||||
expectBuildException("testIllegalName", "Manifest attribute names must not contain ' '"); | |||||
try { | |||||
buildRule.executeTarget("testIllegalName"); | |||||
fail("BuildException expected: Manifest attribute names must not contain ' '"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testIllegalNameInSection() { | public void testIllegalNameInSection() { | ||||
expectBuildException("testIllegalNameInSection", "Manifest attribute names must not contain ' '"); | |||||
try { | |||||
buildRule.executeTarget("testIllegalNameInSection"); | |||||
fail("BuildException expected: Manifest attribute names must not contain ' '"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testIllegalNameBegin() { | public void testIllegalNameBegin() { | ||||
expectBuildException("testIllegalNameInSection", "Manifest attribute names must not start with '-' at the begin."); | |||||
try { | |||||
buildRule.executeTarget("testIllegalNameInSection"); | |||||
fail("BuildException expected: Manifest attribute names must not start with '-' at the begin."); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testIllegalName2() { | public void testIllegalName2() { | ||||
expectBuildException("testIllegalName", "Manifest attribute names must not contain '.'"); | |||||
try { | |||||
buildRule.executeTarget("testIllegalName"); | |||||
fail("BuildException expected: Manifest attribute names must not contain '.'"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void testIllegalName3() { | public void testIllegalName3() { | ||||
expectBuildException("testIllegalName", "Manifest attribute names must not contain '*'"); | |||||
try { | |||||
buildRule.executeTarget("testIllegalName"); | |||||
fail("BuildException expected: Manifest attribute names must not contain '*'"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
/** | /** | ||||
@@ -17,31 +17,50 @@ | |||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import static org.junit.Assert.fail; | |||||
/** | /** | ||||
*/ | */ | ||||
public class MkdirTest extends BuildFileTest { | |||||
public class MkdirTest { | |||||
public MkdirTest(String name) { | |||||
super(name); | |||||
} | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/mkdir.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/mkdir.xml"); | |||||
} | } | ||||
@Test | |||||
public void test1() { | public void test1() { | ||||
expectBuildException("test1", "required argument missing"); | |||||
try { | |||||
buildRule.executeTarget("test1"); | |||||
fail("BuildException expected: required argument missing"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test2() { | public void test2() { | ||||
expectBuildException("test2", "directory already exists as a file"); | |||||
try { | |||||
buildRule.executeTarget("test2"); | |||||
fail("BuildException expected: directory already exists as a file"); | |||||
} catch (BuildException ex) { | |||||
//TODO assert value | |||||
} | |||||
} | } | ||||
@Test | |||||
public void test3() { | public void test3() { | ||||
executeTarget("test3"); | |||||
java.io.File f = new java.io.File(getOutputDir(), "testdir.tmp"); | |||||
buildRule.executeTarget("test3"); | |||||
java.io.File f = new java.io.File(buildRule.getProject().getProperty("output"), "testdir.tmp"); | |||||
if (!f.exists() || !f.isDirectory()) { | if (!f.exists() || !f.isDirectory()) { | ||||
fail("mkdir failed"); | fail("mkdir failed"); | ||||
} else { | } else { | ||||
@@ -18,126 +18,151 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.util.FileUtils; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.FileUtilities; | |||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import static org.junit.Assert.assertEquals; | |||||
import static org.junit.Assert.assertTrue; | |||||
/** | /** | ||||
* Tests the Move task. | * Tests the Move task. | ||||
* | * | ||||
*/ | */ | ||||
public class MoveTest extends BuildFileTest { | |||||
/** Utilities used for file operations */ | |||||
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); | |||||
public MoveTest(String name) { | |||||
super(name); | |||||
} | |||||
public class MoveTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/move.xml"); | |||||
project.executeTarget("setUp"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/move.xml"); | |||||
buildRule.executeTarget("setUp"); | |||||
} | } | ||||
@Test | |||||
public void testFilterSet() throws IOException { | public void testFilterSet() throws IOException { | ||||
executeTarget("testFilterSet"); | |||||
File tmp = new File(getOutputDir(), "move.filterset.tmp"); | |||||
File check = new File(getProjectDir(), "expected/copy.filterset.filtered"); | |||||
buildRule.executeTarget("testFilterSet"); | |||||
File tmp = new File(buildRule.getProject().getProperty("output"), "move.filterset.tmp"); | |||||
File check = new File(buildRule.getProject().getBaseDir(), "expected/copy.filterset.filtered"); | |||||
assertTrue(tmp.exists()); | assertTrue(tmp.exists()); | ||||
assertTrue(FILE_UTILS.contentEquals(tmp, check)); | |||||
assertEquals(FileUtilities.getFileContents(check), FileUtilities.getFileContents(tmp)); | |||||
} | } | ||||
@Test | |||||
public void testFilterChain() throws IOException { | public void testFilterChain() throws IOException { | ||||
executeTarget("testFilterChain"); | |||||
File tmp = new File(getOutputDir(), "move.filterchain.tmp"); | |||||
File check = new File(getProjectDir(), "expected/copy.filterset.filtered"); | |||||
buildRule.executeTarget("testFilterChain"); | |||||
File tmp = new File(buildRule.getProject().getProperty("output"), "move.filterchain.tmp"); | |||||
File check = new File(buildRule.getProject().getBaseDir(), "expected/copy.filterset.filtered"); | |||||
assertTrue(tmp.exists()); | assertTrue(tmp.exists()); | ||||
assertTrue(FILE_UTILS.contentEquals(tmp, check)); | |||||
assertEquals(FileUtilities.getFileContents(check), FileUtilities.getFileContents(tmp)); | |||||
} | } | ||||
/** Bugzilla Report 11732 */ | /** Bugzilla Report 11732 */ | ||||
@Test | |||||
public void testDirectoryRemoval() throws IOException { | public void testDirectoryRemoval() throws IOException { | ||||
executeTarget("testDirectoryRemoval"); | |||||
assertTrue(!new File(getOutputDir(),"E/B/1").exists()); | |||||
assertTrue(new File(getOutputDir(),"E/C/2").exists()); | |||||
assertTrue(new File(getOutputDir(),"E/D/3").exists()); | |||||
assertTrue(new File(getOutputDir(),"A/B/1").exists()); | |||||
assertTrue(!new File(getOutputDir(),"A/C/2").exists()); | |||||
assertTrue(!new File(getOutputDir(),"A/D/3").exists()); | |||||
assertTrue(!new File(getOutputDir(),"A/C").exists()); | |||||
assertTrue(!new File(getOutputDir(),"A/D").exists()); | |||||
buildRule.executeTarget("testDirectoryRemoval"); | |||||
String output = buildRule.getProject().getProperty("output"); | |||||
assertTrue(!new File(output,"E/B/1").exists()); | |||||
assertTrue(new File(output, "E/C/2").exists()); | |||||
assertTrue(new File(output,"E/D/3").exists()); | |||||
assertTrue(new File(output,"A/B/1").exists()); | |||||
assertTrue(!new File(output,"A/C/2").exists()); | |||||
assertTrue(!new File(output,"A/D/3").exists()); | |||||
assertTrue(!new File(output,"A/C").exists()); | |||||
assertTrue(!new File(output,"A/D").exists()); | |||||
} | } | ||||
/** Bugzilla Report 18886 */ | /** Bugzilla Report 18886 */ | ||||
@Test | |||||
public void testDirectoryRetaining() throws IOException { | public void testDirectoryRetaining() throws IOException { | ||||
executeTarget("testDirectoryRetaining"); | |||||
assertTrue(new File(getOutputDir(),"E").exists()); | |||||
assertTrue(new File(getOutputDir(),"E/1").exists()); | |||||
assertTrue(!new File(getOutputDir(),"A/1").exists()); | |||||
assertTrue(new File(getOutputDir(),"A").exists()); | |||||
buildRule.executeTarget("testDirectoryRetaining"); | |||||
String output = buildRule.getProject().getProperty("output"); | |||||
assertTrue(new File(output,"E").exists()); | |||||
assertTrue(new File(output,"E/1").exists()); | |||||
assertTrue(!new File(output,"A/1").exists()); | |||||
assertTrue(new File(output,"A").exists()); | |||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMove() throws IOException { | public void testCompleteDirectoryMove() throws IOException { | ||||
testCompleteDirectoryMove("testCompleteDirectoryMove"); | testCompleteDirectoryMove("testCompleteDirectoryMove"); | ||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMove2() throws IOException { | public void testCompleteDirectoryMove2() throws IOException { | ||||
testCompleteDirectoryMove("testCompleteDirectoryMove2"); | testCompleteDirectoryMove("testCompleteDirectoryMove2"); | ||||
} | } | ||||
private void testCompleteDirectoryMove(String target) throws IOException { | private void testCompleteDirectoryMove(String target) throws IOException { | ||||
executeTarget(target); | |||||
assertTrue(new File(getOutputDir(),"E").exists()); | |||||
assertTrue(new File(getOutputDir(),"E/1").exists()); | |||||
assertTrue(!new File(getOutputDir(),"A/1").exists()); | |||||
buildRule.executeTarget(target); | |||||
String output = buildRule.getProject().getProperty("output"); | |||||
assertTrue(new File(output,"E").exists()); | |||||
assertTrue(new File(output,"E/1").exists()); | |||||
assertTrue(!new File(output,"A/1").exists()); | |||||
// <path> swallows the basedir, it seems | // <path> swallows the basedir, it seems | ||||
//assertTrue(!new File(getOutputDir(),"A").exists()); | //assertTrue(!new File(getOutputDir(),"A").exists()); | ||||
} | } | ||||
@Test | |||||
public void testPathElementMove() throws IOException { | public void testPathElementMove() throws IOException { | ||||
executeTarget("testPathElementMove"); | |||||
assertTrue(new File(getOutputDir(),"E").exists()); | |||||
assertTrue(new File(getOutputDir(),"E/1").exists()); | |||||
assertTrue(!new File(getOutputDir(),"A/1").exists()); | |||||
assertTrue(new File(getOutputDir(),"A").exists()); | |||||
buildRule.executeTarget("testPathElementMove"); | |||||
String output = buildRule.getProject().getProperty("output"); | |||||
assertTrue(new File(output,"E").exists()); | |||||
assertTrue(new File(output,"E/1").exists()); | |||||
assertTrue(!new File(output,"A/1").exists()); | |||||
assertTrue(new File(output,"A").exists()); | |||||
} | } | ||||
@Test | |||||
public void testMoveFileAndFileset() { | public void testMoveFileAndFileset() { | ||||
executeTarget("testMoveFileAndFileset"); | |||||
buildRule.executeTarget("testMoveFileAndFileset"); | |||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMoveToExistingDir() { | public void testCompleteDirectoryMoveToExistingDir() { | ||||
executeTarget("testCompleteDirectoryMoveToExistingDir"); | |||||
buildRule.executeTarget("testCompleteDirectoryMoveToExistingDir"); | |||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMoveFileToFile() { | public void testCompleteDirectoryMoveFileToFile() { | ||||
executeTarget("testCompleteDirectoryMoveFileToFile"); | |||||
buildRule.executeTarget("testCompleteDirectoryMoveFileToFile"); | |||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMoveFileToDir() { | public void testCompleteDirectoryMoveFileToDir() { | ||||
executeTarget("testCompleteDirectoryMoveFileToDir"); | |||||
buildRule.executeTarget("testCompleteDirectoryMoveFileToDir"); | |||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMoveFileAndFileset() { | public void testCompleteDirectoryMoveFileAndFileset() { | ||||
executeTarget("testCompleteDirectoryMoveFileAndFileset"); | |||||
buildRule.executeTarget("testCompleteDirectoryMoveFileAndFileset"); | |||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMoveFileToExistingFile() { | public void testCompleteDirectoryMoveFileToExistingFile() { | ||||
executeTarget("testCompleteDirectoryMoveFileToExistingFile"); | |||||
buildRule.executeTarget("testCompleteDirectoryMoveFileToExistingFile"); | |||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMoveFileToExistingDir() { | public void testCompleteDirectoryMoveFileToExistingDir() { | ||||
executeTarget("testCompleteDirectoryMoveFileToExistingDir"); | |||||
buildRule.executeTarget("testCompleteDirectoryMoveFileToExistingDir"); | |||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMoveFileToDirWithExistingFile() { | public void testCompleteDirectoryMoveFileToDirWithExistingFile() { | ||||
executeTarget("testCompleteDirectoryMoveFileToDirWithExistingFile"); | |||||
buildRule.executeTarget("testCompleteDirectoryMoveFileToDirWithExistingFile"); | |||||
} | } | ||||
@Test | |||||
public void testCompleteDirectoryMoveFileToDirWithExistingDir() { | public void testCompleteDirectoryMoveFileToDirWithExistingDir() { | ||||
executeTarget("testCompleteDirectoryMoveFileToDirWithExistingDir"); | |||||
buildRule.executeTarget("testCompleteDirectoryMoveFileToDirWithExistingDir"); | |||||
} | } | ||||
} | } |
@@ -18,44 +18,53 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import org.apache.tools.ant.BuildFileTest; | |||||
import org.apache.tools.ant.BuildFileRule; | |||||
import org.apache.tools.ant.util.FileNameMapper; | import org.apache.tools.ant.util.FileNameMapper; | ||||
import org.junit.Before; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
/** | /** | ||||
*/ | */ | ||||
public class MultiMapTest extends BuildFileTest { | |||||
public MultiMapTest(String name) { | |||||
super(name); | |||||
} | |||||
public class MultiMapTest { | |||||
@Rule | |||||
public final BuildFileRule buildRule = new BuildFileRule(); | |||||
@Before | |||||
public void setUp() { | public void setUp() { | ||||
configureProject("src/etc/testcases/taskdefs/multimap.xml"); | |||||
buildRule.configureProject("src/etc/testcases/taskdefs/multimap.xml"); | |||||
} | } | ||||
@Test | |||||
public void testMultiCopy() { | public void testMultiCopy() { | ||||
executeTarget("multicopy"); | |||||
buildRule.executeTarget("multicopy"); | |||||
} | } | ||||
@Test | |||||
public void testMultiMove() { | public void testMultiMove() { | ||||
executeTarget("multimove"); | |||||
buildRule.executeTarget("multimove"); | |||||
} | } | ||||
@Test | |||||
public void testSingleCopy() { | public void testSingleCopy() { | ||||
executeTarget("singlecopy"); | |||||
buildRule.executeTarget("singlecopy"); | |||||
} | } | ||||
@Test | |||||
public void testSingleMove() { | public void testSingleMove() { | ||||
executeTarget("singlemove"); | |||||
buildRule.executeTarget("singlemove"); | |||||
} | } | ||||
@Test | |||||
public void testCopyWithEmpty() { | public void testCopyWithEmpty() { | ||||
executeTarget("copywithempty"); | |||||
buildRule.executeTarget("copywithempty"); | |||||
} | } | ||||
@Test | |||||
public void testMoveWithEmpty() { | public void testMoveWithEmpty() { | ||||
executeTarget("movewithempty"); | |||||
buildRule.executeTarget("movewithempty"); | |||||
} | } | ||||
public static class TestMapper implements FileNameMapper { | public static class TestMapper implements FileNameMapper { | ||||