You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by co...@apache.org on 2003/01/30 16:12:56 UTC
cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit JUnitTask.java JUnitTestRunner.java
conor 2003/01/30 07:12:55
Modified: src/main/org/apache/tools/ant DemuxOutputStream.java
Project.java Task.java UnknownElement.java
src/main/org/apache/tools/ant/taskdefs Ant.java
CallTarget.java Java.java
src/main/org/apache/tools/ant/taskdefs/optional/junit
JUnitTask.java JUnitTestRunner.java
Log:
Flush output of Java task when finished.
Propagate indication of whether line is terminated or not
through to project and tasks
PR: 16555
Revision Changes Path
1.11 +16 -3 jakarta-ant/src/main/org/apache/tools/ant/DemuxOutputStream.java
Index: DemuxOutputStream.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/DemuxOutputStream.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -w -u -r1.10 -r1.11
--- DemuxOutputStream.java 25 Jul 2002 15:21:01 -0000 1.10
+++ DemuxOutputStream.java 30 Jan 2003 15:12:52 -0000 1.11
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -191,8 +191,21 @@
* @see Project#demuxOutput(String,boolean)
*/
protected void processBuffer(ByteArrayOutputStream buffer) {
+ processBuffer(buffer, true);
+ }
+
+ /**
+ * Converts the buffer to a string and sends it to the project.
+ *
+ * @param buffer the ByteArrayOutputStream used to collect the output
+ * until a line separator is seen.
+ *
+ * @see Project#demuxOutput(String,boolean)
+ */
+ protected void processBuffer(ByteArrayOutputStream buffer,
+ boolean terminated) {
String output = buffer.toString();
- project.demuxOutput(output, isErrorStream);
+ project.demuxOutput(output, isErrorStream, terminated);
resetBufferInfo();
}
@@ -217,7 +230,7 @@
public void flush() throws IOException {
BufferInfo bufferInfo = getBufferInfo();
if (bufferInfo.buffer.size() > 0) {
- processBuffer(bufferInfo.buffer);
+ processBuffer(bufferInfo.buffer, false);
}
}
}
1.126 +20 -3 jakarta-ant/src/main/org/apache/tools/ant/Project.java
Index: Project.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/Project.java,v
retrieving revision 1.125
retrieving revision 1.126
diff -u -w -u -r1.125 -r1.126
--- Project.java 24 Jan 2003 14:18:20 -0000 1.125
+++ Project.java 30 Jan 2003 15:12:52 -0000 1.126
@@ -1228,18 +1228,35 @@
* or information (<code>false</code>).
*/
public void demuxOutput(String line, boolean isError) {
+ demuxOutput(line, isError, true);
+ }
+
+ /**
+ * Demultiplexes output so that each task receives the appropriate
+ * messages. If the current thread is not currently executing a task,
+ * the message is logged directly.
+ *
+ * @param line Message to handle. Should not be <code>null</code>.
+ * @param isError Whether the text represents an error (<code>true</code>)
+ * or information (<code>false</code>).
+ * @param terminated true if this line should be terminated with an
+ * end-of-line marker
+ */
+ public void demuxOutput(String line, boolean isError, boolean terminated) {
Task task = (Task) threadTasks.get(Thread.currentThread());
if (task == null) {
fireMessageLogged(this, line, isError ? MSG_ERR : MSG_INFO);
} else {
if (isError) {
- task.handleErrorOutput(line);
+ task.handleErrorOutput(line, terminated);
} else {
- task.handleOutput(line);
+ task.handleOutput(line, terminated);
}
}
}
+
+
/**
* Executes the specified target and any targets it depends on.
*
1.37 +23 -1 jakarta-ant/src/main/org/apache/tools/ant/Task.java
Index: Task.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/Task.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -w -u -r1.36 -r1.37
--- Task.java 22 Aug 2002 17:32:21 -0000 1.36
+++ Task.java 30 Jan 2003 15:12:52 -0000 1.37
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -298,6 +298,17 @@
* @param line The line of output to log. Should not be <code>null</code>.
*/
protected void handleOutput(String line) {
+ handleOutput(line + "X7", true);
+ }
+
+ /**
+ * Handles a line of output by logging it with the INFO priority.
+ *
+ * @param line The line of output to log. Should not be <code>null</code>.
+ * @param terminated true if this line should be terminated with an
+ * end-of-line marker
+ */
+ protected void handleOutput(String line, boolean terminated) {
log(line, Project.MSG_INFO);
}
@@ -307,6 +318,17 @@
* @param line The error line to log. Should not be <code>null</code>.
*/
protected void handleErrorOutput(String line) {
+ handleErrorOutput(line, true);
+ }
+
+ /**
+ * Handles an error line by logging it with the INFO priority.
+ *
+ * @param line The error line to log. Should not be <code>null</code>.
+ * @param terminated true if this line should be terminated with an
+ * end-of-line marker
+ */
+ protected void handleErrorOutput(String line, boolean terminated) {
log(line, Project.MSG_ERR);
}
1.35 +27 -0 jakarta-ant/src/main/org/apache/tools/ant/UnknownElement.java
Index: UnknownElement.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/UnknownElement.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -w -u -r1.34 -r1.35
--- UnknownElement.java 6 Jan 2003 07:30:34 -0000 1.34
+++ UnknownElement.java 30 Jan 2003 15:12:52 -0000 1.35
@@ -157,6 +157,19 @@
}
/**
+ * Handles output sent to System.out by this task or its real task.
+ *
+ * @param line The line of output to log. Should not be <code>null</code>.
+ */
+ protected void handleOutput(String line, boolean terminated) {
+ if (realThing instanceof Task) {
+ ((Task) realThing).handleOutput(line, terminated);
+ } else {
+ super.handleOutput(line, terminated);
+ }
+ }
+
+ /**
* Handles error output sent to System.err by this task or its real task.
*
* @param line The error line to log. Should not be <code>null</code>.
@@ -169,6 +182,20 @@
}
}
+
+ /**
+ * Handles error output sent to System.err by this task or its real task.
+ *
+ * @param line The error line to log. Should not be <code>null</code>.
+ */
+ protected void handleErrorOutput(String line, boolean terminated) {
+ if (realThing instanceof Task) {
+ ((Task) realThing).handleErrorOutput(line, terminated);
+ } else {
+ super.handleErrorOutput(line, terminated);
+ }
+ }
+
/**
* Executes the real object if it's a task. If it's not a task
* (e.g. a data type) then this method does nothing.
1.71 +26 -0 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Ant.java
Index: Ant.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Ant.java,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -w -u -r1.70 -r1.71
--- Ant.java 6 Jan 2003 14:12:36 -0000 1.70
+++ Ant.java 30 Jan 2003 15:12:52 -0000 1.71
@@ -297,6 +297,19 @@
}
/**
+ * Pass output sent to System.out to the new project.
+ *
+ * @since Ant 1.6
+ */
+ protected void handleOutput(String line, boolean terminated) {
+ if (newProject != null) {
+ newProject.demuxOutput(line, false, terminated);
+ } else {
+ super.handleOutput(line, terminated);
+ }
+ }
+
+ /**
* Pass output sent to System.err to the new project.
*
* @since Ant 1.5
@@ -306,6 +319,19 @@
newProject.demuxOutput(line, true);
} else {
super.handleErrorOutput(line);
+ }
+ }
+
+ /**
+ * Pass output sent to System.err to the new project.
+ *
+ * @since Ant 1.6
+ */
+ protected void handleErrorOutput(String line, boolean terminated) {
+ if (newProject != null) {
+ newProject.demuxOutput(line, true, terminated);
+ } else {
+ super.handleErrorOutput(line, terminated);
}
}
1.26 +26 -1 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/CallTarget.java
Index: CallTarget.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/CallTarget.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -w -u -r1.25 -r1.26
--- CallTarget.java 25 Jul 2002 15:21:04 -0000 1.25
+++ CallTarget.java 30 Jan 2003 15:12:52 -0000 1.26
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -186,6 +186,19 @@
}
/**
+ * Pass output sent to System.out to the new project.
+ *
+ * @since Ant 1.6
+ */
+ protected void handleOutput(String line, boolean terminated) {
+ if (callee != null) {
+ callee.handleOutput(line, terminated);
+ } else {
+ super.handleOutput(line, terminated);
+ }
+ }
+
+ /**
* Pass output sent to System.err to the new project.
*
* @since Ant 1.5
@@ -198,4 +211,16 @@
}
}
+ /**
+ * Pass output sent to System.err to the new project.
+ *
+ * @since Ant 1.6
+ */
+ protected void handleErrorOutput(String line, boolean terminated) {
+ if (callee != null) {
+ callee.handleErrorOutput(line, terminated);
+ } else {
+ super.handleErrorOutput(line, terminated);
+ }
+ }
}
1.51 +37 -1 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Java.java
Index: Java.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Java.java,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -w -u -r1.50 -r1.51
--- Java.java 25 Jul 2002 15:21:05 -0000 1.50
+++ Java.java 30 Jan 2003 15:12:52 -0000 1.51
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -374,6 +374,23 @@
}
/**
+ * Pass output sent to System.out to specified output file.
+ *
+ * @since Ant 1.6
+ */
+ protected void handleOutput(String line, boolean terminated) {
+ if (outStream != null) {
+ if (terminated) {
+ outStream.println(line);
+ } else {
+ outStream.print(line);
+ }
+ } else {
+ super.handleOutput(line, terminated);
+ }
+ }
+
+ /**
* Pass output sent to System.err to specified output file.
*
* @since Ant 1.5
@@ -387,6 +404,23 @@
}
/**
+ * Pass output sent to System.err to specified output file.
+ *
+ * @since Ant 1.6
+ */
+ protected void handleErrorOutput(String line, boolean terminated) {
+ if (outStream != null) {
+ if (terminated) {
+ outStream.println(line);
+ } else {
+ outStream.print(line);
+ }
+ } else {
+ super.handleErrorOutput(line, terminated);
+ }
+ }
+
+ /**
* Executes the given classname with the given arguments as it
* was a command line application.
*/
@@ -402,6 +436,8 @@
new PrintStream(new FileOutputStream(out.getAbsolutePath(),
append));
exe.execute(getProject());
+ System.out.flush();
+ System.err.flush();
} catch (IOException io) {
throw new BuildException(io, getLocation());
} finally {
1.54 +36 -1 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
Index: JUnitTask.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -w -u -r1.53 -r1.54
--- JUnitTask.java 24 Jan 2003 14:34:49 -0000 1.53
+++ JUnitTask.java 30 Jan 2003 15:12:53 -0000 1.54
@@ -714,6 +714,23 @@
}
/**
+ * Pass output sent to System.out to the TestRunner so it can
+ * collect ot for the formatters.
+ *
+ * @since Ant 1.6
+ */
+ protected void handleOutput(String line, boolean terminated) {
+ if (runner != null) {
+ runner.handleOutput(line, terminated);
+ if (showOutput) {
+ super.handleOutput(line, terminated);
+ }
+ } else {
+ super.handleOutput(line, terminated);
+ }
+ }
+
+ /**
* Pass output sent to System.err to the TestRunner so it can
* collect ot for the formatters.
*
@@ -727,6 +744,24 @@
}
} else {
super.handleErrorOutput(line);
+ }
+ }
+
+
+ /**
+ * Pass output sent to System.err to the TestRunner so it can
+ * collect ot for the formatters.
+ *
+ * @since Ant 1.6
+ */
+ protected void handleErrorOutput(String line, boolean terminated) {
+ if (runner != null) {
+ runner.handleErrorOutput(line, terminated);
+ if (showOutput) {
+ super.handleErrorOutput(line, terminated);
+ }
+ } else {
+ super.handleErrorOutput(line, terminated);
}
}
1.28 +21 -1 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
Index: JUnitTestRunner.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -w -u -r1.27 -r1.28
--- JUnitTestRunner.java 6 Nov 2002 11:18:55 -0000 1.27
+++ JUnitTestRunner.java 30 Jan 2003 15:12:53 -0000 1.28
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -413,6 +413,26 @@
protected void handleErrorOutput(String line) {
if (systemError != null) {
systemError.println(line);
+ }
+ }
+
+ protected void handleOutput(String line, boolean terminated) {
+ if (systemOut != null) {
+ if (terminated) {
+ systemOut.println(line);
+ } else {
+ systemOut.print(line);
+ }
+ }
+ }
+
+ protected void handleErrorOutput(String line, boolean terminated) {
+ if (systemError != null) {
+ if (terminated) {
+ systemError.println(line);
+ } else {
+ systemError.print(line);
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ant-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: ant-dev-help@jakarta.apache.org