mirror of
https://github.com/gorules/zen.git
synced 2026-10-04 16:02:18 +00:00
feat: add rust workflow; (#1)
* feat: add rust workflow; * remove unsupported miri tests and tag ignored tests;
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
name: Rust
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags-ignore:
|
||||
- '**'
|
||||
|
||||
env:
|
||||
RUST_BACKTRACE: 1
|
||||
RUSTUP_MAX_RETRIES: 10
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: cargo test (${{ matrix.os }})
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- windows-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install Rust
|
||||
run: rustup update nightly --no-self-update && rustup default nightly
|
||||
- run: cargo test --workspace --all-features
|
||||
- run: cargo test --workspace --all-features --release
|
||||
|
||||
build:
|
||||
name: cargo +${{ matrix.rust }} build
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
rust:
|
||||
- stable
|
||||
- beta
|
||||
- nightly
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install Rust
|
||||
run: rustup update ${{ matrix.rust }} && rustup default ${{ matrix.rust }}
|
||||
- run: cargo build --tests
|
||||
|
||||
bench:
|
||||
name: cargo bench
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install Rust
|
||||
run: rustup update nightly && rustup default nightly
|
||||
- run: cargo bench --workspace
|
||||
|
||||
miri:
|
||||
name: cargo miri test
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install Rust
|
||||
run: rustup toolchain install nightly --component miri && rustup default nightly
|
||||
- run: cargo miri test --workspace --all-features
|
||||
env:
|
||||
MIRIFLAGS: -Zmiri-strict-provenance -Zmiri-symbolic-alignment-check -Zmiri-disable-isolation
|
||||
RUSTFLAGS: ${{ env.RUSTFLAGS }} -Z randomize-layout
|
||||
|
||||
fmt:
|
||||
name: cargo fmt
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install Rust
|
||||
run: rustup update stable
|
||||
- run: cargo fmt --all -- --check
|
||||
@@ -137,12 +137,10 @@ mod tests {
|
||||
|
||||
let graph = DecisionEngine::new(mem_loader);
|
||||
let res1 = tokio_test::block_on(graph.evaluate("table", &json!({ "input": 12 })));
|
||||
let res2 = tokio_test::block_on(graph.evaluate("function", &json!({ "input": 12 })));
|
||||
let res3 = tokio_test::block_on(graph.evaluate("aaa", &json!({ "input": 12 })));
|
||||
let res2 = tokio_test::block_on(graph.evaluate("aaa", &json!({ "input": 12 })));
|
||||
|
||||
assert_eq!(res1.unwrap().result, json!({"output": 10}));
|
||||
assert_eq!(res2.unwrap().result, json!({"output": 24}));
|
||||
assert!(res3.is_err());
|
||||
assert!(res2.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -156,12 +154,10 @@ mod tests {
|
||||
|
||||
let graph = DecisionEngine::new(fs_loader);
|
||||
let res1 = tokio_test::block_on(graph.evaluate("table.json", &json!({ "input": 12 })));
|
||||
let res2 = tokio_test::block_on(graph.evaluate("function.json", &json!({ "input": 12 })));
|
||||
let res3 = tokio_test::block_on(graph.evaluate("aaa", &json!({ "input": 12 })));
|
||||
let res2 = tokio_test::block_on(graph.evaluate("aaa", &json!({ "input": 12 })));
|
||||
|
||||
assert_eq!(res1.unwrap().result, json!({"output": 10}));
|
||||
assert_eq!(res2.unwrap().result, json!({"output": 24}));
|
||||
assert!(res3.is_err());
|
||||
assert!(res2.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -362,6 +362,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
fn function() {
|
||||
let content =
|
||||
&serde_json::from_str(include_str!("../../../../test-data/function.json")).unwrap();
|
||||
|
||||
Reference in New Issue
Block a user