---
name: Tests

on:
  workflow_dispatch:
    inputs:
      debug_enabled:
        type: boolean
        description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
        required: false
        default: false
  push:
    branches:
      - '*'
  pull_request:

jobs:
  full-test:
    name: Running unit and integrationt tests
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        distro:
          - 'debian:stable'
        include:
          - distro: 'debian:stable'
            prepare: .github/prepare_debian.sh
    steps:
      - name: Git clone repository
        uses: actions/checkout@v6
      - name: Setup tmate session, see https://github.com/marketplace/actions/debugging-with-tmate
        uses: mxschmitt/action-tmate@v3
        if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
      - name: Run the tests on ${{ matrix.distro }}
        run: |
          docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 tmp-vol
          docker run \
              -e NPTEST_ACCEPTDEFAULT=1 \
              -e NPTEST_CACHE="/src/.github/NPTest.cache" \
              -w /src -v ${PWD}:/src \
              --tmpfs /media/ramdisk1 \
              -v /var/run/utmp:/var/run/utmp \
              --mount source=tmp-vol,destination=/src,target=/media/ramdisk2 \
              ${{ matrix.distro }} \
              /bin/sh -c '${{ matrix.prepare }} && \
                tools/setup && \
                ./configure --enable-libtap && \
                make && \
                make test && \
                make dist && \
                tar zxf monitoring-plugins-*.tar.gz && \
                cd monitoring-plugins-*/ && \
                ./configure && \
                make'
          docker container prune -f
          docker volume prune -f

  build-test:
    name: Running rpm build test on ${{ matrix.distro }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - {"distro": "fedora:latest", "build": ".github/mock.sh"}
          - {"distro": "rockylinux:8", "build": ".github/mock.sh"}
          - {"distro": "almalinux:9", "build": ".github/mock.sh"}
#          - {"distro": "oraclelinux:9", "build": ".github/mock.sh"}
    steps:
      - name: Git clone repository
        uses: actions/checkout@v6
      - name: Setup tmate session, see https://github.com/marketplace/actions/debugging-with-tmate
        uses: mxschmitt/action-tmate@v3
        if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
      - name: Run the tests on ${{ matrix.distro }}
        run: |
          docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 tmp-vol
          docker run \
              --privileged=true \
              -e NPTEST_ACCEPTDEFAULT=1 \
              -e NPTEST_CACHE="/src/.github/NPTest.cache" \
              -w /src -v ${PWD}:/src \
              --tmpfs /media/ramdisk1 \
              -v /var/run/utmp:/var/run/utmp \
              --mount source=tmp-vol,destination=/src,target=/media/ramdisk2 \
              ${{ matrix.distro }} \
              /bin/sh -c '${{ matrix.build }} && \
                ls -la'
          docker container prune -f
          docker volume prune -f
