1- .PHONY : fmt fmt-check lint-wasi-targets test-wasi-targets wasi-targets lint-native-targets test-native-targets native-targets test-wpt test clean cli plugin build-test-plugins build-default-plugin vet ci
1+ .PHONY : fmt fmt-check lint-wasi-targets lint-wasip1-targets lint-wasip2-targets \
2+ test-wasi-targets test-wasip1-targets test-wasip2-targets wasi-targets \
3+ lint-native-targets test-native-targets test-native-targets-ci native-targets \
4+ test-wpt test-wpt-ci test-all clean cli build-default-plugin build-test-plugins \
5+ vet ci
26.DEFAULT_GOAL := cli
37
48# === Format checks ===
@@ -61,7 +65,9 @@ test-wasip2-targets:
6165wasi-targets : lint-wasi-targets test-wasi-targets
6266
6367# === Lint & Test Native Targets ===
64- lint-native-targets : fmt-check build-default-plugin
68+ lint-native-targets : build-default-plugin lint-native-targets-ci
69+
70+ lint-native-targets-ci : fmt-check
6571 CARGO_PROFILE_RELEASE_LTO=off cargo clippy --workspace \
6672 --exclude=javy \
6773 --exclude=javy-plugin-api \
@@ -71,7 +77,12 @@ lint-native-targets: fmt-check build-default-plugin
7177 --exclude=javy-test-plugin-wasip2 \
7278 --release --all-targets --all-features -- -D warnings
7379
74- test-native-targets : build-default-plugin build-test-plugins
80+ test-native-targets : build-default-plugin build-test-plugins test-native-targets-ci
81+
82+ # This command assumes a CI environment in which the test plugin
83+ # assets have been previously created in the expected directories.
84+ # This ensures that we can recycle CI time.
85+ test-native-targets-ci :
7586 CARGO_PROFILE_RELEASE_LTO=off cargo hack test --workspace \
7687 --exclude=javy \
7788 --exclude=javy-plugin-api \
@@ -81,46 +92,21 @@ test-native-targets: build-default-plugin build-test-plugins
8192 --exclude=javy-test-plugin-wasip2 \
8293 --release --each-feature -- --nocapture
8394
95+
8496native-targets : lint-native-targets test-native-targets
8597
8698# === Web Platform Tests
8799
88- test-wpt : cli
100+ # For usage in CI, in which we assume pre-existing assets.
101+ test-wpt-ci :
89102 npm install --prefix wpt
90103 npm test --prefix wpt
91104
105+ test-wpt : cli test-wpt-ci
106+
92107# === All tests ===
93108test-all : wasi-targets native-targets test-wpt
94109
95- # === Binaries ===
96-
97- # First, build the default plugin, which is a dependency to the CLI.
98- # No need to run `javy_plugin_processing`, the CLI build.rs will take
99- # care of doing that.
100- target/release/javy : build-default-plugin
101- CARGO_PROFILE_RELEASE_LTO=off cargo build -p=javy-cli --release
102-
103- target/wasm32-wasip1/release/plugin.wasm :
104- cargo build -p=javy-plugin --target=wasm32-wasip1 --release
105-
106- target/wasm32-wasip1/release/test_plugin.wasm :
107- cargo build -p=javy-test-plugin-wasip1 --target=wasm32-wasip1 --release
108- cargo run --package=javy-plugin-processing --release -- target/wasm32-wasip1/release/test_plugin.wasm target/wasm32-wasip1/release/test_plugin.wasm
109-
110- target/wasm32-wasip2/release/test_plugin.wasm :
111- cargo build -p=javy-test-plugin-wasip2 --target=wasm32-wasip2 --release
112- cargo run --package=javy-plugin-processing --release -- target/wasm32-wasip2/release/test_plugin.wasm target/wasm32-wasip2/release/test_plugin.wasm
113-
114- target/wasm32-unknown-unknown/release/test_invalid_plugin.wasm :
115- cargo build -p=javy-test-invalid-plugin --target=wasm32-unknown-unknown --release
116-
117- cli : target/release/javy
118-
119- # Build the default plugin
120- build-default-plugin : target/wasm32-wasip1/release/plugin.wasm
121-
122- # Build auxiliary plugins, for testing
123- build-test-plugins : build-default-plugin target/wasm32-wasip1/release/test_plugin.wasm target/wasm32-wasip2/release/test_plugin.wasm target/wasm32-unknown-unknown/release/test_invalid_plugin.wasm
124110
125111# === Misc ===
126112clean :
@@ -134,3 +120,21 @@ vet:
134120# GitHub Actions if we try to compile native targets in the same workflow as
135121# WASI targets so we have to use a multi-step process in GitHub to avoid that.
136122ci : lint-wasi-targets lint-native-targets vet test-all
123+
124+ # First, build the default plugin, which is a dependency to the CLI.
125+ # No need to run `javy_plugin_processing`, the CLI build.rs will take
126+ # care of doing that.
127+ cli : build-default-plugin
128+ CARGO_PROFILE_RELEASE_LTO=off cargo build -p=javy-cli --release
129+
130+ # Build the default plugin
131+ build-default-plugin :
132+ cargo build -p=javy-plugin --target=wasm32-wasip1 --release
133+
134+ # Build auxiliary plugins, for testing
135+ build-test-plugins :
136+ cargo build --package=javy-test-plugin-wasip1 --target=wasm32-wasip1 --release
137+ cargo build --package=javy-test-plugin-wasip2 --target=wasm32-wasip2 --release
138+ cargo build --package=javy-test-invalid-plugin --target=wasm32-unknown-unknown --release
139+ cargo run --package=javy-plugin-processing --release -- target/wasm32-wasip1/release/test_plugin.wasm target/wasm32-wasip1/release/test_plugin.wasm
140+ cargo run --package=javy-plugin-processing --release -- target/wasm32-wasip2/release/test_plugin.wasm target/wasm32-wasip2/release/test_plugin.wasm
0 commit comments