on: push: branches: [main] pull_request: name: test jobs: required: runs-on: ubuntu-latest name: ubuntu / ${{ matrix.toolchain }} strategy: matrix: toolchain: [stable, beta] steps: - uses: actions/checkout@v3 with: submodules: true - name: Install ${{ matrix.toolchain }} uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.toolchain }} default: true - name: cargo generate-lockfile if: hashFiles('Cargo.lock') == '' uses: actions-rs/cargo@v1 with: command: generate-lockfile # https://twitter.com/jonhoo/status/1571290371124260865 - name: cargo test --locked uses: actions-rs/cargo@v1 with: command: test args: --locked --all-features --all-targets minimal: runs-on: ubuntu-latest name: ubuntu / stable / minimal-versions steps: - uses: actions/checkout@v3 with: submodules: true - name: Install stable uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - name: Install nightly for -Zminimal-versions uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly - name: cargo update -Zminimal-versions uses: actions-rs/cargo@v1 with: command: update toolchain: nightly args: -Zminimal-versions - name: cargo test uses: actions-rs/cargo@v1 with: command: test args: --locked --all-features --all-targets os-check: runs-on: ${{ matrix.os }} name: ${{ matrix.os }} / stable strategy: fail-fast: false matrix: os: [macos-latest, windows-latest] steps: - uses: actions/checkout@v3 with: submodules: true - name: Install stable uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - name: cargo generate-lockfile if: hashFiles('Cargo.lock') == '' uses: actions-rs/cargo@v1 with: command: generate-lockfile - name: cargo test uses: actions-rs/cargo@v1 with: command: test args: --locked --all-features --all-targets coverage: runs-on: ubuntu-latest name: ubuntu / stable / coverage steps: - uses: actions/checkout@v3 with: submodules: true - name: Install stable uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable components: llvm-tools-preview - name: cargo install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: cargo generate-lockfile if: hashFiles('Cargo.lock') == '' uses: actions-rs/cargo@v1 with: command: generate-lockfile - name: cargo llvm-cov run: cargo llvm-cov --locked --all-features --lcov --output-path lcov.info - name: Upload to codecov.io uses: codecov/codecov-action@v2 with: fail_ci_if_error: true