Run all tests with sanitizers (#2275)

This commit is contained in:
Andrew Gaul 2023-08-17 22:27:06 +09:00 committed by GitHub
parent b2bb12fd2c
commit e5986d0034
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -30,38 +30,38 @@ COMMON_FLAGS="-g -O0 -Wno-cpp"
make clean make clean
./configure CXXFLAGS="$COMMON_FLAGS -D_GLIBCXX_DEBUG" ./configure CXXFLAGS="$COMMON_FLAGS -D_GLIBCXX_DEBUG"
make --jobs="$(nproc)" make --jobs="$(nproc)"
make check -C test/ ALL_TESTS=1 make check -C test/
# run tests under AddressSanitizer, https://clang.llvm.org/docs/AddressSanitizer.html # run tests under AddressSanitizer, https://clang.llvm.org/docs/AddressSanitizer.html
make clean make clean
./configure CXX=clang++ CXXFLAGS="$COMMON_FLAGS -fsanitize=address -fsanitize-address-use-after-scope" ./configure CXX=clang++ CXXFLAGS="$COMMON_FLAGS -fsanitize=address -fsanitize-address-use-after-scope"
make --jobs="$(nproc)" make --jobs="$(nproc)"
ASAN_OPTIONS='detect_leaks=1,detect_stack_use_after_return=1' make check -C test/ ALL_TESTS=1 ASAN_OPTIONS='detect_leaks=1,detect_stack_use_after_return=1' make check -C test/
# run tests under MemorySanitizer, https://clang.llvm.org/docs/MemorySanitizer.html # run tests under MemorySanitizer, https://clang.llvm.org/docs/MemorySanitizer.html
# TODO: this requires a custom libc++ # TODO: this requires a custom libc++
#make clean #make clean
#./configure CXX=clang++ CXXFLAGS="$COMMON_FLAGS -fsanitize=memory" #./configure CXX=clang++ CXXFLAGS="$COMMON_FLAGS -fsanitize=memory"
#make --jobs="$(nproc)" #make --jobs="$(nproc)"
#make check -C test/ #ALL_TESTS=1 make check -C test/
# run tests under ThreadSanitizer, https://clang.llvm.org/docs/ThreadSanitizer.html # run tests under ThreadSanitizer, https://clang.llvm.org/docs/ThreadSanitizer.html
make clean make clean
./configure CXX=clang++ CXXFLAGS="$COMMON_FLAGS -fsanitize=thread" ./configure CXX=clang++ CXXFLAGS="$COMMON_FLAGS -fsanitize=thread"
make --jobs="$(nproc)" make --jobs="$(nproc)"
TSAN_OPTIONS='halt_on_error=1' make check -C test/ ALL_TESTS=1 TSAN_OPTIONS='halt_on_error=1' make check -C test/
# run tests under UndefinedBehaviorSanitizer, https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html # run tests under UndefinedBehaviorSanitizer, https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
make clean make clean
./configure CXX=clang++ CXXFLAGS="$COMMON_FLAGS -fsanitize=undefined,implicit-conversion,local-bounds,unsigned-integer-overflow" ./configure CXX=clang++ CXXFLAGS="$COMMON_FLAGS -fsanitize=undefined,implicit-conversion,local-bounds,unsigned-integer-overflow"
make --jobs="$(nproc)" make --jobs="$(nproc)"
make check -C test/ ALL_TESTS=1 make check -C test/
# run tests with Valgrind # run tests with Valgrind
make clean make clean
./configure CXXFLAGS="$COMMON_FLAGS" ./configure CXXFLAGS="$COMMON_FLAGS"
make --jobs="$(nproc)" make --jobs="$(nproc)"
RETRIES=100 VALGRIND="--leak-check=full --error-exitcode=1" make check -C test/ ALL_TESTS=1 RETRIES=100 VALGRIND="--leak-check=full --error-exitcode=1" make check -C test/
# #
# Local variables: # Local variables: