tests octave #605
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: tests octave | |
# Uses the cron schedule for github actions | |
# | |
# https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows#scheduled-events | |
# | |
# ┌───────────── minute (0 - 59) | |
# │ ┌───────────── hour (0 - 23) | |
# │ │ ┌───────────── day of the month (1 - 31) | |
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC) | |
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT) | |
# │ │ │ │ │ | |
# │ │ │ │ │ | |
# │ │ │ │ │ | |
# * * * * * | |
env: | |
OCTFLAGS: --no-gui --no-window-system --silent | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
schedule: | |
- cron: 0 0 1,15 * * | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
test: | |
if: github.repository_owner == 'cpp-lln-lab' | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
test_type: [system] | |
script: [moae, facerep, fmriprep] | |
include: | |
- test_type: unit | |
mode: fast | |
- test_type: unit | |
mode: slow | |
fail-fast: false | |
steps: | |
- name: ${{ matrix.test_type }} test | |
if: matrix.test_type == 'system' | |
run: echo ${{ matrix.test_type }} test ${{ matrix.script }} | |
- name: Install dependencies | |
run: | | |
sudo apt-get -y -qq update | |
sudo apt-get -y install unzip wget | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Install python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Clone bidspm | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Install validators | |
run: make install | |
- name: Install SPM | |
run: | | |
git clone https://github.com/spm/spm12.git --depth 1 | |
- name: Get moae fmriprep data from OSF | |
run: | | |
mkdir -p demos/MoAE/inputs/ | |
cd demos/MoAE/inputs/ | |
wget https://osf.io/vufjs/download | |
unzip download | |
mv moae_fmriprep fmriprep | |
- name: Prepare test data | |
run: | | |
cd tests | |
make data | |
- name: Install Moxunit and MOcov | |
run: | | |
git clone https://github.com/MOxUnit/MOxUnit.git --depth 1 | |
git clone https://github.com/MOcov/MOcov.git --depth 1 | |
- name: Install octave | |
run: | | |
sudo apt-get -y -qq update | |
sudo apt-get -y install \ | |
octave \ | |
liboctave-dev\ | |
octave-common \ | |
octave-io \ | |
octave-image \ | |
octave-signal \ | |
octave-statistics | |
make -C MOxUnit install | |
make -C MOcov install | |
- name: Compile SPM | |
run: | | |
make -C spm12/src PLATFORM=octave distclean | |
make -C spm12/src PLATFORM=octave | |
make -C spm12/src PLATFORM=octave install | |
octave $OCTFLAGS --eval "addpath(fullfile(pwd, 'spm12')); savepath();" | |
- name: Run fast unit tests Octave | |
if: matrix.test_type == 'unit' && matrix.mode == 'fast' | |
run: | | |
octave $OCTFLAGS --eval "addpath(fullfile(pwd, 'tests', 'utils')); savepath();" | |
octave $OCTFLAGS --eval "bidspm(); cd demos/MoAE; download_moae_ds(true);" | |
cd .github/workflows | |
octave $OCTFLAGS --eval "tests_octave;" | |
- name: Run slow unit tests Octave | |
if: matrix.test_type == 'unit' && matrix.mode == 'slow' | |
run: | | |
octave $OCTFLAGS --eval "addpath(fullfile(pwd, 'tests', 'utils')); savepath();" | |
octave $OCTFLAGS --eval "bidspm(); cd demos/MoAE; download_moae_ds(true);" | |
cd .github/workflows | |
octave $OCTFLAGS --eval " global SLOW; SLOW=true; tests_octave;" | |
- name: Code coverage | |
if: matrix.test_type == 'unit' | |
uses: codecov/codecov-action@v4 | |
with: | |
file: coverage.xml | |
flags: octave | |
name: codecov-octave_${{ matrix.mode }} | |
fail_ci_if_error: false | |
# token: ${{ secrets.CODECOV_TOKEN }} # not required but might help API rate limits | |
- name: Run system tests octave ${{ matrix.script }} | |
if: matrix.test_type == 'system' | |
run: | | |
cd /home/runner/work/bidspm/bidspm/.github/workflows | |
octave $OCTFLAGS --eval "run system_tests_${{ matrix.script }};" |