Skip to content

Commit

Permalink
Logic error in what exception to mutate
Browse files Browse the repository at this point in the history
  • Loading branch information
mattrjacobs committed Feb 4, 2014
1 parent 25a4731 commit 9dba8c7
Showing 1 changed file with 14 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ private static void attachCallingThreadStack(Throwable e, StackTraceElement[] st
callingThrowable.setStackTrace(stack);

while (e.getCause() != null) {
if (seenCauses.contains(e.getCause())) {
e = e.getCause();
if (seenCauses.contains(e)) {
break;
} else {
seenCauses.add(e.getCause());
e = e.getCause();
seenCauses.add(e);
}
}
// check that we're not recursively wrapping an exception that already had the cause set, and if not then add our artificial 'cause'
Expand Down Expand Up @@ -132,26 +132,37 @@ public UnitTest() {
@Test
public void testAttachCallingThreadStackParentThenChild() {
ExceptionThreadingUtility.attachCallingThreadStack(ex1, ex2.getStackTrace());
assertEquals("Ex1", ex1.getMessage());
assertEquals("Ex2", ex1.getCause().getMessage());
assertEquals("Ex2", ex2.getMessage());
assertEquals("Ex1", ex2.getCause().getMessage());
}

@Test
public void testAttachCallingThreadStackChildThenParent() {
ExceptionThreadingUtility.attachCallingThreadStack(ex2, ex1.getStackTrace());
assertEquals("Ex1", ex1.getMessage());
assertEquals("Ex2", ex1.getCause().getMessage());
assertEquals("Ex2", ex2.getMessage());
assertEquals("Ex1", ex2.getCause().getMessage());
}

@Test
public void testAttachCallingThreadStackAddExceptionsToEachOther() {
ExceptionThreadingUtility.attachCallingThreadStack(ex1, ex2.getStackTrace());
ExceptionThreadingUtility.attachCallingThreadStack(ex2, ex1.getStackTrace());
assertEquals("Ex1", ex1.getMessage());
assertEquals("Ex2", ex2.getMessage());
assertEquals("Ex2", ex1.getCause().getMessage());
assertEquals("Ex1", ex2.getCause().getMessage());
}

@Test
public void testAttachCallingThreadStackAddExceptionToItself() {
ExceptionThreadingUtility.attachCallingThreadStack(ex2, ex2.getStackTrace());
assertEquals("Ex1", ex1.getMessage());
assertEquals("Ex2", ex1.getCause().getMessage());
assertEquals("Ex2", ex2.getMessage());
assertEquals("Ex1", ex2.getCause().getMessage());
}
}
Expand Down

0 comments on commit 9dba8c7

Please sign in to comment.