From c5d2e90e5bc1aae7fea069787646701f11a245d6 Mon Sep 17 00:00:00 2001 From: P0nk Date: Fri, 19 Aug 2022 19:45:40 +0200 Subject: [PATCH 1/6] Add test for evaluating all NPC scripts --- pom.xml | 5 +++ .../java/scripting/AbstractScriptManager.java | 4 +- .../java/scripting/ScriptEvaluationTest.java | 45 +++++++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 src/test/java/scripting/ScriptEvaluationTest.java diff --git a/pom.xml b/pom.xml index 81d853db31..82536389b4 100644 --- a/pom.xml +++ b/pom.xml @@ -126,6 +126,11 @@ junit-jupiter-engine ${junit.version} + + org.junit.jupiter + junit-jupiter-params + ${junit.version} + diff --git a/src/main/java/scripting/AbstractScriptManager.java b/src/main/java/scripting/AbstractScriptManager.java index 017e30cecc..f32487e438 100644 --- a/src/main/java/scripting/AbstractScriptManager.java +++ b/src/main/java/scripting/AbstractScriptManager.java @@ -23,13 +23,13 @@ package scripting; import client.Client; import com.oracle.truffle.js.scriptengine.GraalJSScriptEngine; -import constants.string.CharsetConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.script.*; import java.io.BufferedReader; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; @@ -57,7 +57,7 @@ public abstract class AbstractScriptManager { enableScriptHostAccess(graalScriptEngine); - try (BufferedReader br = Files.newBufferedReader(scriptFile, CharsetConstants.CHARSET)) { + try (BufferedReader br = Files.newBufferedReader(scriptFile, StandardCharsets.UTF_8)) { engine.eval(br); } catch (final ScriptException | IOException t) { log.warn("Exception during script eval for file: {}", path, t); diff --git a/src/test/java/scripting/ScriptEvaluationTest.java b/src/test/java/scripting/ScriptEvaluationTest.java new file mode 100644 index 0000000000..200974596d --- /dev/null +++ b/src/test/java/scripting/ScriptEvaluationTest.java @@ -0,0 +1,45 @@ +package scripting; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import javax.script.ScriptEngine; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class ScriptEvaluationTest { + private AbstractScriptManager scriptManager = new AbstractScriptManager() {}; + + @BeforeAll + static void muteGraal() { + System.setProperty("polyglot.engine.WarnInterpreterOnly", "false"); + } + + public static List npcScriptFiles() throws IOException { + Path npcScriptDirectory = Path.of("scripts", "npc"); + try (Stream pathStream = Files.walk(npcScriptDirectory)) { + return pathStream + .filter(Files::isRegularFile) + .map(ScriptEvaluationTest::mapToNpcScriptPath) + .toList(); + } + } + + private static String mapToNpcScriptPath(Path path) { + return "npc/%s".formatted(path.getFileName().toString()); + } + + @ParameterizedTest + @MethodSource("npcScriptFiles") + void npcScriptShouldEvaluate(String npcScriptPath) { + ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(npcScriptPath); + + assertNotNull(scriptEngine); + } +} From 6ae22350839f705ab56c42ba8027dcfc87abf429 Mon Sep 17 00:00:00 2001 From: P0nk Date: Fri, 19 Aug 2022 19:53:07 +0200 Subject: [PATCH 2/6] Add test for evaluating all event scripts --- .../java/scripting/ScriptEvaluationTest.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/test/java/scripting/ScriptEvaluationTest.java b/src/test/java/scripting/ScriptEvaluationTest.java index 200974596d..d88572d193 100644 --- a/src/test/java/scripting/ScriptEvaluationTest.java +++ b/src/test/java/scripting/ScriptEvaluationTest.java @@ -21,22 +21,34 @@ public class ScriptEvaluationTest { System.setProperty("polyglot.engine.WarnInterpreterOnly", "false"); } - public static List npcScriptFiles() throws IOException { - Path npcScriptDirectory = Path.of("scripts", "npc"); - try (Stream pathStream = Files.walk(npcScriptDirectory)) { + private static List npcScriptFilePaths() throws IOException { + return getScriptFilePaths("npc"); + } + + private static List eventScriptFilePaths() throws IOException { + return getScriptFilePaths("event"); + } + + private static List getScriptFilePaths(final String scriptsSubdirectory) throws IOException { + Path scriptDirectory = Path.of("scripts", scriptsSubdirectory); + try (Stream pathStream = Files.walk(scriptDirectory)) { return pathStream .filter(Files::isRegularFile) - .map(ScriptEvaluationTest::mapToNpcScriptPath) + .map(path -> "%s/%s".formatted(scriptsSubdirectory, path.getFileName().toString())) .toList(); } } - private static String mapToNpcScriptPath(Path path) { - return "npc/%s".formatted(path.getFileName().toString()); + @ParameterizedTest + @MethodSource("eventScriptFilePaths") + void eventScriptShouldEvaluate(String eventScriptPath) { + ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(eventScriptPath); + + assertNotNull(scriptEngine); } @ParameterizedTest - @MethodSource("npcScriptFiles") + @MethodSource("npcScriptFilePaths") void npcScriptShouldEvaluate(String npcScriptPath) { ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(npcScriptPath); From 3354345cef03c17c8246d30ad7df532dca71ee04 Mon Sep 17 00:00:00 2001 From: P0nk Date: Fri, 19 Aug 2022 19:55:27 +0200 Subject: [PATCH 3/6] Add test for evaluating all item scripts --- .../java/scripting/ScriptEvaluationTest.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/test/java/scripting/ScriptEvaluationTest.java b/src/test/java/scripting/ScriptEvaluationTest.java index d88572d193..6c5a2b2714 100644 --- a/src/test/java/scripting/ScriptEvaluationTest.java +++ b/src/test/java/scripting/ScriptEvaluationTest.java @@ -21,14 +21,18 @@ public class ScriptEvaluationTest { System.setProperty("polyglot.engine.WarnInterpreterOnly", "false"); } - private static List npcScriptFilePaths() throws IOException { - return getScriptFilePaths("npc"); - } - private static List eventScriptFilePaths() throws IOException { return getScriptFilePaths("event"); } + private static List itemScriptFilePaths() throws IOException { + return getScriptFilePaths("item"); + } + + private static List npcScriptFilePaths() throws IOException { + return getScriptFilePaths("npc"); + } + private static List getScriptFilePaths(final String scriptsSubdirectory) throws IOException { Path scriptDirectory = Path.of("scripts", scriptsSubdirectory); try (Stream pathStream = Files.walk(scriptDirectory)) { @@ -47,6 +51,14 @@ public class ScriptEvaluationTest { assertNotNull(scriptEngine); } + @ParameterizedTest + @MethodSource("itemScriptFilePaths") + void itemScriptShouldEvaluate(String itemScriptPath) { + ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(itemScriptPath); + + assertNotNull(scriptEngine); + } + @ParameterizedTest @MethodSource("npcScriptFilePaths") void npcScriptShouldEvaluate(String npcScriptPath) { From cf27c6301fb59be286cb1bda97f3e4f1c6566d6e Mon Sep 17 00:00:00 2001 From: P0nk Date: Fri, 19 Aug 2022 19:57:15 +0200 Subject: [PATCH 4/6] Add test for evaluating all portal scripts --- src/test/java/scripting/ScriptEvaluationTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/java/scripting/ScriptEvaluationTest.java b/src/test/java/scripting/ScriptEvaluationTest.java index 6c5a2b2714..7e77b6e5e8 100644 --- a/src/test/java/scripting/ScriptEvaluationTest.java +++ b/src/test/java/scripting/ScriptEvaluationTest.java @@ -33,6 +33,10 @@ public class ScriptEvaluationTest { return getScriptFilePaths("npc"); } + private static List portalScriptFilePaths() throws IOException { + return getScriptFilePaths("portal"); + } + private static List getScriptFilePaths(final String scriptsSubdirectory) throws IOException { Path scriptDirectory = Path.of("scripts", scriptsSubdirectory); try (Stream pathStream = Files.walk(scriptDirectory)) { @@ -66,4 +70,12 @@ public class ScriptEvaluationTest { assertNotNull(scriptEngine); } + + @ParameterizedTest + @MethodSource("portalScriptFilePaths") + void portalScriptShouldEvaluate(String portalScriptPath) { + ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(portalScriptPath); + + assertNotNull(scriptEngine); + } } From 5b0715d5d05f95c898b556a3ab8904922e808ec1 Mon Sep 17 00:00:00 2001 From: P0nk Date: Fri, 19 Aug 2022 19:58:17 +0200 Subject: [PATCH 5/6] Add test for evaluating all quest scripts --- src/test/java/scripting/ScriptEvaluationTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/java/scripting/ScriptEvaluationTest.java b/src/test/java/scripting/ScriptEvaluationTest.java index 7e77b6e5e8..4780841987 100644 --- a/src/test/java/scripting/ScriptEvaluationTest.java +++ b/src/test/java/scripting/ScriptEvaluationTest.java @@ -37,6 +37,10 @@ public class ScriptEvaluationTest { return getScriptFilePaths("portal"); } + private static List questScriptFilePaths() throws IOException { + return getScriptFilePaths("quest"); + } + private static List getScriptFilePaths(final String scriptsSubdirectory) throws IOException { Path scriptDirectory = Path.of("scripts", scriptsSubdirectory); try (Stream pathStream = Files.walk(scriptDirectory)) { @@ -78,4 +82,12 @@ public class ScriptEvaluationTest { assertNotNull(scriptEngine); } + + @ParameterizedTest + @MethodSource("questScriptFilePaths") + void questScriptShouldEvaluate(String questScriptPath) { + ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(questScriptPath); + + assertNotNull(scriptEngine); + } } From d1da1d67e03e93bfa8e44bc1f599b13303998d97 Mon Sep 17 00:00:00 2001 From: P0nk Date: Fri, 19 Aug 2022 20:00:28 +0200 Subject: [PATCH 6/6] Add test for evaluating all reactor scripts --- src/test/java/scripting/ScriptEvaluationTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/java/scripting/ScriptEvaluationTest.java b/src/test/java/scripting/ScriptEvaluationTest.java index 4780841987..9d9c1a8f82 100644 --- a/src/test/java/scripting/ScriptEvaluationTest.java +++ b/src/test/java/scripting/ScriptEvaluationTest.java @@ -41,6 +41,10 @@ public class ScriptEvaluationTest { return getScriptFilePaths("quest"); } + private static List reactorScriptFilePaths() throws IOException { + return getScriptFilePaths("reactor"); + } + private static List getScriptFilePaths(final String scriptsSubdirectory) throws IOException { Path scriptDirectory = Path.of("scripts", scriptsSubdirectory); try (Stream pathStream = Files.walk(scriptDirectory)) { @@ -90,4 +94,12 @@ public class ScriptEvaluationTest { assertNotNull(scriptEngine); } + + @ParameterizedTest + @MethodSource("reactorScriptFilePaths") + void reactorScriptShouldEvaluate(String reactorScriptPath) { + ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(reactorScriptPath); + + assertNotNull(scriptEngine); + } }