name: Unit tests

on:
  pull_request:
  push:
    branches:
      - main

env:
  CARGO_TERM_COLOR: always
  CARGO_UNSTABLE_SPARSE_REGISTRY: "true"

jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        os:
        - macos
        - ubuntu
        - windows

    runs-on: ${{ matrix.os }}-latest
    name: on ${{ matrix.os }}

    steps:
    - uses: actions/checkout@v2
    - name: Configure toolchain
      run: |
        rustup toolchain install --profile minimal --no-self-update nightly
        rustup default nightly

    - name: Configure caching
      uses: actions/cache@v3
      with:
        path: |
          ~/.cargo/registry/index/
          ~/.cargo/registry/cache/
          ~/.cargo/git/db/
          target/
        key: ${{ runner.os }}-unit-tests-${{ hashFiles('**/Cargo.lock') }}
        restore-keys: |
          ${{ runner.os }}-unit-tests

    - name: Install deps
      if: matrix.os == 'ubuntu'
      run: sudo ./ci-scripts/install-deps.sh

    - name: Test (Unix)
      if: matrix.os != 'windows'
      run: cargo test --no-default-features --features pkg-config,native-tls

    - name: Test (Windows)
      if: matrix.os == 'windows'
      run: cargo test --no-default-features --features native-tls