@@ -112,130 +112,6 @@ env:
112
112
PYTHON_VERSION : " 3.13.1"
113
113
114
114
jobs :
115
- rust_tests :
116
- if : ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
117
- env :
118
- RUST_BACKTRACE : full
119
- name : Run rust tests
120
- runs-on : ${{ matrix.os }}
121
- strategy :
122
- matrix :
123
- os : [macos-latest, ubuntu-latest, windows-latest]
124
- fail-fast : false
125
- steps :
126
- - uses : actions/checkout@v4
127
- - uses : dtolnay/rust-toolchain@stable
128
- with :
129
- components : clippy
130
- - uses : Swatinem/rust-cache@v2
131
-
132
- - name : Set up the Windows environment
133
- shell : bash
134
- run : |
135
- git config --system core.longpaths true
136
- cargo install --target-dir=target -v cargo-vcpkg
137
- cargo vcpkg -v build
138
- if : runner.os == 'Windows'
139
- - name : Set up the Mac environment
140
- run : brew install autoconf automake libtool
141
- if : runner.os == 'macOS'
142
-
143
- - name : run clippy
144
- run : cargo clippy ${{ env.CARGO_ARGS }} --workspace --all-targets --exclude rustpython_wasm -- -Dwarnings
145
-
146
- - name : run rust tests
147
- run : cargo test --workspace --exclude rustpython_wasm --verbose --features threading ${{ env.CARGO_ARGS }}
148
- if : runner.os != 'macOS'
149
- - name : run rust tests
150
- run : cargo test --workspace --exclude rustpython_wasm --exclude rustpython-jit --verbose --features threading ${{ env.CARGO_ARGS }}
151
- if : runner.os == 'macOS'
152
-
153
- - name : check compilation without threading
154
- run : cargo check ${{ env.CARGO_ARGS }}
155
-
156
- - name : Test example projects
157
- run :
158
- cargo run --manifest-path example_projects/barebone/Cargo.toml
159
- cargo run --manifest-path example_projects/frozen_stdlib/Cargo.toml
160
- if : runner.os == 'Linux'
161
-
162
- - name : prepare AppleSilicon build
163
- uses : dtolnay/rust-toolchain@stable
164
- with :
165
- target : aarch64-apple-darwin
166
- if : runner.os == 'macOS'
167
- - name : Check compilation for Apple Silicon
168
- run : cargo check --target aarch64-apple-darwin
169
- if : runner.os == 'macOS'
170
- - name : prepare iOS build
171
- uses : dtolnay/rust-toolchain@stable
172
- with :
173
- target : aarch64-apple-ios
174
- if : runner.os == 'macOS'
175
- - name : Check compilation for iOS
176
- run : cargo check --target aarch64-apple-ios
177
- if : runner.os == 'macOS'
178
-
179
- exotic_targets :
180
- if : ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
181
- name : Ensure compilation on various targets
182
- runs-on : ubuntu-latest
183
- steps :
184
- - uses : actions/checkout@v4
185
- - uses : dtolnay/rust-toolchain@stable
186
- with :
187
- target : i686-unknown-linux-gnu
188
-
189
- - name : Install gcc-multilib and musl-tools
190
- run : sudo apt-get update && sudo apt-get install gcc-multilib musl-tools
191
- - name : Check compilation for x86 32bit
192
- run : cargo check --target i686-unknown-linux-gnu
193
-
194
- - uses : dtolnay/rust-toolchain@stable
195
- with :
196
- target : aarch64-linux-android
197
-
198
- - name : Check compilation for android
199
- run : cargo check --target aarch64-linux-android
200
-
201
- - uses : dtolnay/rust-toolchain@stable
202
- with :
203
- target : aarch64-unknown-linux-gnu
204
-
205
- - name : Install gcc-aarch64-linux-gnu
206
- run : sudo apt install gcc-aarch64-linux-gnu
207
- - name : Check compilation for aarch64 linux gnu
208
- run : cargo check --target aarch64-unknown-linux-gnu
209
-
210
- - uses : dtolnay/rust-toolchain@stable
211
- with :
212
- target : i686-unknown-linux-musl
213
-
214
- - name : Check compilation for musl
215
- run : cargo check --target i686-unknown-linux-musl
216
-
217
- - uses : dtolnay/rust-toolchain@stable
218
- with :
219
- target : x86_64-unknown-freebsd
220
-
221
- - name : Check compilation for freebsd
222
- run : cargo check --target x86_64-unknown-freebsd
223
-
224
- - uses : dtolnay/rust-toolchain@stable
225
- with :
226
- target : x86_64-unknown-freebsd
227
-
228
- - name : Check compilation for freeBSD
229
- run : cargo check --target x86_64-unknown-freebsd
230
-
231
- - name : Prepare repository for redox compilation
232
- run : bash scripts/redox/uncomment-cargo.sh
233
- - name : Check compilation for Redox
234
- uses : coolreader18/redoxer-action@v1
235
- with :
236
- command : check
237
- args : --ignore-rust-version
238
-
239
115
snippets_cpython :
240
116
if : ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
241
117
env :
@@ -244,7 +120,7 @@ jobs:
244
120
runs-on : ${{ matrix.os }}
245
121
strategy :
246
122
matrix :
247
- os : [macos-latest, ubuntu-latest, windows -latest]
123
+ os : [ubuntu-latest]
248
124
fail-fast : false
249
125
steps :
250
126
- uses : actions/checkout@v4
@@ -307,137 +183,3 @@ jobs:
307
183
testvenv/bin/rustpython -m pip install wheel
308
184
- name : Check whats_left is not broken
309
185
run : python -I whats_left.py
310
-
311
- lint :
312
- name : Check Rust code with rustfmt and clippy
313
- runs-on : ubuntu-latest
314
- steps :
315
- - uses : actions/checkout@v4
316
- - uses : dtolnay/rust-toolchain@stable
317
- with :
318
- components : rustfmt, clippy
319
- - name : run rustfmt
320
- run : cargo fmt --check
321
- - name : run clippy on wasm
322
- run : cargo clippy --manifest-path=wasm/lib/Cargo.toml -- -Dwarnings
323
- - uses : actions/setup-python@v5
324
- with :
325
- python-version : ${{ env.PYTHON_VERSION }}
326
- - name : install ruff
327
- run : python -m pip install ruff==0.0.291 # astral-sh/ruff#7778
328
- - name : Ensure docs generate no warnings
329
- run : cargo doc
330
- - name : run python lint
331
- run : ruff extra_tests wasm examples --exclude='./.*',./Lib,./vm/Lib,./benches/ --select=E9,F63,F7,F82 --show-source
332
- - name : install prettier
333
- run : yarn global add prettier && echo "$(yarn global bin)" >>$GITHUB_PATH
334
- - name : check wasm code with prettier
335
- # prettier doesn't handle ignore files very well: https://github.com/prettier/prettier/issues/8506
336
- run : cd wasm && git ls-files -z | xargs -0 prettier --check -u
337
- # Keep cspell check as the last step. This is optional test.
338
- - name : install extra dictionaries
339
- run : npm install @cspell/dict-en_us @cspell/dict-cpp @cspell/dict-python @cspell/dict-rust @cspell/dict-win32 @cspell/dict-shell
340
- - name : spell checker
341
- uses : streetsidesoftware/cspell-action@v6
342
- with :
343
- files : ' **/*.rs'
344
- incremental_files_only : true
345
-
346
- miri :
347
- if : ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
348
- name : Run tests under miri
349
- runs-on : ubuntu-latest
350
- steps :
351
- - uses : actions/checkout@v4
352
- - uses : dtolnay/rust-toolchain@master
353
- with :
354
- toolchain : nightly
355
- components : miri
356
-
357
- - uses : Swatinem/rust-cache@v2
358
- - name : Run tests under miri
359
- # miri-ignore-leaks because the type-object circular reference means that there will always be
360
- # a memory leak, at least until we have proper cyclic gc
361
- run : MIRIFLAGS='-Zmiri-ignore-leaks' cargo +nightly miri test -p rustpython-vm -- miri_test
362
-
363
- wasm :
364
- if : ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
365
- name : Check the WASM package and demo
366
- runs-on : ubuntu-latest
367
- steps :
368
- - uses : actions/checkout@v4
369
- - uses : dtolnay/rust-toolchain@stable
370
-
371
- - uses : Swatinem/rust-cache@v2
372
- - name : install wasm-pack
373
- run : curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
374
- - name : install geckodriver
375
- run : |
376
- wget https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-linux64.tar.gz
377
- mkdir geckodriver
378
- tar -xzf geckodriver-v0.36.0-linux64.tar.gz -C geckodriver
379
- - uses : actions/setup-python@v5
380
- with :
381
- python-version : ${{ env.PYTHON_VERSION }}
382
- - run : python -m pip install -r requirements.txt
383
- working-directory : ./wasm/tests
384
- - uses : actions/setup-node@v4
385
- with :
386
- cache : " npm"
387
- cache-dependency-path : " wasm/demo/package-lock.json"
388
- - name : run test
389
- run : |
390
- export PATH=$PATH:`pwd`/../../geckodriver
391
- npm install
392
- npm run test
393
- env :
394
- NODE_OPTIONS : " --openssl-legacy-provider"
395
- working-directory : ./wasm/demo
396
- - uses : mwilliamson/setup-wabt-action@v3
397
- with : { wabt-version: "1.0.36" }
398
- - name : check wasm32-unknown without js
399
- run : |
400
- cd wasm/wasm-unknown-test
401
- cargo build --release --verbose
402
- if wasm-objdump -xj Import target/wasm32-unknown-unknown/release/wasm_unknown_test.wasm; then
403
- echo "ERROR: wasm32-unknown module expects imports from the host environment" >2
404
- fi
405
- - name : build notebook demo
406
- if : github.ref == 'refs/heads/release'
407
- run : |
408
- npm install
409
- npm run dist
410
- mv dist ../demo/dist/notebook
411
- env :
412
- NODE_OPTIONS : " --openssl-legacy-provider"
413
- working-directory : ./wasm/notebook
414
- - name : Deploy demo to Github Pages
415
- if : success() && github.ref == 'refs/heads/release'
416
- uses : peaceiris/actions-gh-pages@v4
417
- env :
418
- ACTIONS_DEPLOY_KEY : ${{ secrets.ACTIONS_DEMO_DEPLOY_KEY }}
419
- PUBLISH_DIR : ./wasm/demo/dist
420
- EXTERNAL_REPOSITORY : RustPython/demo
421
- PUBLISH_BRANCH : master
422
-
423
- wasm-wasi :
424
- if : ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
425
- name : Run snippets and cpython tests on wasm-wasi
426
- runs-on : ubuntu-latest
427
- steps :
428
- - uses : actions/checkout@v4
429
- - uses : dtolnay/rust-toolchain@stable
430
- with :
431
- target : wasm32-wasip1
432
-
433
- - uses : Swatinem/rust-cache@v2
434
- - name : Setup Wasmer
435
- uses : wasmerio/setup-wasmer@v3
436
- - name : Install clang
437
- run : sudo apt-get update && sudo apt-get install clang -y
438
- - name : build rustpython
439
- run : cargo build --release --target wasm32-wasip1 --features freeze-stdlib,stdlib --verbose
440
- - name : run snippets
441
- run : wasmer run --dir `pwd` target/wasm32-wasip1/release/rustpython.wasm -- `pwd`/extra_tests/snippets/stdlib_random.py
442
- - name : run cpython unittest
443
- run : wasmer run --dir `pwd` target/wasm32-wasip1/release/rustpython.wasm -- `pwd`/Lib/test/test_int.py
0 commit comments