Browse Source

- Clean up

- Refactored some code and moved protected fields to private


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270745 13f79535-47bb-0310-9956-ffa450edef68
master
Stephane Bailliez 23 years ago
parent
commit
626c685b1d
20 changed files with 275 additions and 183 deletions
  1. +31
    -33
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ClasspathTestCollector.java
  2. +1
    -1
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/FilterElement.java
  3. +9
    -10
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitHelper.java
  4. +7
    -7
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
  5. +1
    -1
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/KeepAliveOutputStream.java
  6. +2
    -2
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/TestElement.java
  7. +1
    -1
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/WatchdogTest.java
  8. +16
    -18
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ZipScanner.java
  9. +36
    -26
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/BaseFormatter.java
  10. +3
    -0
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/BriefFormatter.java
  11. +1
    -1
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/FilterFormatter.java
  12. +16
    -20
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/FilterStackFormatter.java
  13. +3
    -3
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/Formatter.java
  14. +6
    -5
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/SummaryFormatter.java
  15. +9
    -11
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/XMLFormatter.java
  16. +6
    -9
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/MessageReader.java
  17. +9
    -12
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/MessageWriter.java
  18. +4
    -5
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/Server.java
  19. +95
    -0
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/SocketUtil.java
  20. +19
    -18
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/TestRunner.java

+ 31
- 33
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ClasspathTestCollector.java View File

@@ -53,20 +53,18 @@
*/
package org.apache.tools.ant.taskdefs.optional.junit;

import java.io.File;
import java.util.Enumeration;
import java.util.Vector;
import java.util.Hashtable;
import java.util.zip.ZipFile;
import java.util.zip.ZipEntry;
import java.io.File;
import java.util.Vector;

import junit.runner.TestCollector;

import org.apache.tools.ant.types.PatternSet;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.ProjectComponent;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectComponent;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PatternSet;

