Support Python 3.12 #204
Workflow file for this run
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: Test | |
on: | |
# TODO: Since we install latest JACK, it would be nice to run build every day | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.12 | |
- name: Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cache/pre-commit | |
~/.cache/pip | |
key: lint-${{ hashFiles('.pre-commit-config.yaml') }} | |
- name: Install pre-commit | |
run: pip install -U pre-commit | |
- name: Lint | |
run: pre-commit run --color=always --all-files | |
typing: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.12 | |
- name: Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cache/pip | |
~/.cache/pypoetry | |
key: typing-${{ hashFiles('pyproject.toml') }} | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
- name: Install Poetry | |
run: | | |
pip install -U poetry | |
poetry config virtualenvs.create false | |
- name: Install package | |
run: poetry install | |
- name: Install Pyright | |
run: npm install -g --no-package-lock --no-save pyright | |
- name: Check types | |
run: pyright | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
env: | |
LD_LIBRARY_PATH: /usr/local/lib | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cache/pip | |
~/.cache/pypoetry | |
key: test-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }} | |
- name: Install JACK | |
run: | | |
git clone https://github.com/jackaudio/jack2 /tmp/jack2 | |
cd /tmp/jack2 | |
./waf configure --prefix=/usr/local | |
sudo ./waf install | |
- name: Install Poetry | |
run: pip install -U poetry | |
- name: Install package | |
run: poetry install | |
- name: Test | |
run: | | |
poetry run pytest --color=yes --cov | |
mv .coverage ".coverage.${{ matrix.python-version }}" | |
- name: Upload coverage data | |
uses: actions/upload-artifact@v3 | |
with: | |
name: coverage-data | |
path: .coverage.* | |
if-no-files-found: ignore | |
coverage: # https://hynek.me/articles/ditch-codecov-python/ | |
runs-on: ubuntu-latest | |
needs: test | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.12 | |
- name: Install Coverage | |
run: pip install -U coverage[toml] | |
- name: Download data | |
uses: actions/download-artifact@v3 | |
with: | |
name: coverage-data | |
- name: Combine coverage & fail if it's <100% | |
run: | | |
python -m coverage combine | |
python -m coverage html --skip-covered --skip-empty | |
python -m coverage report --fail-under=100 | |
- name: Upload HTML report | |
uses: actions/upload-artifact@v3 | |
if: ${{ failure() }} | |
with: | |
name: html-report | |
path: htmlcov |