Benoit Chesneau ea98400820
ci: Fix macOS tests and add FreeBSD support (#3442)
* ci: Remove failing macos-13 from test matrix

* ci: Add FreeBSD testing workflow

* ci: Document test matrix rationale

* ci: Update cross-platform-actions to v0.32.0 for FreeBSD 14.2 support

* ci: Use FreeBSD 14.1 (14.2 has SSH connectivity issues)

* ci: Switch to vmactions/freebsd-vm for FreeBSD testing

* ci: Fix FreeBSD package names (pip included in Python)

* ci: Simplify FreeBSD matrix and fix package names

* ci: Use specific Python version command on FreeBSD

* ci: Add sqlite3 package for FreeBSD

* tests: Increase signal integration test timeouts for CI

The signal integration tests were flaky in CI environments,
especially FreeBSD VMs, due to 10-second timeouts being too short.
Increased timeouts to 30 seconds to handle slower CI environments.
2026-01-22 14:00:02 +01:00

57 lines
1.8 KiB
YAML

name: tox
on: [push, pull_request]
permissions:
contents: read # to fetch code (actions/checkout)
env:
# note that some tools care only for the name, not the value
FORCE_COLOR: 1
jobs:
tox:
name: ${{ matrix.os }} / ${{ matrix.python-version }}
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes
timeout-minutes: 20
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
unsupported: [false]
os:
- ubuntu-latest
# Not testing Windows: tests need Unix-only fcntl, grp, pwd, etc.
# FreeBSD: tested in separate freebsd.yml workflow
python-version:
# Supporting Python 3.10 through 3.13
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "pypy-3.10"
include:
# Test on macos-latest (arm64) with recent versions
- os: macos-latest
python-version: "3.12"
unsupported: false
- os: macos-latest
python-version: "3.13"
unsupported: false
steps:
- uses: actions/checkout@v6
- name: Using Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: requirements_test.txt
check-latest: true
allow-prereleases: ${{ matrix.unsupported }}
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
python -m pip install tox
- run: tox -e run-module
continue-on-error: ${{ matrix.unsupported }}
- run: tox -e run-entrypoint
continue-on-error: ${{ matrix.unsupported }}
- run: tox -e py
continue-on-error: ${{ matrix.unsupported }}