name: CI on: pull_request: push: env: RUSTFLAGS: -Dwarnings jobs: build_and_test: name: Build and test runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macOS-latest, windows-latest] rust: [stable, 1.66.0] steps: - uses: actions/checkout@master - name: Install ${{ matrix.rust }} uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust }} override: true - name: check uses: actions-rs/cargo@v1 with: command: check args: --all --bins --examples - name: tests uses: actions-rs/cargo@v1 with: command: test args: --all clippy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true components: clippy - name: clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all-targets --all-features -- -D warnings check_fmt_and_docs: name: Checking fmt and docs runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: toolchain: nightly components: rustfmt, clippy override: true - name: fmt run: cargo fmt --all -- --check - name: Docs run: cargo doc fuzz_read: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true - run: cargo install cargo-fuzz - name: compile fuzz run: | cargo fuzz build fuzz_read - name: run fuzz run: | cargo fuzz run fuzz_read -- -timeout=1s -jobs=100 -workers=2 -runs=1000000 -max_len=5000000000 - name: Upload any failure inputs if: always() uses: actions/upload-artifact@v3 with: name: fuzz_read_bad_inputs path: fuzz/artifacts/fuzz_read/crash-* if-no-files-found: ignore fuzz_write: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true - run: cargo install cargo-fuzz - name: compile fuzz run: | cargo fuzz build fuzz_write - name: run fuzz run: | cargo fuzz run fuzz_write -- -timeout=1s -jobs=100 -workers=2 -runs=100000 -max_len=5000000000 - name: Upload any failure inputs if: always() uses: actions/upload-artifact@v3 with: name: fuzz_write_bad_inputs path: fuzz/artifacts/fuzz_write/crash-* if-no-files-found: ignore