Repository: incubator-freemarker Updated Branches: refs/heads/3 999afd28d -> 87d905f0c
(Some AssertFailsDirective code cleanup.) Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/87d905f0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/87d905f0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/87d905f0 Branch: refs/heads/3 Commit: 87d905f0c664ac702b72707a5e80a02da9d6457e Parents: 999afd2 Author: ddekany <ddek...@apache.org> Authored: Mon Aug 21 01:07:10 2017 +0200 Committer: ddekany <ddek...@apache.org> Committed: Mon Aug 21 01:07:10 2017 +0200 ---------------------------------------------------------------------- .../test/templateutil/AssertFailsDirective.java | 106 ++++++++++--------- 1 file changed, 55 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/87d905f0/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java ---------------------------------------------------------------------- diff --git a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java index 9e82895..855eb55 100644 --- a/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java +++ b/freemarker-test-utils/src/main/java/org/apache/freemarker/test/templateutil/AssertFailsDirective.java @@ -67,70 +67,74 @@ public class AssertFailsDirective implements TemplateDirectiveModel { String exception = CallableUtils.getOptionalStringArgument(args, EXCEPTION_ARG_IDX, this); int causeNestingLevel = CallableUtils.getOptionalIntArgument( args, CAUSE_NESTING_LEVEL_ARG_IDX, 0, this); - if (callPlace.hasNestedContent()) { - boolean blockFailed; - try { - callPlace.executeNestedContent(null, _NullWriter.INSTANCE, env); - blockFailed = false; - } catch (Throwable e) { - blockFailed = true; - - int causeNestingLevelCountDown = causeNestingLevel; - while (causeNestingLevelCountDown != 0) { - e = e.getCause(); - if (e == null) { + + if (!callPlace.hasNestedContent()) { + throw CallableUtils.newGenericExecuteException( + "It doesn't make sense to call this directive without nested content.", this); + } + + boolean blockFailed; + try { + callPlace.executeNestedContent(null, _NullWriter.INSTANCE, env); + blockFailed = false; + } catch (Throwable e) { + blockFailed = true; + + int causeNestingLevelCountDown = causeNestingLevel; + while (causeNestingLevelCountDown != 0) { + e = e.getCause(); + if (e == null) { + throw new AssertationFailedInTemplateException( + "Failure is not like expected: The cause exception nesting dept was lower than " + + causeNestingLevel + ".", + env); + } + causeNestingLevelCountDown--; + } + + if (message != null || messageRegexp != null) { + if (e.getMessage() == null) { + throw new AssertationFailedInTemplateException( + "Failure is not like expected. The exception message was null, " + + "and thus it doesn't contain:\n" + _StringUtils.jQuote(message) + ".", + env); + } + if (message != null) { + String actualMessage = e instanceof TemplateException + ? ((TemplateException) e).getMessageWithoutStackTop() : e.getMessage(); + if (!actualMessage.toLowerCase().contains(message.toLowerCase())) { throw new AssertationFailedInTemplateException( - "Failure is not like expected: The cause exception nesting dept was lower than " - + causeNestingLevel + ".", + "Failure is not like expected. The exception message:\n" + _StringUtils + .jQuote(actualMessage) + + "\ndoesn't contain:\n" + _StringUtils.jQuote(message) + ".", env); } - causeNestingLevelCountDown--; } - - if (message != null || messageRegexp != null) { - if (e.getMessage() == null) { + if (messageRegexp != null) { + if (!messageRegexp.matcher(e.getMessage()).find()) { throw new AssertationFailedInTemplateException( - "Failure is not like expected. The exception message was null, " - + "and thus it doesn't contain:\n" + _StringUtils.jQuote(message) + ".", + "Failure is not like expected. The exception message:\n" + _StringUtils + .jQuote(e.getMessage()) + + "\ndoesn't match this regexp:\n" + _StringUtils + .jQuote(messageRegexp.toString()) + + ".", env); } - if (message != null) { - String actualMessage = e instanceof TemplateException - ? ((TemplateException) e).getMessageWithoutStackTop() : e.getMessage(); - if (!actualMessage.toLowerCase().contains(message.toLowerCase())) { - throw new AssertationFailedInTemplateException( - "Failure is not like expected. The exception message:\n" + _StringUtils - .jQuote(actualMessage) - + "\ndoesn't contain:\n" + _StringUtils.jQuote(message) + ".", - env); - } - } - if (messageRegexp != null) { - if (!messageRegexp.matcher(e.getMessage()).find()) { - throw new AssertationFailedInTemplateException( - "Failure is not like expected. The exception message:\n" + _StringUtils - .jQuote(e.getMessage()) - + "\ndoesn't match this regexp:\n" + _StringUtils - .jQuote(messageRegexp.toString()) - + ".", - env); - } - } - } - if (exception != null && !e.getClass().getName().contains(exception)) { - throw new AssertationFailedInTemplateException( - "Failure is not like expected. The exception class name " + _StringUtils - .jQuote(e.getClass().getName()) - + " doesn't contain " + _StringUtils.jQuote(message) + ".", - env); } } - if (!blockFailed) { + if (exception != null && !e.getClass().getName().contains(exception)) { throw new AssertationFailedInTemplateException( - "Block was expected to fail, but it didn't.", + "Failure is not like expected. The exception class name " + _StringUtils + .jQuote(e.getClass().getName()) + + " doesn't contain " + _StringUtils.jQuote(message) + ".", env); } } + if (!blockFailed) { + throw new AssertationFailedInTemplateException( + "Block was expected to fail, but it didn't.", + env); + } } @Override