datatest 0.8.0

Data-driven tests in Rust
Documentation
# Note: `toolchain` doesn't work for clippy-check (adds `+stable`/`+nightly` to the wrong place), so instead we install
#  toolchains as default
on: [pull_request]
name: Rust
env:
  RUSTC_BOOTSTRAP: datatest
jobs:
  rustfmt:
    name: Verify formatting
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v1

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          default: true
          components: rustfmt

      - name: Cargo fmt
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

  verify:
    name: Verify Clippy and Tests
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - windows-latest
          - macos-latest
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout sources
        uses: actions/checkout@v1

      - name: Cache cargo registry
        uses: actions/cache@v1
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-cargo-registry

      - name: Cache cargo index
        uses: actions/cache@v1
        with:
          path: ~/.cargo/git
          key: ${{ runner.os }}-cargo-index

      - name: Cache cargo build
        uses: actions/cache@v1
        with:
          path: target
          key: ${{ runner.os }}-cargo-build-target
      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: 1.72.0
          default: true
          components: clippy

      - name: Cargo clippy (stable)
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-features --features subvert_stable_guarantees

      - name: Cargo test (stable)
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all --all-targets --features subvert_stable_guarantees

      - name: Cargo clean (stable)
        uses: actions-rs/cargo@v1
        with:
          command: clean

      - name: Install nightly toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly-2023-09-28
          default: true
          components: clippy

      - name: Cargo clippy (nightly)
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-features

      - name: Cargo test (nightly)
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all --all-targets