diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a5a38bf..68bd07bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,6 +14,8 @@ jobs: config: - {name: "Ubuntu Clang 17", os: ubuntu-24.04, toolchain: "clang-17-toolchain.cmake", clang_version: 17, installed_clang_version: 14, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - {name: "Ubuntu Clang 18", os: ubuntu-24.04, toolchain: "clang-18-toolchain.cmake", clang_version: 18, installed_clang_version: 14, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + # Note: clang-19 + Asan setup causes errors on some platforms. Temporary skip some checks via .asan_options. + - {name: "Ubuntu Clang 19", os: ubuntu-24.04, toolchain: "clang-19-toolchain.cmake", clang_version: 19, installed_clang_version: 14, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" ", asan_options: "new_delete_type_mismatch=0"} - {name: "Ubuntu GCC 13", os: ubuntu-24.04, toolchain: "gcc-13-toolchain.cmake", clang_version: 17, installed_clang_version: 14, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - {name: "Ubuntu GCC 14", os: ubuntu-24.04, toolchain: "gcc-14-toolchain.cmake", clang_version: 17, installed_clang_version: 14, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} steps: @@ -53,10 +55,12 @@ jobs: - name: Install GCC 14 if: matrix.config.name == 'Ubuntu GCC 14' run: | + set -x sudo apt update sudo apt-get install g++-14 - name: Configure run: | + set -x rm -rf .build mkdir -p .build cd .build @@ -65,8 +69,11 @@ jobs: cmake ${{ matrix.config.cmake_args }} -DCMAKE_TOOLCHAIN_FILE=etc/${{ matrix.config.toolchain }} -B . -S .. - name: Build run: | + set -x cmake --build .build --config Asan --target all -- -k 0 - name: Test run: | + set -x cd .build - ctest --output-on-failure + [[ ! -z "${{ matrix.config.asan_options }}" ]] && export ASAN_OPTIONS="${{ matrix.config.asan_options }}" + ctest --build-config Asan --output-on-failure diff --git a/src/Beman/Optional26/CMakeLists.txt b/src/Beman/Optional26/CMakeLists.txt index 59e00a89..9cdd38ac 100644 --- a/src/Beman/Optional26/CMakeLists.txt +++ b/src/Beman/Optional26/CMakeLists.txt @@ -48,4 +48,8 @@ target_link_libraries(optional_test gtest) target_link_libraries(optional_test gtest_main) include(GoogleTest) -gtest_discover_tests(optional_test) + +# Note: clang-19 + gtest_discover_tests + Asan setup causes errors on some platforms. +# Temporary switch to gtest_add_tests and skip some Asan checks. +enable_testing() +gtest_add_tests(optional_test "" AUTO)