You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2016/05/22 16:39:59 UTC

[2/4] ant git commit: Preserve cause of AssertionError

Preserve cause of AssertionError

\u2026 when converting to AssertionFailedError in JUnitTestRunner.


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/421ae34d
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/421ae34d
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/421ae34d

Branch: refs/heads/master
Commit: 421ae34d7037a8cbdb372e938e269caa081b7166
Parents: 3966616
Author: Dana Dahlstrom <da...@googlers.com>
Authored: Mon Feb 8 21:40:56 2016 -0800
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Sun May 22 18:34:28 2016 +0200

----------------------------------------------------------------------
 .../optional/junit/JUnitTestRunner.java         |  1 +
 .../optional/junit/JUnitTestRunnerTest.java     | 30 +++++++++++++++++++-
 2 files changed, 30 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/421ae34d/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
index a457375..0397d84 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
@@ -1240,6 +1240,7 @@ public class JUnitTestRunner implements TestListener, JUnitTaskMirror.JUnitTestR
                     final String msg = t.getMessage();
                     final AssertionFailedError failure = msg != null
                         ? new AssertionFailedError(msg) : new AssertionFailedError();
+                    failure.initCause(t.getCause());
                     failure.setStackTrace(t.getStackTrace());
                     testListener.addFailure(test, failure);
                 } else {

http://git-wip-us.apache.org/repos/asf/ant/blob/421ae34d/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnerTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnerTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnerTest.java
index a75c5cb..e5092fe 100644
--- a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnerTest.java
+++ b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunnerTest.java
@@ -116,6 +116,20 @@ public class JUnitTestRunnerTest{
         //assertTrue(error, error.indexOf("thrown on purpose") != -1);
     }
 
+    // check that JUnit 4 synthetic AssertionFailedError gets message and cause from AssertionError
+    @Test
+    public void testJUnit4AssertionError(){
+        TestRunner runner = createRunnerForTestMethod(AssertionErrorTest.class,"throwsAssertionError");
+        runner.run();
+
+        AssertionFailedError failure = runner.getFormatter().getFailure();
+        assertEquals("failure message", failure.getMessage());
+
+        Throwable cause = failure.getCause();
+        assertEquals(RuntimeException.class, cause.getClass());
+        assertEquals("cause message", cause.getMessage());
+    }
+
     protected TestRunner createRunner(Class<?> clazz){
         return new TestRunner(new JUnitTest(clazz.getName()), null, 
                                             true, true, true);
@@ -145,6 +159,7 @@ public class JUnitTestRunnerTest{
 
     // dummy formatter just to catch the error
     private final static class ResultFormatter implements JUnitResultFormatter {
+        private AssertionFailedError failure;
         private Throwable error;
         public void setSystemOutput(String output){}
         public void setSystemError(String output){}
@@ -153,7 +168,12 @@ public class JUnitTestRunnerTest{
         public void setOutput(java.io.OutputStream out){}
         public void startTest(junit.framework.Test t) {}
         public void endTest(junit.framework.Test test) {}
-        public void addFailure(junit.framework.Test test, AssertionFailedError t) { }
+        public void addFailure(junit.framework.Test test, AssertionFailedError t) {
+            failure = t;
+        }
+        AssertionFailedError getFailure() {
+            return failure;
+        }
         public void addError(junit.framework.Test test, Throwable t) {
             error = t;
         }
@@ -213,5 +233,13 @@ public class JUnitTestRunnerTest{
             throw new NullPointerException("thrown on purpose");
         }
     }
+
+    public static class AssertionErrorTest {
+        @Test public void throwsAssertionError() {
+            AssertionError assertionError = new AssertionError("failure message");
+            assertionError.initCause(new RuntimeException("cause message"));
+            throw assertionError;
+        }
+    }
 }