Add comprehensive fuzz testing for all diff algorithms and operations #99
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: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| jobs: | |
| check-msrv: | |
| name: Check | |
| strategy: | |
| matrix: | |
| toolchain: | |
| - "1.71" | |
| - stable | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v4 | |
| - name: Install toolchain | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ matrix.toolchain}} | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Run cargo check | |
| run: cargo check | |
| - name: Run cargo check withoult default features | |
| run: cargo check --no-default-features | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v4 | |
| - name: Install stable toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Run cargo test | |
| run: cargo test --workspace | |
| miri: | |
| name: Miri | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v4 | |
| - name: Install nightly toolchain | |
| uses: dtolnay/rust-toolchain@nightly | |
| with: | |
| components: miri | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Run cargo test | |
| run: cargo miri test --workspace | |
| lints: | |
| name: Lints | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v4 | |
| - name: Install stable toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Run cargo fmt | |
| run: cargo fmt --all --check | |
| - name: Run cargo clippy | |
| run: cargo clippy --workspace --all-targets -- -D warnings | |
| # - name: Run cargo clippy withoult default features | |
| # run: cargo clippy --workspace --all-targets --no-default-features -- -D warnings | |
| - name: Run cargo doc | |
| run: cargo doc --no-deps --workspace --document-private-items | |
| env: | |
| RUSTDOCFLAGS: -D warnings | |
| fuzz: | |
| name: Fuzz Tests | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v4 | |
| - name: Install nightly toolchain | |
| uses: dtolnay/rust-toolchain@nightly | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install cargo-fuzz | |
| run: cargo install cargo-fuzz | |
| - name: Run fuzz tests | |
| run: | | |
| # Run each fuzz target for 45 seconds (total ~3 minutes for 4 targets) | |
| for target in comprehensive_diff diff_compute_with postprocess_heuristics unified_diff_printer; do | |
| cargo fuzz run $target -- -max_total_time=45 -runs=0 | |
| done |