Check-in done. The problem was the http, and not https.
Gilles Scokart 2009/2/14 Gilles Scokart <gscok...@gmail.com>: > There is one change missing.that I couldn't commit in the common script. > > Here is what I have : > > ~/projects/open_source/antunit/common $ svn ci -m "Add error handling > in the initalisation of the project" > svn: Commit failed (details follow): > svn: MKACTIVITY of > '/repos/asf/!svn/act/a35f7595-ef2e-fd40-8bde-e65e91cbfb34': 403 > Forbidden (http://svn.apache.org) > > ~/projects/open_source/antunit/common $ svn info > Path: . > URL: http://svn.apache.org/repos/asf/ant/antlibs/common/trunk > Repository Root: http://svn.apache.org/repos/asf > Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68 > Revision: 744467 > Node Kind: directory > Schedule: normal > Last Changed Author: maartenc > Last Changed Rev: 740475 > Last Changed Date: 2009-02-03 23:08:58 +0100 (Tue, 03 Feb 2009) > > > I will ask the infra list, and try the european mirror. In the > meantime, here is the diff. As soon as it is solved, I will check it > in : > > > Index: build.xml > =================================================================== > --- build.xml (revision 744467) > +++ build.xml (working copy) > @@ -37,6 +37,8 @@ > <!-- javac properties --> > <property name="javac.-source" value="1.2"/> > <property name="javac.-target" value="1.2"/> > + <property name="javac.test-source" value="${javac.-source}"/> > + <property name="javac.test-target" value="${javac.-target}"/> > <property name="javac.debug" value="on"/> > > <!--you really need a proper version in version.properties--> > @@ -153,8 +155,8 @@ > srcdir="${src.junit}" > destdir="${build.testclasses}" > debug="${javac.debug}" > - source="${javac.-source}" > - target="${javac.-target}" > + source="${javac.test-source}" > + target="${javac.test-target}" > > > <classpath> > <pathelement location="${jarname}"/> > > > > Gilles Scokart > > > > 2009/2/12 <gscok...@apache.org>: >> Author: gscokart >> Date: Thu Feb 12 22:21:28 2009 >> New Revision: 743906 >> >> URL: http://svn.apache.org/viewvc?rev=743906&view=rev >> Log: >> Add Junit3 and Junit4 adapters allowing to launch AntUnit script from JUnit >> runner (I still have some weakness to fix in the junit4 runner) >> >> Added: >> ant/antlibs/antunit/trunk/src/etc/testcases/antunit/junit.xml (with >> props) >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/ >> >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitSuite.java >> (with props) >> >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitTestCase.java >> (with props) >> >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/JunitNotificationAdapter.java >> (with props) >> >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/MultiProjectDemuxOutputStream.java >> (with props) >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/ >> >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitSuiteRunner.java >> (with props) >> >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitTestCaseRunner.java >> (with props) >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/ >> >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitSuiteTest.java >> (with props) >> >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java >> (with props) >> >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/EatYourOwnDogFoodTest.java >> (with props) >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit4/ >> >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteTest.java >> (with props) >> Modified: >> ant/antlibs/antunit/trunk/build.xml >> ant/antlibs/antunit/trunk/changes.xml >> ant/antlibs/antunit/trunk/contributors.xml >> >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ProjectFactory.java >> >> Modified: ant/antlibs/antunit/trunk/build.xml >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/build.xml?rev=743906&r1=743905&r2=743906&view=diff >> ============================================================================== >> --- ant/antlibs/antunit/trunk/build.xml (original) >> +++ ant/antlibs/antunit/trunk/build.xml Thu Feb 12 22:21:28 2009 >> @@ -25,5 +25,8 @@ >> <!-- don't fork junit; regexp classes not available --> >> <property name="junit.fork" value="false" /> >> >> + <property name="javac.test-source" value="1.5"/> >> + <property name="javac.test-target" value="1.5"/> >> + >> <import file="common/build.xml"/> >> </project> >> >> Modified: ant/antlibs/antunit/trunk/changes.xml >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/changes.xml?rev=743906&r1=743905&r2=743906&view=diff >> ============================================================================== >> --- ant/antlibs/antunit/trunk/changes.xml (original) >> +++ ant/antlibs/antunit/trunk/changes.xml Thu Feb 12 22:21:28 2009 >> @@ -38,6 +38,9 @@ >> </properties> >> >> <release version="1.2" date="not-released"> >> + <action type="add"> >> + Add Junit3 and Junit4 adapters allowing to launch AntUnit script from >> JUnit runner >> + </action> >> <action type="update"> >> expectfailure report the original build exception chained when failing >> </action> >> >> Modified: ant/antlibs/antunit/trunk/contributors.xml >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/contributors.xml?rev=743906&r1=743905&r2=743906&view=diff >> ============================================================================== >> --- ant/antlibs/antunit/trunk/contributors.xml (original) >> +++ ant/antlibs/antunit/trunk/contributors.xml Thu Feb 12 22:21:28 2009 >> @@ -62,4 +62,8 @@ >> <first>Steve</first> >> <last>Loughran</last> >> </name> >> + <name> >> + <first>Gilles</first> >> + <last>Scokart</last> >> + </name> >> </contributors> >> >> Added: ant/antlibs/antunit/trunk/src/etc/testcases/antunit/junit.xml >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/etc/testcases/antunit/junit.xml?rev=743906&view=auto >> ============================================================================== >> --- ant/antlibs/antunit/trunk/src/etc/testcases/antunit/junit.xml (added) >> +++ ant/antlibs/antunit/trunk/src/etc/testcases/antunit/junit.xml Thu Feb 12 >> 22:21:28 2009 >> @@ -0,0 +1,59 @@ >> +<?xml version="1.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. >> +--> >> + >> +<project name="junit" default="all" xmlns:au="antlib:org.apache.ant.antunit" >> + basedir="../../../../"> >> + >> + <target name="all"> >> + <fail message="These are not standalone tests." /> >> + </target> >> + >> + <property name="outputdir" location="target/test_output"/> >> + <property name="outputfile" location="${outputdir}/junit_out.xml"/> >> + >> + <target name="suiteSetUp"> >> + <mkdir dir="${outputdir}"/> >> + <delete file="${outputfile}"/> >> + <echo file="${outputfile}" append="true" message="suiteSetUp-" /> >> + </target> >> + >> + <target name="suiteTearDown"> >> + <echo file="${outputfile}" append="true" message="suiteTearDown" /> >> + </target> >> + >> + <target name="setUp"> >> + <echo file="${outputfile}" append="true" message="setUp-" /> >> + </target> >> + >> + <target name="tearDown"> >> + <echo file="${outputfile}" append="true" message="tearDown-" /> >> + </target> >> + >> + >> + <target name="test1"> >> + <echo file="${outputfile}" append="true" message="test1-" /> >> + </target> >> + >> + <target name="test2"> >> + <echo file="${outputfile}" append="true" message="test2-" /> >> + </target> >> + >> + >> + </project> >> \ No newline at end of file >> >> Propchange: ant/antlibs/antunit/trunk/src/etc/testcases/antunit/junit.xml >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Modified: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ProjectFactory.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ProjectFactory.java?rev=743906&r1=743905&r2=743906&view=diff >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ProjectFactory.java >> (original) >> +++ >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/ProjectFactory.java >> Thu Feb 12 22:21:28 2009 >> @@ -4,7 +4,7 @@ >> >> /** >> * Provides project instances for AntUnit execution.<br/> >> - * The aproach to creates a project depends on the context. When invoked >> from an >> + * The approach to creates a project depends on the context. When invoked >> from an >> * ant project, some elements might be intialized from the parent project. >> When >> * executed in a junit runner, a brand new project must be initialized.<br/> >> * The AntScriptRunner will usually creates multiple project in order to >> provide test isolation. >> >> Added: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitSuite.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitSuite.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitSuite.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitSuite.java >> Thu Feb 12 22:21:28 2009 >> @@ -0,0 +1,168 @@ >> +/* >> + * 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.ant.antunit.junit3; >> + >> +import java.io.File; >> +import java.io.PrintStream; >> +import java.util.Collections; >> +import java.util.Enumeration; >> +import java.util.Iterator; >> +import java.util.List; >> + >> +import junit.framework.Test; >> +import junit.framework.TestResult; >> +import junit.framework.TestSuite; >> + >> +import org.apache.ant.antunit.AntUnitScriptRunner; >> +import org.apache.ant.antunit.ProjectFactory; >> +import org.apache.tools.ant.DefaultLogger; >> +import org.apache.tools.ant.MagicNames; >> +import org.apache.tools.ant.Project; >> +import org.apache.tools.ant.ProjectHelper; >> + >> +/** >> + * A JUnit 3 TestSuite that group a suite of AntUnit targets coming from an >> ant >> + * script. >> + */ >> +public class AntUnitSuite extends TestSuite { >> + >> + private final AntUnitScriptRunner antScriptRunner; >> + private final MultiProjectDemuxOutputStream stderr; >> + private final MultiProjectDemuxOutputStream stdout; >> + >> + /** >> + * Create a JUnit TestSuite that when executed will run the given ant >> + * script.<br/> >> + * Note that it is the responsibility of the caller to give the correct >> + * File reference. Namely, if the File is a relative file, it will >> + * be resolve relatively to the execution directory (which might be >> + * different different from the project root directory). >> + * >> + * @param scriptFile >> + * AntUnit script file >> + * @param rootClass >> + * The test class that creates this suite. This is used to >> give >> + * a name to the suite so that an IDE can reexecute this >> suite. >> + */ >> + public AntUnitSuite(final File scriptFile, Class rootClass) { >> + this(scriptFile); >> + setName(rootClass.getName());// Allows eclipse to reexecute the test >> + } >> + >> + /** >> + * Constructor used by AntUnitTestCase when a single test case is >> created. >> + * The difference with the public constructor is this version doesn't >> set >> + * the name. >> + */ >> + AntUnitSuite(final File scriptFile) { >> + MyProjectFactory prjFactory = new MyProjectFactory(scriptFile); >> + antScriptRunner = new AntUnitScriptRunner(prjFactory); >> + stdout = new MultiProjectDemuxOutputStream(antScriptRunner, false); >> + stderr = new MultiProjectDemuxOutputStream(antScriptRunner, true); >> + setName(antScriptRunner.getName() + "[" + scriptFile + "]"); >> + List testTargets = antScriptRunner.getTestTartgets(); >> + for (Iterator it = testTargets.iterator(); it.hasNext();) { >> + String target = (String) it.next(); >> + AntUnitTestCase tc = new AntUnitTestCase(this, scriptFile, >> target); >> + addTest(tc); >> + } >> + } >> + >> + /** >> + * @Override Run the full AntUnit suite >> + */ >> + public void run(TestResult testResult) { >> + List testTartgets = antScriptRunner.getTestTartgets(); >> + runInContainer(testTartgets, testResult, tests()); >> + } >> + >> + /** >> + * @Override Run a single test target of the AntUnit suite. suiteSetUp, >> + * setUp, tearDown and suiteTearDown are executed around it. >> + */ >> + public void runTest(Test test, TestResult result) { >> + String targetName = ((AntUnitTestCase) test).getTarget(); >> + List singleTargetList = Collections.singletonList(targetName); >> + Enumeration singleTestList = Collections.enumeration(Collections >> + .singletonList(test)); >> + runInContainer(singleTargetList, result, singleTestList); >> + } >> + >> + /** >> + * Execute the test suite in a 'container' similar to the ant >> 'container'. >> + * When ant executes a project it redirect the input and the output. In >> this >> + * context we will only redirect output (unit test are not supposed to >> be >> + * interactive) >> + * >> + * @param targetList >> + * The list of test target to execute >> + * @param result >> + * The JUnit3 TestResult receiving result notification >> + * @param tests >> + * The JUnit3 Test classes instances to use in the >> notification. >> + */ >> + private void runInContainer(List targetList, TestResult result, >> + Enumeration/*<Test>*/tests) { >> + JUnitNotificationAdapter notifier = new JUnitNotificationAdapter( >> + result, tests); >> + PrintStream savedErr = System.err; >> + PrintStream savedOut = System.out; >> + try { >> + System.setOut(new PrintStream(stdout)); >> + System.setErr(new PrintStream(stderr)); >> + antScriptRunner.runSuite(targetList, notifier); >> + } finally { >> + System.setOut(savedOut); >> + System.setErr(savedErr); >> + } >> + } >> + >> + /** >> + * The antscript project factory that creates projects in a junit >> context. >> + */ >> + private static class MyProjectFactory implements ProjectFactory { >> + >> + private final File scriptFile; >> + private final PrintStream realStdErr = System.err; >> + private final PrintStream realStdOut = System.out; >> + >> + public MyProjectFactory(File scriptFile) { >> + this.scriptFile = scriptFile; >> + } >> + >> + public Project createProject() { >> + ProjectHelper prjHelper = ProjectHelper.getProjectHelper(); >> + Project prj = new Project(); >> + DefaultLogger logger = new DefaultLogger(); >> + logger.setMessageOutputLevel(Project.MSG_INFO); >> + logger.setErrorPrintStream(realStdErr); >> + logger.setOutputPrintStream(realStdOut); >> + prj.addBuildListener(logger); >> + String absolutePath = scriptFile.getAbsolutePath(); >> + prj.setUserProperty(MagicNames.ANT_FILE, absolutePath); >> + prj.addReference(ProjectHelper.PROJECTHELPER_REFERENCE, >> prjHelper); >> + prj.init(); >> + prjHelper.parse(prj, scriptFile); >> + return prj; >> + } >> + } >> + >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitSuite.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Added: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitTestCase.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitTestCase.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitTestCase.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitTestCase.java >> Thu Feb 12 22:21:28 2009 >> @@ -0,0 +1,133 @@ >> +/* >> + * 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.ant.antunit.junit3; >> + >> +import java.io.File; >> + >> +import junit.framework.TestCase; >> +import junit.framework.TestResult; >> + >> +/** >> + * JUnit TestCase that will executes a single AntUnit target. This class is >> not >> + * supposed to be used directly. <br/> >> + * It is public only because junit must access it as a public. >> + */ >> +public class AntUnitTestCase extends TestCase { >> + // We have to extends TestCase, and not implements Test because >> otherwise >> + // JUnit4 will derive the Description composing the suite description >> from >> + // this className only (AntUnitTestCase), and not from the name. >> + // However, during execution it use the right Description (base on the >> + // toString) >> + >> + /** >> + * AntUnitSuite that contains this AntUnitTestCase. Execution is done >> via >> + * this suite >> + */ >> + private final AntUnitSuite suite; >> + >> + /** >> + * The test target >> + */ >> + private final String target; >> + >> + /** >> + * Prepare an AntUnitTestCase that will be executed alone. This >> constructor >> + * is typically used by a junit 3 runner that will reexecute a specific >> + * test.</br> >> + * The execution of this test will be embed in a suiteSetUp and >> + * suiteTearDown. >> + * @param name The name of the AntUnitTestCase, normally obtained from a >> + * previous execution. >> + */ >> + public AntUnitTestCase(String name) { >> + super(name); >> + TestCaseName nameParser = new TestCaseName(name); >> + target = nameParser.getTarget(); >> + suite = new AntUnitSuite(nameParser.getScript()); >> + // TODO : check that target is in the list >> + } >> + >> + /** >> + * Prepare an AntUnitTestCase that will be executed in a suite. It is >> the >> + * suite that prepare the antScriptRunner and the >> JUnitExcutionPlatform. It >> + * is the responsibility of the suite to execute the suiteSetUp and the >> + * suiteTearDown. >> + * >> + * @param target >> + * @param antScriptRunner >> + * @param executionEnv >> + */ >> + public AntUnitTestCase(AntUnitSuite suite, File scriptFile, String >> target) { >> + // The name can be reused by eclipse when running a single test >> + super(new TestCaseName(scriptFile, target).getName()); >> + this.target = target; >> + this.suite = suite; >> + } >> + >> + /** Get the AntUnit test target name */ >> + public String getTarget() { >> + return target; >> + } >> + >> + /** @overwrite */ >> + public void run(TestResult result) { >> + suite.runTest(this, result); >> + } >> + >> + /** >> + * Handle the serialization and the parsing of the name of a TestCase. >> The >> + * name of the TestCase contains the filename of the script and the >> target, >> + * so that the name uniquely identify the TestCase, and a TestCase can >> be >> + * executed from its name. >> + */ >> + static class TestCaseName { >> + private final String name; >> + private final File script; >> + private final String target; >> + >> + public TestCaseName(String name) { >> + this.name = name; >> + this.target = name.substring(0, name.indexOf(' ')); >> + String filename = name.substring(name.indexOf(' ') + 2, name >> + .length() - 1); >> + this.script = new File(filename); >> + } >> + >> + public TestCaseName(File script, String target) { >> + this.script = script; >> + this.target = target; >> + this.name = target + " [" + script + "]"; >> + } >> + >> + public String getName() { >> + return name; >> + } >> + >> + public File getScript() { >> + return script; >> + } >> + >> + public String getTarget() { >> + return target; >> + } >> + } >> + >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/AntUnitTestCase.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Added: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/JunitNotificationAdapter.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/JunitNotificationAdapter.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/JunitNotificationAdapter.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/JunitNotificationAdapter.java >> Thu Feb 12 22:21:28 2009 >> @@ -0,0 +1,69 @@ >> +/* >> + * 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.ant.antunit.junit3; >> + >> +import java.util.Enumeration; >> +import java.util.HashMap; >> +import java.util.Map; >> + >> +import junit.framework.Test; >> +import junit.framework.TestResult; >> + >> +import org.apache.ant.antunit.AntUnitExecutionNotifier; >> +import org.apache.ant.antunit.AssertionFailedException; >> + >> +/** >> + * Adapt AntUnitExecutionNotifier events into JUnit3 TestResult events >> + */ >> +class JUnitNotificationAdapter implements AntUnitExecutionNotifier { >> + >> + private final TestResult junitTestResult; >> + private Map testByTarget = new HashMap(); >> + >> + public JUnitNotificationAdapter(TestResult testResult, Enumeration >> tests) { >> + this.junitTestResult = testResult; >> + while(tests.hasMoreElements()) { >> + AntUnitTestCase test = (AntUnitTestCase) tests.nextElement(); >> + testByTarget.put(test.getTarget(), test); >> + } >> + } >> + >> + public void fireStartTest(String targetName) { >> + //TODO : if it is null, eclipse stop the unit test (add a unit test) >> + junitTestResult.startTest((Test) testByTarget.get(targetName)); >> + } >> + >> + public void fireEndTest(String targetName) { >> + junitTestResult.endTest((Test) testByTarget.get(targetName)); >> + } >> + >> + public void fireError(String targetName, Throwable t) { >> + junitTestResult.addError((Test) testByTarget.get(targetName), t); >> + } >> + >> + public void fireFail(String targetName, AssertionFailedException ae) { >> + //I don't see how to transform the AntUnit assertion exception into >> + //junit assertion exception (we would loose the stack trace). >> + //So failures will be reported as errors >> + junitTestResult.addError((Test) testByTarget.get(targetName), ae); >> + } >> + >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/JunitNotificationAdapter.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Added: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/MultiProjectDemuxOutputStream.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/MultiProjectDemuxOutputStream.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/MultiProjectDemuxOutputStream.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/MultiProjectDemuxOutputStream.java >> Thu Feb 12 22:21:28 2009 >> @@ -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.ant.antunit.junit3; >> + >> +import java.io.IOException; >> +import java.io.OutputStream; >> + >> +import org.apache.ant.antunit.AntUnitScriptRunner; >> +import org.apache.tools.ant.DemuxOutputStream; >> +import org.apache.tools.ant.Project; >> + >> + >> +/** >> + * Forward stdout or stderr operation to the current antunit project. >> + */ >> +class MultiProjectDemuxOutputStream extends OutputStream { >> + >> + private final AntUnitScriptRunner scriptRunner; >> + >> + private Project lastProject; >> + private DemuxOutputStream lastDemuxOutputStream = null; >> + >> + private final boolean isErrorStream; >> + >> + public MultiProjectDemuxOutputStream(AntUnitScriptRunner scriptRunner, >> boolean isErrorStream) { >> + this.scriptRunner = scriptRunner; >> + this.isErrorStream = isErrorStream; >> + } >> + >> + >> + private DemuxOutputStream getDemuxOutputStream() { >> + if (lastProject != scriptRunner.getCurrentProject()) { >> + lastProject = scriptRunner.getCurrentProject(); >> + lastDemuxOutputStream = new >> DemuxOutputStream(lastProject,isErrorStream); >> + } >> + return lastDemuxOutputStream; >> + } >> + >> + public void write(int b) throws IOException { >> + getDemuxOutputStream().write(b); >> + } >> + >> + public void write(byte[] b, int off, int len) throws IOException { >> + getDemuxOutputStream().write(b, off, len); >> + } >> + >> + public void close() throws IOException { >> + getDemuxOutputStream().close(); >> + } >> + >> + public void flush() throws IOException { >> + getDemuxOutputStream().flush(); >> + } >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit3/MultiProjectDemuxOutputStream.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Added: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitSuiteRunner.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitSuiteRunner.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitSuiteRunner.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitSuiteRunner.java >> Thu Feb 12 22:21:28 2009 >> @@ -0,0 +1,75 @@ >> +/* >> + * 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.ant.antunit.junit4; >> + >> +import java.lang.reflect.InvocationTargetException; >> +import java.lang.reflect.Method; >> +import java.lang.reflect.Modifier; >> +import java.util.Enumeration; >> + >> +import org.apache.ant.antunit.junit3.AntUnitSuite; >> +import org.apache.ant.antunit.junit3.AntUnitTestCase; >> +import org.junit.internal.runners.CompositeRunner; >> +import org.junit.internal.runners.InitializationError; >> + >> +/** >> + * JUnit4 Runner to put in a RunWith annotation of the AntUnitSuite when >> using a >> + * JUnit4 runner. Using this runner is not mandatory because junit4 is able >> to >> + * run junit3 test. However, the test will be faster (TODO make that true >> :-) ) >> + * with this Runner. Also, more features are available when this runner is >> used >> + * (filtering & sorting) >> + * TODO Support filtering and sorting >> + */ >> +public class AntUnitSuiteRunner extends CompositeRunner { >> + >> + private AntUnitSuiteRunner(AntUnitSuite suite, Class junitTestClass) { >> + super(suite.getName()); >> + Enumeration tests = suite.tests(); >> + while (tests.hasMoreElements()) { >> + AntUnitTestCase tc = (AntUnitTestCase) tests.nextElement(); >> + add(new AntUnitTestCaseRunner(tc, junitTestClass)); >> + } >> + } >> + >> + public AntUnitSuiteRunner(Class testCaseClass) throws >> InitializationError { >> + this(getJUnit3AntSuite(testCaseClass), testCaseClass); >> + } >> + >> + private static AntUnitSuite getJUnit3AntSuite(Class testCaseClass) >> + throws InitializationError { >> + try { >> + Method suiteMethod = testCaseClass.getMethod("suite", new >> Class[0]); >> + if (!Modifier.isStatic(suiteMethod.getModifiers())) { >> + throw new InitializationError("suite method must be >> static"); >> + } >> + return (AntUnitSuite) suiteMethod.invoke(null, new Object[0]); >> + } catch (NoSuchMethodException e) { >> + throw new InitializationError(new Throwable[] { e }); >> + } catch (IllegalAccessException e) { >> + throw new InitializationError(new Throwable[] { e }); >> + } catch (InvocationTargetException e) { >> + throw new InitializationError(new Throwable[] { e }); >> + } catch (ClassCastException e) { >> + throw new InitializationError(new Throwable[] { e }); >> + } >> + } >> + >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitSuiteRunner.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Added: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitTestCaseRunner.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitTestCaseRunner.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitTestCaseRunner.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitTestCaseRunner.java >> Thu Feb 12 22:21:28 2009 >> @@ -0,0 +1,77 @@ >> +/* >> + * 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.ant.antunit.junit4; >> + >> +import junit.framework.AssertionFailedError; >> +import junit.framework.Test; >> +import junit.framework.TestListener; >> +import junit.framework.TestResult; >> + >> +import org.apache.ant.antunit.junit3.AntUnitTestCase; >> +import org.junit.runner.Description; >> +import org.junit.runner.Runner; >> +import org.junit.runner.notification.Failure; >> +import org.junit.runner.notification.RunNotifier; >> + >> + >> +class AntUnitTestCaseRunner extends Runner { >> + >> + private final AntUnitTestCase fTest; >> + private final Class junitTestClass; >> + >> + public AntUnitTestCaseRunner(AntUnitTestCase testCase, Class >> junitTestClass) { >> + this.fTest = testCase; >> + this.junitTestClass = junitTestClass; >> + } >> + >> + public void run(final RunNotifier notifier) { >> + final Description description = getDescription(); >> + TestListener testListener = new TestListener() { >> + // TODO implement directly the mapping from >> AntUnitExecutionNotifier >> + // to junit4 RunNotifier >> + public void endTest(Test test) { >> + notifier.fireTestFinished(description); >> + } >> + >> + public void startTest(Test test) { >> + notifier.fireTestStarted(description); >> + } >> + >> + public void addError(Test test, Throwable t) { >> + Failure failure = new Failure(description, t); >> + notifier.fireTestFailure(failure); >> + } >> + >> + public void addFailure(Test test, AssertionFailedError t) { >> + addError(test, t); >> + } >> + }; >> + TestResult result = new TestResult(); >> + result.addListener(testListener); >> + fTest.run(result); >> + } >> + >> + public Description getDescription() { >> + return Description.createTestDescription(junitTestClass, fTest >> + .getName()); >> + } >> + >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/main/org/apache/ant/antunit/junit4/AntUnitTestCaseRunner.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Added: >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitSuiteTest.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitSuiteTest.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitSuiteTest.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitSuiteTest.java >> Thu Feb 12 22:21:28 2009 >> @@ -0,0 +1,87 @@ >> +/* >> + * 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.ant.antunit.junit3; >> + >> +import java.io.File; >> +import java.io.FileNotFoundException; >> +import java.io.FileReader; >> +import java.io.IOException; >> +import java.util.Enumeration; >> + >> +import junit.framework.TestCase; >> +import junit.framework.TestResult; >> + >> +import org.apache.tools.ant.util.FileUtils; >> + >> +public class AntUnitSuiteTest extends TestCase { >> + >> + AntUnitSuite suite = new AntUnitSuite(new File( >> + "src/etc/testcases/antunit/junit.xml")); >> + File outFile = new File("target/test_output/junit_out.xml"); >> + >> + public void testRunSuiteSetUp() throws FileNotFoundException, >> IOException { >> + >> + TestResult testResult = new TestResult(); >> + suite.run(testResult); >> + assertTrue(testResult.wasSuccessful()); >> + >> + String output = FileUtils.readFully(new FileReader(outFile)); >> + String EXPECT1 = >> "suiteSetUp-setUp-test1-tearDown-setUp-test2-tearDown-suiteTearDown"; >> + String EXPECT2 = >> "suiteSetUp-setUp-test2-tearDown-setUp-test1-tearDown-suiteTearDown"; >> + assertTrue("unexted output : " + output, EXPECT1.equals(output) >> + || EXPECT2.equals(output)); >> + } >> + >> + public void testSuiteName() { >> + assertTrue("Expected non empty suite name", suite.getName().trim() >> + .length() > 0); >> + } >> + >> + public void testChildNames() { >> + assertTrue("Expected more test, received " + suite.testCount(), >> + suite.testCount() >= 1); >> + >> + Enumeration/*<Test>*/tests = suite.tests(); >> + StringBuffer testTargets = new StringBuffer(); >> + while (tests.hasMoreElements()) { >> + String nextName = tests.nextElement().toString(); >> + testTargets.append(" ").append(nextName).append(" ,"); >> + } >> + >> + assertTrue("test1 not found in child : " + testTargets, testTargets >> + .toString().contains(" test1 ")); >> + } >> + >> + public void testSingleTestRunSuiteSetUp() throws Exception { >> + AntUnitTestCase test1 = (AntUnitTestCase) suite.testAt(0); >> + if (test1.getTarget().equals("test2")) { >> + test1 = (AntUnitTestCase) suite.testAt(1); >> + } >> + TestResult testResult = new TestResult(); >> + suite.runTest(test1, testResult); >> + assertTrue(testResult.wasSuccessful()); >> + >> + String output = FileUtils.readFully(new FileReader(outFile)); >> + assertTrue("unexted output : " + output, >> + >> "suiteSetUp-setUp-test1-tearDown-suiteTearDown".equals(output)); >> + } >> + >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitSuiteTest.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Added: >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java >> Thu Feb 12 22:21:28 2009 >> @@ -0,0 +1,71 @@ >> +package org.apache.ant.antunit.junit3; >> + >> +import java.io.File; >> +import java.io.FileNotFoundException; >> +import java.io.FileReader; >> +import java.io.IOException; >> + >> +import org.apache.ant.antunit.junit3.AntUnitTestCase; >> +import org.apache.tools.ant.util.FileUtils; >> + >> +import junit.framework.Assert; >> +import junit.framework.Test; >> +import junit.framework.TestCase; >> +import junit.framework.TestResult; >> + >> +public class AntUnitTestCaseTest extends TestCase { >> + >> + File f = new File("src/etc/testcases/antunit/junit.xml"); >> + String test1Name = new AntUnitTestCase.TestCaseName(f, >> "test1").getName(); >> + >> + File outFile = new File("target/test_output/junit_out.xml"); >> + >> + public void testNameParsing() { >> + AntUnitTestCase.TestCaseName nameObj = new >> AntUnitTestCase.TestCaseName( >> + test1Name); >> + assertEquals(f, nameObj.getScript()); >> + assertEquals("test1", nameObj.getTarget()); >> + } >> + >> + public void testRunSuiteSetUp() throws FileNotFoundException, >> IOException { >> + // When eclipse has to run a specific testCase (user click Run on >> it), >> + // an AntUnitTestCase(name) is created, and the run should execute >> the >> + // suiteSetup/SuiteTearDown >> + AntUnitTestCase antUnitTestCase = new AntUnitTestCase(test1Name); >> + >> + TestResult testResult = new TestResult(); >> + antUnitTestCase.run(testResult); >> + assertTrue(testResult.wasSuccessful()); >> + >> + String output = FileUtils.readFully(new FileReader(outFile)); >> + assertEquals("suiteSetUp-setUp-test1-tearDown-suiteTearDown", >> output); >> + } >> + >> + private Test startedTest = null; >> + private Test endedTest = null; >> + >> + public void testTestIdentityInNotification() { >> + // When eclipse has to run a specific testCase (user click Run on >> it), >> + // an AntUnitTestCase(name) is created, and this instance must be >> used >> + // in the notification (otherwise the test appears twice, once >> normal >> + // but never executed, and once with "Unrooted Tests" parent. >> + TestResult testResultMock = new TestResult() { >> + public void startTest(Test test) { >> + // Note that putting an assertion here to fail fatser >> doesn't >> + // work because >> + // exceptions are catched by the runner >> + startedTest = test; >> + } >> + >> + public void endTest(Test test) { >> + endedTest = test; >> + } >> + }; >> + >> + AntUnitTestCase antUnitTestCase = new AntUnitTestCase(test1Name); >> + antUnitTestCase.run(testResultMock); >> + >> + Assert.assertSame(antUnitTestCase, startedTest); >> + Assert.assertSame(antUnitTestCase, endedTest); >> + } >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/AntUnitTestCaseTest.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Added: >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/EatYourOwnDogFoodTest.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/EatYourOwnDogFoodTest.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/EatYourOwnDogFoodTest.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/EatYourOwnDogFoodTest.java >> Thu Feb 12 22:21:28 2009 >> @@ -0,0 +1,22 @@ >> +package org.apache.ant.antunit.junit3; >> + >> +import java.io.File; >> + >> +import junit.framework.TestCase; >> +import junit.framework.TestSuite; >> + >> +import org.apache.ant.antunit.junit4.AntUnitSuiteRunner; >> +import org.junit.runner.RunWith; >> + >> +/** >> + * A unit test using the junit3 and junit4 adapter. >> + */ >> +...@runwith(AntUnitSuiteRunner.class) >> +public class EatYourOwnDogFoodTest extends TestCase { >> + >> + public static TestSuite suite() { >> + File script = new File("src/etc/testcases/antunit/java-io.xml"); >> + return new AntUnitSuite(script, EatYourOwnDogFoodTest.class); >> + } >> + >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit3/EatYourOwnDogFoodTest.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Added: >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteTest.java >> URL: >> http://svn.apache.org/viewvc/ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteTest.java?rev=743906&view=auto >> ============================================================================== >> --- >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteTest.java >> (added) >> +++ >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteTest.java >> Thu Feb 12 22:21:28 2009 >> @@ -0,0 +1,110 @@ >> +package org.apache.ant.antunit.junit4; >> + >> +import java.io.File; >> +import java.util.ArrayList; >> + >> +import junit.framework.TestCase; >> + >> +import org.apache.ant.antunit.junit3.AntUnitSuite; >> +import org.junit.Ignore; >> +import org.junit.internal.runners.InitializationError; >> +import org.junit.runner.Description; >> +import org.junit.runner.notification.RunNotifier; >> + >> +public class AntUnitSuiteTest extends TestCase { >> + >> + private boolean mockExecutionOK = false; >> + private String mockExcutionError = ""; >> + >> + /** >> + * When a test is executed, the description used in the notification >> must be >> + * equals to the description declared, otherwise the runner is confused >> (for >> + * example in eclipse you have all the tests listed twice, but reported >> only >> + * once as executed. >> + * >> + * @throws InitializationError >> + */ >> + public void testDescriptionsReportedInNotifier() throws >> InitializationError { >> + final AntUnitSuiteRunner runner = new AntUnitSuiteRunner( >> + JUnit4AntUnitRunnable.class); >> + final ArrayList tDescs = runner.getDescription().getChildren(); >> + >> + final int TEST_STARTED = 1, TEST_FINISHED = 2; >> + RunNotifier notifierMock = new RunNotifier() { >> + Description curTest = null; >> + >> + public void fireTestStarted(Description description) { >> + if (curTest != null) { >> + mockExcutionError += "Unexpected fireTestStarted(" >> + + description.getDisplayName() + "\n"; >> + } >> + if (!tDescs.contains(description)) { >> + mockExcutionError += "Unexpected fireTestStarted(" >> + + description.getDisplayName() + ")\n"; >> + } >> + curTest = description; >> + } >> + >> + @Override >> + public void fireTestFinished(Description description) { >> + if (curTest == null) { >> + mockExcutionError += "Unexpected fireTestFinished(" >> + + description.getDisplayName() + "\n"; >> + } >> + if (!curTest.equals(description)) { >> + mockExcutionError += "Unexpected fireTestFinished(" >> + + description.getDisplayName() + "); expect " >> + + curTest.getDisplayName() + "\n"; >> + } >> + curTest = null; >> + mockExecutionOK = true; >> + } >> + }; >> + >> + runner.run(notifierMock); >> + assertTrue(mockExcutionError, mockExcutionError.isEmpty()); >> + assertTrue(mockExecutionOK); >> + } >> + >> + public void testMissingSuiteMethodInitializationError() { >> + try { >> + AntUnitSuiteRunner runner = new AntUnitSuiteRunner( >> + JUnit4AntUnitRunnableWithoutSuiteMethod.class); >> + fail("InitializationError expected"); >> + } catch (InitializationError e) { >> + String msg = e.getCauses().get(0).getMessage(); >> + assertTrue("Unexpected error : " + msg, msg.contains("suite")); >> + } >> + } >> + >> + public void testNonStaticSuiteMethodInitializationError() { >> + try { >> + AntUnitSuiteRunner runner = new AntUnitSuiteRunner( >> + JUnit4AntUnitRunnableWithNonStaticSuite.class); >> + fail("InitializationError expected"); >> + } catch (InitializationError e) { >> + String msg = e.getCauses().get(0).getMessage(); >> + assertTrue("Unexpected error : " + msg, msg.contains("suite")); >> + assertTrue("Unexpected error : " + msg, msg.contains("static")); >> + } >> + } >> + >> + public static class JUnit4AntUnitRunnable { >> + public static AntUnitSuite suite() { >> + File f = new File("src/etc/testcases/antunit/junit.xml"); >> + return new AntUnitSuite(f, JUnit4AntUnitRunnable.class); >> + } >> + } >> + >> + public static class JUnit4AntUnitRunnableWithNonStaticSuite { >> + public AntUnitSuite suite() { >> + File f = new File("src/etc/testcases/antunit/junit.xml"); >> + return new AntUnitSuite(f, >> + JUnit4AntUnitRunnableWithNonStaticSuite.class); >> + } >> + } >> + >> + public static class JUnit4AntUnitRunnableWithoutSuiteMethod { >> + } >> + >> +} >> >> Propchange: >> ant/antlibs/antunit/trunk/src/tests/junit/org/apache/ant/antunit/junit4/AntUnitSuiteTest.java >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional commands, e-mail: dev-h...@ant.apache.org