Run tests on Python 3.13 and PyPy 3.10 #783
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches-ignore: | |
- 'dependabot/**' | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
#- runs-on: ubuntu-20.04 | |
# python: 2.7 | |
# arch: x64 | |
#- runs-on: ubuntu-20.04 | |
# python: 3.5 | |
# arch: x64 | |
- runs-on: ubuntu-20.04 | |
python: 3.6 | |
arch: x64 | |
- runs-on: ubuntu-20.04 | |
python: 3.7 | |
arch: x64 | |
- runs-on: ubuntu-20.04 | |
python: 3.8 | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: ubuntu-20.04 | |
python: 3.9 | |
arch: x64 | |
- runs-on: ubuntu-20.04 | |
python: '3.10' | |
arch: x64 | |
- runs-on: ubuntu-20.04 | |
python: '3.11' | |
arch: x64 | |
- runs-on: ubuntu-20.04 | |
python: '3.12' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: ubuntu-20.04 | |
python: '3.13' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: ubuntu-20.04 | |
python: pypy-2.7 | |
arch: x64 | |
- runs-on: ubuntu-20.04 | |
python: pypy-3.7 | |
arch: x64 | |
- runs-on: ubuntu-20.04 | |
python: pypy-3.8 | |
arch: x64 | |
- runs-on: ubuntu-20.04 | |
python: pypy-3.9 | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: ubuntu-20.04 | |
python: pypy-3.10 | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: ubuntu-20.04 | |
python: 3.8 | |
arch: x64 | |
gcc: 10 | |
name-extra: ' (GCC 10)' | |
- runs-on: ubuntu-20.04 | |
python: 3.8 | |
arch: x64 | |
clang: 12 | |
name-extra: ' (Clang 12)' | |
#- runs-on: ubuntu-20.04 | |
# python: 2.7 | |
# arch: x64 | |
# release: true | |
# name-extra: ' (Release)' | |
- runs-on: ubuntu-20.04 | |
python: 3.8 | |
arch: x64 | |
release: true | |
name-extra: ' (Release)' | |
#- runs-on: macos-11 | |
# python: 2.7 | |
# arch: x64 | |
- runs-on: macos-12 | |
python: 3.8 | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: macos-12 | |
python: 3.9 | |
arch: x64 | |
- runs-on: macos-12 | |
python: '3.10' | |
arch: x64 | |
- runs-on: macos-12 | |
python: '3.11' | |
arch: x64 | |
- runs-on: macos-12 | |
python: '3.12' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: macos-12 | |
python: '3.13' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: macos-12 | |
python: 3.8 | |
arch: x64 | |
release: true | |
name-extra: ' (Release)' | |
#- runs-on: macos-11 | |
# python: pypy-3.6 | |
# arch: x64 | |
- runs-on: macos-12 | |
python: pypy-3.7 | |
arch: x64 | |
- runs-on: macos-12 | |
python: pypy-3.8 | |
arch: x64 | |
- runs-on: macos-12 | |
python: pypy-3.9 | |
arch: x64 | |
- runs-on: macos-12 | |
python: pypy-3.10 | |
arch: x64 | |
#- runs-on: windows-2019 | |
# python: 2.7 | |
# arch: x64 | |
- runs-on: windows-2019 | |
python: 3.8 | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: windows-2019 | |
python: 3.9 | |
arch: x64 | |
- runs-on: windows-2019 | |
python: '3.10' | |
arch: x64 | |
- runs-on: windows-2019 | |
python: '3.11' | |
arch: x64 | |
- runs-on: windows-2019 | |
python: '3.12' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: windows-2019 | |
python: '3.13' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
#- runs-on: windows-2019 | |
# python: 2.7 | |
# arch: x86 | |
# name-extra: ' (32-bit)' | |
- runs-on: windows-2019 | |
python: 3.12 | |
arch: x86 | |
name-extra: ' (32-bit)' | |
- runs-on: windows-2019 | |
python: 3.13 | |
arch: x86 | |
name-extra: ' (32-bit)' | |
- runs-on: windows-2019 | |
python: 3.12 | |
arch: x64 | |
release: true | |
name-extra: ' (Release)' | |
- runs-on: windows-2019 | |
python: pypy-3.6 | |
arch: x86 | |
- runs-on: windows-2019 | |
python: pypy-3.7 | |
arch: x64 | |
- runs-on: windows-2019 | |
python: pypy-3.8 | |
arch: x64 | |
- runs-on: windows-2019 | |
python: pypy-3.9 | |
arch: x64 | |
- runs-on: windows-2019 | |
python: pypy-3.10 | |
arch: x64 | |
name: Python ${{ matrix.python }}${{ matrix.name-extra }} • ${{ matrix.runs-on }} | |
runs-on: ${{ matrix.runs-on }} | |
if: startsWith(github.ref_name, 'docs') != true | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Setup Python ${{ matrix.python }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
architecture: ${{ matrix.arch }} | |
- name: Setup CMake | |
uses: jwlawson/actions-setup-cmake@v1.13 | |
- name: Install OpenBLAS on macOS for NumPy | |
if: runner.os == 'macOS' && startsWith(matrix.python, 'pypy') | |
run: | | |
brew install openblas | |
echo "OPENBLAS=$(brew --prefix openblas)" >> $GITHUB_ENV | |
- name: Install requirements | |
run: | | |
pip install --user --upgrade pip setuptools wheel | |
pip install --user --upgrade -r tests/requirements.txt | |
- name: Select GCC | |
if: matrix.gcc | |
shell: bash | |
run: | | |
echo "CC=gcc-${{ matrix.gcc }}" >> $GITHUB_ENV | |
echo "CXX=g++-${{ matrix.gcc }}" >> $GITHUB_ENV | |
- name: Select Clang | |
if: matrix.clang | |
shell: bash | |
run: | | |
echo "CC=clang-${{ matrix.clang }}" >> $GITHUB_ENV | |
echo "CXX=clang++-${{ matrix.clang }}" >> $GITHUB_ENV | |
- name: Setup pytest annotations | |
run: | | |
python -m pip install pytest-github-actions-annotate-failures | |
- name: Setup GCC annotations | |
uses: ammaraskar/gcc-problem-matcher@master | |
- name: Setup MSVC annotations | |
uses: ammaraskar/msvc-problem-matcher@master | |
- name: Configure | |
shell: bash | |
run: | | |
CMAKE_ARCH="${{ (runner.os == 'Windows' && matrix.arch == 'x86') && '-A Win32' || '' }}" | |
CMAKE_BUILD_TYPE="${{ matrix.release && 'Release' || 'Debug' }}" | |
cmake -S . -B build $CMAKE_ARCH -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DPython_EXECUTABLE="$(which python)" | |
- name: Compile | |
run: | | |
cmake --build build -j 2 | |
- name: Select Praat tests to run | |
if: matrix.run-praat-tests | |
shell: bash | |
run: | | |
echo "PYTEST_ADDOPTS=--run-praat-tests -v" >> $GITHUB_ENV | |
- name: Run tests | |
run: | | |
cmake --build build --target tests | |
docs: | |
name: Documentation | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.8' | |
- name: Setup CMake | |
uses: jwlawson/actions-setup-cmake@v1.13 | |
- name: Install requirements | |
run: | | |
pip install --user -r docs/requirements.txt | |
sudo apt install pandoc | |
- name: Configure | |
shell: bash | |
run: | | |
cmake -S . -B build -DPython_EXECUTABLE="$(which python)" | |
- name: Build | |
run: | | |
cmake --build build -j 2 | |
- name: Build documentation | |
run: | | |
cmake --build build --target docs | |
- name: Check links | |
run: | | |
cmake --build build --target docs_linkcheck |