test: Add coverage tests to reach ~94% coverage #482
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUSTFLAGS: -Dwarnings | |
| jobs: | |
| # Fast sanity check - catches common mistakes | |
| makefile-lint: | |
| name: Makefile Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Verify coverage target has --all-features | |
| run: | | |
| if ! grep -q "llvm-cov.*nextest.*--all-features" Makefile; then | |
| echo "::error::Makefile coverage target is missing --all-features flag!" | |
| echo "This causes 0% coverage. See commit 4badee1 for context." | |
| exit 1 | |
| fi | |
| echo "✅ Makefile coverage target has --all-features" | |
| check: | |
| name: Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Check | |
| run: cargo check --all-features | |
| fmt: | |
| name: Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt | |
| - name: Format check | |
| run: cargo fmt --all -- --check | |
| clippy: | |
| name: Clippy | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Clippy | |
| run: cargo clippy --all-targets --all-features -- -D warnings | |
| test: | |
| name: Test | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Unit tests | |
| run: cargo test --lib | |
| - name: Integration tests | |
| run: cargo test --test integration | |
| - name: Property tests | |
| run: cargo test --test property_tests | |
| env: | |
| PROPTEST_CASES: 256 | |
| - name: Doc tests | |
| run: cargo test --doc | |
| - name: All tests | |
| run: cargo test --all | |
| coverage: | |
| name: Coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: llvm-tools-preview | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install cargo-llvm-cov | |
| uses: taiki-e/install-action@cargo-llvm-cov | |
| - name: Generate coverage | |
| run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info --ignore-filename-regex '(crates/|fuzz/|golden_traces/)' | |
| - name: Upload coverage | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| files: lcov.info | |
| fail_ci_if_error: false | |
| mutants: | |
| name: Mutation Testing | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install cargo-mutants | |
| uses: taiki-e/install-action@v2 | |
| with: | |
| tool: cargo-mutants | |
| - name: Run mutation tests (sample) | |
| run: cargo mutants --no-times --timeout 300 --in-place -- --all-features | |
| continue-on-error: true | |
| - name: Upload mutants results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: mutants-results | |
| path: mutants.out/ | |
| retention-days: 30 | |
| security: | |
| name: Security Audit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: rustsec/audit-check@v2 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| deny: | |
| name: Dependency Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: EmbarkStudios/cargo-deny-action@v2 | |
| docs: | |
| name: Documentation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Build docs | |
| run: cargo doc --no-deps --all-features | |
| env: | |
| RUSTDOCFLAGS: -Dwarnings | |
| shellcheck: | |
| name: Shellcheck | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Shellcheck | |
| run: shellcheck --severity=warning scripts/*.sh | |
| wasm: | |
| name: WASM Compatibility | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Check core (no features) | |
| run: cargo check --target wasm32-unknown-unknown --no-default-features | |
| - name: Check with crypto | |
| run: cargo check --target wasm32-unknown-unknown --no-default-features --features format-encryption,format-signing | |
| - name: Check with compression | |
| run: cargo check --target wasm32-unknown-unknown --no-default-features --features format-compression | |
| build: | |
| name: Build | |
| runs-on: ubuntu-latest | |
| needs: [check, fmt, clippy, test, security, deny, wasm] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Build release | |
| run: cargo build --release | |
| - name: Run examples | |
| run: | | |
| cargo run --example boston_housing | |
| cargo run --example iris_clustering | |
| cargo run --example dataframe_basics | |
| chaos: | |
| name: Chaos Testing (aprender-shell) | |
| runs-on: ubuntu-latest | |
| needs: [check, fmt, clippy, test] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Checkout renacer | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: paiml/renacer | |
| path: ../renacer | |
| - name: Build renacer | |
| run: cargo build --release --manifest-path ../renacer/Cargo.toml | |
| - name: Add renacer to PATH | |
| run: echo "../renacer/target/release" >> $GITHUB_PATH | |
| - name: Build aprender-shell | |
| run: cargo build --release -p aprender-shell | |
| - name: Run chaos baseline tests | |
| run: ./crates/aprender-shell/scripts/chaos-baseline.sh ci | |
| - name: Upload chaos test results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: chaos-results | |
| path: /tmp/chaos-results/ | |
| retention-days: 30 |