[P-unit-devel] SF.net SVN: p-unit: [163] trunk/punit
Status: Beta
Brought to you by:
zhanghuangzhu
|
From: <zha...@us...> - 2007-05-27 09:12:07
|
Revision: 163
http://p-unit.svn.sourceforge.net/p-unit/?rev=163&view=rev
Author: zhanghuangzhu
Date: 2007-05-27 02:12:08 -0700 (Sun, 27 May 2007)
Log Message:
-----------
Andrew Zhang: add clone method in Runner so that the output is correct.
Modified Paths:
--------------
trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java
trunk/punit/src/org/punit/runner/PUnitAbstractRunner.java
trunk/punit/src/org/punit/runner/Runner.java
trunk/punit/src/org/punit/runner/method/AbstractMethodRunner.java
trunk/punit/src/org/punit/runner/method/MethodRunner.java
trunk/punit/src/org/punit/watcher/MemoryWatcher.java
trunk/punit/src/org/punit/watcher/TimeWatcher.java
trunk/punit/src/org/punit/watcher/Watcher.java
trunk/punit.test/src/tests/api/org/punit/all/AllTests.java
trunk/punit.test/src/tests/api/org/punit/runner/PUnitSoloRunnerTest.java
Added Paths:
-----------
trunk/punit.test/src/tests/api/org/punit/runner/AbstractRunnerTest.java
Removed Paths:
-------------
trunk/punit.test/src/tests/api/org/punit/runner/AbstractPUnitRunnerTest.java
Modified: trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java
===================================================================
--- trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit/src/org/punit/reporter/stream/StreamLoggerListener.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -114,23 +114,30 @@
}
private void logTestMethodResult(Method method, Object[] params, List watchers, Throwable t) {
- log(ReporterUtil.simpleMethodName(method, params), Level.INFO);
+ final StringBuffer sb = new StringBuffer();
+ String simpleMethodName = ReporterUtil.simpleMethodName(method, params);
+ sb.append(simpleMethodName);
if (watchers.size() > 0) {
final Iterator iter = watchers.iterator();
Watcher watcher = (Watcher) iter.next();
- log(" - [" + watcher.stringValue(), Level.FINE); //$NON-NLS-1$
+ sb.append(" - ["); //$NON-NLS-1$
+ sb.append(watcher.stringValue());
TraverserUtil.traverse(iter, new Traverser() {
public void traverse(Object obj) {
Watcher watcher = (Watcher) obj;
- log("," + watcher.stringValue(), Level.FINE); //$NON-NLS-1$
+ sb.append(","); //$NON-NLS-1$
+ sb.append(watcher.stringValue());
}
});
- log("]", Level.INFO); //$NON-NLS-1$
+ sb.append("]"); //$NON-NLS-1$
}
- logln(Level.INFO);
+
+ sb.append(ReporterUtil.LINE_SEPERATOR);
if(t != null) {
- logln(t.toString(), Level.INFO);
+ sb.append(t.toString());
+ sb.append(ReporterUtil.LINE_SEPERATOR);
}
+ log(sb.toString(), Level.INFO);
}
public void setStream(PrintStream out, PrintStream err) {
Modified: trunk/punit/src/org/punit/runner/PUnitAbstractRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/PUnitAbstractRunner.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit/src/org/punit/runner/PUnitAbstractRunner.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -21,7 +21,7 @@
private TestMethodBuilder _testMethodBuilder;
- private MethodRunner _testMethodRunner;
+ private MethodRunner _methodRunner;
// List <PUnitEventListener>
private final List _eventListeners = new ArrayList();
@@ -29,17 +29,16 @@
private ConsoleLogger _consoleLogger = new ConsoleLogger();
private RunnerProperties _properties = new RunnerProperties();
-
+
private ExecutorPool _executorPool;
public PUnitAbstractRunner(TestSuiteBuilder testSuiteBuiler,
- TestMethodBuilder testMethodBuilder,
- MethodRunner testMethodRunner) {
+ TestMethodBuilder testMethodBuilder, MethodRunner testMethodRunner) {
_testSuiteBuiler = testSuiteBuiler;
_testMethodBuilder = testMethodBuilder;
- _testMethodRunner = testMethodRunner;
- _testMethodRunner.setEventListeners(_eventListeners);
- _testMethodRunner.setRunnerProperties(_properties);
+ _methodRunner = testMethodRunner;
+ _methodRunner.setEventListeners(_eventListeners);
+ _methodRunner.setRunnerProperties(_properties);
registerLoggerListeners();
}
@@ -67,19 +66,19 @@
public void setExecutorPool(ExecutorPool pool) {
_executorPool = pool;
}
-
+
private void startExecutorPool() {
- if(_executorPool != null) {
+ if (_executorPool != null) {
_executorPool.start();
}
}
private void waitExecutorPoolTermination() {
- if(_executorPool != null) {
+ if (_executorPool != null) {
_executorPool.join();
}
}
-
+
public void run(Class clazz, RunnerProperties properties) {
setRunnerProperties(properties);
run(clazz);
@@ -87,7 +86,7 @@
private void setRunnerProperties(RunnerProperties properties) {
_properties = properties;
- _testMethodRunner.setRunnerProperties(_properties);
+ _methodRunner.setRunnerProperties(_properties);
}
public void runVMs(Class clazz, VM[] vms) {
@@ -206,7 +205,7 @@
}
private void runTestClass(final Class clazz) {
- if(_executorPool == null) {
+ if (_executorPool == null) {
runTestClassImpl(clazz);
} else {
_executorPool.execute(new RunTestClassTask(clazz));
@@ -219,13 +218,14 @@
public RunTestClassTask(Class clazz) {
_clazz = clazz;
}
-
+
public void run() {
- runTestClassImpl(_clazz);
+ PUnitAbstractRunner runner = (PUnitAbstractRunner)PUnitAbstractRunner.this.clone();
+ runner.runTestClassImpl(_clazz);
}
-
+
}
-
+
private void runTestClassImpl(final Class clazz) {
onClassStart(clazz);
Collection testMethods = buildTestMethod(clazz);
@@ -283,7 +283,7 @@
private void runTestMethod(Object testInstance, Method method,
Object[] params) {
- _testMethodRunner.run(testInstance, method, params);
+ _methodRunner.run(testInstance, method, params);
}
private Collection buildTestMethod(Class testClass) {
@@ -295,7 +295,7 @@
}
public MethodRunner methodRunner() {
- return _testMethodRunner;
+ return _methodRunner;
}
public TestSuiteBuilder suiteBuiler() {
@@ -333,4 +333,14 @@
private boolean isTestSuiteLabel(Object testClass) {
return testClass instanceof TestSuiteLabel;
}
+
+ public Object clone() {
+ try {
+ PUnitAbstractRunner runner = (PUnitAbstractRunner) super.clone();
+ runner._methodRunner = (MethodRunner) _methodRunner.clone();
+ return runner;
+ } catch (CloneNotSupportedException e) {
+ throw new ReflectionException(e);
+ }
+ }
}
Modified: trunk/punit/src/org/punit/runner/Runner.java
===================================================================
--- trunk/punit/src/org/punit/runner/Runner.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit/src/org/punit/runner/Runner.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -1,3 +1,5 @@
+/* (C) Copyright 2007, by Andrew Zhang */
+
package org.punit.runner;
import java.io.*;
@@ -8,7 +10,7 @@
import org.punit.runner.method.*;
import org.punit.type.*;
-public interface Runner extends PUnitEventRegsitry, PUnitName, Serializable {
+public interface Runner extends PUnitEventRegsitry, PUnitName, Serializable, Cloneable {
public void run(Class clazz);
Modified: trunk/punit/src/org/punit/runner/method/AbstractMethodRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/method/AbstractMethodRunner.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit/src/org/punit/runner/method/AbstractMethodRunner.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -14,12 +14,12 @@
public abstract class AbstractMethodRunner implements MethodRunner {
- protected List _watchers = new ArrayList(); // <Watcher>
-
+ protected ArrayList _watchers = new ArrayList(); // <Watcher>
+
private TimeWatcher _timeWatcher = new TimeWatcher();
-
+
private List _eventListeners; // List <PUnitEventListener>
-
+
private RunnerProperties _runnerProperties;
protected transient Object _testInstance;
@@ -41,28 +41,28 @@
public void setEventListeners(List eventListeners) {
_eventListeners = eventListeners;
}
-
+
public void setRunnerProperties(RunnerProperties props) {
_runnerProperties = props;
}
-
+
public void addWatcher(Watcher watcher) {
_watchers.add(watcher);
}
-
+
public void removeWatcher(Watcher watcher) {
_watchers.remove(watcher);
}
-
+
public void removeTimeWatcher() {
_watchers.remove(_timeWatcher);
}
-
+
public void run(Object testInstance, Method method, Object[] params) {
onMethodStart(method, testInstance, params);
Throwable throwable = null;
try {
- if(needsRunMethod()) {
+ if (needsRunMethod()) {
init(testInstance, method, params);
setUpBeforeWatchers(params);
startWatchers(testInstance, method, params);
@@ -75,7 +75,7 @@
throwable = t;
} finally {
try {
- if(needsRunMethod()) {
+ if (needsRunMethod()) {
tearDownBeforeWatchers(params);
}
} catch (Throwable t) {
@@ -83,7 +83,7 @@
} finally {
try {
stopWatchers(testInstance, method, params);
- if(needsRunMethod()) {
+ if (needsRunMethod()) {
tearDownAfterWatchers(params);
}
} catch (Throwable t) {
@@ -93,24 +93,27 @@
}
onMethodEnd(method, testInstance, params, throwable);
}
-
- private void onMethodStart(final Method method, final Object testInstance, final Object[] params) {
+
+ private void onMethodStart(final Method method, final Object testInstance,
+ final Object[] params) {
TraverserUtil.traverse(eventListeners().iterator(), new Traverser() {
public void traverse(Object obj) {
- ((PUnitEventListener) obj).onMethodStart(method, testInstance, params);
+ ((PUnitEventListener) obj).onMethodStart(method, testInstance,
+ params);
}
});
}
- private void onMethodEnd(final Method method, final Object testInstance, final Object[] params, final Throwable t) {
+ private void onMethodEnd(final Method method, final Object testInstance,
+ final Object[] params, final Throwable t) {
TraverserUtil.traverse(eventListeners().iterator(), new Traverser() {
public void traverse(Object obj) {
- ((PUnitEventListener) obj).onMethodEnd(method, testInstance, params, t, _watchers);
+ ((PUnitEventListener) obj).onMethodEnd(method, testInstance,
+ params, t, _watchers);
}
});
}
-
protected abstract void runImpl() throws Throwable;
protected final void init(Object testInstance, Method method,
@@ -134,7 +137,8 @@
if (TypeUtil.isPUnitTest(_class)) {
((PUnitTest) _testInstance).setUpBeforeWatchers();
} else if (TypeUtil.isPUnitParameterizableTest(_class)) {
- ((Parameterizable) _testInstance).setUpBeforeWatchers((Parameter)params[0]);
+ ((Parameterizable) _testInstance)
+ .setUpBeforeWatchers((Parameter) params[0]);
}
}
@@ -142,7 +146,8 @@
if (TypeUtil.isPUnitTest(_class)) {
((PUnitTest) _testInstance).setUpAfterWatchers();
} else if (TypeUtil.isPUnitParameterizableTest(_class)) {
- ((Parameterizable) _testInstance).setUpAfterWatchers((Parameter)params[0]);
+ ((Parameterizable) _testInstance)
+ .setUpAfterWatchers((Parameter) params[0]);
} else {
setUp();
}
@@ -151,8 +156,9 @@
private void tearDownBeforeWatchers(Object[] params) throws Throwable {
if (TypeUtil.isPUnitTest(_class)) {
((PUnitTest) _testInstance).tearDownBeforeWatchers();
- } else if (TypeUtil.isPUnitParameterizableTest(_class)) {
- ((Parameterizable) _testInstance).tearDownBeforeWatchers((Parameter)params[0]);
+ } else if (TypeUtil.isPUnitParameterizableTest(_class)) {
+ ((Parameterizable) _testInstance)
+ .tearDownBeforeWatchers((Parameter) params[0]);
} else {
tearDown();
}
@@ -161,9 +167,10 @@
private void tearDownAfterWatchers(Object[] params) throws Throwable {
if (TypeUtil.isPUnitTest(_class)) {
((PUnitTest) _testInstance).tearDownAfterWatchers();
- } else if (TypeUtil.isPUnitParameterizableTest(_class)) {
- ((Parameterizable) _testInstance).tearDownAfterWatchers((Parameter)params[0]);
- }
+ } else if (TypeUtil.isPUnitParameterizableTest(_class)) {
+ ((Parameterizable) _testInstance)
+ .tearDownAfterWatchers((Parameter) params[0]);
+ }
}
private void setUp() throws Throwable {
@@ -188,7 +195,8 @@
}
}
- protected final void startWatchers(final Object testInstance, final Method method, final Object[] params) {
+ protected final void startWatchers(final Object testInstance,
+ final Method method, final Object[] params) {
onWatchersStart(testInstance, method, params);
TraverserUtil.traverse(_watchers.iterator(), new Traverser() {
public void traverse(Object obj) {
@@ -199,15 +207,18 @@
});
}
- private void onWatchersStart(final Object testInstance, final Method method, final Object[] params) {
+ private void onWatchersStart(final Object testInstance,
+ final Method method, final Object[] params) {
TraverserUtil.traverse(eventListeners().iterator(), new Traverser() {
public void traverse(Object obj) {
((PUnitEventListener) obj).onWatchersStart(_watchers);
}
});
}
-
- private void onWatcherStart(final Watcher watcher, final Object testInstance, final Method method, final Object[] params) {
+
+ private void onWatcherStart(final Watcher watcher,
+ final Object testInstance, final Method method,
+ final Object[] params) {
TraverserUtil.traverse(eventListeners().iterator(), new Traverser() {
public void traverse(Object obj) {
((PUnitEventListener) obj).onWatcherStart(watcher);
@@ -215,7 +226,8 @@
});
}
- protected final void stopWatchers(final Object testInstance, final Method method, final Object[] params) {
+ protected final void stopWatchers(final Object testInstance,
+ final Method method, final Object[] params) {
TraverserUtil.traverse(_watchers.iterator(), new Traverser() {
public void traverse(Object obj) {
Watcher watcher = (Watcher) obj;
@@ -226,15 +238,17 @@
onWatchersEnd(testInstance, method, params);
}
- private void onWatcherEnd(final Watcher watcher, final Object testInstance, final Method method, final Object[] params) {
+ private void onWatcherEnd(final Watcher watcher, final Object testInstance,
+ final Method method, final Object[] params) {
TraverserUtil.traverse(eventListeners().iterator(), new Traverser() {
public void traverse(Object obj) {
((PUnitEventListener) obj).onWatcherEnd(watcher);
}
});
}
-
- private void onWatchersEnd(final Object testInstance, final Method method, final Object[] params) {
+
+ private void onWatchersEnd(final Object testInstance, final Method method,
+ final Object[] params) {
TraverserUtil.traverse(eventListeners().iterator(), new Traverser() {
public void traverse(Object obj) {
((PUnitEventListener) obj).onWatchersEnd(_watchers);
@@ -253,5 +267,22 @@
public boolean needsRunMethod() {
return !_runnerProperties.isParent;
}
-
+
+ public Object clone() {
+ try {
+ final AbstractMethodRunner methodRunner = (AbstractMethodRunner) super
+ .clone();
+ methodRunner._watchers = (ArrayList) _watchers.clone();
+ methodRunner._watchers.clear();
+ TraverserUtil.traverse(_watchers.iterator(), new Traverser() {
+ public void traverse(Object obj) {
+ Watcher watcher = (Watcher) obj;
+ methodRunner.addWatcher(watcher.cloneSelf());
+ }
+ });
+ return methodRunner;
+ } catch (CloneNotSupportedException e) {
+ throw new ReflectionException(e);
+ }
+ }
}
Modified: trunk/punit/src/org/punit/runner/method/MethodRunner.java
===================================================================
--- trunk/punit/src/org/punit/runner/method/MethodRunner.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit/src/org/punit/runner/method/MethodRunner.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -7,7 +7,7 @@
import org.punit.runner.*;
import org.punit.watcher.*;
-public interface MethodRunner extends Serializable{
+public interface MethodRunner extends Serializable, Cloneable {
/**
* Runs the test method.
* @param testInstance
@@ -34,4 +34,6 @@
public void addWatcher(Watcher watcher);
public void removeWatcher(Watcher watcher);
+
+ public Object clone();
}
Modified: trunk/punit/src/org/punit/watcher/MemoryWatcher.java
===================================================================
--- trunk/punit/src/org/punit/watcher/MemoryWatcher.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit/src/org/punit/watcher/MemoryWatcher.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -2,6 +2,7 @@
package org.punit.watcher;
+import org.punit.exception.*;
import org.punit.message.*;
import org.punit.util.*;
@@ -62,4 +63,12 @@
public String unit() {
return Messages.getString("watcher.01"); //$NON-NLS-1$
}
+
+ public Watcher cloneSelf() {
+ try {
+ return (Watcher) clone();
+ } catch (CloneNotSupportedException e) {
+ throw new ReflectionException(e);
+ }
+ }
}
Modified: trunk/punit/src/org/punit/watcher/TimeWatcher.java
===================================================================
--- trunk/punit/src/org/punit/watcher/TimeWatcher.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit/src/org/punit/watcher/TimeWatcher.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -2,6 +2,7 @@
package org.punit.watcher;
+import org.punit.exception.*;
import org.punit.message.*;
public class TimeWatcher implements Watcher {
@@ -35,4 +36,12 @@
public String unit() {
return Messages.getString("watcher.02"); //$NON-NLS-1$
}
+
+ public Watcher cloneSelf() {
+ try {
+ return (Watcher) clone();
+ } catch (CloneNotSupportedException e) {
+ throw new ReflectionException(e);
+ }
+ }
}
Modified: trunk/punit/src/org/punit/watcher/Watcher.java
===================================================================
--- trunk/punit/src/org/punit/watcher/Watcher.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit/src/org/punit/watcher/Watcher.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -1,3 +1,5 @@
+/* (C) Copyright 2007, by Andrew Zhang */
+
package org.punit.watcher;
import java.io.*;
@@ -4,7 +6,7 @@
import org.punit.type.*;
-public interface Watcher extends PUnitName, Serializable {
+public interface Watcher extends PUnitName, Serializable, Cloneable {
public void start();
@@ -16,4 +18,6 @@
public String unit();
+ public Watcher cloneSelf();
+
}
Modified: trunk/punit.test/src/tests/api/org/punit/all/AllTests.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/all/AllTests.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit.test/src/tests/api/org/punit/all/AllTests.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -26,6 +26,7 @@
public static Class[] testCases() {
return new Class[] {
AbstractChartReporterTest.class,
+ AbstractRunnerTest.class,
AbstractTestMethodRunnerTest.class,
ConcurrentExceptionTest.class,
LoggerUtilTest.class,
Deleted: trunk/punit.test/src/tests/api/org/punit/runner/AbstractPUnitRunnerTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/runner/AbstractPUnitRunnerTest.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit.test/src/tests/api/org/punit/runner/AbstractPUnitRunnerTest.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -1,9 +0,0 @@
-package tests.api.org.punit.runner;
-
-import junit.framework.*;
-
-public abstract class AbstractPUnitRunnerTest extends TestCase {
-
- protected MockPUnitEventListener _eventListener = new MockPUnitEventListener();
-
-}
\ No newline at end of file
Copied: trunk/punit.test/src/tests/api/org/punit/runner/AbstractRunnerTest.java (from rev 90, trunk/punit.test/src/tests/api/org/punit/runner/AbstractPUnitRunnerTest.java)
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/runner/AbstractRunnerTest.java (rev 0)
+++ trunk/punit.test/src/tests/api/org/punit/runner/AbstractRunnerTest.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -0,0 +1,37 @@
+/* (C) Copyright 2007, by Andrew Zhang */
+
+package tests.api.org.punit.runner;
+
+import org.punit.builder.method.*;
+import org.punit.builder.suite.*;
+import org.punit.runner.*;
+import org.punit.runner.method.*;
+
+import junit.framework.*;
+
+public class AbstractRunnerTest extends TestCase {
+
+ protected MockPUnitEventListener _eventListener = new MockPUnitEventListener();
+
+ public void testCloneSelf() throws Exception {
+ MockAbstractPUnitRunner runner = new MockAbstractPUnitRunner();
+ PUnitAbstractRunner cloned = (PUnitAbstractRunner) runner.clone();
+ assertSame(runner.eventListeners(),cloned.eventListeners());
+ assertSame(runner.methodBuilder(), cloned.methodBuilder());
+ assertNotSame(runner.methodRunner(), cloned.methodRunner());
+ assertNotSame(runner.methodRunner().watchers(), cloned.methodRunner().watchers());
+ }
+
+ static class MockAbstractPUnitRunner extends PUnitAbstractRunner {
+
+ public MockAbstractPUnitRunner() {
+ super(new PUnitTestSuiteBuilder(), new PUnitTestMethodBuilder(),
+ new SoloMethodRunner());
+ }
+
+ public String punitName() {
+ throw new UnsupportedOperationException();
+ }
+
+ }
+}
\ No newline at end of file
Modified: trunk/punit.test/src/tests/api/org/punit/runner/PUnitSoloRunnerTest.java
===================================================================
--- trunk/punit.test/src/tests/api/org/punit/runner/PUnitSoloRunnerTest.java 2007-05-27 08:18:25 UTC (rev 162)
+++ trunk/punit.test/src/tests/api/org/punit/runner/PUnitSoloRunnerTest.java 2007-05-27 09:12:08 UTC (rev 163)
@@ -9,7 +9,7 @@
import tests.api.org.punit.testclasses.*;
import tests.util.*;
-public class PUnitSoloRunnerTest extends AbstractPUnitRunnerTest {
+public class PUnitSoloRunnerTest extends AbstractRunnerTest {
private PUnitSoloRunner _runner;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|