Test #1470
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: | |
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 ) |