From d5e500e6d075e8195fd5975cb196f960b6d09ffa Mon Sep 17 00:00:00 2001 From: Andreas Nordal Date: Sun, 26 May 2024 17:20:49 +0200 Subject: [PATCH] CI: Add separate build for SANITIZE=address,undefined --- .github/workflows/ci.yml | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0ff3e72a4..4a1de02ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,27 +38,56 @@ jobs: echo "::endgroup::" echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" + # Separate builds for sanitizers and coverage: + # These can currently not be combined without branch coverage dilution. - env: - stepName: Build Unit Tests + stepName: Build Unit Tests (aubsan build) name: ${{ env.stepName }} run: | # ${{ env.stepName }} echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" - cmake -S test/unit-test -B test/unit-test/build/ -G Ninja - cmake --build test/unit-test/build/ --target all + cmake --fresh -G Ninja -S test/unit-test -B test/unit-test/build/ -DSANITIZE=address,undefined + ninja -C test/unit-test/build/ echo "::endgroup::" echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" - env: - stepName: Run Unit Tests + stepName: Run Unit Tests (aubsan build) name: ${{ env.stepName }} shell: bash run: | # ${{ env.stepName }} echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" + env ASAN_OPTIONS=detect_odr_violation=0 ctest --test-dir test/unit-test/build/ -E system --output-on-failure + + echo "::endgroup::" + echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" + + - env: + stepName: Build Unit Tests (coverage build) + name: ${{ env.stepName }} + run: | + # ${{ env.stepName }} + echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" + + cmake --fresh -G Ninja -S test/unit-test -B test/unit-test/build/ -DSANITIZE= + ninja -C test/unit-test/build/ + + echo "::endgroup::" + echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}" + + - env: + stepName: Run Unit Tests (coverage build) + name: ${{ env.stepName }} + shell: bash + run: | + # ${{ env.stepName }} + echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}" + + find test/unit-test/build/ -name '*.gcda' -delete ctest --test-dir test/unit-test/build/ -E system --output-on-failure echo "::endgroup::"