name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
check:
name: Clippy + fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- uses: Swatinem/rust-cache@v2
- name: Remove local [patch.crates-io] overrides (CI uses published crates)
run: |
python3 - <<'EOF'
import re
content = open("Cargo.toml").read()
content = re.sub(
r"\[patch\.crates-io\].*?(?=\n\[|\Z)",
"",
content,
flags=re.DOTALL,
)
open("Cargo.toml", "w").write(content)
EOF
- run: cargo fmt --all -- --check
- run: cargo clippy --workspace --all-targets -- -D warnings
test:
name: Test suite
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Remove local [patch.crates-io] overrides (CI uses published crates)
run: |
python3 - <<'EOF'
import re
content = open("Cargo.toml").read()
content = re.sub(
r"\[patch\.crates-io\].*?(?=\n\[|\Z)",
"",
content,
flags=re.DOTALL,
)
open("Cargo.toml", "w").write(content)
EOF
- run: cargo test --workspace
env:
RUST_LOG: warn
bench:
name: Criterion benchmarks (informational)
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Remove local [patch.crates-io] overrides (CI uses published crates)
run: |
python3 - <<'EOF'
import re
content = open("Cargo.toml").read()
content = re.sub(
r"\[patch\.crates-io\].*?(?=\n\[|\Z)",
"",
content,
flags=re.DOTALL,
)
open("Cargo.toml", "w").write(content)
EOF
- run: cargo bench --package trusty-memory-core -- --output-format bencher | tee bench_output.txt
- uses: actions/upload-artifact@v4
with:
name: bench-results
path: bench_output.txt