This is an automated email from the ASF dual-hosted git repository. henrib pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
The following commit(s) were added to refs/heads/master by this push: new f90147d0 JEXL: scripting tests; f90147d0 is described below commit f90147d0775d3cbc4df6364a0bac782d759c1e47 Author: Henrib <hbies...@gmail.com> AuthorDate: Thu Dec 12 11:31:52 2024 +0100 JEXL: scripting tests; --- .../jexl3/scripting/JexlScriptEngineTest.java | 42 ++++++++++++++++++---- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/apache/commons/jexl3/scripting/JexlScriptEngineTest.java b/src/test/java/org/apache/commons/jexl3/scripting/JexlScriptEngineTest.java index 94bc48f0..4a8ec123 100644 --- a/src/test/java/org/apache/commons/jexl3/scripting/JexlScriptEngineTest.java +++ b/src/test/java/org/apache/commons/jexl3/scripting/JexlScriptEngineTest.java @@ -25,10 +25,16 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.FileWriter; +import java.io.PrintStream; import java.io.PrintWriter; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -64,6 +70,8 @@ public class JexlScriptEngineTest { "application/x-jexl2", "application/x-jexl3"); + private static final String LF = System.lineSeparator(); + @AfterEach void tearDown() { JexlBuilder.setDefaultPermissions(null); @@ -134,7 +142,6 @@ public class JexlScriptEngineTest { void testErrors() throws Exception { final ScriptEngineManager manager = new ScriptEngineManager(); final JexlScriptEngine engine = (JexlScriptEngine) manager.getEngineByName("JEXL"); - final ScriptContext ctxt = engine.getContext(); engine.put("errors", new Errors()); assertInstanceOf(NullPointerException.class, assertThrows(ScriptException.class, () -> engine.eval("errors.npe()")).getCause()); assertInstanceOf(IllegalArgumentException.class, assertThrows(ScriptException.class, () -> engine.eval("errors.illegal()")).getCause()); @@ -223,7 +230,7 @@ public class JexlScriptEngineTest { } @Test - void testScriptingGetBy() throws Exception { + void testScriptingGetBy() { final ScriptEngineManager manager = new ScriptEngineManager(); assertNotNull(manager, "Manager should not be null"); for (final String name : NAMES) { @@ -262,14 +269,15 @@ public class JexlScriptEngineTest { assertTrue(time2 <= System.currentTimeMillis()); } + @Test void testMain0() throws Exception { StringWriter strw = new StringWriter(); StringReader strr = new StringReader("a=20\nb=22\na+b\n//q!\n"); Main.run(new BufferedReader(strr), new PrintWriter(strw), null); - String ctl = "> >> 20\n" + - "> >> 22\n" + - "> >> 42\n" + + String ctl = "> >> 20" + LF + + "> >> 22" + LF + + "> >> 42" + LF + "> "; Assertions.assertEquals(ctl, strw.toString()); } @@ -279,8 +287,30 @@ public class JexlScriptEngineTest { StringWriter strw = new StringWriter(); StringReader strr = new StringReader("args[0]+args[1]"); Main.run(new BufferedReader(strr), new PrintWriter(strw), new Object[]{20, 22}); - String ctl = ">>: 42\n"; + String ctl = ">>: 42" + LF; Assertions.assertEquals(ctl, strw.toString()); } + @Test + void testMain2() throws Exception { + final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + final PrintStream originalOut = System.out; + Path file = null; + try { + System.setOut(new PrintStream(outContent)); + file = Files.createTempFile("test-jsr233", ".jexl"); + BufferedWriter writer = new BufferedWriter(new FileWriter(file.toFile())); + writer.write("a=20;\nb=22;\na+b\n"); + writer.close(); + String ctl = ">>: 42" + LF; + Main.main(new String[]{file.toString()}); + Assertions.assertEquals(ctl, outContent.toString()); + } finally { + System.setOut(originalOut); + if (file != null) { + Files.delete(file); + } + } + } + }