test_suite #4582
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_suite | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.number }}-${{ github.event.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: ['**'] | |
pull_request: | |
branches: ['**'] | |
create: | |
branches: [main] | |
tags: ['**'] | |
schedule: | |
- cron: "0 4 * * *" | |
jobs: | |
style: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.11"] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: psf/black@stable | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: style-0-${{ env.pythonLocation }}-${{ hashFiles('setup.cfg') }}-${{ hashFiles('test_requirements.txt') }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pydocstyle flake8 check-manifest black | |
- name: Display versions and environment information | |
run: | | |
python --version | |
which python | |
- name: Run style & documentation tests | |
run: make pep | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.8", "3.11"] # Oldest and newest supported versions | |
steps: | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: build-2-${{ env.pythonLocation }}-${{ hashFiles('setup.cfg') }}-${{ hashFiles('test_requirements.txt') }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install wheel setuptools build | |
- uses: actions/checkout@v4 | |
- name: Build sdist | |
run: python -m build --sdist | |
- name: Install sdist | |
run: python -m pip install ./dist/mne-bids-* | |
- name: Clean up working directory | |
run: rm -rf ./* | |
- name: Try importing mne_bids | |
run: python -c 'import mne_bids; print(mne_bids.__version__)' | |
- name: Try cli mne_bids | |
run: mne_bids --version | |
- name: Remove sdist install | |
run: python -m pip uninstall -y mne-bids | |
- uses: actions/checkout@v4 | |
- name: Build wheel | |
run: python -m build --wheel | |
- name: Install wheel | |
run: python -m pip install ./dist/mne_bids-*.whl | |
- name: Clean up working directory | |
run: rm -rf ./* | |
- name: Try importing mne_bids | |
run: python -c 'import mne_bids; print(mne_bids.__version__)' | |
- name: Try cli mne_bids | |
run: mne_bids --version | |
- name: Remove wheel install | |
run: python -m pip uninstall -y mne-bids | |
- uses: actions/checkout@v4 | |
- name: Test extras install | |
run: | | |
python -m pip install .[full] | |
python -c 'import mne_bids; print(mne_bids.__version__)' | |
python -c 'import nibabel; print(nibabel.__version__)' | |
python -c 'import pybv; print(pybv.__version__)' | |
python -c 'import pymatreader; print(pymatreader.__version__)' | |
python -c 'import matplotlib; print(matplotlib.__version__)' | |
python -c 'import pandas; print(pandas.__version__)' | |
python -c 'import EDFlib; print("EDFlib has no .__version__")' | |
test: | |
timeout-minutes: 60 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
python-version: ["3.8", "3.11"] # Oldest and newest supported versions | |
mne-version: [mne-stable] | |
mne-bids-install: [full] | |
bids-validator-version: [validator-stable] | |
include: | |
# special test runs running only on single CI systems to save resources | |
# Test development versions | |
- os: ubuntu-latest | |
python-version: "3.11" | |
mne-version: mne-main | |
mne-bids-install: full | |
bids-validator-version: validator-main | |
# Test previous MNE stable version | |
- os: ubuntu-latest | |
python-version: "3.8" | |
mne-version: mne-prev-stable | |
mne-bids-install: full | |
bids-validator-version: validator-stable | |
# Test minimal mne-bids install | |
- os: ubuntu-latest | |
python-version: "3.11" | |
mne-version: mne-stable | |
mne-bids-install: minimal | |
bids-validator-version: validator-stable | |
env: | |
TZ: Europe/Berlin | |
FORCE_COLOR: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Restore cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ env.pythonLocation }} | |
key: test-1-${{ env.pythonLocation }}-${{ env.os }}-${{ hashFiles('setup.cfg') }}-${{ hashFiles('test_requirements.txt') }} | |
- name: Install Python dependencies using pip | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade -r test_requirements.txt | |
- name: Install MNE (stable) | |
if: "matrix.mne-version == 'mne-stable'" | |
run: | | |
git clone --single-branch --branch maint/1.5 https://github.com/mne-tools/mne-python.git | |
python -m pip install -e ./mne-python | |
- name: Install MNE (previous stable) | |
if: "matrix.mne-version == 'mne-prev-stable'" | |
run: | | |
git clone --single-branch --branch maint/1.4 https://github.com/mne-tools/mne-python.git | |
python -m pip install -e ./mne-python | |
- name: Install MNE (main) | |
if: "matrix.mne-version == 'mne-main'" | |
run: | | |
git clone --single-branch --branch main https://github.com/mne-tools/mne-python.git | |
python -m pip install -e ./mne-python | |
- name: Install BIDS validator (stable) | |
if: "matrix.bids-validator-version == 'validator-stable'" | |
run: | | |
npm install -g bids-validator | |
echo "BIDS_VALIDATOR_BRANCH=stable" >> $GITHUB_ENV | |
- name: Download BIDS validator (main) | |
if: "matrix.bids-validator-version == 'validator-main'" | |
run: | | |
pushd .. | |
git clone --depth 1 https://github.com/bids-standard/bids-validator | |
popd | |
echo "BIDS_VALIDATOR_BRANCH=main" >> $GITHUB_ENV | |
- name: Install BIDS validator (main) | |
if: "matrix.bids-validator-version == 'validator-main'" | |
run: | | |
pushd .. | |
cd bids-validator | |
# Generate the full development node_modules | |
npm install | |
# Build & bundle the bids-validator CLI package | |
npm -w bids-validator run build | |
# Generate a package to install globally | |
npm -w bids-validator pack | |
# Install the package globally | |
bash -c "npm install -g bids-validator-*.tgz" | |
popd | |
- name: Display versions and environment information | |
run: | | |
echo $TZ | |
date | |
echo "npm"; npm --version | |
echo "node"; node --version | |
echo "bids-validator"; bids-validator --version | |
echo "python"; python --version | |
which python | |
mne sys_info | |
- name: Install MNE-BIDS (minimal) | |
if: "matrix.mne-bids-install == 'minimal'" | |
run: python -m pip install -e . | |
- name: Install MNE-BIDS (full) | |
if: "matrix.mne-bids-install == 'full'" | |
run: python -m pip install -e .[full] | |
# Only run on a limited set of jobs | |
- name: Run pytest without testing data | |
run: make test | |
if: ${{ matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest' && matrix.mne-version == 'mne-main' }} | |
# Get testing data | |
- run: ./tools/get_testing_version.sh | |
working-directory: mne-python | |
shell: bash | |
name: 'Get testing version' | |
- uses: actions/cache@v3 | |
with: | |
key: ${{ env.TESTING_VERSION }} | |
path: ~/mne_data | |
name: 'Cache testing data' | |
- run: ./tools/github_actions_download.sh | |
shell: bash | |
working-directory: mne-python | |
- name: Run pytest | |
shell: bash | |
run: make test | |
- name: Upload coverage stats to codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
files: ./coverage.xml |