name: Mulled Unit Tests
on:
  push:
    paths-ignore:
      - 'client/**'
      - 'doc/**'
      - 'lib/galaxy_test/selenium/**'
  pull_request:
    paths-ignore:
      - 'client/**'
      - 'doc/**'
      - 'lib/galaxy_test/selenium/**'
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ['3.8']
    steps:
      - uses: actions/checkout@v4
        with:
          path: 'galaxy root'
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - name: Get full Python version
        id: full-python-version
        shell: bash
        run: echo "version=$(python -c 'import sys; print("-".join(str(v) for v in sys.version_info))')" >> $GITHUB_OUTPUT
      - name: Cache pip dir
        uses: actions/cache@v4
        with:
          path: ~/.cache/pip
          key: pip-cache-${{ matrix.python-version }}-${{ hashFiles('galaxy root/requirements.txt') }}
      - name: Cache tox env
        uses: actions/cache@v4
        with:
          path: .tox
          key: tox-cache-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('galaxy root/requirements.txt') }}-mulled
      - name: Install Apptainer's singularity
        uses: eWaterCycle/setup-apptainer@v2
      - name: Install tox
        run: pip install tox
      - name: Run tests
        run: tox -e mulled
        working-directory: 'galaxy root'
      - uses: actions/upload-artifact@v4
        if: failure()
        with:
          name: Mulled unit test results (${{ matrix.python-version }})
          path: 'galaxy root/run_unit_tests.html'