Skip to content

Commit 3ece12e

Browse files
Merge pull request #96 from swiftwasm/katei/remove-submodules
Checkout test suite repositories without git-submodules
2 parents 17b9a64 + 2af7fb2 commit 3ece12e

File tree

10 files changed

+79
-19
lines changed

10 files changed

+79
-19
lines changed

.gitmodules

Lines changed: 0 additions & 6 deletions
This file was deleted.

CI/check-spectest.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,5 @@ set -e
3434
install_tools
3535

3636
SOURCE_DIR="$(cd $(dirname $0)/.. && pwd)"
37+
./Vendor/checkout-dependency testsuite
3738
exec make -C $SOURCE_DIR spectest

CI/check-wasi-testsuite.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ install_tools
2424
SOURCE_DIR="$(cd $(dirname $0)/.. && pwd)"
2525
(
2626
cd $SOURCE_DIR && \
27+
./Vendor/checkout-dependency wasi-testsuite && \
2728
python3 -m pip install -r ./Vendor/wasi-testsuite/test-runner/requirements.txt && \
2829
exec ./IntegrationTests/WASI/run-tests.sh
2930
)

Makefile

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,32 +17,36 @@ test:
1717
docs:
1818
swift package generate-documentation --target WasmKit
1919

20-
WAST_ROOT = Vendor/testsuite
20+
### Spectest (Core WebAssembly Specification Test Suite)
21+
22+
TESTSUITE_DIR = Vendor/testsuite
2123
SPECTEST_ROOT = ./spectest
22-
WAST_FILES = $(wildcard $(WAST_ROOT)/*.wast) $(wildcard $(WAST_ROOT)/proposals/memory64/*.wast)
23-
JSON_FILES = $(WAST_FILES:$(WAST_ROOT)/%.wast=$(SPECTEST_ROOT)/%.json)
24+
WAST_FILES = $(wildcard $(TESTSUITE_DIR)/*.wast) $(wildcard $(TESTSUITE_DIR)/proposals/memory64/*.wast)
25+
JSON_FILES = $(WAST_FILES:$(TESTSUITE_DIR)/%.wast=$(SPECTEST_ROOT)/%.json)
2426

2527
.PHONY: spec
2628
spec: $(JSON_FILES) $(SPECTEST_ROOT)/host.wasm
2729

2830
$(SPECTEST_ROOT)/host.wasm: ./Examples/wasm/host.wat
2931
wat2wasm ./Examples/wasm/host.wat -o $(SPECTEST_ROOT)/host.wasm
3032

31-
$(SPECTEST_ROOT)/%.json: $(WAST_ROOT)/%.wast
33+
$(TESTSUITE_DIR)/%.wast: $(TESTSUITE_DIR)
34+
$(SPECTEST_ROOT)/%.json: $(TESTSUITE_DIR)/%.wast
3235
@mkdir -p $(@D)
3336
wast2json $^ -o $@
3437

3538
.PHONY: spectest
3639
spectest: spec
3740
swift run Spectest $(SPECTEST_ROOT)
3841

39-
.PHONY: clean
40-
clean:
41-
@swift package clean
4242

43-
.PHONY: update
44-
update:
45-
@swift package update
43+
### WASI Test Suite
44+
45+
.PHONY: wasitest
46+
wasitest:
47+
./IntegrationTests/WASI/run-tests.sh
48+
49+
### Utilities
4650

4751
.PHONY: generate
4852
generate:

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,15 @@ Add the URL of this repository to your `Package.swift` manifest. Then add the `W
2929
To run the core spec test suite run this:
3030

3131
```sh
32-
$ make spectest # Prepare core spec tests and check their assertions with WasmKit
32+
# Checkout the core spec test suite
33+
$ ./Vendor/checkout-dependency spectest
34+
# Prepare core spec tests and check their assertions with WasmKit
35+
$ make spectest
36+
37+
# Checkout WASI spec test suite
38+
$ ./Vendor/checkout-dependency wasi-testsuite
39+
# Install Python dependencies for running WASI spec tests
40+
$ python3 -m pip install -r ./Vendor/wasi-testsuite/test-runner/requirements.txt
41+
# Run WASI spec tests
42+
$ make wasitest
3343
```

Vendor/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/wasi-testsuite
2+
/testsuite

Vendor/checkout-dependency

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env python3
2+
#
3+
# This script checks out a dependency from a git repository.
4+
#
5+
# Usage:
6+
# checkout-dependency <dependency-name>
7+
8+
import os
9+
import sys
10+
import json
11+
import subprocess
12+
13+
14+
def main():
15+
if len(sys.argv) != 2:
16+
print("Usage: checkout-dependency <dependency-name>")
17+
sys.exit(1)
18+
19+
dependency_name = sys.argv[1]
20+
dependencies_file = os.path.join(os.path.dirname(__file__), "dependencies.json")
21+
dependencies = json.load(open(dependencies_file))
22+
dependency = dependencies.get(dependency_name)
23+
24+
if dependency is None:
25+
print(f"Dependency '{dependency_name}' not found in {dependencies_file}")
26+
print(f"Available dependencies: {', '.join(dependencies.keys())}")
27+
sys.exit(1)
28+
29+
dependency_path = os.path.join(os.path.dirname(__file__), dependency_name)
30+
if os.path.exists(dependency_path):
31+
print(f"Dependency '{dependency_name}' already exists at {dependency_path}")
32+
sys.exit(0)
33+
34+
print(f"Checking out '{dependency_name}' to {dependency_path}")
35+
subprocess.run(["git", "clone", dependency["repository"], dependency_path], check=True)
36+
subprocess.run(["git", "-C", dependency_path, "checkout", dependency["revision"]], check=True)
37+
38+
39+
if __name__ == "__main__":
40+
main()

Vendor/dependencies.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"testsuite": {
3+
"repository": "https://github.com/WebAssembly/testsuite.git",
4+
"revision": "7ef86ddeed81458f9031a49a40b3a3f99c1c6a8a"
5+
},
6+
"wasi-testsuite": {
7+
"repository": "https://github.com/WebAssembly/wasi-testsuite.git",
8+
"revision": "c9c751586fd86b321d595bbef13f2c7403cfdbc5"
9+
}
10+
}

Vendor/testsuite

Lines changed: 0 additions & 1 deletion
This file was deleted.

Vendor/wasi-testsuite

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)