integration related updates #222
Workflow file for this run
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: Run tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
workflow_dispatch: | |
jobs: | |
test: | |
defaults: | |
run: | |
shell: bash | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.os }} | |
cancel-in-progress: true | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install dependencies - ubuntu | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libhdf5-dev libboost-all-dev | |
git clone https://github.com/catchorg/Catch2.git | |
cd Catch2 | |
git checkout "v3.5.3" | |
cmake -Bbuild -H. -DBUILD_TESTING=OFF | |
sudo cmake --build build/ --target install | |
- name: Install dependencies - macos | |
if: matrix.os == 'macos-latest' | |
run: brew install hdf5 boost catch2 | |
- name: Configure | |
shell: pwsh | |
run: cmake "--preset=ci-$("${{ matrix.os }}".split("-")[0])" | |
- name: Build | |
run: cmake --build build --config Release -j 2 | |
- name: Install | |
run: cmake --install build --config Release --prefix prefix | |
- name: Test | |
working-directory: build | |
run: ctest --output-on-failure --no-tests=error -C Release -j 2 | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-files-${{ matrix.os }} | |
path: | | |
build/tests/data/*.nwb | |
sanitize: | |
needs: test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libhdf5-dev libboost-all-dev | |
git clone https://github.com/catchorg/Catch2.git | |
cd Catch2 | |
git checkout "v3.5.3" | |
cmake -Bbuild -H. -DBUILD_TESTING=OFF | |
sudo cmake --build build/ --target install | |
- name: Configure | |
run: cmake --preset=ci-sanitize | |
- name: Build | |
run: cmake --build build/sanitize -j 2 | |
- name: Test | |
working-directory: build/sanitize | |
env: | |
ASAN_OPTIONS: "strict_string_checks=1:\ | |
detect_stack_use_after_return=1:\ | |
check_initialization_order=1:\ | |
strict_init_order=1:\ | |
detect_leaks=1:\ | |
halt_on_error=1" | |
UBSAN_OPTIONS: "print_stacktrace=1:\ | |
halt_on_error=1" | |
run: ctest --output-on-failure --no-tests=error -j 2 | |
validate: | |
needs: [test, sanitize] | |
defaults: | |
run: | |
shell: bash | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.os }} | |
cancel-in-progress: true | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Download test files | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-files-${{ matrix.os }} | |
path: nwb_files | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- name: Install pynwb and run validation | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install nwbinspector | |
nwbinspector nwb_files --threshold BEST_PRACTICE_VIOLATION |