diff --git a/annotations/annotations/src/main/java/module-info.java b/annotations/annotations/src/main/java/module-info.java
new file mode 100644
index 000000000..9ac617bed
--- /dev/null
+++ b/annotations/annotations/src/main/java/module-info.java
@@ -0,0 +1,3 @@
+module com.dylibso.chicory.annotations {
+ exports com.dylibso.chicory.annotations;
+}
diff --git a/build-time-compiler/src/main/java/module-info.java b/build-time-compiler/src/main/java/module-info.java
new file mode 100644
index 000000000..b8e2c2549
--- /dev/null
+++ b/build-time-compiler/src/main/java/module-info.java
@@ -0,0 +1,8 @@
+module com.dylibso.chicory.build.time.compiler {
+ requires transitive com.dylibso.chicory.compiler;
+ requires com.dylibso.chicory.runtime;
+ requires com.dylibso.chicory.wasm;
+ requires com.github.javaparser.core;
+
+ exports com.dylibso.chicory.build.time.compiler;
+}
diff --git a/compiler-tests/src/test/java/com/dylibso/chicory/testing/TestModule.java b/compiler-tests/src/test/java/com/dylibso/chicory/testing/TestModule.java
index b39f8655e..93280dcfa 100644
--- a/compiler-tests/src/test/java/com/dylibso/chicory/testing/TestModule.java
+++ b/compiler-tests/src/test/java/com/dylibso/chicory/testing/TestModule.java
@@ -1,6 +1,7 @@
package com.dylibso.chicory.testing;
import com.dylibso.chicory.compiler.MachineFactoryCompiler;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.runtime.ImportValues;
import com.dylibso.chicory.runtime.Instance;
import com.dylibso.chicory.runtime.Store;
@@ -40,7 +41,7 @@ public class TestModule {
+ "multiple start sections";
public static TestModule of(String classpath) {
- try (var is = TestModule.class.getResourceAsStream(classpath)) {
+ try (var is = CorpusResources.getResource(classpath.substring(1))) {
if (classpath.endsWith(".wat")) {
byte[] parsed;
try {
diff --git a/compiler/pom.xml b/compiler/pom.xml
index 49fcc3b9d..860c580ff 100644
--- a/compiler/pom.xml
+++ b/compiler/pom.xml
@@ -62,4 +62,23 @@
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ default-testCompile
+
+
+ --add-modules
+ java.sql
+
+
+
+
+
+
+
diff --git a/compiler/src/main/java/com/dylibso/chicory/compiler/internal/Shader.java b/compiler/src/main/java/com/dylibso/chicory/compiler/internal/Shader.java
index 0ac6cd4a6..bc1a6f7ad 100644
--- a/compiler/src/main/java/com/dylibso/chicory/compiler/internal/Shader.java
+++ b/compiler/src/main/java/com/dylibso/chicory/compiler/internal/Shader.java
@@ -68,6 +68,7 @@ public String map(String internalName) {
static byte[] getBytecode(Class> clazz) {
var name = getInternalName(clazz) + ".class";
+ // Okay when running with Java modules (JPMS), because .class are exempted from checks
try (var in = clazz.getClassLoader().getResourceAsStream(name)) {
if (in == null) {
throw new IOException("Resource not found: " + name);
diff --git a/compiler/src/main/java/module-info.java b/compiler/src/main/java/module-info.java
new file mode 100644
index 000000000..5946b91fc
--- /dev/null
+++ b/compiler/src/main/java/module-info.java
@@ -0,0 +1,11 @@
+module com.dylibso.chicory.compiler {
+ requires transitive com.dylibso.chicory.runtime;
+ requires transitive com.dylibso.chicory.wasm;
+ requires org.objectweb.asm;
+ requires org.objectweb.asm.commons;
+ requires org.objectweb.asm.util;
+
+ exports com.dylibso.chicory.compiler;
+ exports com.dylibso.chicory.compiler.internal;
+ exports com.dylibso.chicory.experimental.aot;
+}
diff --git a/compiler/src/test/java/com/dylibso/chicory/approvals/ApprovalTest.java b/compiler/src/test/java/com/dylibso/chicory/approvals/ApprovalTest.java
index 376a3aa45..12fa66411 100644
--- a/compiler/src/test/java/com/dylibso/chicory/approvals/ApprovalTest.java
+++ b/compiler/src/test/java/com/dylibso/chicory/approvals/ApprovalTest.java
@@ -1,12 +1,12 @@
package com.dylibso.chicory.approvals;
import static com.dylibso.chicory.wasm.Parser.parse;
-import static java.lang.ClassLoader.getSystemClassLoader;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.objectweb.asm.Type.getInternalName;
import com.dylibso.chicory.compiler.internal.Compiler;
import com.dylibso.chicory.compiler.internal.Shaded;
+import com.dylibso.chicory.corpus.CorpusResources;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.file.Files;
@@ -68,7 +68,7 @@ public void verifyI32() {
@Test
public void verifyI32Renamed() {
- var module = parse(getSystemClassLoader().getResourceAsStream("compiled/i32.wat.wasm"));
+ var module = parse(CorpusResources.getResource("compiled/i32.wat.wasm"));
var result = Compiler.builder(module).withClassName("FOO").build().compile();
verifyClass(result.classBytes(), (name) -> !name.equals("FOO"));
}
@@ -105,8 +105,7 @@ public void verifyExceptions() {
@Test
public void functions10() {
- var module =
- parse(getSystemClassLoader().getResourceAsStream("compiled/functions_10.wat.wasm"));
+ var module = parse(CorpusResources.getResource("compiled/functions_10.wat.wasm"));
var result = Compiler.builder(module).withMaxFunctionsPerClass(5).build().compile();
verifyClass(result.classBytes(), ApprovalTest::SKIP_Methods_CLASS);
}
@@ -117,7 +116,7 @@ private static void verifyGeneratedBytecode(String name) {
private static void verifyGeneratedBytecode(
String name, Function classSkipper) {
- var module = parse(getSystemClassLoader().getResourceAsStream("compiled/" + name));
+ var module = parse(CorpusResources.getResource("compiled/" + name));
var result = Compiler.builder(module).build().compile();
verifyClass(result.classBytes(), classSkipper);
}
diff --git a/compiler/src/test/java/com/dylibso/chicory/compiler/internal/CallTest.java b/compiler/src/test/java/com/dylibso/chicory/compiler/internal/CallTest.java
index 1f9a61910..00c86c4f2 100644
--- a/compiler/src/test/java/com/dylibso/chicory/compiler/internal/CallTest.java
+++ b/compiler/src/test/java/com/dylibso/chicory/compiler/internal/CallTest.java
@@ -3,6 +3,7 @@
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import com.dylibso.chicory.compiler.MachineFactoryCompiler;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.runtime.Instance;
import com.dylibso.chicory.wasm.Parser;
import org.junit.jupiter.api.Test;
@@ -11,8 +12,7 @@ public class CallTest {
@Test
public void callLotsOfArgs() throws InterruptedException {
- var module =
- Parser.parse(CallTest.class.getResourceAsStream("/compiled/lots-of-args.wat.wasm"));
+ var module = Parser.parse(CorpusResources.getResource("compiled/lots-of-args.wat.wasm"));
var instance =
Instance.builder(module)
.withMachineFactory(MachineFactoryCompiler::compile)
@@ -26,8 +26,7 @@ public void callLotsOfArgs() throws InterruptedException {
@Test
@SuppressWarnings("deprecation")
public void callLotsOfArgsOnDeprecatedAotMachine() throws InterruptedException {
- var module =
- Parser.parse(CallTest.class.getResourceAsStream("/compiled/lots-of-args.wat.wasm"));
+ var module = Parser.parse(CorpusResources.getResource("compiled/lots-of-args.wat.wasm"));
var instance =
Instance.builder(module)
.withMachineFactory(MachineFactoryCompiler::compile)
diff --git a/compiler/src/test/java/com/dylibso/chicory/compiler/internal/ExceptionTest.java b/compiler/src/test/java/com/dylibso/chicory/compiler/internal/ExceptionTest.java
index 5e6076c65..03ceb7e74 100644
--- a/compiler/src/test/java/com/dylibso/chicory/compiler/internal/ExceptionTest.java
+++ b/compiler/src/test/java/com/dylibso/chicory/compiler/internal/ExceptionTest.java
@@ -3,6 +3,7 @@
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import com.dylibso.chicory.compiler.MachineFactoryCompiler;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.runtime.Instance;
import com.dylibso.chicory.wasm.Parser;
import com.dylibso.chicory.wasm.WasmModule;
@@ -13,7 +14,7 @@
public class ExceptionTest {
private static final WasmModule MODULE =
- Parser.parse(ExceptionTest.class.getResourceAsStream("/compiled/exceptions.wat.wasm"));
+ Parser.parse(CorpusResources.getResource("compiled/exceptions.wat.wasm"));
private static int throwIfFn;
private static int catchlessTryFn;
diff --git a/compiler/src/test/java/com/dylibso/chicory/compiler/internal/InterruptionTest.java b/compiler/src/test/java/com/dylibso/chicory/compiler/internal/InterruptionTest.java
index a1169a50b..b69cfe3f5 100644
--- a/compiler/src/test/java/com/dylibso/chicory/compiler/internal/InterruptionTest.java
+++ b/compiler/src/test/java/com/dylibso/chicory/compiler/internal/InterruptionTest.java
@@ -8,6 +8,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import com.dylibso.chicory.compiler.MachineFactoryCompiler;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.runtime.Instance;
import com.dylibso.chicory.wasm.ChicoryException;
import com.dylibso.chicory.wasm.Parser;
@@ -18,10 +19,7 @@
public class InterruptionTest {
@Test
public void shouldInterruptLoop() throws InterruptedException {
- var module =
- Parser.parse(
- InterruptionTest.class.getResourceAsStream(
- "/compiled/infinite-loop.c.wasm"));
+ var module = Parser.parse(CorpusResources.getResource("compiled/infinite-loop.c.wasm"));
var instance =
Instance.builder(module)
.withMachineFactory(MachineFactoryCompiler::compile)
@@ -33,8 +31,7 @@ public void shouldInterruptLoop() throws InterruptedException {
@Test
public void shouldInterruptCall() throws InterruptedException {
- var module =
- Parser.parse(InterruptionTest.class.getResourceAsStream("/compiled/power.c.wasm"));
+ var module = Parser.parse(CorpusResources.getResource("compiled/power.c.wasm"));
var instance =
Instance.builder(module)
.withMachineFactory(MachineFactoryCompiler::compile)
diff --git a/log/src/main/java/module-info.java b/log/src/main/java/module-info.java
new file mode 100644
index 000000000..983487bf1
--- /dev/null
+++ b/log/src/main/java/module-info.java
@@ -0,0 +1,6 @@
+module com.dylibso.chicory.log {
+ requires static com.google.errorprone.annotations;
+ requires static java.logging;
+
+ exports com.dylibso.chicory.log;
+}
diff --git a/machine-tests/src/test/java/com/dylibso/chicory/testing/MachinesTest.java b/machine-tests/src/test/java/com/dylibso/chicory/testing/MachinesTest.java
index fc1d09b89..b7f9e9aad 100644
--- a/machine-tests/src/test/java/com/dylibso/chicory/testing/MachinesTest.java
+++ b/machine-tests/src/test/java/com/dylibso/chicory/testing/MachinesTest.java
@@ -8,6 +8,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import com.dylibso.chicory.compiler.MachineFactoryCompiler;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.runtime.ImportTable;
import com.dylibso.chicory.runtime.ImportValues;
import com.dylibso.chicory.runtime.Instance;
@@ -42,7 +43,7 @@
public final class MachinesTest {
private WasmModule loadModule(String fileName) {
- return Parser.parse(getClass().getResourceAsStream("/" + fileName));
+ return Parser.parse(CorpusResources.getResource(fileName));
}
private Instance.Builder quickJsInstanceBuilder() {
diff --git a/machine-tests/src/test/java/com/dylibso/chicory/testing/ThreadsProposalTest.java b/machine-tests/src/test/java/com/dylibso/chicory/testing/ThreadsProposalTest.java
index 5f3235186..bfc826388 100644
--- a/machine-tests/src/test/java/com/dylibso/chicory/testing/ThreadsProposalTest.java
+++ b/machine-tests/src/test/java/com/dylibso/chicory/testing/ThreadsProposalTest.java
@@ -4,6 +4,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import com.dylibso.chicory.compiler.MachineFactoryCompiler;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.runtime.ByteArrayMemory;
import com.dylibso.chicory.runtime.ByteBufferMemory;
import com.dylibso.chicory.runtime.ImportMemory;
@@ -28,7 +29,7 @@
public class ThreadsProposalTest {
private static WasmModule loadModule(String fileName) {
- return Parser.parse(ThreadsProposalTest.class.getResourceAsStream("/" + fileName));
+ return Parser.parse(CorpusResources.getResource(fileName));
}
@FunctionalInterface
diff --git a/pom.xml b/pom.xml
index 4ab8610aa..d16c31913 100644
--- a/pom.xml
+++ b/pom.xml
@@ -364,6 +364,11 @@
maven-antrun-plugin
${maven-antrun-plugin.version}
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ ${maven-checkstyle-plugin.version}
+
org.apache.maven.plugins
maven-clean-plugin
@@ -560,6 +565,10 @@
true
+
+
+
+
@@ -619,6 +628,13 @@
+
+
+ com.puppycrawl.tools
+ checkstyle
+ ${checkstyle.version}
+
+
checkstyle
@@ -752,6 +768,23 @@
src/test/resources/logging.properties
+
+
+ default-test
+
+ false
+
+
+
+ test-module-path
+
+ test
+
+
+ true
+
+
+
@@ -820,11 +853,23 @@
11
-
- true
-
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+
+ true
+
+
+
+
+ checkstyle
+ none
+
+
+
org.apache.maven.plugins
@@ -837,31 +882,6 @@
-
- java17
-
- [17,)
-
-
-
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
- ${maven-checkstyle-plugin.version}
-
-
- com.puppycrawl.tools
- checkstyle
- ${checkstyle.version}
-
-
-
-
-
-
-
-
java21
diff --git a/runtime/src/main/java/module-info.java b/runtime/src/main/java/module-info.java
new file mode 100644
index 000000000..14773474d
--- /dev/null
+++ b/runtime/src/main/java/module-info.java
@@ -0,0 +1,7 @@
+module com.dylibso.chicory.runtime {
+ requires transitive com.dylibso.chicory.wasm;
+
+ exports com.dylibso.chicory.runtime;
+ exports com.dylibso.chicory.runtime.alloc;
+ exports com.dylibso.chicory.runtime.internal;
+}
diff --git a/runtime/src/test/java/com/dylibso/chicory/runtime/InterruptionTest.java b/runtime/src/test/java/com/dylibso/chicory/runtime/InterruptionTest.java
index b3d0ab7c5..c53c3cde2 100644
--- a/runtime/src/test/java/com/dylibso/chicory/runtime/InterruptionTest.java
+++ b/runtime/src/test/java/com/dylibso/chicory/runtime/InterruptionTest.java
@@ -6,6 +6,7 @@
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.wasm.ChicoryException;
import com.dylibso.chicory.wasm.Parser;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -17,8 +18,8 @@ public void shouldInterruptLoop() throws InterruptedException {
var instance =
Instance.builder(
Parser.parse(
- InterruptionTest.class.getResourceAsStream(
- "/compiled/infinite-loop.c.wasm")))
+ CorpusResources.getResource(
+ "compiled/infinite-loop.c.wasm")))
.build();
var function = instance.export("run");
assertInterruption(function::apply);
@@ -27,10 +28,7 @@ public void shouldInterruptLoop() throws InterruptedException {
@Test
public void shouldInterruptCall() throws InterruptedException {
var instance =
- Instance.builder(
- Parser.parse(
- InterruptionTest.class.getResourceAsStream(
- "/compiled/power.c.wasm")))
+ Instance.builder(Parser.parse(CorpusResources.getResource("compiled/power.c.wasm")))
.build();
var function = instance.export("run");
assertInterruption(() -> function.apply(100));
diff --git a/runtime/src/test/java/com/dylibso/chicory/runtime/StoreTest.java b/runtime/src/test/java/com/dylibso/chicory/runtime/StoreTest.java
index c239c8445..60ba1d0cc 100644
--- a/runtime/src/test/java/com/dylibso/chicory/runtime/StoreTest.java
+++ b/runtime/src/test/java/com/dylibso/chicory/runtime/StoreTest.java
@@ -4,6 +4,7 @@
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.wasm.Parser;
import com.dylibso.chicory.wasm.WasmModule;
import com.dylibso.chicory.wasm.types.FunctionType;
@@ -13,7 +14,7 @@
public class StoreTest {
private static WasmModule loadModule(String fileName) {
- return Parser.parse(WasmModuleTest.class.getResourceAsStream("/" + fileName));
+ return Parser.parse(CorpusResources.getResource(fileName));
}
@Test
diff --git a/runtime/src/test/java/com/dylibso/chicory/runtime/WasmModuleTest.java b/runtime/src/test/java/com/dylibso/chicory/runtime/WasmModuleTest.java
index 8d68b6af7..ff5f83060 100644
--- a/runtime/src/test/java/com/dylibso/chicory/runtime/WasmModuleTest.java
+++ b/runtime/src/test/java/com/dylibso/chicory/runtime/WasmModuleTest.java
@@ -9,6 +9,7 @@
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.wasm.InvalidException;
import com.dylibso.chicory.wasm.Parser;
import com.dylibso.chicory.wasm.UninstantiableException;
@@ -36,7 +37,7 @@
public class WasmModuleTest {
private static WasmModule loadModule(String fileName) {
- return Parser.parse(WasmModuleTest.class.getResourceAsStream("/" + fileName));
+ return Parser.parse(CorpusResources.getResource(fileName));
}
@Test
diff --git a/simd/src/main/java/module-info.java b/simd/src/main/java/module-info.java
new file mode 100644
index 000000000..ec5a36819
--- /dev/null
+++ b/simd/src/main/java/module-info.java
@@ -0,0 +1,5 @@
+module com.dylibso.chicory.simd {
+ requires transitive com.dylibso.chicory.runtime;
+ requires com.dylibso.chicory.wasm;
+ requires jdk.incubator.vector;
+}
diff --git a/simd/src/test/java/com/dylibso/chicory/simd/BasicSimdTest.java b/simd/src/test/java/com/dylibso/chicory/simd/BasicSimdTest.java
index 0eea22b2f..2cb3e0cf1 100644
--- a/simd/src/test/java/com/dylibso/chicory/simd/BasicSimdTest.java
+++ b/simd/src/test/java/com/dylibso/chicory/simd/BasicSimdTest.java
@@ -2,6 +2,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.runtime.Instance;
import com.dylibso.chicory.wasm.Parser;
import org.junit.jupiter.api.Test;
@@ -14,8 +15,8 @@ public void shouldRunBasicExample() {
var instance =
Instance.builder(
Parser.parse(
- BasicSimdTest.class.getResourceAsStream(
- "/compiled/simd-example.wat.wasm")))
+ CorpusResources.getResource(
+ "compiled/simd-example.wat.wasm")))
.withMachineFactory(SimdInterpreterMachine::new)
.build();
var main = instance.export("main");
diff --git a/wabt/src/main/java/module-info.java b/wabt/src/main/java/module-info.java
new file mode 100644
index 000000000..0d074fd95
--- /dev/null
+++ b/wabt/src/main/java/module-info.java
@@ -0,0 +1,9 @@
+module com.dylibso.chicory.wabt {
+ requires com.dylibso.chicory.log;
+ requires com.dylibso.chicory.runtime;
+ requires com.dylibso.chicory.wasi;
+ requires com.dylibso.chicory.wasm;
+ requires io.roastedroot.zerofs.ZeroFs;
+
+ exports com.dylibso.chicory.wabt;
+}
diff --git a/wasi/src/main/java/module-info.java b/wasi/src/main/java/module-info.java
new file mode 100644
index 000000000..89439f532
--- /dev/null
+++ b/wasi/src/main/java/module-info.java
@@ -0,0 +1,8 @@
+module com.dylibso.chicory.wasi {
+ requires static com.dylibso.chicory.annotations;
+ requires com.dylibso.chicory.log;
+ requires transitive com.dylibso.chicory.runtime;
+ requires static java.compiler;
+
+ exports com.dylibso.chicory.wasi;
+}
diff --git a/wasi/src/test/java/wasi/WasiPreview1Test.java b/wasi/src/test/java/wasi/WasiPreview1Test.java
index 26f878697..0b186c9f4 100644
--- a/wasi/src/test/java/wasi/WasiPreview1Test.java
+++ b/wasi/src/test/java/wasi/WasiPreview1Test.java
@@ -4,6 +4,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.runtime.HostFunction;
import com.dylibso.chicory.runtime.ImportValues;
import com.dylibso.chicory.runtime.Instance;
@@ -26,7 +27,7 @@
public class WasiPreview1Test {
private static WasmModule loadModule(String fileName) {
- return Parser.parse(WasiPreview1Test.class.getResourceAsStream("/" + fileName));
+ return Parser.parse(CorpusResources.getResource(fileName));
}
@Test
diff --git a/wasm-corpus/pom.xml b/wasm-corpus/pom.xml
index f7b860803..c28d07c74 100644
--- a/wasm-corpus/pom.xml
+++ b/wasm-corpus/pom.xml
@@ -19,6 +19,17 @@
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ com.dylibso.chicory.corpus
+
+
+
+
org.codehaus.mojo
exec-maven-plugin
diff --git a/wasm-corpus/src/main/java/com/dylibso/chicory/corpus/CorpusResources.java b/wasm-corpus/src/main/java/com/dylibso/chicory/corpus/CorpusResources.java
new file mode 100644
index 000000000..a6f630f01
--- /dev/null
+++ b/wasm-corpus/src/main/java/com/dylibso/chicory/corpus/CorpusResources.java
@@ -0,0 +1,16 @@
+package com.dylibso.chicory.corpus;
+
+import java.io.InputStream;
+
+public final class CorpusResources {
+
+ private CorpusResources() {}
+
+ public static InputStream getResource(String name) {
+ InputStream stream = CorpusResources.class.getResourceAsStream("/" + name);
+ if (stream == null) {
+ throw new IllegalArgumentException("Resource not found: /" + name);
+ }
+ return stream;
+ }
+}
diff --git a/wasm/src/main/java/module-info.java b/wasm/src/main/java/module-info.java
new file mode 100644
index 000000000..854fbc3bf
--- /dev/null
+++ b/wasm/src/main/java/module-info.java
@@ -0,0 +1,5 @@
+module com.dylibso.chicory.wasm {
+ exports com.dylibso.chicory.wasm;
+ exports com.dylibso.chicory.wasm.io;
+ exports com.dylibso.chicory.wasm.types;
+}
diff --git a/wasm/src/test/java/com/dylibso/chicory/wasm/ParserTest.java b/wasm/src/test/java/com/dylibso/chicory/wasm/ParserTest.java
index b38cf7b86..0646239c6 100644
--- a/wasm/src/test/java/com/dylibso/chicory/wasm/ParserTest.java
+++ b/wasm/src/test/java/com/dylibso/chicory/wasm/ParserTest.java
@@ -7,6 +7,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.wasm.types.ActiveDataSegment;
import com.dylibso.chicory.wasm.types.CustomSection;
import com.dylibso.chicory.wasm.types.ExternalType;
@@ -30,7 +31,7 @@ public class ParserTest {
@Test
public void shouldParseFile() throws IOException {
- try (InputStream is = getClass().getResourceAsStream("/compiled/start.wat.wasm")) {
+ try (InputStream is = CorpusResources.getResource("compiled/start.wat.wasm")) {
var module = Parser.parse(is);
// check types section
@@ -93,7 +94,7 @@ public void shouldParseFile() throws IOException {
@Test
public void shouldParseIterfact() throws IOException {
- try (InputStream is = getClass().getResourceAsStream("/compiled/iterfact.wat.wasm")) {
+ try (InputStream is = CorpusResources.getResource("compiled/iterfact.wat.wasm")) {
var module = Parser.parse(is);
// check types section
@@ -133,7 +134,7 @@ public void shouldParseAllFiles() throws IOException {
public void shouldSupportCustomListener() throws IOException {
var parser = Parser.builder().includeSectionId(SectionId.CUSTOM).build();
- try (InputStream is = getClass().getResourceAsStream("/compiled/count_vowels.rs.wasm")) {
+ try (InputStream is = CorpusResources.getResource("compiled/count_vowels.rs.wasm")) {
parser.parse(
is,
s -> {
@@ -150,7 +151,7 @@ public void shouldSupportCustomListener() throws IOException {
@Test
public void shouldParseFloats() throws IOException {
- try (InputStream is = getClass().getResourceAsStream("/compiled/float.wat.wasm")) {
+ try (InputStream is = CorpusResources.getResource("compiled/float.wat.wasm")) {
var module = Parser.parse(is);
var codeSection = module.codeSection();
var fbody = codeSection.getFunctionBody(0);
@@ -163,7 +164,7 @@ public void shouldParseFloats() throws IOException {
@Test
public void shouldProperlyParseSignedValue() throws IOException {
- try (InputStream is = getClass().getResourceAsStream("/compiled/i32.wat.wasm")) {
+ try (InputStream is = CorpusResources.getResource("compiled/i32.wat.wasm")) {
var module = Parser.parse(is);
var codeSection = module.codeSection();
var fbody = codeSection.getFunctionBody(0);
@@ -186,7 +187,7 @@ public void shouldProperlyParseSignedValue() throws IOException {
@Test
public void shouldParseLocalDefinitions() throws Exception {
- try (InputStream is = getClass().getResourceAsStream("/compiled/define-locals.wat.wasm")) {
+ try (InputStream is = CorpusResources.getResource("compiled/define-locals.wat.wasm")) {
var module = Parser.parse(is);
var codeSection = module.codeSection();
var fbody = codeSection.getFunctionBody(0);
@@ -197,7 +198,7 @@ public void shouldParseLocalDefinitions() throws Exception {
@Test
public void shouldParseNamesSection() throws IOException {
- try (InputStream is = getClass().getResourceAsStream("/compiled/count_vowels.rs.wasm")) {
+ try (InputStream is = CorpusResources.getResource("compiled/count_vowels.rs.wasm")) {
var module = Parser.parse(is);
var nameSec = module.nameSection();
assertEquals(module.codeSection().functionBodyCount(), nameSec.functionNameCount());
@@ -208,7 +209,7 @@ public void shouldParseNamesSection() throws IOException {
@Test
public void shouldParseSIMD() throws IOException {
- try (InputStream is = ParserTest.class.getResourceAsStream("/wasm/simd_load.0.wasm")) {
+ try (InputStream is = CorpusResources.getResource("wasm/simd_load.0.wasm")) {
Parser.parse(is);
}
}
@@ -229,8 +230,7 @@ static List wasmCorpusFiles() throws IOException {
@Test
public void shouldParseOnlyImportedTags() throws IOException {
- try (InputStream is =
- ParserTest.class.getResourceAsStream("/compiled/issue_906.wat.wasm")) {
+ try (InputStream is = CorpusResources.getResource("compiled/issue_906.wat.wasm")) {
Parser.parse(is);
}
}
diff --git a/wasm/src/test/java/com/dylibso/chicory/wasm/WasmModuleTest.java b/wasm/src/test/java/com/dylibso/chicory/wasm/WasmModuleTest.java
index 6c92936a1..7146eb4a6 100644
--- a/wasm/src/test/java/com/dylibso/chicory/wasm/WasmModuleTest.java
+++ b/wasm/src/test/java/com/dylibso/chicory/wasm/WasmModuleTest.java
@@ -3,30 +3,23 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import com.dylibso.chicory.corpus.CorpusResources;
import org.junit.jupiter.api.Test;
public class WasmModuleTest {
@Test
public void shouldHaveTheSameHashCode() {
- var mod1 =
- Parser.parse(
- WasmModuleTest.class.getResourceAsStream("/compiled/count_vowels.rs.wasm"));
- var mod2 =
- Parser.parse(
- WasmModuleTest.class.getResourceAsStream("/compiled/count_vowels.rs.wasm"));
+ var mod1 = Parser.parse(CorpusResources.getResource("compiled/count_vowels.rs.wasm"));
+ var mod2 = Parser.parse(CorpusResources.getResource("compiled/count_vowels.rs.wasm"));
assertEquals(mod1.hashCode(), mod2.hashCode());
}
@Test
public void shouldBeEquals() {
- var mod1 =
- Parser.parse(
- WasmModuleTest.class.getResourceAsStream("/compiled/count_vowels.rs.wasm"));
- var mod2 =
- Parser.parse(
- WasmModuleTest.class.getResourceAsStream("/compiled/count_vowels.rs.wasm"));
+ var mod1 = Parser.parse(CorpusResources.getResource("compiled/count_vowels.rs.wasm"));
+ var mod2 = Parser.parse(CorpusResources.getResource("compiled/count_vowels.rs.wasm"));
assertTrue(mod1.equals(mod2));
}
diff --git a/wasm/src/test/java/com/dylibso/chicory/wasm/types/ValTypeTest.java b/wasm/src/test/java/com/dylibso/chicory/wasm/types/ValTypeTest.java
index df53c88c0..cc0a7f0ce 100644
--- a/wasm/src/test/java/com/dylibso/chicory/wasm/types/ValTypeTest.java
+++ b/wasm/src/test/java/com/dylibso/chicory/wasm/types/ValTypeTest.java
@@ -2,6 +2,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
+import com.dylibso.chicory.corpus.CorpusResources;
import com.dylibso.chicory.wasm.Parser;
import org.junit.jupiter.api.Test;
@@ -45,9 +46,7 @@ public void roundtrip() {
@Test
public void checkExternRef() {
var module =
- Parser.parse(
- ValTypeTest.class.getResourceAsStream(
- "/compiled/externref-example.wat.wasm"));
+ Parser.parse(CorpusResources.getResource("compiled/externref-example.wat.wasm"));
assertEquals(3, module.typeSection().types().length);