feat: add rust workflow; (#1)

* feat: add rust workflow;

* remove unsupported miri tests and tag ignored tests;
This commit is contained in:
stefan-gorules
2023-03-29 22:57:29 +02:00
committed by GitHub
parent 768175994b
commit f00d61364a
3 changed files with 93 additions and 8 deletions
+88
View File
@@ -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
+4 -8
View File
@@ -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]
+1
View File
@@ -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();