-
Notifications
You must be signed in to change notification settings - Fork 21
107 lines (106 loc) · 4.36 KB
/
tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
name: 'tests'
concurrency:
group: ${{ github.workflow }}-${{ github.event.number }}-${{ github.event.ref }}
cancel-in-progress: true
on: # yamllint disable-line rule:truthy
push:
branches:
- main
pull_request:
branches:
- main
jobs:
job:
name: ${{ matrix.os }} ${{ matrix.kind }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash -el {0}
strategy:
fail-fast: false
matrix:
include:
# 24.04 works except for the video test, even though it works locally on 24.10
- os: ubuntu-22.04
kind: pip
python: '3.12'
# ARM64 will probably need to wait until we transition to Pyglet 2
# - os: 'macos-latest' # arm64
# kind: 'conda'
# python: '3.12'
- os: 'macos-13' # intel
kind: 'conda'
python: '3.12'
# TODO: There is a bug on Python 3.12 on Windows :(
- os: 'windows-latest'
kind: 'pip'
python: '3.11'
- os: 'ubuntu-20.04'
kind: 'old'
python: '3.8'
steps:
- uses: actions/checkout@v4
- uses: LABSN/sound-ci-helpers@v1
- uses: pyvista/setup-headless-display-action@main
with:
qt: true
pyvista: false
# Use -dev here just to get whichever version is right (e.g., 22.04 has a different version from 24.04)
- run: sudo apt install -q libavutil-dev libavcodec-dev libavformat-dev libswscale-dev libglu1-mesa gstreamer1.0-alsa gstreamer1.0-libav
if: ${{ startsWith(matrix.os, 'ubuntu') }}
- run: powershell tools/get_video.ps1
if: ${{ startsWith(matrix.os, 'windows') }}
- run: |
set -xeo pipefail
if [[ "${{ runner.os }}" == "Windows" ]]; then
echo "Setting env vars for Windows"
echo "AZURE_CI_WINDOWS=true" >> $GITHUB_ENV
echo "SOUND_CARD_BACKEND=rtmixer" >> $GITHUB_ENV
echo "SOUND_CARD_NAME=Speakers" >> $GITHUB_ENV
echo "SOUND_CARD_FS=48000" >> $GITHUB_ENV
echo "SOUND_CARD_API=Windows WDM-KS" >> $GITHUB_ENV
elif [[ "${{ runner.os }}" == "Linux" ]]; then
echo "Setting env vars for Linux"
echo "_EXPYFUN_SILENT=true" >> $GITHUB_ENV
echo "SOUND_CARD_BACKEND=pyglet" >> $GITHUB_ENV
elif [[ "${{ runner.os }}" == "macOS" ]]; then
echo "Setting env vars for macOS"
fi
name: Set env vars
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
if: matrix.kind != 'conda'
- uses: mamba-org/setup-micromamba@v2
with:
environment-file: 'environment_test.yml'
create-args: python=${{ matrix.python }}
init-shell: bash
if: matrix.kind == 'conda'
# Pyglet pin: https://github.com/pyglet/pyglet/issues/1089 (and need OpenGL2 compat for Pyglet>=2, too)
- run: python -m pip install --upgrade pip setuptools wheel sounddevice "pyglet<1.5.28"
- run: python -m pip install --upgrade --only-binary="rtmixer,scipy,matplotlib,pandas,numpy" rtmixer pyglet-ffmpeg scipy matplotlib pandas h5py mne numpydoc pillow joblib
if: matrix.kind == 'pip'
# arm64 has issues with rtmixer / PortAudio
- run: python -m pip install --only-binary="rtmixer" rtmixer
if: matrix.kind == 'conda' && matrix.os != 'macos-latest'
- run: python -m pip install --only-binary="rtmixer,numpy,scipy,matplotlib" rtmixer "pyglet<1.4" numpy scipy matplotlib "pillow<8"
if: matrix.kind == 'old'
- run: python -m pip install tdtpy
if: startsWith(matrix.os, 'windows')
- run: python -m sounddevice
- run: |
set -o pipefail
python -m sounddevice | grep "[82] out"
name: Check that there is some output device
- run: python -c "import pyglet; print(pyglet.version)"
- run: python -c "import matplotlib.pyplot as plt"
- run: pip install -ve .[test]
# Video hangs on macOS arm64, not sure why
- run: python -c "import expyfun; expyfun._utils._has_video(raise_error=True)"
if: matrix.kind != 'old' && matrix.os != 'macos-latest'
- run: pytest expyfun --cov-report=xml --cov=expyfun
- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
if: success() || failure()