Skip to content

Commit 356cf2b

Browse files
committed
ci: add parse/runtime conformance jobs and prelude execution smoke test
1 parent 4ff8eb7 commit 356cf2b

2 files changed

Lines changed: 61 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,40 @@ jobs:
3030

3131
- name: Run clippy
3232
run: cargo clippy --workspace --all-targets
33+
34+
parse-conformance:
35+
name: parse conformance
36+
runs-on: ubuntu-latest
37+
steps:
38+
- name: Checkout repository
39+
uses: actions/checkout@v4
40+
41+
- name: Setup Rust toolchain
42+
uses: dtolnay/rust-toolchain@stable
43+
44+
- name: Cache cargo artifacts
45+
uses: Swatinem/rust-cache@v2
46+
47+
- name: Run docs snippet parse conformance
48+
run: RUST_MIN_STACK=134217728 cargo test -p zynml --test e2e_tests docs_conformance:: -- --nocapture
49+
50+
- name: Run examples parse regression suite
51+
run: RUST_MIN_STACK=134217728 cargo test -p zynml --test e2e_tests examples_regression:: -- --nocapture
52+
53+
runtime-smoke:
54+
name: runtime smoke
55+
runs-on: ubuntu-latest
56+
steps:
57+
- name: Checkout repository
58+
uses: actions/checkout@v4
59+
60+
- name: Setup Rust toolchain
61+
uses: dtolnay/rust-toolchain@stable
62+
63+
- name: Cache cargo artifacts
64+
uses: Swatinem/rust-cache@v2
65+
66+
- name: Run runtime smoke tests
67+
run: |
68+
RUST_MIN_STACK=134217728 cargo test -p zynml --test e2e_tests execution::test_execute_simple_expression -- --nocapture
69+
RUST_MIN_STACK=134217728 cargo test -p zynml --test e2e_tests execution::test_execute_prelude_only_example -- --nocapture

crates/zynml/tests/e2e_tests.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3566,6 +3566,30 @@ mod execution {
35663566
}
35673567
}
35683568

3569+
#[test]
3570+
fn test_execute_prelude_only_example() {
3571+
let Some(mut zynml) = create_runtime_with_plugins() else {
3572+
println!("Skipping: plugins not available");
3573+
return;
3574+
};
3575+
3576+
let example_path = examples_dir().join("test_prelude_only.zynml");
3577+
if !example_path.exists() {
3578+
println!("Skipping: test_prelude_only.zynml not found");
3579+
return;
3580+
}
3581+
3582+
let result = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| {
3583+
zynml.run_file(&example_path)
3584+
}));
3585+
3586+
match result {
3587+
Ok(Ok(())) => {}
3588+
Ok(Err(e)) => panic!("test_prelude_only.zynml should execute successfully: {}", e),
3589+
Err(_) => panic!("test_prelude_only.zynml caused a runtime panic"),
3590+
}
3591+
}
3592+
35693593
// Ignored: this test crashes the test process with SIGABRT (stack overflow in Grammar2
35703594
// interpreter parsing the complex prelude.zynml) or SIGSEGV (tensor runtime bug in
35713595
// println_any). Both are pre-existing issues that kill the test runner via signal.

0 commit comments

Comments
 (0)