From a486e3683697f3d54ef514b3d1555381696f5eb9 Mon Sep 17 00:00:00 2001 From: levBagryansky <28lev11@gmail.com> Date: Sat, 28 Oct 2023 01:20:25 +0300 Subject: [PATCH] Added more sanitizers --- .github/workflows/cmake.yml | 5 +++-- Makefile | 18 +++++++++++------- test/CMakeLists.txt | 14 +++++++++----- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 933a3e4..74269e1 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -15,8 +15,9 @@ jobs: strategy: matrix: ctect_option: - - "-DCHAIVM_ADD_SANITIZERS=OFF" - - "-DCHAIVM_ADD_SANITIZERS=ON" + - "-DCHAIVM_ADD_MEM_SANITIZER=OFF -DCHAIVM_ADD_THREAD_SANITIZER=OFF" + - "-DCHAIVM_ADD_MEM_SANITIZER=OFF -DCHAIVM_ADD_THREAD_SANITIZER=ON" + - "-DCHAIVM_ADD_MEM_SANITIZER=ON -DCHAIVM_ADD_THREAD_SANITIZER=OFF" steps: - uses: actions/checkout@v3 with: diff --git a/Makefile b/Makefile index 2091dcd..029dcec 100644 --- a/Makefile +++ b/Makefile @@ -26,19 +26,23 @@ build: init cmake -S $(PWD) -B $(PWD)/$(BUILD_DIR) -DCHAIVM_ADD_SANITIZERS=OFF cmake --build $(PWD)/$(BUILD_DIR) --parallel $(JOBS) -.PHONY: build-memcheck -build-memcheck: init - cmake -S $(PWD) -B $(PWD)/$(BUILD_DIR) -DCHAIVM_ADD_SANITIZERS=ON - cmake --build $(PWD)/$(BUILD_DIR) --parallel $(JOBS) - .PHONY: test test: build export GTEST_COLOR=1 && ctest --test-dir $(PWD)/$(BUILD_DIR)/test --parallel $(JOBS) --output-on-failure -.PHONY: test-memcheck -test-memcheck: build-memcheck +.PHONY: execute-tests-inside-make +execute-tests-inside-make: + cmake --build $(PWD)/$(BUILD_DIR) --parallel $(JOBS) export GTEST_COLOR=1 && ctest --test-dir $(PWD)/$(BUILD_DIR)/test --parallel $(JOBS) --output-on-failure + +.PHONY: test-extended +test-extended: init + cmake -S $(PWD) -B $(PWD)/$(BUILD_DIR) -DCHAIVM_ADD_MEM_SANITIZER=OFF -DCHAIVM_ADD_THREAD_SANITIZER=ON + $(MAKE) execute-tests-inside-make + cmake -S $(PWD) -B $(PWD)/$(BUILD_DIR) -DCHAIVM_ADD_MEM_SANITIZER=ON -DCHAIVM_ADD_THREAD_SANITIZER=OFF + $(MAKE) execute-tests-inside-make + .PHONY: bench bench: init cmake -S $(PWD) -B $(PWD)/$(BUILD_DIR) -DCHAI_BENCH=1 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 0de1757..f3c70c7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -14,11 +14,15 @@ function(chai_test SOURCE_NAME) add_executable(${TARGET_NAME}) target_sources(${TARGET_NAME} PRIVATE ${SOURCE_NAME}) target_link_libraries(${TARGET_NAME} PRIVATE chai_testif) - if (CHAIVM_ADD_SANITIZERS) - # @todo #37:60min Make address sanitizer work on MacOS with ARM - target_compile_options(${TARGET_NAME} PRIVATE -fsanitize=address) - target_link_options(${TARGET_NAME} PRIVATE -fsanitize=address) - endif () + if (CHAIVM_ADD_MEM_SANITIZER AND NOT CHAIVM_ADD_THREAD_SANITIZER) + # @todo #37:60min Make address and leak and undefined sanitizer work on MacOS with ARM + target_compile_options(${TARGET_NAME} PRIVATE -fsanitize=address -g -fsanitize=leak -fsanitize=undefined) + target_link_options(${TARGET_NAME} PRIVATE -fsanitize=address -fsanitize=leak -fsanitize=undefined) + elseif(CHAIVM_ADD_THREAD_SANITIZER AND NOT CHAIVM_ADD_MEM_SANITIZER) + # @todo #37:60min Make thread sanitizer work on MacOS with ARM + target_compile_options(${TARGET_NAME} PRIVATE -fsanitize=thread -g) + target_link_options(${TARGET_NAME} PRIVATE -fsanitize=thread) + endif() add_test(NAME ${TARGET_NAME} COMMAND ./${TARGET_NAME}) endfunction(chai_test)