update ci to include windows #361
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, windows-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: Install dependencies - windows | |
if: matrix.os == 'windows-latest' | |
run: | | |
cd "${VCPKG_INSTALLATION_ROOT}" | |
vcpkg install hdf5[cpp]:x64-windows boost-date-time:x64-windows boost-endian:x64-windows boost-uuid:x64-windows catch2:x64-windows | |
vcpkg integrate install | |
- 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 |