Apache Ant Quiet/Oneline are modifications of Apache Ant 1.7.0 (revision 503170) and 1.8.0alpha (revision 638724) that supports the JUnit formatters "quiet" and "oneline". "quiet" only prints output for test cases that have failures or errors, while "oneline" prints out one brief summary line per test when it succeeds, and full output on failures.
These enhancements have been filed as Bugzilla Issue 41534. and are now being considered for Apache Ant version 1.8.0. Therefore, I have produced new distributions and patches based on revision 638724. Comlete binary distributions and source distributions have been provided here; source distributions containing only the modified files and patch files (output from svn diff) are also available. When using this software, please respect Apache Ant's original license.
|
apache-ant-1.8.0alpha-r638724-bin-quiet-oneline.tar.gz |
|
apache-ant-1.8.0alpha-r638724-src-quiet-oneline.tar.gz |
|
apache-ant-1.8.0alpha-r638724-src-quiet-oneline-diff.tar.gz |
|
quiet-oneline-patch-r638724 |
|
apache-ant-1.7.0-bin-quiet.tar.gz |
|
apache-ant-1.7.0-src-quiet.tar.gz |
|
apache-ant-1.7.0-src-quiet-diff.tar.gz |
|
quiet-patch-r503170 |
Name Last modified Size
Parent Directory 02-Feb-2007 20:42 -
apache-ant-1.7.0-bin-quiet.tar.gz 05-Feb-2007 17:45 8.5M
apache-ant-1.7.0-src-quiet-diff.tar.gz 05-Feb-2007 17:45 18k
apache-ant-1.7.0-src-quiet.tar.gz 05-Feb-2007 17:45 10.2M
apache-ant-1.8.0alpha-r638724-bin-quiet-oneline.tar.gz 19-Mar-2008 02:16 8.8M
apache-ant-1.8.0alpha-r638724-src-quiet-oneline-diff.tar.gz 19-Mar-2008 02:40 23k
apache-ant-1.8.0alpha-r638724-src-quiet-oneline.tar.gz 19-Mar-2008 02:50 19.1M
quiet-oneline-patch-r638724 19-Mar-2008 02:50 21k
quiet-patch-r503170 02-Feb-2007 23:26 11k
Here is a comparison of the "brief" and the new "quiet" abd "oneline" formatters. The "brief" formatter still generates a lot of output. There's only one failure, but it's hard to spot:
[echo] Running all 5.0 tests matching 'util' under Java 5.0
[junit] Testsuite: edu.rice.cs.util.ArgumentTokenizerTest
[junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 0.011 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.BidirectionalHashMapTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.011 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.ClassPathVectorTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.017 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.CompletionMonitorTest
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.06 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.FileOpsTest
[junit] Tests run: 9, Failures: 0, Errors: 0, Time elapsed: 0.058 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.LogTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 2.142 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.OrderedBidirectionalHashMapTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.014 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.OrderedHashSetTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.028 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.PreventExitSecurityManagerTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.032 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.ReaderWriterLockTest
[junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.161 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.StreamRedirectorTest
[junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0.012 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.StringOpsTest
[junit] Tests run: 15, Failures: 1, Errors: 0, Time elapsed: 0.039 sec
[junit]
[junit] Testcase: testReplace(edu.rice.cs.util.StringOpsTest): FAILED
[junit] null
[junit] junit.framework.AssertionFailedError
[junit] at edu.rice.cs.util.StringOpsTest.testReplace(StringOpsTest.java:49)
[junit]
[junit]
[junit] Test edu.rice.cs.util.StringOpsTest FAILED
[junit] Testsuite: edu.rice.cs.util.classloader.StickyClassLoaderTest
[junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 0.105 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.classloader.StrictURLClassLoaderTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.057 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.classloader.ToolsJarClassLoaderTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.008 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.docnavigation.JListSortNavigatorTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 1.123 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.docnavigation.JTreeSortNavigatorTest
[junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0.604 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.jar.JarCreationTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.04 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.newjvm.ExecJVMTest
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.766 sec
[junit]
[junit] ------------- Standard Output ---------------
[junit] Configuration Error: Working directory does not exist:
[junit] /private/tmp/drjava-test18611.tmp
[junit] The setting will be ignored. Press OK to continue.
[junit] ------------- ---------------- ---------------
[junit] Testsuite: edu.rice.cs.util.newjvm.IntegratedMasterSlaveTest
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 4.825 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.sexp.SExpParserTest
[junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 0.058 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.sexp.TokensTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.007 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.swing.HighlightManagerTest
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.456 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.text.ConsoleDocumentTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.322 sec
[junit]
[junit] Testsuite: edu.rice.cs.util.text.SwingDocumentTest
[junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.244 sec
[junit]
BUILD FAILED
The new "quiet" formatter outputs the bare minimum, exactly what we want to know:
[echo] Running all 5.0 tests matching 'util' under Java 5.0
[junit] Testsuite: edu.rice.cs.util.StringOpsTest
[junit] Tests run: 15, Failures: 1, Errors: 0, Time elapsed: 0.033 sec
[junit]
[junit] Testcase: testReplace(edu.rice.cs.util.StringOpsTest): FAILED
[junit] null
[junit] junit.framework.AssertionFailedError
[junit] at edu.rice.cs.util.StringOpsTest.testReplace(StringOpsTest.java:49)
[junit]
[junit]
[junit] Test edu.rice.cs.util.StringOpsTest FAILED
BUILD FAILED
This reduction of distracting noise now also enables us to
set haltonfailure="no" and instead set a property
with failureproperty="junitfailed", which we can
later check to make the build fail:
<fail if="junitfailed" message="One or more unit tests failed."/>.
This will let JUnit process all tests, and not stop at the first failure.
There was a request for something between the entirely silent "quiet" formatter and the verbose "brief", so I created the "oneline" formatter. It prints out one summary line per test if the test succeeds; if the test fails, the output is the same as with the other two formatters:
[echo] Running all 5.0 tests matching 'util' under Java 5.0
[junit] ArgumentTokenizerTest 0.045 sec
[junit] BidirectionalHashMapTest 0.033 sec
[junit] ClassPathVectorTest 0.065 sec
[junit] CompletionMonitorTest 0.077 sec
[junit] FileOpsTest 0.163 sec
[junit] LogTest 0.572 sec
[junit] OrderedBidirectionalHashMapTest 0.03 sec
[junit] OrderedHashSetTest 0.043 sec
[junit] PreventExitSecurityManagerTest 0.073 sec
[junit] ReaderWriterLockTest 0.217 sec
[junit] StreamRedirectorTest 0.036 sec
[junit] StringOpsTest 0.11 sec
[junit] Tests run: 15, Failures: 1, Errors: 0
[junit]
[junit] Testcase: testReplace(edu.rice.cs.util.StringOpsTest): FAILED
[junit] null
[junit] junit.framework.AssertionFailedError
[junit] at edu.rice.cs.util.StringOpsTest.testReplace(StringOpsTest.java:49)
[junit]
[junit]
[junit] Test edu.rice.cs.util.StringOpsTest FAILED
[junit] StickyClassLoaderTest 0.161 sec
[junit] StrictURLClassLoaderTest 0.229 sec
[junit] ToolsJarClassLoaderTest 0.019 sec
[junit] JListSortNavigatorTest 0.391 sec
[junit] JTreeSortNavigatorTest 0.54 sec
[junit] JarCreationTest 0.145 sec
[junit] ExecJVMTest 0.77 sec
[junit] IntegratedMasterSlaveTest 6.43 sec
[junit] SExpParserTest 0.098 sec
[junit] TokensTest 0.024 sec
[junit] HighlightManagerTest 0.271 sec
[junit] ConsoleDocumentTest 0.123 sec
[junit] SwingDocumentTest 0.122 sec
The output by "oneline" is still condensed by a factor of three when compared to "brief", but it gives good, reassuring feedback about the tests that were actually run.