Skip to content

Guarantee scsynth exits when Python exits #872

Guarantee scsynth exits when Python exits

Guarantee scsynth exits when Python exits #872

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: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
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: Install SuperCollider
uses: ./.github/actions/supercollider
with:
branch: ${{ env.SC_BRANCH }}
origin: ${{ env.SC_ORIGIN }}
- name: Install Supriya
run: pip install -e .[docs]
- name: Build docs
run: make docs
lint:
name: Lint Supriya
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
cache: pip
cache-dependency-path: "**/pyproject.toml"
- name: Install Supriya
run: pip install -e .[ipython,test]
- name: Install docstrfmt
run: pip install https://github.com/josiah-wolf-oberholtzer/docstrfmt/archive/refs/heads/master.zip
- 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-latest]
steps:
- uses: actions/checkout@v3
- name: Build wheels
uses: pypa/cibuildwheel@v2.12.3
test:
name: Test Supriya
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: [3.8, 3.9, "3.10", 3.11]
include:
- os: macos-latest
python-version: "3.10"
- os: windows-latest
python-version: "3.10"
timeout-minutes: 45
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
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: Install SuperCollider (Non-Windows)
if: ${{ matrix.os != 'windows-latest' }}
uses: ./.github/actions/supercollider
with:
branch: ${{ env.SC_BRANCH }}
origin: ${{ env.SC_ORIGIN }}
- name: Install SuperCollider (Windows)
if: ${{ matrix.os == 'windows-latest' }}
run: |
choco install supercollider
mkdir C:\Users\runneradmin\AppData\Local\SuperCollider\synthdefs
- name: Setup audio (Windows) # https://github.com/actions/runner-images/issues/2528#issuecomment-934857719
if: ${{ matrix.os == 'windows-latest' }}
shell: powershell
# Via https://github.com/actions/runner-images/issues/6983
run: |
Start-Service audio*
Invoke-WebRequest https://github.com/duncanthrax/scream/releases/download/3.9/Scream3.9.zip -OutFile Scream3.9.zip
Expand-Archive -Path Scream3.9.zip -DestinationPath Scream
Import-Certificate -FilePath Scream\Install\driver\x64\Scream.cat -CertStoreLocation Cert:\LocalMachine\TrustedPublisher
$cert = (Get-AuthenticodeSignature C:\Scream\Install\driver\Scream.sys).SignerCertificate
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new("TrustedPublisher", "LocalMachine")
$store.Open("ReadWrite")
$store.Add($cert)
$store.Close()
cd C:\Scream\Install\driver
C:\Scream\Install\helpers\devcon install Scream.inf *Scream
Get-CimInstance Win32_SoundDevice | fl *
timeout-minutes: 2
- name: Sanity-check Supriya
run: |
python -c "import logging, supriya; logging.getLogger('supriya').setLevel(logging.INFO); logging.basicConfig(); server = supriya.Server().boot(); server.quit(); exit()"
python -c "from supriya.utils._intervals import IntervalTreeDriverEx; print(IntervalTreeDriverEx)"
- name: Sanity-check Supriya SHM (Non-Windows)
if: ${{ matrix.os != 'windows-latest' }}
run: python -c "from supriya.contexts.shm import ServerSHM; print(ServerSHM)"
- name: Install Supriya test dependencies
run: pip install -e .[test]
- name: Install ffmpeg
uses: FedericoCarboni/setup-ffmpeg@v2
- 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 install \
graphviz
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install \
graphviz \
lame
fi
- name: Run Pytest
run: pytest --cov supriya
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 )