name: CTest

on: [push]

jobs:
  build:
    # The CMake configure and build commands are platform-agnostic and should work equally
    # well on Windows or Mac.  You can convert this to a matrix build if you need
    # cross-platform coverage.
    # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
    runs-on: ubuntu-latest
    strategy:
      # By default, GitHub will maximize the number of jobs run in parallel
      # depending on the available runners on GitHub-hosted virtual machines.
      # max-parallel: 8
      fail-fast: false
      matrix:
        include:
          - python-version: "3.7"
          - python-version: "3.8"
          - python-version: "3.9"
          - python-version: "3.10"
          - python-version: "3.11"

    steps:
      - uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}


      - name: Install packages
        shell: bash
        run: |
          sudo apt-get update
          sudo apt-get install octave octave-common octave-signal sox portaudio19-dev python3-pyaudio
          pip3 install psutil crcengine ujson pyserial numpy structlog sounddevice pyaudio
          pip3 install pytest pytest-rerunfailures

      - name: Build codec2
        shell: bash
        run: |
          git clone https://github.com/drowe67/codec2.git
          cd codec2 && git checkout master # This should be pinned to a release
          mkdir -p build_linux && cd build_linux && cmake .. && make

      - name: run ctests
        shell: bash
        working-directory: ${{github.workspace}}
        run: |
          mkdir build && cd build
          cmake -DCODEC2_BUILD_DIR=$GITHUB_WORKSPACE/codec2/build_linux ..
          ctest --output-on-failure
