name: Run regression tests

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  regression_tests:
    name: ${{matrix.version}}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        version: [
                  '6.12.7',
                  '6.11.11',
                  '6.10.14',
                  '6.9.12',
                  '6.8.12',
                  '6.7.12',
                  '6.6.68',
                  '6.1.122',
                  '5.15.175',
                  '5.10.232',
                  '5.4.288',
                  '4.19.325',
                  '4.14.336',
                  '4.9.337',
                  '3.18.140',
                  '3.10.108',
                  '5.14.0-503.16.1.el9_5^AlmaLinux^9.5',
                  '5.14.0-427.42.1.el9_4^AlmaLinux^9.4',
                  '5.14.0-362.24.2.el9_3^AlmaLinux^9.3',
                  '5.14.0-284.30.1.el9_2^AlmaLinux^9.2',
                  '4.18.0-513.24.1.el8_9^AlmaLinux^8.9',
                  '4.18.0-477.13.1.el8_8^AlmaLinux^8.8',
                  '4.18.0-425.19.2.el8_7^AlmaLinux^8.7',
                  '4.18.0-372.32.1.el8_6^AlmaLinux^8.6',
                  '3.10.0-1160.118.1.el7^CentOS^7.9.2009',
                  '5.15.0-303.171.5.2.1.el9uek^UEK^9',
                  '5.4.17-2136.338.4.2.el8uek^UEK^8',
                  '4.14.35-2047.543.3.el7uek^UEK^7',
                  '4.1.12-124.92.3.el6uek^UEK^6'
                 ]
    steps:
      - name: Checkout code
        uses: actions/checkout@main

      - name: Install libelf-dev
        run: |
          sudo apt-get update
          sudo apt-get install -y libelf-dev libsqlite3-dev

      - name: Install sparse
        run: |
          sudo apt-get install sparse

      - name: Install smatch
        run: |
          git clone https://github.com/error27/smatch.git
          cd smatch
          make -j
          sudo BINDIR=/bin SHAREDIR=/home/runner/share make install

      - name: Run regression tests
        run: |
          err=0

          ./scripts/run-regression-tests -l -q -k -d /tmp/scst-${{matrix.version}} ${{matrix.version}}-nc-ns-nm | tee output.txt

          cat output.txt | grep -A1 "Compiling the patched kernel" | grep -e "FAILED" -e "[^0] errors" > /dev/null 2>&1 && err=1

          rm -f output.txt

          exit $err
