name: CI checks on: [push, pull_request] jobs: test: name: Test on ${{ matrix.os }} 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] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: 1.56.0 override: true - 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 no-std: name: Check no-std target ${{ matrix.target }} runs-on: ubuntu-latest strategy: matrix: target: - thumbv6m-none-eabi - wasm32-unknown-unknown - wasm32-wasi steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - run: rustup target add ${{ matrix.target }} - name: Build uses: actions-rs/cargo@v1 with: command: build args: --verbose --target ${{ matrix.target }} --no-default-features