diff --git a/.github/scripts/execute-tests-under-sanitizer b/.github/scripts/execute-tests-under-sanitizer.sh similarity index 76% rename from .github/scripts/execute-tests-under-sanitizer rename to .github/scripts/execute-tests-under-sanitizer.sh index 4e1cc087..18e609c7 100755 --- a/.github/scripts/execute-tests-under-sanitizer +++ b/.github/scripts/execute-tests-under-sanitizer.sh @@ -31,15 +31,16 @@ TESTS=$($TEST_BINARY --gtest_list_tests | awk '/^ / {print suite $1} !/^ / {su OUTPUT_DIR="./.sanitizer-report" mkdir -p "$OUTPUT_DIR" +export TSAN_OPTIONS="die_after_fork=0" +export MallocNanoZone='0' # for MacOSX + for TEST in $TESTS; do - OUTPUT_FILE="$OUTPUT_DIR/${TEST//\//_}" - export TSAN_OPTIONS="log_path=\"$OUTPUT_FILE\" die_after_fork=0" - export ASAN_OPTIONS="log_path=\"$OUTPUT_FILE\"" - export UBSAN_OPTIONS="log_path=\"$OUTPUT_FILE\"" - export MallocNanoZone='0' # for MacOSX - $TEST_BINARY --gtest_filter="$TEST" > /dev/null 2>&1 + OUTPUT_FILE="$OUTPUT_DIR/${TEST//\//_}.log" + $TEST_BINARY --gtest_filter="$TEST" > "$OUTPUT_FILE" 2>&1 if [ $? -ne 0 ]; then echo "'$TEST' failed a sanitizer check." + else + rm "$OUTPUT_FILE" fi done diff --git a/.github/workflows/reusable-test.yml b/.github/workflows/reusable-test.yml index 2dd15bce..96a8061c 100644 --- a/.github/workflows/reusable-test.yml +++ b/.github/workflows/reusable-test.yml @@ -68,7 +68,7 @@ jobs: - name: Run clio_tests (sanitizer errors ignored) if: ${{ env.SANITIZER_IGNORE_ERRORS == 'true' }} - run: ./.github/scripts/execute-tests-under-sanitizer ./clio_tests + run: ./.github/scripts/execute-tests-under-sanitizer.sh ./clio_tests - name: Check for sanitizer report if: ${{ env.SANITIZER_IGNORE_ERRORS == 'true' }} diff --git a/.github/workflows/sanitizers.yml b/.github/workflows/sanitizers.yml index 7f7feb34..fa31ab7f 100644 --- a/.github/workflows/sanitizers.yml +++ b/.github/workflows/sanitizers.yml @@ -15,7 +15,7 @@ on: - ".github/actions/**" - "!.github/actions/build-docker-image/**" - "!.github/actions/create-issue/**" - - .github/scripts/execute-tests-under-sanitizer + - .github/scripts/execute-tests-under-sanitizer.sh - CMakeLists.txt - conanfile.py