Improve CI/CD Test Coverage #176
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, pull_request] | |
env: | |
POETRY_VERSION: "1.6.1" | |
jobs: | |
test-clang-format: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: Install clang-format and make | |
run: | | |
set -ex | |
sudo apt-get update | |
sudo apt-get install -y clang-format make | |
clang-format --version | |
- name: Check C++ Formatting | |
run: | | |
# Run the format-cpp Make target | |
make format-cpp | |
# Check if there are any changes after formatting | |
if ! git diff --exit-code; then | |
echo "Some files are not formatted correctly. Please run 'make format-cpp' and commit the changes." | |
exit 1 | |
fi | |
test-python-library: | |
strategy: | |
# Ensure that failure for one test does not cancel other actions | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install libomp (macOS only) | |
if: runner.os == 'macOS' | |
run: | | |
brew install libomp | |
- name: Set up Poetry | |
uses: snok/install-poetry@v1 | |
with: | |
version: ${{ env.POETRY_VERSION }} | |
- name: Install dependencies | |
run: | | |
cd flatnav_python | |
poetry install | |
- name: Build flatnav | |
run: | | |
cd flatnav_python | |
export NO_SIMD_VECTORIZATION=1 | |
./install_flatnav.sh | |
- name: Run Unit Tests | |
run: | | |
make run-python-unit-tests | |
run-cpp-unit-tests: | |
needs: test-clang-format | |
strategy: | |
# Ensure that failure for one test does not cancel other actions | |
fail-fast: false | |
matrix: | |
# TODO: Would love to add macos here. | |
os: [ubuntu-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Install dependencies | |
run: | | |
# Install CMake, Clang and LibOMP | |
make setup-clang-cmake-libomp | |
- name: Build and Run C++ Unit Tests | |
run: | | |
set -ex | |
make run-cpp-unit-tests |