Fix asan profile, add script for running tests

Linking against static asan library was a mistake. Now this should
work better for other compilers. Also added script for running all tests
under different profiles.
This commit is contained in:
2025-01-29 22:41:39 +03:00
parent 6ede63e18f
commit 8d73a9b473
2 changed files with 44 additions and 2 deletions

View File

@@ -32,12 +32,12 @@ set(CMAKE_CXX_FLAGS_ASAN
) )
set(CMAKE_EXE_LINKER_FLAGS_ASAN set(CMAKE_EXE_LINKER_FLAGS_ASAN
"${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=address,undefined -static-libasan" CACHE STRING "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=address,undefined" CACHE STRING
"Linker flags to be used to create executables for Asan build type." FORCE "Linker flags to be used to create executables for Asan build type." FORCE
) )
set(CMAKE_SHARED_LINKER_FLAGS_ASAN set(CMAKE_SHARED_LINKER_FLAGS_ASAN
"${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address,undefined -static-libasan" CACHE STRING "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address,undefined" CACHE STRING
"Linker lags to be used to create shared libraries for Asan build type." FORCE "Linker lags to be used to create shared libraries for Asan build type." FORCE
) )

42
util/run-tests.sh Executable file
View File

@@ -0,0 +1,42 @@
#!/bin/sh
# Set of compilers and profiles for testing
compilers="gcc clang"
profiles="Debug Release Asan"
# Build and run tests
build_and_run() {
compiler=$1
mode=$2
# Reconfigure project
rm -rf build
cmake -S . -B build -DCMAKE_BUILD_TYPE=${mode} -DCMAKE_C_COMPILER=${compiler}
if [ $? -ne 0 ]; then
return 1
fi
# Build
cmake --build build
if [ $? -ne 0 ]; then
return 1
fi
# Test
ctest -T test --test-dir build
if [ $? -ne 0 ]; then
return 1
fi
return 0
}
# For each compiler and profile - run test
for compiler in $compilers; do
for profile in $profiles; do
if ! build_and_run $compiler $profile; then
echo "Tests failed for $compiler $profile"
exit 1
fi
done
done