name: PR

on:
  pull_request:
    branches: [ main ]

env:
  CARGO_TERM_COLOR: always

jobs:
  test-and-lint:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source
        uses: actions/checkout@v2

      - uses: Swatinem/rust-cache@v1

      - name: cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --workspace

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

      - name: clippy
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all --tests --examples -- -D warnings

  test-windows:
    runs-on: windows-latest
    steps:
      - name: Checkout source
        uses: actions/checkout@v2

      - uses: Swatinem/rust-cache@v1

      - name: cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --workspace

  test-macos:
    runs-on: macos-latest
    steps:
      - name: Checkout source
        uses: actions/checkout@v2

      - uses: Swatinem/rust-cache@v1

      - name: cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --workspace
