# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: teyckmans@gmail.com-20081030225648-qp7rmuo6xf7vgr63
# target_branch: http://bazaar.launchpad.net/%7Erussel/gradle/testng/
# testament_sha1: 50c8a00db7a56968eea2f929d403458d18867871
# timestamp: 2008-10-31 00:01:28 +0100
# base_revision_id: russel.winder@concertant.com-20081030110528-\
#   zsu03eyuoo6gvy9y
# 
# Begin patch
=== renamed file 'src/main/groovy/org/gradle/api/tasks/AbstractAntTestTask.groovy' => 'src/main/groovy/org/gradle/api/tasks/testing/AbstractAntTestTask.groovy'
--- src/main/groovy/org/gradle/api/tasks/AbstractAntTestTask.groovy	2008-10-28 09:22:45 +0000
+++ src/main/groovy/org/gradle/api/tasks/testing/AbstractAntTestTask.groovy	2008-10-30 22:56:48 +0000
@@ -1,18 +1,10 @@
 package org.gradle.api.tasks.testing
 
-import org.gradle.api.tasks.compile.AbstractOptions
-
 /**
  * @author Tom Eyckmans
  */
-class AbstractAntTestTask {
-    static final String CLASSPATH_ID = 'runtests.classpath'
-
-    static final String FAILURES_OR_ERRORS_PROPERTY = 'org.gradle.api.tasks.testing.failuresOrErrors'
-
-    void execute(File compiledTestsClassesDir, List classPath, File testResultsDir, File testReportDir, List includes, List excludes, AbstractOptions testngOptions, AntBuilder ant)
-    {
-    }
+abstract class AbstractAntTestTask {
+    abstract void execute(File compiledTestsClassesDir, List classPath, File testResultsDir, File testReportDir, List includes, List excludes, TestOptions testngOptions, AntBuilder ant)
 
     protected void createAntClassPath(AntBuilder ant, List classpath) {
         ant.path(id: CLASSPATH_ID) {

=== modified file 'src/main/groovy/org/gradle/api/tasks/testing/AntJunit.groovy'
--- src/main/groovy/org/gradle/api/tasks/testing/AntJunit.groovy	2008-10-30 11:05:28 +0000
+++ src/main/groovy/org/gradle/api/tasks/testing/AntJunit.groovy	2008-10-30 22:56:48 +0000
@@ -19,7 +19,7 @@
 import org.gradle.util.BootstrapUtil
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
-
+import org.gradle.api.tasks.testing.AbstractAntTestTask
 
 /**
  * @author Hans Dockter
@@ -34,7 +34,7 @@
 
     public static final String FAILURES_OR_ERRORS_PROPERTY = 'org.gradle.api.tasks.testing.failuresOrErrors'
 
-    void execute(File compiledTestsClassesDir, List classPath, File testResultsDir, File testReportDir, List includes, List excludes, JunitOptions junitOptions, AntBuilder ant) {
+    void execute(File compiledTestsClassesDir, List classPath, File testResultsDir, File testReportDir, List includes, List excludes, TestOptions junitOptions, AntBuilder ant) {
         ant.mkdir(dir: testResultsDir.absolutePath)
         createAntClassPath(ant, classPath + BootstrapUtil.antJunitJarFiles)
         Map otherArgs = [

=== modified file 'src/main/groovy/org/gradle/api/tasks/testing/AntTestNG.groovy'
--- src/main/groovy/org/gradle/api/tasks/testing/AntTestNG.groovy	2008-10-30 11:05:28 +0000
+++ src/main/groovy/org/gradle/api/tasks/testing/AntTestNG.groovy	2008-10-30 22:56:48 +0000
@@ -20,6 +20,7 @@
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 import org.gradle.api.tasks.compile.AbstractOptions
+import org.gradle.api.tasks.testing.AbstractAntTestTask
 
 /**
  * @author Tom Eyckmans
@@ -27,26 +28,41 @@
 class AntTestNG extends AbstractAntTestTask {
     private static Logger logger = LoggerFactory.getLogger(AntTestNG);
 
-    void execute(File compiledTestsClassesDir, List classPath, File testResultsDir, File testReportDir, List includes, List excludes, AbstractOptions testngOptions, AntBuilder ant) {
+    static final String CLASSPATH_ID = 'runtests.classpath'
+
+    static final String FAILURES_OR_ERRORS_PROPERTY = 'org.gradle.api.tasks.testing.failuresOrErrors'
+
+    void execute(File compiledTestsClassesDir, List classPath, File testResultsDir, File testReportDir, List includes, List excludes, TestOptions testngOptions, AntBuilder ant) {
+        logger.info("executing testng tests...");
+
         ant.mkdir(dir: testResultsDir.absolutePath)
-        createAntClassPath(ant, classPath + BootstrapUtil.antTestNGJarFiles);
+        createAntClassPath(ant, classPath /*+ BootstrapUtil.antTestNGJarFiles*/);
 
-        testngOptions.outputdir = testResultsDir.absolutePath;
+        testngOptions.outputdir = testReportDir.absolutePath;
+        testngOptions.workingDir = testResultsDir.absolutePath;
 
         Map otherArgs = [
-                failureProperty : FAILURES_OR_ERRORS_PROPERTY
+                failureProperty : FAILURES_OR_ERRORS_PROPERTY,
+                dumpCommand : true
                 // skippedProperty : ??
         ]
 
+        ant.taskdef([resource : "testngtasks", classpath : "/home/teyckmans/lib/org/gradle/checkout/testng/testng-tester/lib/testng-5.8.jar"])
+
         ant.testng(otherArgs + testngOptions.optionMap()) {
-            testngOptions.jvmArgs.each {
-                jvmarg(value: it)
-            }
-            testngOptions.systemProperties.each {String key, String value ->
-                sysproperty(key: key, value: value)
-            }
-            testngOptions.environment.each {String key, String value ->
-                env(key: key, value: value)
+//            testngOptions.jvmArgs.each {
+//                jvmarg(value: it)
+//            }
+//            testngOptions.systemProperties.each {String key, String value ->
+//                sysproperty(key: key, value: value)
+//            }
+//            testngOptions.environment.each {String key, String value ->
+//                env(key: key, value: value)
+//            }
+            classpath {
+                classPath.each {
+                    pathelement(location : it)
+                }
             }
             classfileset (dir: compiledTestsClassesDir.absolutePath ) {
                 includes.each {
@@ -58,10 +74,20 @@
             }
         }
 
-        ant.junitreport(todir: testResultsDir.absolutePath) {
-            fileset(dir: testResultsDir.absolutePath, includes: '*.xml')
-            report(todir: testReportDir.absolutePath, format: 'noframes')            
+        logger.info("testng tests executed.");
+
+        /*
+        not happy with the output: class and package information is lost
+
+        logger.info("generating test report...")
+
+        ant.junitreport(todir: testReportDir.absolutePath) {
+            fileset(file: new File(testResultsDir, 'Ant suite/Ant test.xml'))
+            report(todir: testReportDir.absolutePath, format: 'noframes') // currently the testng docs mention an incompatability with the frames format
         }
+        
+        logger.info("test report generated.")
+        */
     }
 
 

=== renamed file 'src/main/groovy/org/gradle/api/tasks/testing/JunitForkOptions.groovy' => 'src/main/groovy/org/gradle/api/tasks/testing/ForkOptions.groovy'
--- src/main/groovy/org/gradle/api/tasks/testing/JunitForkOptions.groovy	2008-03-10 06:51:58 +0000
+++ src/main/groovy/org/gradle/api/tasks/testing/ForkOptions.groovy	2008-10-30 22:56:48 +0000
@@ -21,7 +21,7 @@
 /**
  * @author Hans Dockter
  */
-class JunitForkOptions extends AbstractOptions {
+class ForkOptions extends AbstractOptions {
     ForkMode forkMode = ForkMode.PER_TEST
     String timeout
     String maxMemory

=== modified file 'src/main/groovy/org/gradle/api/tasks/testing/JunitOptions.groovy'
--- src/main/groovy/org/gradle/api/tasks/testing/JunitOptions.groovy	2008-03-10 06:51:58 +0000
+++ src/main/groovy/org/gradle/api/tasks/testing/JunitOptions.groovy	2008-10-30 22:56:48 +0000
@@ -21,8 +21,7 @@
 /**
  * @author Hans Dockter
  */
-class JunitOptions extends AbstractOptions {
-    boolean fork = true
+class JunitOptions extends TestOptions {
     boolean filterTrace = true
     boolean showOutput = false
     boolean outputToFormatters = true
@@ -32,7 +31,7 @@
     String printSummary = 'true'
 
     FormatterOptions formatterOptions = new FormatterOptions()
-    JunitForkOptions forkOptions = new JunitForkOptions()
+
 
     Map systemProperties = [:]
     Map environment = [:]

=== modified file 'src/main/groovy/org/gradle/api/tasks/testing/Test.java'
--- src/main/groovy/org/gradle/api/tasks/testing/Test.java	2008-10-30 11:05:28 +0000
+++ src/main/groovy/org/gradle/api/tasks/testing/Test.java	2008-10-30 22:56:48 +0000
@@ -20,6 +20,7 @@
 import org.gradle.api.internal.ConventionTask;
 import org.gradle.api.tasks.compile.ClasspathConverter;
 import org.gradle.api.tasks.util.ExistingDirsFilter;
+import org.gradle.api.tasks.testing.AbstractAntTestTask;
 import org.gradle.util.GUtil;
 import org.gradle.util.WrapUtil;
 import org.slf4j.Logger;
@@ -58,7 +59,7 @@
      * This task delegates to Ants Junit task for the execution of the tests. This options contain most of the options
      * of Ants Junit task.
      */
-  private JunitOptions /* AbstractOptions */ options = new JunitOptions();
+  private TestOptions options = new JunitOptions();
 
     /**
      * Include pattern for the filess in the test classes directory (e.g. '**&#2F;*Test.class')).
@@ -102,15 +103,22 @@
     }
 
     protected void executeTests(Task task) {
-        if (getTestClassesDir() == null) throw new InvalidUserDataException(
+        testClassesDir = getTestClassesDir();
+        testResultsDir = getTestResultsDir();
+        testReportDir = getTestReportDir();
+
+        if (testClassesDir == null) throw new InvalidUserDataException(
                 "The testClassesDir property is not set, testing can't be triggered!");
-        if (getTestResultsDir() == null) throw new InvalidUserDataException(
+        if (testResultsDir == null) throw new InvalidUserDataException(
                 "The testResultsDir property is not set, testing can't be triggered!");
 
-        existingDirsFilter.checkExistenceAndThrowStopActionIfNot(getTestClassesDir());
-
-        antJunit.execute(getTestClassesDir(), getClasspath(), getTestResultsDir(), getTestReportDir(), includes,
-                excludes, options, getProject().getAnt());
+        existingDirsFilter.checkExistenceAndThrowStopActionIfNot(testClassesDir);
+
+        testResultsDir.mkdir();
+        testReportDir.mkdir();
+
+        antJunit.execute(testClassesDir, getClasspath(), testResultsDir, testReportDir, includes, excludes, options, getProject().getAnt());
+
         if (stopAtFailuresOrErrors && GUtil.isTrue(getProject().getAnt().getProject().getProperty(AntJunit.FAILURES_OR_ERRORS_PROPERTY))) {
             throw new GradleException("There were failing tests. See the report at " + getTestReportDir() + ".");
         }
@@ -208,7 +216,7 @@
      * Returns an JUnit option instance to read or modify.
      * @return
      */
-    public JunitOptions getOptions() {
+    public TestOptions getOptions() {
         return options;
     }
 
@@ -217,7 +225,7 @@
      * 
      * @param options The new instance
      */
-    public void setOptions(JunitOptions options) {
+    public void setOptions(TestOptions options) {
         this.options = options;
     }
 
@@ -324,6 +332,7 @@
     }
 
     public void useTestNG ( ) {
+        options = new TestNGOptions();
       antJunit = new AntTestNG/* <TestNGOptions> */ ( ) ;
     }
 }

=== modified file 'src/main/groovy/org/gradle/api/tasks/testing/TestNGOptions.groovy'
--- src/main/groovy/org/gradle/api/tasks/testing/TestNGOptions.groovy	2008-10-28 09:22:45 +0000
+++ src/main/groovy/org/gradle/api/tasks/testing/TestNGOptions.groovy	2008-10-30 22:56:48 +0000
@@ -5,34 +5,44 @@
 /**
  * @author Tom Eyckmans
  */
-class TestNGOptions extends AbstractOptions {
+class TestNGOptions extends TestOptions {
     String annotations = 'JDK'
-    boolean dumpCommand = false
-    boolean enableAssert = true
-    boolean haltonfailure = false
-    boolean haltonskipped = false
+//    boolean dumpCommand = false
+//    boolean enableAssert = true
+//    boolean haltonfailure = false
+//    boolean haltonskipped = false
 
-    List<String> groups = new ArrayList<String>()
-    List<String> excludedgroups = new ArrayList<String>()
-    String jvm = "java"
+//    List<String> groups = new ArrayList<String>()
+//    List<String> excludedgroups = new ArrayList<String>()
+//    String jvm = "java"
 
     String outputdir
     String sourcedir
-    String suiteRunnerClass
-    boolean parallel = false
-    int threadCount = 1
-    String testJar
-    long timeOut
-    boolean useDefaultListeners = true
+//    String suiteRunnerClass
+//    boolean parallel = false
+//    int threadCount = 1
+//    String testJar
+//    long timeOut = Long.MAX_VALUE
+//    boolean useDefaultListeners = true
     String workingDir
-    String suitename = 'Ant suite'
-    String testname = 'Ant test'
-
-    List jvmArgs = []
-    Map systemProperties = [:]
-    Map environment = [:]
-
-    List excludedFieldsFromOptionMap() {
-        ['systemProperties', 'jvmArgs', 'environment']
+//    String suitename = 'Ant suite'
+//    String testname = 'Ant test'
+
+//    List jvmArgs = []
+//    Map systemProperties = [:]
+//    Map environment = [:]
+
+//    List excludedFieldsFromOptionMap() {
+//        ['systemProperties', 'jvmArgs', 'environment']
+//    }
+
+    Map optionMap() {
+        super.optionMap()
+    }
+
+    JunitOptions fork(Map forkArgs) {
+        fork = true
+        forkOptions.define(forkArgs)
+        this
     }
 }
\ No newline at end of file

=== added file 'src/main/groovy/org/gradle/api/tasks/testing/TestOptions.groovy'
--- src/main/groovy/org/gradle/api/tasks/testing/TestOptions.groovy	1970-01-01 00:00:00 +0000
+++ src/main/groovy/org/gradle/api/tasks/testing/TestOptions.groovy	2008-10-30 22:56:48 +0000
@@ -0,0 +1,11 @@
+package org.gradle.api.tasks.testing
+
+import org.gradle.api.tasks.compile.AbstractOptions
+
+/**
+ * @author Tom Eyckmans
+ */
+abstract class TestOptions extends AbstractOptions {
+    boolean fork = true;
+    ForkOptions forkOptions = new ForkOptions()
+}
\ No newline at end of file

=== modified file 'src/test/groovy/org/gradle/api/tasks/testing/JunitForkOptionsTest.groovy'
--- src/test/groovy/org/gradle/api/tasks/testing/JunitForkOptionsTest.groovy	2008-07-07 11:43:37 +0000
+++ src/test/groovy/org/gradle/api/tasks/testing/JunitForkOptionsTest.groovy	2008-10-30 22:56:48 +0000
@@ -24,10 +24,10 @@
  * @author Hans Dockter
  */
 class JunitForkOptionsTest {
-    JunitForkOptions junitForkOptions
+    ForkOptions junitForkOptions
 
     @Before public void setUp()  {
-        junitForkOptions = new JunitForkOptions()
+        junitForkOptions = new ForkOptions()
     }
 
     @Test public void testJunitForkOptions() {

=== modified file 'src/test/groovy/org/gradle/api/tasks/testing/JunitOptionsTest.groovy'
--- src/test/groovy/org/gradle/api/tasks/testing/JunitOptionsTest.groovy	2008-07-07 11:43:37 +0000
+++ src/test/groovy/org/gradle/api/tasks/testing/JunitOptionsTest.groovy	2008-10-30 22:56:48 +0000
@@ -32,7 +32,7 @@
     @Before public void setUp()  {
         junitOptions = new JunitOptions()
         junitOptions.formatterOptions  = [optionMap: {TEST_FORMATTER_OPTION_MAP}] as FormatterOptions
-        junitOptions.forkOptions = [optionMap: {TEST_FORK_OPTION_MAP}] as JunitForkOptions
+        junitOptions.forkOptions = [optionMap: {TEST_FORK_OPTION_MAP}] as ForkOptions
     }
 
     @Test public void testCompileOptions() {
@@ -104,7 +104,7 @@
         junitOptions.forkOptions = [define: {Map args ->
             forkUseCalled = true
             assertEquals(TEST_FORK_OPTION_MAP, args)
-        }] as JunitForkOptions
+        }] as ForkOptions
         assert junitOptions.fork(TEST_FORK_OPTION_MAP).is(junitOptions)
         assertTrue(junitOptions.fork)
         assertTrue(forkUseCalled)

=== modified file 'src/test/groovy/org/gradle/api/tasks/testing/TestTest.java'
--- src/test/groovy/org/gradle/api/tasks/testing/TestTest.java	2008-10-29 21:50:56 +0000
+++ src/test/groovy/org/gradle/api/tasks/testing/TestTest.java	2008-10-30 22:56:48 +0000
@@ -114,7 +114,7 @@
         setExistingDirsFilter();
         context.checking(new Expectations() {{
             one(antJunitMock).execute(TEST_TEST_CLASSES_DIR, TEST_CONVERTED_CLASSPATH, TEST_TEST_RESULTS_DIR, TEST_TEST_REPORT_DIR,
-                    test.getIncludes(), test.getExcludes(), test.getOptions(), getProject().getAnt());
+                    test.getIncludes(), test.getExcludes(), (JunitOptions)test.getOptions(), getProject().getAnt());
         }});
 
         test.execute();
@@ -126,7 +126,7 @@
         setExistingDirsFilter();
         context.checking(new Expectations() {{
             one(antJunitMock).execute(TEST_TEST_CLASSES_DIR, TEST_CONVERTED_CLASSPATH, TEST_TEST_RESULTS_DIR, TEST_TEST_REPORT_DIR,
-                    test.getIncludes(), test.getExcludes(), test.getOptions(), getProject().getAnt());
+                    test.getIncludes(), test.getExcludes(), (JunitOptions)test.getOptions(), getProject().getAnt());
             will(new AntPropertyAction(AntJunit.FAILURES_OR_ERRORS_PROPERTY, "somevalue"));
         }});
         test.execute();
@@ -138,7 +138,7 @@
         test.setStopAtFailuresOrErrors(false);
         context.checking(new Expectations() {{
             one(antJunitMock).execute(TEST_TEST_CLASSES_DIR, TEST_CONVERTED_CLASSPATH, TEST_TEST_RESULTS_DIR, TEST_TEST_REPORT_DIR,
-                    test.getIncludes(), test.getExcludes(), test.getOptions(), getProject().getAnt());
+                    test.getIncludes(), test.getExcludes(), (JunitOptions)test.getOptions(), getProject().getAnt());
             will(new AntPropertyAction(AntJunit.FAILURES_OR_ERRORS_PROPERTY, "somevalue"));
         }});
         test.execute();

=== modified file 'src/test/groovy/org/gradle/integtests/ProjectLoadingIntegrationTest.java'
--- src/test/groovy/org/gradle/integtests/ProjectLoadingIntegrationTest.java	2008-10-10 19:36:41 +0000
+++ src/test/groovy/org/gradle/integtests/ProjectLoadingIntegrationTest.java	2008-10-30 22:56:48 +0000
@@ -15,10 +15,8 @@
  */
 package org.gradle.integtests;
 
-import static org.apache.commons.io.FileUtils.*;
 import static org.junit.Assert.*;
 import org.junit.Test;
-import org.junit.Ignore;
 
 import java.io.File;
 import java.io.IOException;
@@ -26,7 +24,7 @@
 public class ProjectLoadingIntegrationTest extends AbstractIntegrationTest {
     @Test
     public void handlesSimilarlyNamedBuildFilesInSameDirectory() {
-        File buildFile1 = getTestBuildFile("similarly-named build.gradle");
+        File buildFile1 = getTestBuildFile("similarly-named-build.gradle");
         File buildFile2 = getTestBuildFile("similarly_named_build_gradle");
         assertEquals(buildFile1.getParentFile(), buildFile2.getParentFile());
 

# Begin bundle
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
hQkLsZ6eUA==
