name: Run tests
on:
  pull_request:
    branches:
      - 'master'
      - 'release-*'
  push:
    branches:
      - 'master'
      - 'release-*'
    tags: '*'
defaults:
  run:
    shell: bash
jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os:
          - ubuntu-latest
          - macOS-latest
          - windows-latest
        julia-arch:
          - 'x64'
          - 'x86'
        pkg-server:
          - ""
          - "pkg.julialang.org"
        julia-version:
          - "^1.7.0-0"
        exclude:
          - os: macOS-latest
            julia-arch: x86
    steps:
      - name: Set git to use LF
        if: matrix.os == 'windows-latest'
        run: |
          git config --global core.autocrlf false
          git config --global core.eol lf
      - uses: actions/checkout@v2
      - uses: julia-actions/setup-julia@latest
        with:
          version: ${{ matrix.julia-version }}
          arch: ${{ matrix.julia-arch }}
      - name: Fix TEMP on windows
        if: matrix.os == 'windows-latest'
        run: |
          # See https://github.com/actions/virtual-environments/issues/712
          echo "TMP=${USERPROFILE}\AppData\Local\Temp" >> ${GITHUB_ENV}
          echo "TEMP=${USERPROFILE}\AppData\Local\Temp" >> ${GITHUB_ENV}
      - run: julia --color=yes .ci/test_and_change_uuid.jl
      - run: julia --project --color=yes --check-bounds=yes -e 'import Pkg; Pkg.build(); Pkg.test(; coverage=true)'
        env:
          JULIA_PKG_SERVER: ${{ matrix.pkg-server }}
      - uses: julia-actions/julia-processcoverage@v1
        env:
            JULIA_PKG_SERVER: ${{ matrix.pkg-server }}
      - uses: codecov/codecov-action@v1
        with:
          file: lcov.info
  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1.0.0
      - uses: julia-actions/setup-julia@latest
        with:
          # version: '1.6'
          version: 'nightly'
      - name: Generate docs
        run: |
          julia --color=yes -e 'write("Project.toml", replace(read("Project.toml", String), r"uuid = .*?\n" =>"uuid = \"54cfe95a-1eb2-52ea-b672-e2afdf69b78f\"\n"));'
          julia --project --color=yes -e 'using Pkg; Pkg.activate("docs"); Pkg.instantiate(); Pkg.develop(PackageSpec(path = pwd()))'
          julia --project=docs --color=yes docs/make.jl pdf
        env:
          DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}
