name: Tests
on:
  push:
    branches:
      - master
      - v*
  pull_request:
    branches:
      - master

jobs:
  pre-commit:
    name: Formatting
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
    - uses: pre-commit/action@v2.0.3

  cuda-build:
    name: CUDA build only
    runs-on: ubuntu-latest
    container: nvidia/cuda:10.2-devel-ubuntu18.04
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: true
    - name: Add wget
      run: apt-get update && apt-get install -y wget
    - name: Setup cmake
      uses: jwlawson/actions-setup-cmake@v1.11
    - name: Configure
      run: cmake -S . -B build -DCLI11_CUDA_TESTS=ON
    - name: Build
      run: cmake --build build -j2

  cmake-config:
    name: CMake config check
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Check CMake 3.4
      with:
        cmake-version: "3.4"
      uses: ./.github/actions/quick_cmake

    - name: Check CMake 3.5
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.5"
      if: success() || failure()

    - name: Check CMake 3.6
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.6"
      if: success() || failure()

    - name: Check CMake 3.7
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.7"
      if: success() || failure()

    - name: Check CMake 3.8
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.8"
      if: success() || failure()

    - name: Check CMake 3.9
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.9"
      if: success() || failure()

    - name: Check CMake 3.10
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.10"
      if: success() || failure()

    - name: Check CMake 3.11 (full)
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.11"
        args: -DCLI11_SANITIZERS=ON -DCLI11_BUILD_EXAMPLES_JSON=ON
      if: success() || failure()

    - name: Check CMake 3.12
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.12"
      if: success() || failure()

    - name: Check CMake 3.13
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.13"
      if: success() || failure()

    - name: Check CMake 3.14
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.14"
      if: success() || failure()

    - name: Check CMake 3.15
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.15"
      if: success() || failure()

    - name: Check CMake 3.16
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.16"
      if: success() || failure()

    - name: Check CMake 3.17
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.17"
      if: success() || failure()

    - name: Check CMake 3.18
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.18"
      if: success() || failure()

    - name: Check CMake 3.19
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.19"
      if: success() || failure()

    - name: Check CMake 3.20
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.20"
      if: success() || failure()

    - name: Check CMake 3.21 (full)
      uses: ./.github/actions/quick_cmake
      with:
        cmake-version: "3.21"
        args: -DCLI11_SANITIZERS=ON -DCLI11_BUILD_EXAMPLES_JSON=ON
      if: success() || failure()
