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..9d9c1a8f82
--- /dev/null
+++ b/src/test/java/scripting/ScriptEvaluationTest.java
@@ -0,0 +1,105 @@
+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");
+ }
+
+ 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 portalScriptFilePaths() throws IOException {
+ return getScriptFilePaths("portal");
+ }
+
+ private static List questScriptFilePaths() throws IOException {
+ 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)) {
+ return pathStream
+ .filter(Files::isRegularFile)
+ .map(path -> "%s/%s".formatted(scriptsSubdirectory, path.getFileName().toString()))
+ .toList();
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("eventScriptFilePaths")
+ void eventScriptShouldEvaluate(String eventScriptPath) {
+ ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(eventScriptPath);
+
+ assertNotNull(scriptEngine);
+ }
+
+ @ParameterizedTest
+ @MethodSource("itemScriptFilePaths")
+ void itemScriptShouldEvaluate(String itemScriptPath) {
+ ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(itemScriptPath);
+
+ assertNotNull(scriptEngine);
+ }
+
+ @ParameterizedTest
+ @MethodSource("npcScriptFilePaths")
+ void npcScriptShouldEvaluate(String npcScriptPath) {
+ ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(npcScriptPath);
+
+ assertNotNull(scriptEngine);
+ }
+
+ @ParameterizedTest
+ @MethodSource("portalScriptFilePaths")
+ void portalScriptShouldEvaluate(String portalScriptPath) {
+ ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(portalScriptPath);
+
+ assertNotNull(scriptEngine);
+ }
+
+ @ParameterizedTest
+ @MethodSource("questScriptFilePaths")
+ void questScriptShouldEvaluate(String questScriptPath) {
+ ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(questScriptPath);
+
+ assertNotNull(scriptEngine);
+ }
+
+ @ParameterizedTest
+ @MethodSource("reactorScriptFilePaths")
+ void reactorScriptShouldEvaluate(String reactorScriptPath) {
+ ScriptEngine scriptEngine = scriptManager.getInvocableScriptEngine(reactorScriptPath);
+
+ assertNotNull(scriptEngine);
+ }
+}