/**
* A rough implementation of a test collector that will collect tests
@@ -78,7 +76,7 @@ import org.apache.tools.ant.Project;
public class ClasspathTestCollector extends ProjectComponent
implements TestCollector {

private final static int SUFFIX_LENGTH= ".class".length();
private final static int SUFFIX_LENGTH = ".class".length();

private PatternSet patterns = new PatternSet();

@@ -90,21 +88,21 @@ public class ClasspathTestCollector extends ProjectComponent
// override last one in case there are duplicates.
// ie mimic classpath behavior.
String[] paths = path.list();
for (int i = paths.length; i >= 0; i--){
for (int i = paths.length; i >= 0; i--) {
File f = new File(paths[i]);
Vector included = null;
if ( f.isDirectory() ){
if (f.isDirectory()) {
included = gatherFromDirectory(f);
} else if ( f.getName().endsWith(".zip")
|| f.getName().endsWith(".jar") ) {
} else if (f.getName().endsWith(".zip")
|| f.getName().endsWith(".jar")) {
included = gatherFromArchive(f);
} else {
continue;
}
// add tests to the already collected one
final int includedCount = included.size();
for (int j = 0; j < includedCount; j++){
String testname = (String)included.elementAt(i);
for (int j = 0; j < includedCount; j++) {
String testname = (String) included.elementAt(i);
collected.put(testname, "");
}
}
@@ -112,7 +110,7 @@ public class ClasspathTestCollector extends ProjectComponent
}


protected Vector gatherFromDirectory(File dir){
protected Vector gatherFromDirectory(File dir) {
Project project = getProject();
DirectoryScanner ds = new DirectoryScanner();
ds.setBasedir(dir);
@@ -123,7 +121,7 @@ public class ClasspathTestCollector extends ProjectComponent
return testClassNameFromFile(included);
}

protected Vector gatherFromArchive(File zip){
protected Vector gatherFromArchive(File zip) {
ZipScanner zs = new ZipScanner();
zs.setBasedir(zip);
zs.setIncludes(patterns.getIncludePatterns(project));
@@ -133,11 +131,11 @@ public class ClasspathTestCollector extends ProjectComponent
return testClassNameFromFile(included);
}

protected Vector testClassNameFromFile(String[] classFileNames){
protected Vector testClassNameFromFile(String[] classFileNames) {
Vector tests = new Vector(classFileNames.length);
for (int i = 0; i < classFileNames.length; i++){
for (int i = 0; i < classFileNames.length; i++) {
String file = classFileNames[i];
if ( isTestClass(file) ){
if (isTestClass(file)) {
String classname = classNameFromFile(file);
tests.addElement(classname);
}
@@ -146,30 +144,30 @@ public class ClasspathTestCollector extends ProjectComponent
}

protected boolean isTestClass(String classFileName) {
return classFileName.endsWith(".class");
}
protected String classNameFromFile(String classFileName) {
// convert /a/b.class to a.b
String s= classFileName.substring(0, classFileName.length()-SUFFIX_LENGTH);
String s2= s.replace(File.separatorChar, '.');
if ( s2.startsWith(".") ){
s2 = s2.substring(1);
return classFileName.endsWith(".class");
}
protected String classNameFromFile(String classFileName) {
// convert /a/b.class to a.b
String s = classFileName.substring(0, classFileName.length() - SUFFIX_LENGTH);
String s2 = s.replace(File.separatorChar, '.');
if (s2.startsWith(".")) {
s2 = s2.substring(1);
}
return s2;
}
return s2;
}

// Ant bean accessors

public void setPath(Path path){
public void setPath(Path path) {
this.path = path;
}

public PatternSet.NameEntry createInclude(){
public PatternSet.NameEntry createInclude() {
return patterns.createInclude();
}

public PatternSet.NameEntry createExclude(){
public PatternSet.NameEntry createExclude() {
return patterns.createExclude();
}



+ 1
- 1
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/FilterElement.java View File

@@ -105,7 +105,7 @@ public class FilterElement {
try {
Class clazz = Class.forName(classname);
if (!FilterFormatter.class.isAssignableFrom(clazz)) {
throw new BuildException( clazz + " must be a FilterFormatter.");
throw new BuildException(clazz + " must be a FilterFormatter.");
}
Constructor ctor = clazz.getConstructor(new Class[]{Formatter.class});
return (Formatter) ctor.newInstance(new Object[]{f});


+ 9
- 10
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitHelper.java View File

@@ -53,14 +53,13 @@
*/
package org.apache.tools.ant.taskdefs.optional.junit;

import java.lang.reflect.Method;
import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;

import junit.framework.Test;
import junit.framework.TestSuite;

import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.Path;

/**
@@ -78,12 +77,12 @@ public final class JUnitHelper {
* <tt>name(classname)</tt>
* @return an array with the elements in the order name, classname.
*/
public static String[] parseTestString(String testname){
public static String[] parseTestString(String testname) {
int p1 = testname.indexOf('(');
int p2 = testname.indexOf(')', p1);
return new String[]{
testname.substring(0, p1),
testname.substring(p1 + 1, p2) };
testname.substring(p1 + 1, p2)};
}

