name: Run tests
on:
  pull_request:
    branches:
      - 'master'
      - 'release-*'
  push:
    branches:
      - 'master'
      - 'release-*'
    tags:
      - '*'
defaults:
  run:
    shell: bash
jobs:
  test:
    runs-on: ${{ matrix.os }}
    timeout-minutes: 60
    strategy:
      fail-fast: false
      matrix:
        os:
          - ubuntu-latest
          - macOS-latest
          - windows-latest
        julia-arch:
          - 'x64'
          - 'x86'
        julia-version:
          - '1.6'
          - 'nightly'
        exclude:
          - os: macOS-latest
            julia-arch: x86
    steps:
      - uses: actions/checkout@v2
      - uses: julia-actions/setup-julia@latest
        with:
          version: ${{ matrix.julia-version }}
      # Alter the UUID so that we test this package instead of loading
      # the version that is already built into a Julia's system image.
      - run: julia --color=yes .ci/test_and_change_uuid.jl
      - uses: julia-actions/julia-buildpkg@v1
      - uses: julia-actions/julia-runtest@v1
      - uses: julia-actions/julia-processcoverage@v1
        env:
            JULIA_PKG_SERVER: ${{ matrix.pkg-server }}
      - uses: codecov/codecov-action@v1
        with:
          file: lcov.info
  doctests:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v2
        with:
          persist-credentials: false
      - uses: julia-actions/setup-julia@v1
        with:
          version: 'nightly'
      - run: julia --color=yes .ci/test_and_change_uuid.jl
      - run: julia --project=docs --color=yes -e 'using Pkg; Pkg.instantiate()'
      - run: julia --project=docs --color=yes -e 'using Pkg; Pkg.develop(PackageSpec(path = pwd()))'
      - name: Run doctests
        run: julia --project=docs --color=yes -e 'import SHA; import Documenter; Documenter.doctest(SHA)'
