Skip to content

skip the test dependencies when a consumer builds the engine from source #64

skip the test dependencies when a consumer builds the engine from source

skip the test dependencies when a consumer builds the engine from source #64

Workflow file for this run

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