/**
@@ -110,10 +109,10 @@ public final class JUnitHelper {
public static Test getTest(Class clazz) {
try {
Object obj = clazz.newInstance();
if (obj instanceof TestSuite){
return (TestSuite) obj;
if (obj instanceof TestSuite) {
return (TestSuite) obj;
}
} catch (Exception e){
} catch (Exception e) {
}
try {
// check if there is a suite method
@@ -125,7 +124,7 @@ public final class JUnitHelper {
// this will generate warnings if the class is no suitable Test
try {
return new TestSuite(clazz);
} catch (Exception e){
} catch (Exception e) {
}
return null;
}
@@ -141,7 +140,7 @@ public final class JUnitHelper {
* @return the file or directory containing the resource or
* <tt>null</tt> if it does not know how to handle it.
*/
public static File getResourceEntry(String resource){
public static File getResourceEntry(String resource) {
URL url = JUnitHelper.class.getResource(resource);
if (url != null) {
// can't find the resource...
@@ -169,7 +168,7 @@ public final class JUnitHelper {
* @param resource the resource to look for.
* @see #getResourceEntry(String)
*/
public static void addClasspathEntry(Path path, String resource){
public static void addClasspathEntry(Path path, String resource) {
File f = getResourceEntry(resource);
if (f != null) {
path.createPathElement().setLocation(f);


+ 7
- 7
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java View File

@@ -58,18 +58,18 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
import java.util.Enumeration;

import junit.runner.TestCollector;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.optional.junit.formatter.Formatter;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.taskdefs.optional.junit.formatter.Formatter;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.CommandlineJava;
import org.apache.tools.ant.types.Path;
@@ -136,8 +136,8 @@ public class JUnitTask extends Task {
// get all test classes to run...
StringBuffer buf = new StringBuffer(10240);
Enumeration classnames = collectTests();
while ( classnames.hasMoreElements() ){
String classname = (String)classnames.nextElement();
while (classnames.hasMoreElements()) {
String classname = (String) classnames.nextElement();
buf.append(classname).append(" ");
}
props.setProperty("classnames", buf.toString());
@@ -170,10 +170,10 @@ public class JUnitTask extends Task {
/**
* @return all collected tests specified with test elements.
*/
protected Enumeration collectTests(){
protected Enumeration collectTests() {
Enumeration[] tests = new Enumeration[testCollectors.size()];
for (int i = 0; i < testCollectors.size(); i++){
TestCollector te = (TestCollector)testCollectors.elementAt(i);
for (int i = 0; i < testCollectors.size(); i++) {
TestCollector te = (TestCollector) testCollectors.elementAt(i);
tests[i] = te.collectTests();
}
return Enumerations.fromCompound(tests);


+ 1
- 1
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/KeepAliveOutputStream.java View File

@@ -54,8 +54,8 @@
package org.apache.tools.ant.taskdefs.optional.junit;

import java.io.FilterOutputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
* Class that can be used to wrap <tt>System.out</tt> and <tt>System.err</tt>


+ 2
- 2
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/TestElement.java View File

@@ -70,12 +70,12 @@ public class TestElement implements TestCollector {
//@fixme, a path is needed for a test.

public Enumeration collectTests() {
return Enumerations.fromArray( new String[]{ name } );
return Enumerations.fromArray(new String[]{name});
}

// Ant bean setters

public String setName(String value){
public void setName(String value) {
this.name = value;
}
}

+ 1
- 1
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/WatchdogTest.java View File

@@ -69,7 +69,7 @@ import junit.framework.TestResult;
public class WatchdogTest extends TestDecorator {

/** the time out delay in msecs */
protected long timeOut;
private long timeOut;

/**
* Create a new watchdog.


+ 16
- 18
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ZipScanner.java View File

@@ -55,14 +55,12 @@ package org.apache.tools.ant.taskdefs.optional.junit;

import java.io.File;
import java.io.IOException;
import java.util.Vector;
import java.util.Enumeration;
import java.util.zip.ZipFile;
import java.util.Vector;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.FileScanner;
import org.apache.tools.ant.BuildException;

/**
* Provide a way to scan entries in a zip file. Note that it extends
@@ -93,10 +91,10 @@ public class ZipScanner extends DirectoryScanner {
* normalize a set of paths so that it uses / otherwise matching will
* fail beautifully since archives use / to denote a path.
*/
protected void normalize(String[] files){
if (files != null){
for (int i = 0; i < files.length; i++){
files[i] = files[i].replace('\\','/');
protected void normalize(String[] files) {
if (files != null) {
for (int i = 0; i < files.length; i++) {
files[i] = files[i].replace('\\', '/');
}
}
}
@@ -113,11 +111,11 @@ public class ZipScanner extends DirectoryScanner {
}
if (!basedir.exists()) {
throw new IllegalStateException("zipfile " + basedir
+ " does not exist");
+ " does not exist");
}
if (basedir.isDirectory()) {
throw new IllegalStateException("zipfile " + basedir
+ " is not a file");
+ " is not a file");
}

if (includes == null) {
@@ -129,12 +127,12 @@ public class ZipScanner extends DirectoryScanner {
excludes = new String[0];
}

filesIncluded = new Vector();
filesIncluded = new Vector();
filesNotIncluded = new Vector();
filesExcluded = new Vector();
dirsIncluded = new Vector();
dirsNotIncluded = new Vector();
dirsExcluded = new Vector();
filesExcluded = new Vector();
dirsIncluded = new Vector();
dirsNotIncluded = new Vector();
dirsExcluded = new Vector();

if (isIncluded("")) {
if (!isExcluded("")) {
@@ -152,13 +150,13 @@ public class ZipScanner extends DirectoryScanner {
ZipFile zip = null;
try {
zip = new ZipFile(file);
} catch (IOException e){
} catch (IOException e) {
throw new IllegalStateException(e.getMessage());
}

Enumeration entries = zip.entries();
while ( entries.hasMoreElements() ) {
ZipEntry entry = (ZipEntry)entries.nextElement();
while (entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry) entries.nextElement();
String name = entry.getName();
// @fixme do we need to strip out entries that starts
// with . or ./ ?


+ 36
- 26
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/BaseFormatter.java View File

@@ -67,23 +67,22 @@ import java.util.Properties;
*/
public abstract class BaseFormatter implements Formatter {

protected OutputStream out;
/** writer to output the data to */
private PrintWriter writer;

protected PrintWriter writer;
/** number of errors */
private int errorCount;

protected int errorCount;
/** number of failures */
private int failureCount;

protected int failureCount;

protected int runCount;

protected Properties props;
/** number of runs (success + failure + error) */
private int runCount;

public void setOutput(OutputStream value) {
out = value;
try {
writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(out, "UTF8")), true);
} catch (IOException e){
writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(value, "UTF8")), true);
} catch (IOException e) {
// should not happen
throw new IllegalStateException(e.getMessage());
}
@@ -139,22 +138,33 @@ public abstract class BaseFormatter implements Formatter {
close();
}

/** helper method to flush and close all streams */
/**
* @return the writer used to print data.
*/
protected final PrintWriter getWriter() {
return writer;
}

/** @return the number of errors */
protected final int getErrorCount() {
return errorCount;
}

/** @return the number of failures */
protected final int getFailureCount() {
return failureCount;
}

/** @return the number of runs */
protected final int getRunCount() {
return runCount;
}

/** helper method to flush and close the stream */
protected void close() {
try {
if (writer != null) {
writer.flush();
writer = null;
}
} finally {
// make sure we're not closing System.out or System.err...
if (out != null && out != System.err && out != System.out) {
try {
out.close();
out = null;
} catch (IOException e) {
}
}
if (writer != null) {
writer.flush();
writer.close();
}
}
}

+ 3
- 0
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/BriefFormatter.java View File

@@ -53,6 +53,8 @@
*/
package org.apache.tools.ant.taskdefs.optional.junit.formatter;

import java.io.PrintWriter;


/**
* Display additional messages from a <tt>SummaryFormatter</tt>
@@ -63,6 +65,7 @@ package org.apache.tools.ant.taskdefs.optional.junit.formatter;
public class BriefFormatter extends SummaryFormatter {

public void onTestFailed(int status, String testname, String trace) {
PrintWriter writer = getWriter();
writer.print("TestCase: ");
writer.print(testname);
if (status == STATUS_ERROR) {


+ 1
- 1
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/FilterFormatter.java View File

@@ -65,7 +65,7 @@ public abstract class FilterFormatter implements Formatter {

protected Formatter formatter;

protected FilterFormatter(Formatter value){
protected FilterFormatter(Formatter value) {
formatter = value;
}



+ 16
- 20
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/FilterStackFormatter.java View File

@@ -53,10 +53,6 @@
*/
package org.apache.tools.ant.taskdefs.optional.junit.formatter;

import java.io.StringWriter;
import java.io.PrintWriter;
import java.io.StringReader;
import java.io.BufferedReader;
import java.util.StringTokenizer;

import org.apache.tools.ant.util.StringUtils;
@@ -83,32 +79,32 @@ import org.apache.tools.ant.util.StringUtils;
public class FilterStackFormatter extends FilterFormatter {

/** the set of matches to look for in a stack trace */
private final static String[] DEFAULT_TRACE_FILTERS = new String[] {
"junit.framework.TestCase",
"junit.framework.TestResult",
"junit.framework.TestSuite",
"junit.framework.Assert.", // don't filter AssertionFailure
"junit.swingui.TestRunner",
"junit.awtui.TestRunner",
"junit.textui.TestRunner",
"java.lang.reflect.Method.invoke(",
"org.apache.tools.ant."
};
private final static String[] DEFAULT_TRACE_FILTERS = new String[]{
"junit.framework.TestCase",
"junit.framework.TestResult",
"junit.framework.TestSuite",
"junit.framework.Assert.", // don't filter AssertionFailure
"junit.swingui.TestRunner",
"junit.awtui.TestRunner",
"junit.textui.TestRunner",
"java.lang.reflect.Method.invoke(",
"org.apache.tools.ant."
};

/**
* Creates a new <tt>FilterStackFormatter</tt>
* @param formatter the formatter to be filtered.
*/
public FilterStackFormatter(Formatter formatter){
public FilterStackFormatter(Formatter formatter) {
super(formatter);
}

public void onTestFailed(int status, String testname, String trace) {
StringTokenizer st = new StringTokenizer(trace,"\r\n");
StringTokenizer st = new StringTokenizer(trace, "\r\n");
StringBuffer buf = new StringBuffer(trace.length());
while ( st.hasMoreTokens() ){
while (st.hasMoreTokens()) {
String line = st.nextToken();
if ( accept(line) ){
if (accept(line)) {
buf.append(line).append(StringUtils.LINE_SEP);
}
}
@@ -120,7 +116,7 @@ public class FilterStackFormatter extends FilterFormatter {
* @param the line to be check for acceptance.
* @return <tt>true</tt> if the line is accepted, <tt>false</tt> if not.
*/
protected boolean accept(String line){
protected boolean accept(String line) {
for (int i = 0; i < DEFAULT_TRACE_FILTERS.length; i++) {
if (line.indexOf(DEFAULT_TRACE_FILTERS[i]) > 0) {
return false;


+ 3
- 3
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/Formatter.java View File

@@ -65,16 +65,16 @@ public interface Formatter extends TestRunListener {
/**
* Sets the stream the formatter is supposed to write its results to.
*/
public void setOutput( OutputStream out );
public void setOutput(OutputStream out);

/**
* This is what the test has written to System.out
*/
public void setSystemOutput( String out );
public void setSystemOutput(String out);

/**
* This is what the test has written to System.err
*/
public void setSystemError( String err );
public void setSystemError(String err);

}

+ 6
- 5
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/SummaryFormatter.java View File

@@ -53,8 +53,8 @@
*/
package org.apache.tools.ant.taskdefs.optional.junit.formatter;

import java.io.PrintWriter;
import java.text.MessageFormat;
import java.util.ResourceBundle;

/**
* Display a summary message at the end of a testsuite stating
@@ -64,19 +64,20 @@ import java.util.ResourceBundle;
*/
public class SummaryFormatter extends BaseFormatter {

protected MessageFormat mf = new MessageFormat(
protected final MessageFormat mf = new MessageFormat(
"Tests run: {0, number, integer}" +
", Failures: {1, number, integer}" +
", Errors: {2, number, integer}" +
", Time elapsed: {3, number, integer} sec");

protected void finished(long elapsedtime) {
PrintWriter writer = getWriter();
writer.print("Testsuite: ");
writer.println();
String line = mf.format(new Object[]{
new Integer(runCount),
new Integer(failureCount),
new Integer(errorCount),
new Integer(getRunCount()),
new Integer(getFailureCount()),
new Integer(getErrorCount()),
new Long(elapsedtime / 1000)
});
writer.print(line);


+ 9
- 11
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/formatter/XMLFormatter.java View File

@@ -61,8 +61,6 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

import org.apache.tools.ant.taskdefs.optional.junit.TestRunListener;

/**
*
* @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
@@ -148,12 +146,12 @@ public class XMLFormatter extends BaseFormatter {
public void onTestEnded(String testname) {
Element currentTest = (Element) testElements.get(testname);
// with a TestSetup, startTest and endTest are not called.
if (currentTest == null){
if (currentTest == null) {
onTestStarted(testname);
currentTest = (Element) testElements.get(testname);
}
Long l = (Long) testStarts.get(testname);
float time = ((System.currentTimeMillis()-l.longValue()) / 1000.0f);
float time = ((System.currentTimeMillis() - l.longValue()) / 1000.0f);
currentTest.setAttribute(ATTR_TIME, Float.toString(time));
super.onTestEnded(testname);
// remove the test objects
@@ -201,23 +199,23 @@ public class XMLFormatter extends BaseFormatter {
private static DocumentBuilder getDocumentBuilder() {
try {
return DocumentBuilderFactory.newInstance().newDocumentBuilder();
} catch(Exception exc) {
} catch (Exception exc) {
throw new ExceptionInInitializerError(exc);
}
}

protected static String[] parseFirstLine(String trace){
protected static String[] parseFirstLine(String trace) {
int pos = trace.indexOf('\n');
if (pos == -1){
return new String[]{ trace, ""};
if (pos == -1) {
return new String[]{trace, ""};
}
String line = trace.substring(0, pos);
pos = line.indexOf(':');
if (pos != -1){
if (pos != -1) {
String classname = line.substring(0, pos).trim();
String message = line.substring(pos + 1).trim();
return new String[]{ classname, message };
return new String[]{classname, message};
}
return new String[]{ trace, ""};
return new String[]{trace, ""};
}
}

+ 6
- 9
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/MessageReader.java View File

@@ -57,10 +57,8 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ByteArrayInputStream;
import java.util.Vector;
import java.util.Properties;
import java.util.Vector;

import org.apache.tools.ant.taskdefs.optional.junit.TestRunListener;

@@ -128,7 +126,7 @@ public class MessageReader {
* appropriate message to the listeners.
*/
protected void processMessage(String message) {
if (message == null){
if (message == null) {
return;
}

@@ -173,17 +171,16 @@ public class MessageReader {
notifyTestSuiteStopped(elapsedTime);
return;
}
if (message.startsWith(MessageIds.PROPS_START)){
if (message.startsWith(MessageIds.PROPS_START)) {
try {
byte[] bytes = arg.substring(0, arg.indexOf(MessageIds.PROPS_END)).getBytes();
bytes = Base64.decode(bytes);
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
sysprops = (Properties)ois.readObject();
} catch (Exception e){
sysprops = (Properties) SocketUtil.deserialize(bytes);
notifyTestSystemProperties(sysprops);
} catch (Exception e) {
// ignore now
e.printStackTrace();
}
notifyTestSystemProperties(sysprops);
}
}



+ 9
- 12
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/MessageWriter.java View File

@@ -55,9 +55,6 @@ package org.apache.tools.ant.taskdefs.optional.junit.remote;

import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.ObjectOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.apache.tools.ant.taskdefs.optional.junit.TestRunListener;

@@ -80,12 +77,12 @@ public class MessageWriter implements MessageIds {
this.pw = new PrintWriter(out, true);
}

protected void finalize(){
protected void finalize() {
close();
}

public void close() {
if (pw != null){
if (pw != null) {
pw.close();
pw = null;
}
@@ -140,13 +137,13 @@ public class MessageWriter implements MessageIds {

public void notifySystemProperties() {
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject(System.getProperties());
oos.close();
String msg = new String(Base64.encode(out.toByteArray()));
sendMessage(MessageIds.PROPS_START + msg + MessageIds.PROPS_END);
} catch (IOException e){
StringBuffer msg = new StringBuffer(512);
msg.append(MessageIds.PROPS_START);
byte[] data = SocketUtil.serialize(System.getProperties());
msg.append(Base64.encode(data));
msg.append(MessageIds.PROPS_END);
sendMessage(msg.toString());
} catch (Exception e) {
// ignore
e.printStackTrace();
}


+ 4
- 5
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/Server.java View File

@@ -54,7 +54,6 @@
package org.apache.tools.ant.taskdefs.optional.junit.remote;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

@@ -134,11 +133,11 @@ public class Server {

/** shutdown the server and any running client */
public void shutdown() {
if (writer != null){
if (writer != null) {
writer.close();
writer = null;
}
if (reader != null){
if (reader != null) {
//@fixme what about the stream ?
reader = null;
}
@@ -152,11 +151,11 @@ public class Server {
} catch (IOException e) {
}
try {
if (server != null){
if (server != null) {
server.close();
server = null;
}
} catch (IOException e){
} catch (IOException e) {
}
}



+ 95
- 0
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/SocketUtil.java View File

@@ -0,0 +1,95 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.tools.ant.taskdefs.optional.junit.remote;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
* A set of helper methods related to sockets.
*
* @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
*/
public class SocketUtil {


/**
* Helper method to deserialize an object
* @param bytes the binary data representing the serialized object.
* @return the deserialized object.
* @throws Exception a generic exception if an error occurs when
* deserializing the object.
*/
public static Object deserialize(byte[] bytes) throws Exception {
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
return ois.readObject();
}

/**
* Helper method to serialize an object
* @param o the object to serialize.
* @return the binary data representing the serialized object.
* @throws Exception a generic exception if an error occurs when
* serializing the object.
*/
public static byte[] serialize(Object o) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject(o);
oos.close();
return out.toByteArray();
}
}

+ 19
- 18
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/remote/TestRunner.java View File

@@ -54,13 +54,13 @@
package org.apache.tools.ant.taskdefs.optional.junit.remote;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.net.Socket;
import java.util.Vector;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.Vector;

import junit.framework.AssertionFailedError;
import junit.framework.Test;
@@ -69,9 +69,9 @@ import junit.framework.TestListener;
import junit.framework.TestResult;
import junit.framework.TestSuite;

import org.apache.tools.ant.util.StringUtils;
import org.apache.tools.ant.taskdefs.optional.junit.JUnitHelper;
import org.apache.tools.ant.taskdefs.optional.junit.TestRunListener;
import org.apache.tools.ant.util.StringUtils;

/**
* TestRunner for running tests and send results to a remote server.
@@ -110,7 +110,7 @@ public class TestRunner implements TestListener {
private BufferedReader reader;

/** bean constructor */
public TestRunner(){
public TestRunner() {
}

/**
@@ -216,28 +216,29 @@ public class TestRunner implements TestListener {
}
}
}

/**
* Initialize the TestRunner from properties.
* @param the properties containing configuration data.
* @see #init(String[])
*/
protected void init(Properties props){
if ( props.getProperty("debug") != null ){
protected void init(Properties props) {
if (props.getProperty("debug") != null) {
setDebug(true);
}
String port = props.getProperty("port");
if (port != null){
if (port != null) {
setPort(Integer.parseInt(port));
}
String host = props.getProperty("host");
if (host != null){
if (host != null) {
setHost(host);
}
String classnames = props.getProperty("classnames");
if (classnames != null){
if (classnames != null) {
StringTokenizer st = new StringTokenizer(classnames);
while (st.hasMoreTokens()){
addTestClassName( st.nextToken() );
while (st.hasMoreTokens()) {
addTestClassName(st.nextToken());
}
}
}
@@ -272,10 +273,10 @@ public class TestRunner implements TestListener {
String classname = (String) testClassNames.elementAt(i);
try {
Test test = JUnitHelper.getTest(null, classname);
if (test != null){
if (test != null) {
suites.addElement(test);
}
} catch (Exception e){
} catch (Exception e) {
// notify log error instead ?
log("Could not get Test instance from " + classname);
log(e);
@@ -304,7 +305,7 @@ public class TestRunner implements TestListener {

long startTime = System.currentTimeMillis();
for (int i = 0; i < suites.length; i++) {
if (suites[i] instanceof TestCase){
if (suites[i] instanceof TestCase) {
suites[i] = new TestSuite(suites[i].getClass().getName());
}
suites[i].run(testResult);
@@ -413,14 +414,14 @@ public class TestRunner implements TestListener {
writer.notifyTestEnded(testName);
}

public void log(String msg){
if (debug){
public void log(String msg) {
if (debug) {
System.out.println(msg);
}
}

public void log(Throwable t){
if (debug){
public void log(Throwable t) {
if (debug) {
t.printStackTrace();
}
}


Loading…
Cancel
Save