Browse Source

- Change to RJUnitTask to avoid conflicts

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270947 13f79535-47bb-0310-9956-ffa450edef68
master
Stephane Bailliez 23 years ago
parent
commit
c041534439
4 changed files with 175 additions and 5 deletions
  1. +2
    -2
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ClientElement.java
  2. +1
    -1
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
  3. +170
    -0
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/RJUnitTask.java
  4. +2
    -2
      proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/ServerElement.java

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

@@ -105,10 +105,10 @@ public final class ClientElement extends ProjectComponent {
private CommandlineJava cmd = new CommandlineJava(); private CommandlineJava cmd = new CommandlineJava();


/** the parent task */ /** the parent task */
private JUnitTask parent;
private RJUnitTask parent;


/** create a new client */ /** create a new client */
public ClientElement(JUnitTask value) {
public ClientElement(RJUnitTask value) {
parent = value; parent = value;
cmd.setClassname("org.apache.tools.ant.taskdefs.optional.junit.remote.TestRunner"); cmd.setClassname("org.apache.tools.ant.taskdefs.optional.junit.remote.TestRunner");
} }


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

@@ -77,7 +77,7 @@ import org.apache.tools.ant.types.EnumeratedAttribute;
* *
* @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a> * @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
* *
* @see JUnitTask
* @see RJUnitTask
* @see Formatter * @see Formatter
*/ */
public class FormatterElement { public class FormatterElement {


+ 170
- 0
proposal/sandbox/junit/src/main/org/apache/tools/ant/taskdefs/optional/junit/RJUnitTask.java View File

@@ -0,0 +1,170 @@
/*
* 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;

import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

/**
* The core JUnit task.
*
* @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
*/
public class RJUnitTask extends Task {

private final static Resources RES =
ResourceManager.getPackageResources(RJUnitTask.class);

/** port to run the server on */
private int port = -1;

/** timeout period in ms */
private long timeout = -1;

/** client configuraiton element */
private ClientElement client = null;

/** server configuration element */
private ServerElement server = null;

// task implementation

public void execute() throws BuildException {
if (client == null && server == null) {
throw new BuildException("Invalid state: need to be server, client or both");
}

// 1) server and client
if (server != null && client != null) {
ServerWorker worker = new ServerWorker();
worker.start();
client.execute();
Exception caught = null;
try {
worker.join();
caught = worker.getException();
} catch (InterruptedException e){
caught = e;
}
if (caught != null){
throw new BuildException(caught);
}
return;
}

// 2) server only (waiting for client)
if (server != null && client == null) {
server.execute();
return;
}

// 3) client only (connecting to server)
if (server == null && client != null) {
client.execute();
return;
}
}

// Ant bean accessors

public void setPort(int port) {
this.port = port;
}

public void setTimeout(long timeout) {
this.timeout = timeout;
}

/**
* create a new client in charge of running tests and sending
* the results to the server that collect them.
*/
public ClientElement createClient() {
if (client == null) {
client = new ClientElement(this);
}
return client;
}

/**
* create a new client in charge of running tests and sending
* the results to the server that collect them.
*/
public ServerElement createServer() {
if (server == null) {
server = new ServerElement(this);
}
return server;
}


/** the worker to run the server on */
class ServerWorker extends Thread {
private Exception caught = null;

public void run() {
try {
server.execute();
} catch (Exception e) {
caught = e;
}
}

public Exception getException() {
return caught;
}
}
}

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

@@ -88,10 +88,10 @@ public final class ServerElement extends ProjectComponent {
private boolean haltOnError = false; private boolean haltOnError = false;


/** the parent task */ /** the parent task */
private JUnitTask parent;
private RJUnitTask parent;


/** create a new server */ /** create a new server */
public ServerElement(JUnitTask value) {
public ServerElement(RJUnitTask value) {
parent = value; parent = value;
} }




Loading…
Cancel
Save