# This is a GitHub workflow defining a set of jobs with a set of steps. # ref: https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions # name: Unit tests on: pull_request: paths-ignore: - "docs/**" - "**.md" - ".github/workflows/*" - "!.github/workflows/unit-test.yaml" push: paths-ignore: - "docs/**" - "**.md" - ".github/workflows/*" - "!.github/workflows/unit-test.yaml" branches-ignore: - "dependabot/**" - "pre-commit-ci-update-config" workflow_dispatch: jobs: unit-tests: name: ${{ matrix.name }} # runs-on can only be configured to the LTS releases of ubuntu (18.04, # 20.04, ...), so if we want to test against the latest non-LTS release, we # must compromise when configuring runs-on and configure runs-on to be the # latest LTS release instead. # # This can have consequences because actions like actions/setup-python will # mount cached installations associated with the chosen runs-on environment. # runs-on: ${{ format('ubuntu-{0}', matrix.runs_on || matrix.ubuntu_version) }} container: ubuntu:${{ matrix.ubuntu_version }} strategy: fail-fast: false matrix: include: - name: "Ubuntu 22.04, Py 3.10" ubuntu_version: "22.04" python_version: "3.10" - name: "Ubuntu 24.04, Py 3.12" ubuntu_version: "24.04" python_version: "3.12" steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "${{ matrix.python_version }}" - name: Install venv, git, pip and setup venv run: | export DEBIAN_FRONTEND=noninteractive apt-get update apt-get install --yes \ python3-venv \ python3-pip \ bzip2 \ git python3 -m venv /srv/venv echo '/srv/venv/bin' >> $GITHUB_PATH - name: Install Python dependencies run: | pip install -r dev-requirements.txt pip install -e . - name: List Python dependencies run: | pip freeze - name: Run unit tests run: pytest tests timeout-minutes: 15 - uses: codecov/codecov-action@v5