Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Invalid
-
3.0
-
None
Description
The following test case fails with the message
java.lang.AssertionError: should have thrown a Cancel
at org.junit.Assert.fail(Assert.java:88)
at org.apache.commons.jexl3.ScriptInterruptableTest.testExceptionCancellable(ScriptInterruptableTest.java:73)
@SuppressWarnings({"UnnecessaryBoxing", "AssertEqualsBetweenInconvertibleTypes"}) public class ScriptInterruptableTest extends JexlTestCase { //Logger LOGGER = Logger.getLogger(VarTest.class.getName()); public ScriptInterruptableTest() { super("ScriptInterruptableTest"); } public static class DummyInterrupt { public int except() throws Exception { throw new Exception("Cancelled by purpose"); } } public static class TestContext extends MapContext implements JexlContext.NamespaceResolver { @Override public Object resolveNamespace(String name) { return name == null ? this : null; } } @Test public void testExceptionCancellable() throws Exception { JexlEngine jexl = new JexlBuilder().silent(true).strict(false).cancellable(true).create(); JexlContext ctxt = new TestContext(); ctxt.set("x", new DummyInterrupt()); // run an interrupt JexlScript sint = jexl.createScript("x.except(); return 42"); Object t = null; Script.Callable c = (Script.Callable) sint.callable(ctxt); try { t = c.call(); if (c.isCancellable()) { Assert.fail("should have thrown a Cancel"); } } catch (JexlException.Cancel xjexl) { if (!c.isCancellable()) { Assert.fail("should not have thrown " + xjexl); } } Assert.assertTrue(c.isCancelled()); Assert.assertNotEquals(42, t); } }