skip the test dependencies when a consumer builds the engine from source #64
Workflow file for this run
This file contains hidden or 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 | |
| on: | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| linux: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-26.04 | |
| cc: gcc-15 | |
| cxx: g++-15 | |
| sanitizer: "address,undefined" | |
| san-name: asan-ubsan | |
| experimental: false | |
| - os: ubuntu-26.04 | |
| cc: clang-21 | |
| cxx: clang++-21 | |
| sanitizer: "address,undefined" | |
| san-name: asan-ubsan | |
| experimental: false | |
| - os: ubuntu-26.04 | |
| cc: clang-21 | |
| cxx: clang++-21 | |
| sanitizer: "thread" | |
| san-name: tsan | |
| experimental: false | |
| - os: ubuntu-26.04-arm | |
| cc: gcc-15 | |
| cxx: g++-15 | |
| sanitizer: "" | |
| san-name: plain | |
| experimental: false | |
| - os: ubuntu-26.04-arm | |
| cc: clang-21 | |
| cxx: clang++-21 | |
| sanitizer: "" | |
| san-name: plain | |
| experimental: false | |
| runs-on: ${{ matrix.os }} | |
| continue-on-error: ${{ matrix.experimental }} | |
| timeout-minutes: 30 | |
| env: | |
| CC: ${{ matrix.cc }} | |
| CXX: ${{ matrix.cxx }} | |
| ASAN_OPTIONS: allow_user_segv_handler=1:halt_on_error=1 | |
| UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1 | |
| # the probes install SIGSEGV/SIGBUS handlers; TSan must not own those signals | |
| TSAN_OPTIONS: halt_on_error=1:handle_segv=0:handle_sigbus=0 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: ccache | |
| uses: hendrikmuhs/ccache-action@v1.2 | |
| with: | |
| key: ${{ matrix.os }}-${{ matrix.cc }}-${{ matrix.san-name }} | |
| - name: Install conan | |
| uses: dice-group/cpp-conan-release-reusable-workflow/.github/actions/configure_conan@main | |
| with: | |
| conan-version: 2.21.0 | |
| - name: Detect conan profile | |
| run: conan profile detect --force | |
| - name: Cache conan packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.conan2/p | |
| key: ${{ matrix.os }}-${{ matrix.cc }}-conan2-${{ hashFiles('conanfile.py') }} | |
| - name: Get conan provider | |
| uses: dice-group/cpp-conan-release-reusable-workflow/.github/actions/add_conan_provider@main | |
| - name: Configure | |
| run: | | |
| SAN_FLAGS="" | |
| if [ -n "${{ matrix.sanitizer }}" ]; then | |
| SAN_FLAGS="-fsanitize=${{ matrix.sanitizer }} -fno-omit-frame-pointer" | |
| fi | |
| cmake -G Ninja -B build \ | |
| -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | |
| -DPRIVATEER_BUILD_TESTING=ON \ | |
| -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=conan_provider.cmake \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
| -DCMAKE_CXX_FLAGS="$SAN_FLAGS" \ | |
| -DCMAKE_EXE_LINKER_FLAGS="$SAN_FLAGS" | |
| - name: Build | |
| run: cmake --build build -j$(nproc) | |
| - name: Test | |
| run: ctest --test-dir build -j$(nproc) --output-on-failure -LE "long_running|probes" | |
| # The probes measure the host, not the change under review: they assert | |
| # kernel behaviour the engine relies on, and a shared runner can decline | |
| # an advisory syscall for a whole test. Their result is a record, so a | |
| # failure here is reported and does not fail the job. | |
| - name: Platform probes | |
| continue-on-error: true | |
| run: ctest --test-dir build -j$(nproc) --output-on-failure -L probes | |
| macos: | |
| runs-on: macos-15 | |
| timeout-minutes: 20 | |
| env: | |
| CC: gcc-15 | |
| CXX: g++-15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install tools | |
| run: brew install gcc@15 ninja | |
| - name: ccache | |
| uses: hendrikmuhs/ccache-action@v1.2 | |
| with: | |
| key: macos-15-gcc-15 | |
| - name: Install conan | |
| uses: dice-group/cpp-conan-release-reusable-workflow/.github/actions/configure_conan@main | |
| with: | |
| conan-version: 2.21.0 | |
| - name: Detect conan profile | |
| run: conan profile detect --force | |
| - name: Cache conan packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.conan2/p | |
| key: macos-15-gcc-15-conan2-${{ hashFiles('conanfile.py') }} | |
| - name: Get conan provider | |
| uses: dice-group/cpp-conan-release-reusable-workflow/.github/actions/add_conan_provider@main | |
| - name: Configure | |
| run: | | |
| cmake -G Ninja -B build \ | |
| -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | |
| -DPRIVATEER_BUILD_TESTING=ON \ | |
| -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=conan_provider.cmake \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
| - name: Build | |
| run: cmake --build build -j$(sysctl -n hw.ncpu) | |
| - name: Test | |
| run: ctest --test-dir build -j$(sysctl -n hw.ncpu) --output-on-failure -LE "long_running|probes" | |
| - name: Platform probes | |
| continue-on-error: true | |
| run: ctest --test-dir build -j$(sysctl -n hw.ncpu) --output-on-failure -L probes |