Skip to content

More test coverage (#437) #1472

More test coverage (#437)

More test coverage (#437) #1472

Workflow file for this run

name: Test
on:
pull_request:
branches:
- main
push:
branches:
- main
schedule:
- cron: "0 0 * * 0"
env:
SC_ORIGIN: https://github.com/supercollider/supercollider.git
SC_BRANCH: develop
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
docs:
name: Build docs
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ["3.13"]
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: "**/pyproject.toml"
- name: Install APT deps
shell: bash
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update --yes
sudo apt-get install --yes \
espeak \
ffmpeg \
graphviz \
lame
- name: Setup audio
timeout-minutes: 2
uses: ./.github/actions/setup-audio
- name: Install SuperCollider
uses: ./.github/actions/build-supercollider
with:
branch: ${{ env.SC_BRANCH }}
origin: ${{ env.SC_ORIGIN }}
- name: Install Supriya
run: pip install -e .[docs]
- name: Build docs
run: make docs
- name: Check for FailWarning
run: "! grep -R ': FailWarning: ' *"
working-directory: docs/build/html
lint:
name: Lint Supriya
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ["3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: "**/pyproject.toml"
- name: Install Supriya
run: pip install -e .[ipython,test]
- name: Run Black
run: make black-check
- name: Run docstrfmt
run: |
make docstrfmt || true
make docstrfmt || true
git status
git diff
- name: Run Flake8
run: make flake8
- name: Run Mypy
run: make mypy
package:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-13]
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/[email protected]
test:
name: Test Supriya
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10", "3.11", "3.12", "3.13"]
include:
# supercollider 3.13 doesn't want to build on macos-13 or higher
- os: macos-15
python-version: "3.13"
- os: windows-latest
python-version: "3.13"
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: "**/pyproject.toml"
- name: Upgrade pip
run: python3 -m pip install -U pip
- name: Install Supriya
run: pip install -e .
- name: Setup audio
timeout-minutes: 2
uses: ./.github/actions/setup-audio
- name: Build SuperCollider
uses: ./.github/actions/build-supercollider
with:
branch: ${{ env.SC_BRANCH }}
origin: ${{ env.SC_ORIGIN }}
- name: Sanity-check Supriya
run: |
python -c "import logging, supriya; logging.getLogger('supriya').setLevel(logging.INFO); logging.basicConfig(); server = supriya.Server().boot(); exit()"
python -c "from supriya.utils._intervals import IntervalTreeDriverEx; print(IntervalTreeDriverEx)"
timeout-minutes: 1
- name: Sanity-check Supriya SHM (Non-Windows)
if: ${{ matrix.os != 'windows-latest' }}
run: python -c "from supriya.contexts.shm import ServerSHM; print(ServerSHM)"
- name: Check for stray processes (Non-Windows)
if: ${{ matrix.os != 'windows-latest' }}
run: |
! ( ps aux | grep scsynth | grep -v grep )
! ( ps aux | grep supernova | grep -v grep )
- name: Install Supriya test dependencies
run: pip install -e .[test]
- name: Install ffmpeg
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt-get install --yes ffmpeg
elif [ "$RUNNER_OS" == "macOS" ]; then
brew install ffmpeg
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install ffmpeg
fi
shell: bash
- name: Install additional packages
shell: bash
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update --yes
sudo apt-get install --yes espeak graphviz lame
elif [ "$RUNNER_OS" == "macOS" ]; then
brew update
brew install [email protected] || true
brew install graphviz
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install graphviz lame
fi
- name: Run Pytest
run: pytest --cov supriya --showlocals
timeout-minutes: 15
- name: Check for stray processes (Non-Windows)
if: ${{ matrix.os != 'windows-latest' }}
run: |
! ( ps aux | grep scsynth | grep -v grep )
! ( ps aux | grep supernova | grep -v grep )