From 0c2d03d031ecacd79ea8d77cd88b8428e84a3c7c Mon Sep 17 00:00:00 2001 From: Jacobus Martinus Kruithof Date: Sat, 8 Jul 2006 13:27:33 +0000 Subject: [PATCH] Give better information in case of timeout for JUnit test,as requested in Bug 39946. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@420106 13f79535-47bb-0310-9956-ffa450edef68 --- .../taskdefs/optional/junit/JUnitTask.java | 22 +++++-------------- .../optional/junit/JUnitTaskMirrorImpl.java | 6 ++--- .../optional/junit/JUnitVersionHelper.java | 4 +++- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java index 180315240..ecb3bc4ef 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java @@ -1336,7 +1336,7 @@ public class JUnitTask extends Task { */ private void logTimeout(FormatterElement[] feArray, JUnitTest test) { - logVmExit(feArray, test, "Timeout occurred."); + logVmExit(feArray, test, "Timeout occurred. Please note the time in the report does not reflect the time until the timeout."); } /** @@ -1347,7 +1347,7 @@ public class JUnitTask extends Task { * @since Ant 1.7 */ private void logVmCrash(FormatterElement[] feArray, JUnitTest test) { - logVmExit(feArray, test, "Forked Java VM exited abnormally."); + logVmExit(feArray, test, "Forked Java VM exited abnormally. Please note the time in the report does not reflect the time until the VM exit."); } /** @@ -1375,22 +1375,22 @@ public class JUnitTask extends Task { for (int i = 0; i < feArray.length; i++) { FormatterElement fe = feArray[i]; File outFile = getOutput(fe, test); - JUnitTaskMirror.JUnitResultFormatterMirror formatter = + JUnitTaskMirror.JUnitResultFormatterMirror formatter = fe.createFormatter(classLoader); if (outFile != null && formatter != null) { try { OutputStream out = new FileOutputStream(outFile); - addVmExit(test, formatter, out, message); + delegate.addVmExit(test, formatter, out, message); } catch (IOException e) { // ignore } } } if (summary) { - JUnitTaskMirror.SummaryJUnitResultFormatterMirror f = + JUnitTaskMirror.SummaryJUnitResultFormatterMirror f = delegate.newSummaryJUnitResultFormatter(); f.setWithOutAndErr("withoutanderr".equalsIgnoreCase(summaryValue)); - addVmExit(test, f, getDefaultOutput(), message); + delegate.addVmExit(test, f, getDefaultOutput(), message); } } finally { if (classLoader != null) { @@ -1399,16 +1399,6 @@ public class JUnitTask extends Task { } } - /** - * Adds the actual error message to the formatter. - * Only used from the logVmExit method. - * @since Ant 1.7 - */ - private void addVmExit(JUnitTest test, JUnitTaskMirror.JUnitResultFormatterMirror formatter, - OutputStream out, final String message) { - delegate.addVmExit(test, formatter, out, message); - } - /** * Creates and configures an AntClassLoader instance from the * nested classpath element. diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl.java index a4abab86a..3feb988e6 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskMirrorImpl.java @@ -38,9 +38,9 @@ public final class JUnitTaskMirrorImpl implements JUnitTaskMirror { this.task = task; } - public void addVmExit(JUnitTest test, JUnitTaskMirror.JUnitResultFormatterMirror _formatter, + public void addVmExit(JUnitTest test, JUnitTaskMirror.JUnitResultFormatterMirror aFormatter, OutputStream out, final String message) { - JUnitResultFormatter formatter = (JUnitResultFormatter) _formatter; + JUnitResultFormatter formatter = (JUnitResultFormatter) aFormatter; formatter.setOutput(out); formatter.startTestSuite(test); //the trick to integrating test output to the formatter, is to @@ -81,7 +81,7 @@ public final class JUnitTaskMirrorImpl implements JUnitTaskMirror { throw new AssertionFailedError(message); } - public String getName() { + String getClassName() { return test.getName(); } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.java index 2262a7134..071a0335e 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitVersionHelper.java @@ -24,7 +24,6 @@ import junit.framework.TestCase; /** * Work around for some changes to the public JUnit API between * different JUnit releases. - * */ public class JUnitVersionHelper { @@ -99,6 +98,9 @@ public class JUnitVersionHelper { */ static String getTestCaseClassName(Test test) { String className = test.getClass().getName(); + if (test instanceof JUnitTaskMirrorImpl.VmExitErrorTest) { + className = ((JUnitTaskMirrorImpl.VmExitErrorTest) test).getClassName(); + } else if (className.equals("junit.framework.JUnit4TestCaseFacade")) { // JUnit 4 wraps solo tests this way. We can extract // the original test name with a little hack.