diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6abdbf4..6eec5d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,186 +8,12 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - # We don't need to test across multiple platforms yet - # os: [ubuntu-latest, windows-latest, macOS-latest] - os: [ubuntu-latest] + os: [ubuntu-latest, windows-latest, macOS-latest] steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.56.0 - override: true + - uses: actions/checkout@v3 - name: Run tests - uses: actions-rs/cargo@v1 - with: - command: test - args: --verbose --release --all-features - - build: - name: Build target ${{ matrix.target }} - runs-on: ubuntu-latest - strategy: - matrix: - target: - - wasm32-unknown-unknown - - wasm32-wasi - - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.56.0 - override: true - - name: Add target - run: rustup target add ${{ matrix.target }} - - name: cargo build - uses: actions-rs/cargo@v1 - with: - command: build - args: --all-features - - bitrot: - name: Bitrot check - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.56.0 - override: true - # Build benchmarks to prevent bitrot - - name: Build benchmarks - uses: actions-rs/cargo@v1 - with: - command: build - args: --benches --all-features - - book: - name: Book tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.56.0 - override: true - - name: cargo build - uses: actions-rs/cargo@v1 - with: - command: build - - name: Setup mdBook - uses: peaceiris/actions-mdbook@v1 - with: - mdbook-version: '0.4.5' - - name: Test Pasta book - run: mdbook test -L target/debug/deps book/ - - clippy: - name: Clippy (1.56.0) - timeout-minutes: 30 - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.56.0 - components: clippy - override: true - - name: Run clippy - uses: actions-rs/clippy-check@v1 - with: - name: Clippy (1.56.0) - token: ${{ secrets.GITHUB_TOKEN }} - args: --all-features --all-targets -- -D warnings - - clippy-beta: - name: Clippy (beta) - timeout-minutes: 30 - runs-on: ubuntu-latest - continue-on-error: true - - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: beta - components: clippy - override: true - - name: Run Clippy (beta) - uses: actions-rs/clippy-check@v1 - continue-on-error: true - with: - name: Clippy (beta) - token: ${{ secrets.GITHUB_TOKEN }} - args: --all-features --all-targets -- -W clippy::all - - codecov: - name: Code coverage - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - # Use stable for this to ensure that cargo-tarpaulin can be built. - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Install cargo-tarpaulin - uses: actions-rs/cargo@v1 - with: - command: install - args: cargo-tarpaulin - - name: Generate coverage report - uses: actions-rs/cargo@v1 - with: - command: tarpaulin - args: --all-features --timeout 600 --out Xml - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v1 - with: - token: ${{secrets.CODECOV_TOKEN}} - - doc-links: - name: Intra-doc links - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.56.0 - override: true - - name: cargo fetch - uses: actions-rs/cargo@v1 - with: - command: fetch - - # Ensure intra-documentation links all resolve correctly - # Requires #![deny(intra_doc_link_resolution_failure)] in crates. - - name: Check intra-doc links - uses: actions-rs/cargo@v1 - with: - command: doc - args: --document-private-items - - fmt: - name: Rustfmt - timeout-minutes: 30 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.56.0 - override: true - - run: rustup component add rustfmt - - uses: actions-rs/cargo@v1 - with: - command: fmt - args: -- --check + run: cargo test --verbose --release --all-features no-std: name: Check no-std target ${{ matrix.target }} @@ -200,14 +26,64 @@ jobs: - wasm32-wasi steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true + - uses: actions/checkout@v3 - run: rustup target add ${{ matrix.target }} - name: Build - uses: actions-rs/cargo@v1 + run: > + cargo build + --verbose + --target ${{ matrix.target }} + --no-default-features + + bitrot: + name: Bitrot check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + # Build benchmarks to prevent bitrot + - name: Build benchmarks + run: cargo build --benches --all-features + + book: + name: Book tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: cargo build + - name: Setup mdBook + uses: peaceiris/actions-mdbook@v1 with: - command: build - args: --verbose --target ${{ matrix.target }} --no-default-features + mdbook-version: '0.4.5' + - name: Test Pasta book + run: mdbook test -L target/debug/deps book/ + + codecov: + name: Code coverage + runs-on: ubuntu-latest + container: + image: xd009642/tarpaulin:develop-nightly + options: --security-opt seccomp=unconfined + steps: + - uses: actions/checkout@v3 + - name: Generate coverage report + run: cargo tarpaulin --engine llvm --all-features --timeout 600 --out Xml + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3.1.1 + + doc-links: + name: Intra-doc links + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: cargo fetch + # Requires #![deny(rustdoc::broken_intra_doc_links)] in crates. + - name: Check intra-doc links + run: cargo doc --document-private-items + + fmt: + name: Rustfmt + timeout-minutes: 30 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: cargo fmt -- --check diff --git a/.github/workflows/lints-beta.yml b/.github/workflows/lints-beta.yml new file mode 100644 index 0000000..4440b58 --- /dev/null +++ b/.github/workflows/lints-beta.yml @@ -0,0 +1,24 @@ +name: Beta lints + +# These lints are only informative, so we only run them directly on branches +# and not trial-merges of PRs, to reduce noise. +on: push + +jobs: + clippy-beta: + name: Clippy (beta) + timeout-minutes: 30 + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@beta + id: toolchain + - run: rustup override set ${{steps.toolchain.outputs.name}} + - name: Run Clippy (beta) + uses: actions-rs/clippy-check@v1 + continue-on-error: true + with: + name: Clippy (beta) + token: ${{ secrets.GITHUB_TOKEN }} + args: --all-features --all-targets -- -W clippy::all diff --git a/.github/workflows/lints-stable.yml b/.github/workflows/lints-stable.yml new file mode 100644 index 0000000..1e697ef --- /dev/null +++ b/.github/workflows/lints-stable.yml @@ -0,0 +1,18 @@ +name: Stable lints + +# We only run these lints on trial-merges of PRs to reduce noise. +on: pull_request + +jobs: + clippy: + name: Clippy (MSRV) + timeout-minutes: 30 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Run clippy + uses: actions-rs/clippy-check@v1 + with: + name: Clippy (MSRV) + token: ${{ secrets.GITHUB_TOKEN }} + args: --all-features --all-targets -- -D warnings diff --git a/rust-toolchain b/rust-toolchain deleted file mode 100644 index 3ebf789..0000000 --- a/rust-toolchain +++ /dev/null @@ -1 +0,0 @@ -1.56.0 diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..de43b23 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.56.0" +components = [ "clippy", "rustfmt" ]