name: 'Make Test'
on:
  push:
    branches:
      - maint-3.9
  pull_request:
    branches:
      - maint-3.9
jobs:
  # We start with checking C++ formatting. No one gets free CPU cycles if they
  # can't use clang-format.
  check-formatting:
    name: Check C++ Formatting
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
    - uses: gnuradio/clang-format-lint-action@v0.5-4
      with:
        source: '.'
        exclude: './volk'
        extensions: 'h,hpp,cpp,cc,cc.in'
  # Doxygen gets built separately. It has a lot of output and its own weirdness.
  doxygen:
    name: Doxygen
    runs-on: ubuntu-20.04 # This can run on whatever
    container:
      image: 'gnuradio/ci-ubuntu-20.04-3.9:0.3'
      volumes:
        - build_data:/build
    steps:
    - uses: actions/checkout@v2
      name: Checkout Project
    - name: CMake
      run: 'cd /build && cmake ${GITHUB_WORKSPACE}'
    - name: Make Docs
      run: 'cd /build && make doxygen_target'
  linux-docker:
  # All of these shall depend on the formatting check (needs: check-formatting)
    needs: check-formatting
    runs-on: ubuntu-20.04
    # The GH default is 360 minutes (it's also the max as of Feb-2021). However
    # we should fail sooner. The only reason to exceed this time is if a test
    # hangs.
    timeout-minutes: 120
    strategy:
      # Enabling fail-fast would kill all Dockers if one of them fails. We want
      # maximum output.
      fail-fast: false
      matrix:
        # For every distro we want to test here, add one key 'distro' with a
        # descriptive name, and one key 'containerid' with the name of the
        # container (i.e., what you want to docker-pull)
        include:
          - distro: 'Ubuntu 20.04'
            containerid: 'gnuradio/ci:ubuntu-20.04-3.9'
            cxxflags: -Werror
          - distro: 'Fedora 33'
            containerid: 'gnuradio/ci:fedora-33-3.9'
            cxxflags: ''
          - distro: 'CentOS 8.3'
            containerid: 'gnuradio/ci:centos-8.3-3.9'
            cxxflags: -Werror
          - distro: 'Debian 10'
            containerid: 'gnuradio/ci-debian-10-3.9:1.0'
            cxxflags: -Werror
    name: ${{ matrix.distro }}
    container:
      image: ${{ matrix.containerid }}
      volumes:
        - build_data:/build
      options: --cpus 2
    steps:
    - uses: actions/checkout@v2
      name: Checkout Project
    - name: CMake
      env:
        CXXFLAGS: ${{ matrix.cxxflags }}
      run: 'cd /build && cmake ${GITHUB_WORKSPACE} -DENABLE_DOXYGEN=OFF'
    - name: Make
      run: 'cd /build && make -j2 -k'
    - name: Make Test
      run: 'cd /build && ctest --output-on-failure -E "qa_agc|qa_cpp_py_binding|qa_cpp_py_binding_set|qa_ctrlport_probes|qa_qtgui"'
