network/.github/workflows/python-unit-test.yml
Rich Megginson ded5545b0d ci: tox-lsr 3.17.1 - previous update broke container tests, this fixes them [citest_skip]
tox-lsr 3.17.1 has a fix for the broken container tests

There was one shell function for both setting up the callback plugins and the connection plugin.
When this function was skipped, the ANSIBLE_CONNECTION_PLUGINS environment variable was not
set, so all subsequent tests failed.  The connection plugin must be present and the env. var.
must be set in order to run any container tests.  The code was fixed to ensure that there is
always a connection plugin installed in the correct location and that ANSIBLE_CONNECTION_PLUGINS
is always set and contains this path.

Also, setting up the callback plugins and the connection plugin is already idempotent, so no
reason to skip them.

Signed-off-by: Rich Megginson <rmeggins@redhat.com>
2026-03-13 10:03:22 -06:00

106 lines
3.2 KiB
YAML

---
# yamllint disable rule:line-length
name: Python Unit Tests
on: # yamllint disable-line rule:truthy
pull_request:
merge_group:
branches:
- main
types:
- checks_requested
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
jobs:
python:
if: |
!((github.event_name == 'pull_request' && contains(github.event.pull_request.title, '[citest_skip]')) ||
(github.event_name == 'push' && contains(github.event.head_commit.message, '[citest_skip]')))
strategy:
matrix:
pyver_os:
- ver: "2.7"
os: ubuntu-22.04
- ver: "3.9"
os: ubuntu-latest
- ver: "3.10"
os: ubuntu-latest
- ver: "3.11"
os: ubuntu-latest
- ver: "3.12"
os: ubuntu-latest
- ver: "3.13"
os: ubuntu-latest
runs-on: ${{ matrix.pyver_os.os }}
steps:
- name: Update git
run: |
set -euxo pipefail
sudo apt update
sudo apt install -y git
- name: checkout PR
uses: actions/checkout@v6
- name: Set up Python 2.7
if: ${{ matrix.pyver_os.ver == '2.7' }}
run: |
set -euxo pipefail
sudo apt install -y python2.7
- name: Set up Python 3
if: ${{ matrix.pyver_os.ver != '2.7' }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.pyver_os.ver }}
- name: Install platform dependencies, python, tox, tox-lsr
run: |
set -euxo pipefail
python -m pip install --upgrade pip
if [ "${{ matrix.pyver_os.ver }}" = 2.7 ]; then
# newer virtualenv cannot create python2 venvs
# newer tox requires newer virtualenv
tox='tox<4.15'
virtualenv='virtualenv<20.22.0'
else
tox=tox
virtualenv=virtualenv
fi
pip install "$tox" "$virtualenv" "git+https://github.com/linux-system-roles/tox-lsr@3.17.1"
# If you have additional OS dependency packages e.g. libcairo2-dev
# then put them in .github/config/ubuntu-requirements.txt, one
# package per line.
if [ -f .github/config/ubuntu-requirements.txt ]; then
sudo apt-get install -y $(cat .github/config/ubuntu-requirements.txt)
fi
- name: Run unit tests
run: |
set -euxo pipefail
toxpyver=$(echo "${{ matrix.pyver_os.ver }}" | tr -d .)
toxenvs="py${toxpyver}"
# NOTE: The use of flake8, pylint, black with specific
# python envs is arbitrary and must be changed in tox-lsr
case "$toxpyver" in
311) toxenvs="${toxenvs},coveralls,flake8,pylint,black" ;;
*) toxenvs="${toxenvs},coveralls" ;;
esac
TOXENV="$toxenvs" lsr_ci_runtox
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
python-26:
runs-on: ubuntu-latest
steps:
- name: checkout PR
uses: actions/checkout@v6
- name: Run py26 tests
uses: linux-system-roles/lsr-gh-action-py26@1.0.2
env:
TOX_LSR: "git+https://github.com/linux-system-roles/tox-lsr@2.13.2"