Skip to content

Add automatic retry mechanism for flaky tests #518

Add automatic retry mechanism for flaky tests

Add automatic retry mechanism for flaky tests #518

Workflow file for this run

name: Pull request
on:
pull_request:
branches: [master]
jobs:
Lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check formatting
uses: "lgeiger/black-action@master"
with:
args: ". -l 79 --check"
check-version:
name: Check version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Build changelog
run: pip install yaml-changelog>=0.1.7 && make changelog
- name: Preview changelog update
run: ".github/get-changelog-diff.sh"
- name: Check version number has been properly updated
run: .github/is-version-number-acceptable.sh
Test:
strategy:
matrix:
os: [ ubuntu-latest, windows-latest ]
python-version: [ "3.12", "3.13" ]
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Enable long paths in Git (Windows Only)
if: runner.os == 'Windows'
run: git config --system core.longpaths true
- name: Enable Win32 long paths via registry (Windows Only)
if: runner.os == 'Windows'
run: reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install package
run: make install
- name: Run tests
run: make test
- uses: codecov/codecov-action@v4
- name: Build package
run: make build
- name: Test documentation builds
run: make documentation
SmokeTestForMultipleVersions:
name: Test Core and Country Compatibility on (${{ matrix.os }}, py${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
needs: Lint
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ['3.10', '3.11', '3.12', '3.13']
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install -core package
run: |
python -m pip install .
python -m pip install "pytest-rerunfailures>=10,<15"
- name: Verify pytest plugins
run: python -m pytest --version
- name: Install -us package from PyPI
run: |
if [[ "${{ matrix.python-version }}" == "3.13" ]]; then
# For Python 3.13, install newer tables first and ignore conflicts
pip install "tables>=3.10.1"
pip install policyengine-us --no-deps
# Install remaining dependencies manually
pip install click==8.1.3 pathlib pytest-dependency synthimpute tabulate
pip install policyengine-us-data --no-deps
else
python -m pip install policyengine-us
fi
shell: bash
- name: Run smoke tests only
run: python -m pytest -m smoke --reruns 2 --reruns-delay 5 -v -s
env:
RUN_SMOKE_TESTS: "1"