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);
+ }
+}