binggan 0.16.1

Benchmarking library for stable Rust
Documentation
name: Rust
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  ci:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        features: [
            { label: "all", flags: "table_reporter" },
            { label: "default", flags: "default" }
        ]
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
        rust:
          - stable
          - beta
          - nightly
          - 1.85.0  # MSRV
    name: test-${{ matrix.features.label}}

    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true

      - run: cargo build --features ${{ matrix.features.flags }}
      - run: cargo test --features ${{ matrix.features.flags }}
      - run: cargo bench --features ${{ matrix.features.flags }}
      - name: Test filter parameter for cargo bench (Unix)
        if: runner.os != 'Windows'
        run: "[ $(cargo bench | wc -l) -gt $(cargo bench 15 | wc -l) ]"

  lint:
    strategy:
      matrix:
        rust:
          - stable
          - nightly

    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
          components: rustfmt, clippy

      - run: cargo fmt --all -- --check
      - run: cargo clippy --all -- -D warnings

  semver:
    name: semver
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Check semver
        uses: obi1kenobi/cargo-semver-checks-action@v2
        with:
          rust-toolchain: ${{ env.rust_stable }}