Files
pybind11/.github/workflows/reusable-standard.yml
gentlegiantJGC 81ffb1d5cc Add 90 minute limit for tests (#5851)
Occasionally a test will get stuck and run for 6 hours until Github cancels the workflow.
This reduces the timeout to 90 minutes to not waste resources.
Pybind11's tests seem to run in 30 minutes so this should be plenty of time.
2025-09-27 12:53:47 -07:00

98 lines
2.5 KiB
YAML

name: Reusable Standard Test
on:
workflow_call:
inputs:
python-version:
required: true
type: string
cmake-args:
required: false
type: string
default: ''
runs-on:
required: true
type: string
env:
PYTHONDEVMODE: 1
PIP_BREAK_SYSTEM_PACKAGES: 1
PIP_ONLY_BINARY: numpy
FORCE_COLOR: 3
PYTEST_TIMEOUT: 300
# For cmake:
VERBOSE: 1
CMAKE_COLOR_DIAGNOSTICS: 1
jobs:
standard:
name: 🧪
runs-on: ${{ inputs.runs-on }}
timeout-minutes: 90
steps:
- uses: actions/checkout@v5
- name: Setup Python ${{ inputs.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python-version }}
allow-prereleases: true
# Python 3.13.4 broken on Windows
check-latest: >-
${{ inputs.python-version == '3.13' && runner.os == 'Windows' }}
- name: Setup Boost (Linux)
if: runner.os == 'Linux'
run: sudo apt-get install libboost-dev
- name: Setup Boost (macOS)
if: runner.os == 'macOS'
run: brew install boost
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Prepare env
run: uv pip install --python=python --system -r tests/requirements.txt
- name: Setup annotations on Linux
if: runner.os == 'Linux'
run: uv pip install --python=python --system pytest-github-actions-annotate-failures
# TODO Resolve Windows Ninja shared object issue on Python 3.8+
- name: Use Ninja except on Windows
if: runner.os != 'Windows'
run: echo "CMAKE_GENERATOR=Ninja" >> "$GITHUB_ENV"
- name: Configure
run: >
cmake -S. -Bbuild -Werror=dev
-DPYBIND11_WERROR=ON
-DPYBIND11_PYTEST_ARGS=-v
-DDOWNLOAD_CATCH=ON
-DDOWNLOAD_EIGEN=ON
${{ inputs.cmake-args }}
- name: Build
run: cmake --build build
- name: Python tests
run: cmake --build build --target pytest
- name: C++ tests
run: cmake --build build --target cpptest
- name: Interface test
run: cmake --build build --target test_cmake_build
- name: Visibility test
run: cmake --build build --target test_cross_module_rtti
- name: Setuptools helpers test
run: |
uv pip install --python=python --system setuptools
pytest tests/extra_setuptools