You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2016/01/15 15:57:36 UTC
[3/5] incubator-brooklyn git commit: Asserts: expectedFailureOfType
checks caused-by as well
Asserts: expectedFailureOfType checks caused-by as well
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/dd3b8e82
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/dd3b8e82
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/dd3b8e82
Branch: refs/heads/master
Commit: dd3b8e823dd40d9bff2d7d5f7d31dc5b84291e9d
Parents: e2392c3
Author: Aled Sage <al...@gmail.com>
Authored: Fri Jan 8 21:27:23 2016 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Jan 14 10:45:13 2016 +0000
----------------------------------------------------------------------
.../java/org/apache/brooklyn/test/Asserts.java | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/dd3b8e82/brooklyn-server/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java b/brooklyn-server/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java
index 2bd7b5c..15aa76e 100644
--- a/brooklyn-server/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java
+++ b/brooklyn-server/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java
@@ -1115,22 +1115,29 @@ public class Asserts {
if (e instanceof ShouldHaveFailedPreviouslyAssertionError) throw (Error)e;
}
- /** Tests that an exception is not {@link ShouldHaveFailedPreviouslyAssertionError}
- * and is one of the given types.
+ /**
+ * Tests that an exception is not {@link ShouldHaveFailedPreviouslyAssertionError}
+ * and is either one of the given types, or has a caused-by of one of the given types.
+ *
+ * If you want *just* the instanceof (without checking the caused-by), then just catch
+ * those exception types, treat that as success, and let any other exception be propagated.
*
* @return If the test is satisfied, this method returns normally.
* The caller can decide whether anything more should be done with the exception.
* If the test fails, then either it is propagated,
* if the {@link Throwable} is a fatal ({@link Exceptions#propagateIfFatal(Throwable)}) other than an {@link AssertionError},
* or more usually the test failure of this method is thrown,
- * with detail of the original {@link Throwable} logged. */
+ * with detail of the original {@link Throwable} logged and included in the caused-by.
+ */
public static void expectedFailureOfType(Throwable e, Class<?> ...permittedSupertypes) {
if (e instanceof ShouldHaveFailedPreviouslyAssertionError) throw (Error)e;
- for (Class<?> t: permittedSupertypes) {
- if (t.isInstance(e)) return;
+ for (Class<?> clazz: permittedSupertypes) {
+ @SuppressWarnings("unchecked")
+ Throwable match = Exceptions.getFirstThrowableOfType(e, (Class<? extends Throwable>)clazz);
+ if (match != null) return;
}
rethrowPreferredException(e,
- new AssertionError("Error "+JavaClassNames.simpleClassName(e)+" is not any of the expected types: " + Arrays.asList(permittedSupertypes)));
+ new AssertionError("Error "+JavaClassNames.simpleClassName(e)+" is not any of the expected types: " + Arrays.asList(permittedSupertypes), e));
}
/** Tests {@link #expectedFailure(Throwable)} and that the <code>toString</code>