You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2018/08/19 12:12:51 UTC

groovy git commit: groovy-ant: refactor test directories to be under groovy.ant not groovy.util and split out an AntTestCase

Repository: groovy
Updated Branches:
  refs/heads/master 1eb1605d8 -> b5a8e6ad3


groovy-ant: refactor test directories to be under groovy.ant not groovy.util and split out an AntTestCase


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/b5a8e6ad
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/b5a8e6ad
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/b5a8e6ad

Branch: refs/heads/master
Commit: b5a8e6ad3b454d8a771bd2a41cad0193c3527ee5
Parents: 1eb1605
Author: Paul King <pa...@asert.com.au>
Authored: Sun Aug 19 22:12:36 2018 +1000
Committer: Paul King <pa...@asert.com.au>
Committed: Sun Aug 19 22:12:36 2018 +1000

----------------------------------------------------------------------
 .../spec/test/builder/AntBuilderSpecTest.groovy |  19 +-
 .../src/test-resources/groovy/ant/AntTest.xml   |  47 +++
 .../groovy/ant/AntTest_import.xml               |  35 ++
 .../src/test-resources/groovy/util/AntTest.xml  |  47 ---
 .../groovy/util/AntTest_import.xml              |  35 --
 .../src/test/groovy/groovy/ant/AntTest.groovy   | 319 +++++++++++++++++++
 .../test/groovy/groovy/ant/AntTestCase.groovy   |  34 ++
 .../groovy/groovy/ant/FileNameFinderTest.groovy |  35 ++
 .../src/test/groovy/groovy/ant/SpoofTask.java   |  49 +++
 .../groovy/groovy/ant/SpoofTaskContainer.java   |  71 +++++
 .../src/test/groovy/groovy/util/AntTest.groovy  | 319 -------------------
 .../groovy/util/FileNameFinderTest.groovy       |  38 ---
 .../src/test/groovy/groovy/util/SpoofTask.java  |  49 ---
 .../groovy/groovy/util/SpoofTaskContainer.java  |  72 -----
 14 files changed, 597 insertions(+), 572 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/spec/test/builder/AntBuilderSpecTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/spec/test/builder/AntBuilderSpecTest.groovy b/subprojects/groovy-ant/src/spec/test/builder/AntBuilderSpecTest.groovy
index a62e366..710d0c2 100644
--- a/subprojects/groovy-ant/src/spec/test/builder/AntBuilderSpecTest.groovy
+++ b/subprojects/groovy-ant/src/spec/test/builder/AntBuilderSpecTest.groovy
@@ -17,25 +17,20 @@
  *  under the License.
  */
 package builder
+
+import groovy.ant.AntTestCase
+
 /**
  * Test cases for the Ant builder documentation.
  */
