Updated the error checking to search nested exceptions.

Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo
Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/94c242df
Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/94c242df
Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/94c242df

Branch: refs/heads/master
Commit: 94c242df136252826827e0c424f77ca139f95e66
Parents: e2e115c
Author: Preston Carman <[email protected]>
Authored: Thu Feb 19 10:41:15 2015 -0800
Committer: Preston Carman <[email protected]>
Committed: Thu Feb 19 10:41:15 2015 -0800

----------------------------------------------------------------------
 .../java/org/apache/vxquery/xtest/TestRunner.java   | 16 +++++++++++++---
 .../java/org/apache/vxquery/xtest/VXQueryTest.java  | 13 ++++++++++++-
 2 files changed, 25 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/vxquery/blob/94c242df/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestRunner.java
----------------------------------------------------------------------
diff --git 
a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestRunner.java 
b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestRunner.java
index e974bca..a5f0ba1 100644
--- a/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestRunner.java
+++ b/vxquery-xtest/src/main/java/org/apache/vxquery/xtest/TestRunner.java
@@ -145,10 +145,20 @@ public class TestRunner {
                 }
                 throw e;
             }
-        } catch (SystemException e) {
-            res.error = e;
         } catch (Throwable e) {
-            res.error = e;
+            // Check for nested SystemExceptions.
+            Throwable error = e;
+            while (error != null) {
+                if (error instanceof SystemException) {
+                    res.error = error;
+                    break;
+                }
+                error = error.getCause();
+            }
+            // Default
+            if (res.error == null) {
+                res.error = e;
+            }
         } finally {
             try {
                 res.compare();

http://git-wip-us.apache.org/repos/asf/vxquery/blob/94c242df/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java
----------------------------------------------------------------------
diff --git 
a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java 
b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java
index 95a20fa..b889eb6 100644
--- a/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java
+++ b/vxquery-xtest/src/test/java/org/apache/vxquery/xtest/VXQueryTest.java
@@ -22,6 +22,8 @@ import java.io.File;
 import java.util.Collection;
 
 import org.apache.commons.lang3.StringUtils;
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -75,9 +77,13 @@ public class VXQueryTest {
         tr = new TestRunner(getVXQueryOptions());
     }
 
+    @Before
+    public void beforeTest() throws Exception {
+        tr.open();
+    }
+
     @Test
     public void test() throws Exception {
-        tr.open();
         TestCaseResult result = tr.run(tc);
         switch (result.state) {
             case EXPECTED_ERROR_GOT_DIFFERENT_ERROR:
@@ -94,6 +100,11 @@ public class VXQueryTest {
             case NO_RESULT_FILE:
                 break;
         }
+    }
+
+    @After
+    public void afterTest() throws Exception {
         tr.close();
     }
+
 }

Reply via email to