Skip to content

test_suite

test_suite #4582

Workflow file for this run

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