-class AntBuilderSpecTest extends GroovyTestCase {
+class AntBuilderSpecTest extends AntTestCase {
 
-    void doInTmpDir(Closure cl) {
+    void testEcho() {
+        /*
         // tag::create_zip_builder[]
         def ant = new AntBuilder()
         // end::create_zip_builder[]
-        def baseDir = File.createTempDir()
-        ant.project.baseDir = baseDir
-        try {
-            cl.call(ant, new FileTreeBuilder(baseDir))
-        } finally {
-            baseDir.deleteDir()
-        }
-    }
-
-    void testEcho() {
+        */
         // tag::example_echo[]
         def ant = new AntBuilder()          // <1>
         ant.echo('hello from Ant!')         // <2>

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test-resources/groovy/ant/AntTest.xml
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test-resources/groovy/ant/AntTest.xml b/subprojects/groovy-ant/src/test-resources/groovy/ant/AntTest.xml
new file mode 100644
index 0000000..4b1fbfa
--- /dev/null
+++ b/subprojects/groovy-ant/src/test-resources/groovy/ant/AntTest.xml
@@ -0,0 +1,47 @@
+<!--
+
+     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.
+
+-->
+<!-- 
+does exactly the same as the AntBuilder in AntTest... just to be sure that ant behaves the same
+as what we expect from the AntBuilder
+ -->
+<project name="test" default="full">
+
+    <target name="full">
+        <path id="task.path">
+            <pathelement location="classes"/>
+        </path>
+        <taskdef name="spoofcontainer" classname="groovy.ant.SpoofTaskContainer" classpathref="task.path"/>
+        <taskdef name="spoof" classname="groovy.ant.SpoofTask" classpathref="task.path"/>
+
+        <spoofcontainer>
+            <spoof foo="123"/>
+        </spoofcontainer>
+    </target>
+
+    <target name="testAntBuilderWithinGroovyTask" description="Test for GROOVY-1602">
+        <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
+        <echo message="before groovy task"/>
+        <groovy>
+            ant.echo(message: 'ant builder within groovy task')
+        </groovy>
+        <echo message="after groovy task"/>
+    </target>
+</project>

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test-resources/groovy/ant/AntTest_import.xml
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test-resources/groovy/ant/AntTest_import.xml b/subprojects/groovy-ant/src/test-resources/groovy/ant/AntTest_import.xml
new file mode 100644
index 0000000..c0b8e04
--- /dev/null
+++ b/subprojects/groovy-ant/src/test-resources/groovy/ant/AntTest_import.xml
@@ -0,0 +1,35 @@
+<!--
+
+     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.
+
+-->
+<!-- 
+Sample file to test AntBuilder import feature
+ -->
+<project default="firstTarget">
+
+    <echo message="outside targets, at the top"/>
+
+    <target name="firstTarget">
+        <echo message="inside firstTarget"/>
+    </target>
+
+    <target name="2ndTarget">
+        <echo message="inside 2ndTarget"/>
+    </target>
+</project>

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test-resources/groovy/util/AntTest.xml
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test-resources/groovy/util/AntTest.xml b/subprojects/groovy-ant/src/test-resources/groovy/util/AntTest.xml
deleted file mode 100644
index 9629399..0000000
--- a/subprojects/groovy-ant/src/test-resources/groovy/util/AntTest.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
-
-     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.
-
--->
-<!-- 
-does exactly the same as the AntBuilder in AntTest... just to be sure that ant behaves the same
-as what we expect from the AntBuilder
- -->
-<project name="test" default="full">
-
-    <target name="full">
-        <path id="task.path">
-            <pathelement location="classes"/>
-        </path>
-        <taskdef name="spoofcontainer" classname="groovy.util.SpoofTaskContainer" classpathref="task.path"/>
-        <taskdef name="spoof" classname="groovy.util.SpoofTask" classpathref="task.path"/>
-
-        <spoofcontainer>
-            <spoof foo="123"/>
-        </spoofcontainer>
-    </target>
-
-    <target name="testAntBuilderWithinGroovyTask" description="Test for GROOVY-1602">
-        <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
-        <echo message="before groovy task"/>
-        <groovy>
-            ant.echo(message: 'ant builder within groovy task')
-        </groovy>
-        <echo message="after groovy task"/>
-    </target>
-</project>

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test-resources/groovy/util/AntTest_import.xml
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test-resources/groovy/util/AntTest_import.xml b/subprojects/groovy-ant/src/test-resources/groovy/util/AntTest_import.xml
deleted file mode 100644
index c0b8e04..0000000
--- a/subprojects/groovy-ant/src/test-resources/groovy/util/AntTest_import.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<!--
-
-     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.
-
--->
-<!-- 
-Sample file to test AntBuilder import feature
- -->
-<project default="firstTarget">
-
-    <echo message="outside targets, at the top"/>
-
-    <target name="firstTarget">
-        <echo message="inside firstTarget"/>
-    </target>
-
-    <target name="2ndTarget">
-        <echo message="inside 2ndTarget"/>
-    </target>
-</project>

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTest.groovy b/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTest.groovy
new file mode 100644
index 0000000..0df92ca
--- /dev/null
+++ b/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTest.groovy
@@ -0,0 +1,319 @@
+/*
+ *  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 groovy.ant
+
+import org.apache.tools.ant.BuildEvent
+import org.apache.tools.ant.Project
+import org.apache.tools.ant.ProjectHelper
+import groovy.xml.NamespaceBuilder
+import org.apache.tools.ant.UnknownElement
+import org.junit.Assert
+
+/**
+ * Tests for the <groovy> task.
+ *
+ * @author Marc Guillemot
+ */
+class AntTest extends GroovyTestCase {
+
+    void testAnt() {
+        def ant = new AntBuilder()
+        // let's just call one task
+        ant.echo('hello')
+        // here's an example of a block of Ant inside GroovyMarkup
+        ant.sequential {
+            echo('inside sequential')
+            def myDir = 'target/AntTest/'
+            mkdir(dir: myDir)
+            copy(todir: myDir) {
+                fileset(dir: 'src/test/groovy') {
+                    include(name: '**/*.groovy')
+                }
+            }
+            echo('done')
+        }
+        // now let's do some normal Groovy again
+        def file = new File('target/AntTest/groovy/ant/AntTest.groovy')
+        assert file.exists()
+    }
+
+    void testFileIteration() {
+        def ant = new AntBuilder()
+        // let's create a scanner of filesets
+        def scanner = ant.fileScanner {
+            fileset(dir: 'src/test/groovy') {
+                include(name: '**/Ant*.groovy')
+            }
+        }
+        // now let's iterate over
+        def found = false
+        for (f in scanner) {
+            println("Found file ${f}")
+            found = true
+            assert f instanceof File
+            assert f.name.endsWith('.groovy')
+        }
+        assert found
+    }
+
+    void testJunitTask() {
+        def ant = new AntBuilder()
+        ant.junit {
+            test(name: 'groovy.ant.SomethingThatDoesNotExist')
+        }
+    }
+
+    void testPathBuilding() {
+        def ant = new AntBuilder()
+        def value = ant.path {
+            fileset(dir: 'xdocs') {
+                include(name: '*.wiki')
+            }
+        }
+        assert value != null
+        assertEquals org.apache.tools.ant.types.Path, value.getClass()
+    }
+
+    void testTaskContainerExecutionSequence() {
+        SpoofTaskContainer.getSpoof().length = 0
+        def antFile = new File('src/test-resources/groovy/ant/AntTest.xml')
+        assertTrue "Couldn't find ant test script", antFile.exists()
+        // run it with ant, to be sure that our assumptions are correct
+        def project = new Project()
+        project.init()
+        ProjectHelper.projectHelper.parse(project, antFile)
+        project.executeTarget(project.defaultTarget)
+
+        def expectedSpoof =
+            '''SpoofTaskContainer ctor
+in addTask
+configuring UnknownElement
+SpoofTask ctor
+begin SpoofTaskContainer execute
+begin SpoofTask execute
+tag name from wrapper: spoof
+attributes map from wrapper: [foo:123]
+param foo: 123
+end SpoofTask execute
+end SpoofTaskContainer execute
+'''
+        println SpoofTaskContainer.getSpoof().toString()
+        assertEquals expectedSpoof, SpoofTaskContainer.getSpoof().toString()
+        SpoofTaskContainer.spoof.length = 0
+
+        def ant = new AntBuilder()
+        def PATH = 'task.path'
+
+        // and now run it with the AntBuilder        
+        ant.path(id: PATH) { ant.pathelement(location: 'classes') }
+        ['spoofcontainer': SpoofTaskContainer, 'spoof': SpoofTask].each { pair ->
+            ant.taskdef(name: pair.key, classname: pair.value.name, classpathref: PATH)
+        }
+        ant.spoofcontainer {
+            ant.spoof(foo: 123)
+        }
+        assertEquals expectedSpoof, SpoofTaskContainer.getSpoof().toString()
+
+        // now run it with AntBuilder using Namespaces (test for GROOVY-1070)
+        def antNS = new AntBuilder()
+        SpoofTaskContainer.resetSpoof()
+
+        // and now run it with the AntBuilder
+        antNS.path(id: PATH) {antNS.pathelement(location: 'classes')}
+        ['spoofcontainer': SpoofTaskContainer, 'spoof': SpoofTask].each { pair ->
+            antNS.taskdef(name: pair.key, classname: pair.value.name, classpathref: PATH,
+                    uri: 'testNS')
+        }
+        def testNS = NamespaceBuilder.newInstance(antNS, 'testNS', 'testNSprefix')
+        testNS.spoofcontainer {
+            testNS.spoof(foo: 123)
+        }
+        assertEquals expectedSpoof, SpoofTaskContainer.getSpoof().toString()
+    }
+
+    /** Checks that we can access dynamically (through Ant's property task) defined properties in Groovy scriptlets  */
+    void testDynamicProperties() {
+        def antBuilder = new AntBuilder()
+        antBuilder.property(name: 'testProp1', value: 'TEST 1')
+        antBuilder.taskdef(name: 'groovy', classname: 'org.codehaus.groovy.ant.Groovy')
+        antBuilder.groovy('''
+            ant.property(name: 'testProp2', value: 'TEST 2')
+            assert properties.testProp1 == project.properties.testProp1
+            assert properties.testProp2 == project.properties.testProp2
+        ''')
+    }
+
+    /**
+     * Test access to AntBuilder properties
+     */
+    void testAntBuilderProperties() {
+        def ant = new AntBuilder()
+        assertNull ant.project.properties.'myProp'
+        ant.property(name: 'myProp', value: 'blabla')
+        assert ant.project.properties.'myProp' == 'blabla'
+    }
+
+    /**
+     * Tests that the AntBuilder can handle conditions (conditions aren't tasks)
+     * (test for GROOVY-824)
+     */
+    void testCondition() {
+        def ant = new AntBuilder()
+        ant.condition(property: 'containsHi') {
+            contains([string: 'hi', substring: 'hi'])
+        }
+        assert ant.project.properties['containsHi'] == 'true'
+        ant.condition(property: 'equalsHi', else: 'false') {
+            Equals([arg1: 'hi', arg2: 'bye'])
+        }
+        assert ant.project.properties['equalsHi'] == 'false'
+    }
+
+    /**
+     * Tests that using the AntBuilder within the <groovy> task doesn't cause double execution
+     * (test for GROOVY-1602)
+     */
+    void testAntBuilderWithinGroovyTask() {
+        def antFile = new File('src/test-resources/groovy/ant/AntTest.xml')
+        assertTrue "Couldn't find ant test script", antFile.exists()
+
+        def project = new Project()
+        project.init()
+        ProjectHelper.projectHelper.parse(project, antFile)
+
+        def customListener = new SimpleListener()
+        project.addBuildListener customListener
+
+        project.executeTarget('testAntBuilderWithinGroovyTask')
+
+        def expectedSpoof =
+            '''started: taskdef[name:groovy, classname:org.codehaus.groovy.ant.Groovy]
+finished: taskdef[name:groovy, classname:org.codehaus.groovy.ant.Groovy]
+started: echo[message:before groovy task]
+finished: echo[message:before groovy task]
+started: groovy[:]
+started: echo[message:ant builder within groovy task]
+finished: echo[message:ant builder within groovy task]
+finished: groovy[:]
+started: echo[message:after groovy task]
+finished: echo[message:after groovy task]
+'''
+
+        assertEquals expectedSpoof, customListener.spoof.toString()
+    }
+
+    /**
+     * Test usage of import
+     */
+    void testImport() {
+        def antFile = new File('src/test-resources/groovy/ant/AntTest_import.xml')
+        assertTrue "Couldn't find ant test script", antFile.exists()
+
+        def ant = new AntBuilder()
+        def customListener = new SimpleListener()
+        ant.project.addBuildListener customListener
+
+        ant.'import'(file: antFile.absolutePath)
+        def expectedSpoof = """\
+started: import[file:${antFile.absolutePath}]
+started: echo[message:outside targets, at the top]
+finished: echo[message:outside targets, at the top]
+finished: import[file:${antFile.absolutePath}]
+"""
+        assertEquals expectedSpoof, customListener.spoof.toString()
+
+        customListener.spoof.length = 0
+        ant.project.executeTarget('firstTarget')
+        expectedSpoof = '''\
+started: echo[message:inside firstTarget]
+finished: echo[message:inside firstTarget]
+'''
+        assertEquals expectedSpoof, customListener.spoof.toString()
+
+        customListener.spoof.length = 0
+        ant.target(name: 'myTestTarget', depends: '2ndTarget') {
+            echo(message: "echo from AntBuilder's target foo")
+        }
+        expectedSpoof = '''\
+started: echo[message:inside 2ndTarget]
+finished: echo[message:inside 2ndTarget]
+started: echo[message:echo from AntBuilder's target foo]
+finished: echo[message:echo from AntBuilder's target foo]
+'''
+        assertEquals expectedSpoof, customListener.spoof.toString()
+
+        // test that the previously created target can be called
+        customListener.spoof.length = 0
+        ant.project.executeTarget('myTestTarget')
+        assertEquals expectedSpoof, customListener.spoof.toString()
+    }
+
+    void testDefineTarget_groovy2900() {
+        def ant = new AntBuilder()
+        def project = ant.project
+        def customListener = new SimpleListener()
+        project.addBuildListener customListener
+        ant.defineTarget(name: 'myTestTarget') {
+            echo(message: "myTestTarget")
+        }
+        ant.defineTarget(name: 'myTestTarget2', depends: 'myTestTarget') {
+            echo(message: "myTestTarget2")
+        }
+        ant.target(name: 'myTestTarget3', depends: 'myTestTarget') {
+            ant.defineTarget(name: 'myTestTarget4') {
+                echo(message: "myTestTarget4")
+            }
+            echo(message: "myTestTarget3")
+        }
+        ant.defineTarget(name: 'myTestTarget5', depends: 'myTestTarget4') {
+            echo(message: "myTestTarget5 should not appear")
+        }
+        project.executeTarget('myTestTarget2')
+        project.executeTarget('myTestTarget4')
+        assert customListener.spoof.toString() == '''\
+started: echo[message:myTestTarget]
+finished: echo[message:myTestTarget]
+started: echo[message:myTestTarget3]
+finished: echo[message:myTestTarget3]
+started: echo[message:myTestTarget]
+finished: echo[message:myTestTarget]
+started: echo[message:myTestTarget2]
+finished: echo[message:myTestTarget2]
+started: echo[message:myTestTarget4]
+finished: echo[message:myTestTarget4]
+'''
+    }
+}
+
+class SimpleListener extends org.apache.tools.ant.DefaultLogger {
+    def spoof = new StringBuffer()
+
+    void taskStarted(BuildEvent event) {
+        if (!(event.task instanceof UnknownElement)) Assert.fail("Task is already configured. Listeners won't have a chance to alter UnknownElement for additional configuration");
+        spoof << "started: " + logTask(event.task) + "\n"
+    }
+
+    void taskFinished(BuildEvent event) {
+        spoof << "finished: " + logTask(event.task) + "\n"
+    }
+
+    private String logTask(task) {
+        task.taskName + task.wrapper.attributeMap
+    }
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTestCase.groovy
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTestCase.groovy b/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTestCase.groovy
new file mode 100644
index 0000000..21d3d64
--- /dev/null
+++ b/subprojects/groovy-ant/src/test/groovy/groovy/ant/AntTestCase.groovy
@@ -0,0 +1,34 @@
+/*
+ *  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 groovy.ant
+
+abstract class AntTestCase extends GroovyTestCase {
+    protected void doInTmpDir(Closure cl) {
+        // tag::create_zip_builder[]
+        def ant = new AntBuilder()
+        // end::create_zip_builder[]
+        def baseDir = File.createTempDir()
+        ant.project.baseDir = baseDir
+        try {
+            cl.call(ant, new FileTreeBuilder(baseDir))
+        } finally {
+            baseDir.deleteDir()
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test/groovy/groovy/ant/FileNameFinderTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test/groovy/groovy/ant/FileNameFinderTest.groovy b/subprojects/groovy-ant/src/test/groovy/groovy/ant/FileNameFinderTest.groovy
new file mode 100644
index 0000000..c05c4b2
--- /dev/null
+++ b/subprojects/groovy-ant/src/test/groovy/groovy/ant/FileNameFinderTest.groovy
@@ -0,0 +1,35 @@
+/*
+ *  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 groovy.ant
+
+/**
+ * Make sure FileNameFinder uses Ant filesets correctly.
+ */
+class FileNameFinderTest extends GroovyLogTestCase {
+
+    void testFilesInTestDirArePickedUp() {
+        def finder = new FileNameFinder()
+        def groovyFiles = finder.getFileNames('src/test/groovy', '**/*.groovy')
+        assert groovyFiles, 'There should be groovy files in src/test/groovy'
+        // now collect all those not starting with the 'Ant'
+        def nonAntFiles = finder.getFileNames('src/test/groovy', '**/*.groovy', '**/Ant*')
+        assert nonAntFiles, 'There should be non-Ant files in src/test/groovy'
+        assert groovyFiles.size() > nonAntFiles.size()
+    }
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test/groovy/groovy/ant/SpoofTask.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test/groovy/groovy/ant/SpoofTask.java b/subprojects/groovy-ant/src/test/groovy/groovy/ant/SpoofTask.java
new file mode 100644
index 0000000..21e0cb8
--- /dev/null
+++ b/subprojects/groovy-ant/src/test/groovy/groovy/ant/SpoofTask.java
@@ -0,0 +1,49 @@
+/*
+ *  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 groovy.ant;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.codehaus.groovy.runtime.InvokerHelper;
+
+public class SpoofTask extends Task {
+    private int foo;
+
+    public SpoofTask() {
+        super();
+        SpoofTaskContainer.spoof("SpoofTask ctor");
+    }
+
+    public void setFoo(final int i) {
+        foo = i;
+    }
+
+
+    public void execute() throws BuildException {
+        SpoofTaskContainer.spoof("begin SpoofTask execute");
+        SpoofTaskContainer.spoof("tag name from wrapper: " + getWrapper().getElementTag());
+        // don't rely on Map.toString(), behaviour is not documented
+        SpoofTaskContainer.spoof("attributes map from wrapper: "
+                + InvokerHelper.toMapString(getWrapper().getAttributeMap()));
+        SpoofTaskContainer.spoof("param foo: " + foo);
+
+        SpoofTaskContainer.spoof("end SpoofTask execute");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test/groovy/groovy/ant/SpoofTaskContainer.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test/groovy/groovy/ant/SpoofTaskContainer.java b/subprojects/groovy-ant/src/test/groovy/groovy/ant/SpoofTaskContainer.java
new file mode 100644
index 0000000..6025c6c
--- /dev/null
+++ b/subprojects/groovy-ant/src/test/groovy/groovy/ant/SpoofTaskContainer.java
@@ -0,0 +1,71 @@
+/*
+ *  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 groovy.ant;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.TaskContainer;
+import org.apache.tools.ant.UnknownElement;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SpoofTaskContainer extends Task implements TaskContainer {
+    private List<Task> tasks = new ArrayList<Task>();
+    static StringBuffer spoof = new StringBuffer();
+
+    public SpoofTaskContainer() {
+        super();
+        spoof("SpoofTaskContainer ctor");
+    }
+
+    static StringBuffer getSpoof() {
+        return spoof;
+    }
+
+    static void resetSpoof() {
+        spoof = new StringBuffer();
+    }
+
+    static void spoof(String message) {
+        spoof.append(message);
+        spoof.append("\n");
+    }
+
+    public void addTask(Task task) {
+        // to work with ant 1.6
+        spoof("in addTask");
+        if (task instanceof UnknownElement) {
+            spoof("configuring UnknownElement");
+            task.maybeConfigure();
+            task = ((UnknownElement) task).getTask();
+        }
+        tasks.add(task);
+    }
+
+    public void execute() throws BuildException {
+        spoof("begin SpoofTaskContainer execute");
+        for (Object task1 : tasks) {
+            Task task = (Task) task1;
+            task.perform();
+        }
+        spoof("end SpoofTaskContainer execute");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test/groovy/groovy/util/AntTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test/groovy/groovy/util/AntTest.groovy b/subprojects/groovy-ant/src/test/groovy/groovy/util/AntTest.groovy
deleted file mode 100644
index 9136f6b..0000000
--- a/subprojects/groovy-ant/src/test/groovy/groovy/util/AntTest.groovy
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- *  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 groovy.util
-
-import org.apache.tools.ant.BuildEvent
-import org.apache.tools.ant.Project
-import org.apache.tools.ant.ProjectHelper
-import groovy.xml.NamespaceBuilder
-import org.apache.tools.ant.UnknownElement
-import org.junit.Assert
-
-/**
- * Tests for the <groovy> task.
- *
- * @author Marc Guillemot
- */
-class AntTest extends GroovyTestCase {
-
-    void testAnt() {
-        def ant = new AntBuilder()
-        // let's just call one task
-        ant.echo('hello')
-        // here's an example of a block of Ant inside GroovyMarkup
-        ant.sequential {
-            echo('inside sequential')
-            def myDir = 'target/AntTest/'
-            mkdir(dir: myDir)
-            copy(todir: myDir) {
-                fileset(dir: 'src/test/groovy') {
-                    include(name: '**/*.groovy')
-                }
-            }
-            echo('done')
-        }
-        // now let's do some normal Groovy again
-        def file = new File('target/AntTest/groovy/util/AntTest.groovy')
-        assert file.exists()
-    }
-
-    void testFileIteration() {
-        def ant = new AntBuilder()
-        // let's create a scanner of filesets
-        def scanner = ant.fileScanner {
-            fileset(dir: 'src/test/groovy') {
-                include(name: '**/Ant*.groovy')
-            }
-        }
-        // now let's iterate over
-        def found = false
-        for (f in scanner) {
-            println("Found file ${f}")
-            found = true
-            assert f instanceof File
-            assert f.name.endsWith('.groovy')
-        }
-        assert found
-    }
-
-    void testJunitTask() {
-        def ant = new AntBuilder()
-        ant.junit {
-            test(name: 'groovy.util.SomethingThatDoesNotExist')
-        }
-    }
-
-    void testPathBuilding() {
-        def ant = new AntBuilder()
-        def value = ant.path {
-            fileset(dir: 'xdocs') {
-                include(name: '*.wiki')
-            }
-        }
-        assert value != null
-        assertEquals org.apache.tools.ant.types.Path, value.getClass()
-    }
-
-    void testTaskContainerExecutionSequence() {
-        SpoofTaskContainer.getSpoof().length = 0
-        def antFile = new File('src/test-resources/groovy/util/AntTest.xml')
-        assertTrue "Couldn't find ant test script", antFile.exists()
-        // run it with ant, to be sure that our assumptions are correct
-        def project = new Project()
-        project.init()
-        ProjectHelper.projectHelper.parse(project, antFile)
-        project.executeTarget(project.defaultTarget)
-
-        def expectedSpoof =
-            '''SpoofTaskContainer ctor
-in addTask
-configuring UnknownElement
-SpoofTask ctor
-begin SpoofTaskContainer execute
-begin SpoofTask execute
-tag name from wrapper: spoof
-attributes map from wrapper: [foo:123]
-param foo: 123
-end SpoofTask execute
-end SpoofTaskContainer execute
-'''
-        println SpoofTaskContainer.getSpoof().toString()
-        assertEquals expectedSpoof, SpoofTaskContainer.getSpoof().toString()
-        SpoofTaskContainer.spoof.length = 0
-
-        def ant = new AntBuilder()
-        def PATH = 'task.path'
-
-        // and now run it with the AntBuilder        
-        ant.path(id: PATH) { ant.pathelement(location: 'classes') }
-        ['spoofcontainer': SpoofTaskContainer, 'spoof': SpoofTask].each { pair ->
-            ant.taskdef(name: pair.key, classname: pair.value.name, classpathref: PATH)
-        }
-        ant.spoofcontainer {
-            ant.spoof(foo: 123)
-        }
-        assertEquals expectedSpoof, SpoofTaskContainer.getSpoof().toString()
-
-        // now run it with AntBuilder using Namespaces (test for GROOVY-1070)
-        def antNS = new AntBuilder()
-        SpoofTaskContainer.resetSpoof()
-
-        // and now run it with the AntBuilder
-        antNS.path(id: PATH) {antNS.pathelement(location: 'classes')}
-        ['spoofcontainer': SpoofTaskContainer, 'spoof': SpoofTask].each { pair ->
-            antNS.taskdef(name: pair.key, classname: pair.value.name, classpathref: PATH,
-                    uri: 'testNS')
-        }
-        def testNS = NamespaceBuilder.newInstance(antNS, 'testNS', 'testNSprefix')
-        testNS.spoofcontainer {
-            testNS.spoof(foo: 123)
-        }
-        assertEquals expectedSpoof, SpoofTaskContainer.getSpoof().toString()
-    }
-
-    /** Checks that we can access dynamically (through Ant's property task) defined properties in Groovy scriptlets  */
-    void testDynamicProperties() {
-        def antBuilder = new AntBuilder()
-        antBuilder.property(name: 'testProp1', value: 'TEST 1')
-        antBuilder.taskdef(name: 'groovy', classname: 'org.codehaus.groovy.ant.Groovy')
-        antBuilder.groovy('''
-            ant.property(name: 'testProp2', value: 'TEST 2')
-            assert properties.testProp1 == project.properties.testProp1
-            assert properties.testProp2 == project.properties.testProp2
-        ''')
-    }
-
-    /**
-     * Test access to AntBuilder properties
-     */
-    void testAntBuilderProperties() {
-        def ant = new AntBuilder()
-        assertNull ant.project.properties.'myProp'
-        ant.property(name: 'myProp', value: 'blabla')
-        assert ant.project.properties.'myProp' == 'blabla'
-    }
-
-    /**
-     * Tests that the AntBuilder can handle conditions (conditions aren't tasks)
-     * (test for GROOVY-824)
-     */
-    void testCondition() {
-        def ant = new AntBuilder()
-        ant.condition(property: 'containsHi') {
-            contains([string: 'hi', substring: 'hi'])
-        }
-        assert ant.project.properties['containsHi'] == 'true'
-        ant.condition(property: 'equalsHi', else: 'false') {
-            Equals([arg1: 'hi', arg2: 'bye'])
-        }
-        assert ant.project.properties['equalsHi'] == 'false'
-    }
-
-    /**
-     * Tests that using the AntBuilder within the <groovy> task doesn't cause double execution
-     * (test for GROOVY-1602)
-     */
-    void testAntBuilderWithinGroovyTask() {
-        def antFile = new File('src/test-resources/groovy/util/AntTest.xml')
-        assertTrue "Couldn't find ant test script", antFile.exists()
-
-        def project = new Project()
-        project.init()
-        ProjectHelper.projectHelper.parse(project, antFile)
-
-        def customListener = new SimpleListener()
-        project.addBuildListener customListener
-
-        project.executeTarget('testAntBuilderWithinGroovyTask')
-
-        def expectedSpoof =
-            '''started: taskdef[name:groovy, classname:org.codehaus.groovy.ant.Groovy]
-finished: taskdef[name:groovy, classname:org.codehaus.groovy.ant.Groovy]
-started: echo[message:before groovy task]
-finished: echo[message:before groovy task]
-started: groovy[:]
-started: echo[message:ant builder within groovy task]
-finished: echo[message:ant builder within groovy task]
-finished: groovy[:]
-started: echo[message:after groovy task]
-finished: echo[message:after groovy task]
-'''
-
-        assertEquals expectedSpoof, customListener.spoof.toString()
-    }
-
-    /**
-     * Test usage of import
-     */
-    void testImport() {
-        def antFile = new File('src/test-resources/groovy/util/AntTest_import.xml')
-        assertTrue "Couldn't find ant test script", antFile.exists()
-
-        def ant = new AntBuilder()
-        def customListener = new SimpleListener()
-        ant.project.addBuildListener customListener
-
-        ant.'import'(file: antFile.absolutePath)
-        def expectedSpoof = """\
-started: import[file:${antFile.absolutePath}]
-started: echo[message:outside targets, at the top]
-finished: echo[message:outside targets, at the top]
-finished: import[file:${antFile.absolutePath}]
-"""
-        assertEquals expectedSpoof, customListener.spoof.toString()
-
-        customListener.spoof.length = 0
-        ant.project.executeTarget('firstTarget')
-        expectedSpoof = '''\
-started: echo[message:inside firstTarget]
-finished: echo[message:inside firstTarget]
-'''
-        assertEquals expectedSpoof, customListener.spoof.toString()
-
-        customListener.spoof.length = 0
-        ant.target(name: 'myTestTarget', depends: '2ndTarget') {
-            echo(message: "echo from AntBuilder's target foo")
-        }
-        expectedSpoof = '''\
-started: echo[message:inside 2ndTarget]
-finished: echo[message:inside 2ndTarget]
-started: echo[message:echo from AntBuilder's target foo]
-finished: echo[message:echo from AntBuilder's target foo]
-'''
-        assertEquals expectedSpoof, customListener.spoof.toString()
-
-        // test that the previously created target can be called
-        customListener.spoof.length = 0
-        ant.project.executeTarget('myTestTarget')
-        assertEquals expectedSpoof, customListener.spoof.toString()
-    }
-
-    void testDefineTarget_groovy2900() {
-        def ant = new AntBuilder()
-        def project = ant.project
-        def customListener = new SimpleListener()
-        project.addBuildListener customListener
-        ant.defineTarget(name: 'myTestTarget') {
-            echo(message: "myTestTarget")
-        }
-        ant.defineTarget(name: 'myTestTarget2', depends: 'myTestTarget') {
-            echo(message: "myTestTarget2")
-        }
-        ant.target(name: 'myTestTarget3', depends: 'myTestTarget') {
-            ant.defineTarget(name: 'myTestTarget4') {
-                echo(message: "myTestTarget4")
-            }
-            echo(message: "myTestTarget3")
-        }
-        ant.defineTarget(name: 'myTestTarget5', depends: 'myTestTarget4') {
-            echo(message: "myTestTarget5 should not appear")
-        }
-        project.executeTarget('myTestTarget2')
-        project.executeTarget('myTestTarget4')
-        assert customListener.spoof.toString() == '''\
-started: echo[message:myTestTarget]
-finished: echo[message:myTestTarget]
-started: echo[message:myTestTarget3]
-finished: echo[message:myTestTarget3]
-started: echo[message:myTestTarget]
-finished: echo[message:myTestTarget]
-started: echo[message:myTestTarget2]
-finished: echo[message:myTestTarget2]
-started: echo[message:myTestTarget4]
-finished: echo[message:myTestTarget4]
-'''
-    }
-}
-
-class SimpleListener extends org.apache.tools.ant.DefaultLogger {
-    def spoof = new StringBuffer()
-
-    void taskStarted(BuildEvent event) {
-        if (!(event.task instanceof UnknownElement)) Assert.fail("Task is already configured. Listeners won't have a chance to alter UnknownElement for additional configuration");
-        spoof << "started: " + logTask(event.task) + "\n"
-    }
-
-    void taskFinished(BuildEvent event) {
-        spoof << "finished: " + logTask(event.task) + "\n"
-    }
-
-    private String logTask(task) {
-        task.taskName + task.wrapper.attributeMap
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test/groovy/groovy/util/FileNameFinderTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test/groovy/groovy/util/FileNameFinderTest.groovy b/subprojects/groovy-ant/src/test/groovy/groovy/util/FileNameFinderTest.groovy
deleted file mode 100644
index 3720787..0000000
--- a/subprojects/groovy-ant/src/test/groovy/groovy/util/FileNameFinderTest.groovy
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  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 groovy.util
-
-/**
- * Make sure FileNameFinder uses Ant filesets correctly.
- *
- * @author Dierk Koenig
- * @author Paul King
- */
-class FileNameFinderTest extends GroovyLogTestCase {
-
-    void testFilesInTestDirArePickedUp() {
-        def finder = new FileNameFinder()
-        def groovyFiles = finder.getFileNames('src/test/groovy', '**/*.groovy')
-        assert groovyFiles, 'There should be groovy files in src/test/groovy'
-        // now collect all those not starting with the 'Ant'
-        def nonAntFiles = finder.getFileNames('src/test/groovy', '**/*.groovy', '**/Ant*')
-        assert nonAntFiles, 'There should be non-Ant files in src/test/groovy'
-        assert groovyFiles.size() > nonAntFiles.size()
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test/groovy/groovy/util/SpoofTask.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test/groovy/groovy/util/SpoofTask.java b/subprojects/groovy-ant/src/test/groovy/groovy/util/SpoofTask.java
deleted file mode 100644
index 0444dca..0000000
--- a/subprojects/groovy-ant/src/test/groovy/groovy/util/SpoofTask.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  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 groovy.util;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.codehaus.groovy.runtime.InvokerHelper;
-
-public class SpoofTask extends Task {
-    private int foo;
-
-    public SpoofTask() {
-        super();
-        SpoofTaskContainer.spoof("SpoofTask ctor");
-    }
-
-    public void setFoo(final int i) {
-        foo = i;
-    }
-
-
-    public void execute() throws BuildException {
-        SpoofTaskContainer.spoof("begin SpoofTask execute");
-        SpoofTaskContainer.spoof("tag name from wrapper: " + getWrapper().getElementTag());
-        // don't rely on Map.toString(), behaviour is not documented
-        SpoofTaskContainer.spoof("attributes map from wrapper: "
-                + InvokerHelper.toMapString(getWrapper().getAttributeMap()));
-        SpoofTaskContainer.spoof("param foo: " + foo);
-
-        SpoofTaskContainer.spoof("end SpoofTask execute");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/b5a8e6ad/subprojects/groovy-ant/src/test/groovy/groovy/util/SpoofTaskContainer.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-ant/src/test/groovy/groovy/util/SpoofTaskContainer.java b/subprojects/groovy-ant/src/test/groovy/groovy/util/SpoofTaskContainer.java
deleted file mode 100644
index e71e6dd..0000000
--- a/subprojects/groovy-ant/src/test/groovy/groovy/util/SpoofTaskContainer.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  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 groovy.util;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.TaskContainer;
-import org.apache.tools.ant.UnknownElement;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-public class SpoofTaskContainer extends Task implements TaskContainer {
-    private List tasks = new ArrayList();
-    static StringBuffer spoof = new StringBuffer();
-
-    public SpoofTaskContainer() {
-        super();
-        spoof("SpoofTaskContainer ctor");
-    }
-
-    static StringBuffer getSpoof() {
-        return spoof;
-    }
-
-    static void resetSpoof() {
-        spoof = new StringBuffer();
-    }
-
-    static void spoof(String message) {
-        spoof.append(message);
-        spoof.append("\n");
-    }
-
-    public void addTask(Task task) {
-        // to work with ant 1.6
-        spoof("in addTask");
-        if (task instanceof UnknownElement) {
-            spoof("configuring UnknownElement");
-            task.maybeConfigure();
-            task = ((UnknownElement) task).getTask();
-        }
-        tasks.add(task);
-    }
-
-    public void execute() throws BuildException {
-        spoof("begin SpoofTaskContainer execute");
-        for (Iterator iter = tasks.iterator(); iter.hasNext();) {
-            Task task = (Task) iter.next();
-            task.perform();
-        }
-        spoof("end SpoofTaskContainer execute");
-    }
-
-}