Skip to content

Commit dbfc704

Browse files
Option to turn off tests in the build (#42)
* feat: Option to turn of tests * feat: Option to turn of tests * fix: Removes test check on coverage * docs: Force update options cache
1 parent 9db998b commit dbfc704

File tree

23 files changed

+1299
-1290
lines changed

23 files changed

+1299
-1290
lines changed

CMakeLists.txt

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ endif ()
1111

1212
message(STATUS "Build type ${CMAKE_BUILD_TYPE}")
1313

14+
option(SC_BUILD_TEST "Build tests" ON)
15+
if(NOT SC_BUILD_TEST)
16+
message(STATUS "Turned off building tests because SC is a subproject.")
17+
message(STATUS "Turned off coverage because SC is a subproject.")
18+
endif()
19+
1420
add_subdirectory(array)
1521
add_subdirectory(buffer)
1622
add_subdirectory(condition)
@@ -37,46 +43,47 @@ add_subdirectory(uri)
3743
# --------------------------------------------------------------------------- #
3844
# --------------------- Test Configuration Start ---------------------------- #
3945
# --------------------------------------------------------------------------- #
40-
46+
if(SC_BUILD_TEST)
4147
# ----------------------- - Code Coverage Start ----------------------------- #
4248

43-
if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
44-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
45-
add_compile_options(--coverage)
46-
link_libraries(gcov)
47-
else()
48-
message(FATAL_ERROR "Only GCC is supported for coverage")
49-
endif()
50-
endif ()
49+
if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
50+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
51+
add_compile_options(--coverage)
52+
link_libraries(gcov)
53+
else()
54+
message(FATAL_ERROR "Only GCC is supported for coverage")
55+
endif()
56+
endif ()
5157

52-
add_custom_target(coverage)
53-
add_custom_command(
54-
TARGET coverage
55-
COMMAND lcov --capture --directory .
56-
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
57-
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
58-
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
59-
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
60-
)
58+
add_custom_target(coverage)
59+
add_custom_command(
60+
TARGET coverage
61+
COMMAND lcov --capture --directory .
62+
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
63+
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
64+
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
65+
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
66+
)
6167

6268
# -------------------------- Code Coverage End ------------------------------ #
6369

64-
SET(MEMORYCHECK_COMMAND_OPTIONS
65-
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
66-
--leak-check=full --show-leak-kinds=all \
67-
--error-exitcode=255")
70+
SET(MEMORYCHECK_COMMAND_OPTIONS
71+
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
72+
--leak-check=full --show-leak-kinds=all \
73+
--error-exitcode=255")
6874

69-
add_custom_target(valgrind ${CMAKE_COMMAND}
70-
-E env CTEST_OUTPUT_ON_FAILURE=1
71-
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
72-
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
73-
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
75+
add_custom_target(valgrind ${CMAKE_COMMAND}
76+
-E env CTEST_OUTPUT_ON_FAILURE=1
77+
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
78+
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
79+
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
7480

75-
add_custom_target(check ${CMAKE_COMMAND}
76-
-E env CTEST_OUTPUT_ON_FAILURE=1
77-
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
78-
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
81+
add_custom_target(check ${CMAKE_COMMAND}
82+
-E env CTEST_OUTPUT_ON_FAILURE=1
83+
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
84+
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
7985

80-
add_dependencies(coverage check)
86+
add_dependencies(coverage check)
8187

88+
endif ()
8289
# ----------------------- Test Configuration End ---------------------------- #

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ FetchContent_Declare(
7575
sc_lib
7676
GIT_REPOSITORY https://github.com/tezc/sc.git
7777
GIT_TAG master)
78+
SET(SC_BUILD_TEST OFF CACHE BOOL "Turn off sc_lib tests" FORCE)
7879
7980
FetchContent_MakeAvailable(sc_lib)
8081

array/CMakeLists.txt

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -20,83 +20,83 @@ endif ()
2020
# --------------------------------------------------------------------------- #
2121
# --------------------- Test Configuration Start ---------------------------- #
2222
# --------------------------------------------------------------------------- #
23+
if(SC_BUILD_TEST)
2324

24-
include(CTest)
25-
include(CheckCCompilerFlag)
25+
include(CTest)
26+
include(CheckCCompilerFlag)
2627

27-
enable_testing()
28+
enable_testing()
2829

29-
add_executable(${PROJECT_NAME}_test array_test.c sc_array.c)
30+
add_executable(${PROJECT_NAME}_test array_test.c sc_array.c)
3031

31-
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_SIZE_MAX=140000ul)
32+
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_SIZE_MAX=140000ul)
3233

33-
message(STATUS "Compiler is ${CMAKE_C_COMPILER_ID}")
34+
message(STATUS "Compiler is ${CMAKE_C_COMPILER_ID}")
3435

35-
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
36-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
37-
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
38-
message(STATUS "Defined SC_HAVE_WRAP")
39-
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_HAVE_WRAP)
40-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-builtin)
41-
target_link_options(${PROJECT_NAME}_test PRIVATE -Wl,--wrap=realloc)
42-
endif ()
43-
endif ()
36+
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
37+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
38+
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
39+
message(STATUS "Defined SC_HAVE_WRAP")
40+
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_HAVE_WRAP)
41+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-builtin)
42+
target_link_options(${PROJECT_NAME}_test PRIVATE -Wl,--wrap=realloc)
43+
endif ()
44+
endif ()
4445

45-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
46-
"${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang" OR
47-
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
46+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
47+
"${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang" OR
48+
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
4849

49-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-omit-frame-pointer)
50+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-omit-frame-pointer)
5051

51-
if (SANITIZER)
52-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
53-
target_link_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
54-
endif ()
55-
endif ()
52+
if (SANITIZER)
53+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
54+
target_link_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
55+
endif ()
56+
endif ()
5657

57-
add_test(NAME ${PROJECT_NAME}_test COMMAND ${PROJECT_NAME}_test)
58+
add_test(NAME ${PROJECT_NAME}_test COMMAND ${PROJECT_NAME}_test)
5859

59-
SET(MEMORYCHECK_COMMAND_OPTIONS
60-
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
61-
--leak-check=full --show-leak-kinds=all \
62-
--error-exitcode=255")
60+
SET(MEMORYCHECK_COMMAND_OPTIONS
61+
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
62+
--leak-check=full --show-leak-kinds=all \
63+
--error-exitcode=255")
6364

64-
add_custom_target(valgrind_${PROJECT_NAME} ${CMAKE_COMMAND}
65-
-E env CTEST_OUTPUT_ON_FAILURE=1
66-
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
67-
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
68-
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
65+
add_custom_target(valgrind_${PROJECT_NAME} ${CMAKE_COMMAND}
66+
-E env CTEST_OUTPUT_ON_FAILURE=1
67+
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
68+
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
69+
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
6970

70-
add_custom_target(check_${PROJECT_NAME} ${CMAKE_COMMAND}
71-
-E env CTEST_OUTPUT_ON_FAILURE=1
72-
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
73-
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
71+
add_custom_target(check_${PROJECT_NAME} ${CMAKE_COMMAND}
72+
-E env CTEST_OUTPUT_ON_FAILURE=1
73+
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
74+
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
7475

7576
# ----------------------- - Code Coverage Start ----------------------------- #
7677

77-
if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
78-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
79-
target_compile_options(${PROJECT_NAME}_test PRIVATE --coverage)
80-
target_link_libraries(${PROJECT_NAME}_test gcov)
81-
else()
82-
message(FATAL_ERROR "Only GCC is supported for coverage")
83-
endif()
84-
endif ()
85-
86-
add_custom_target(coverage_${PROJECT_NAME})
87-
add_custom_command(
88-
TARGET coverage_${PROJECT_NAME}
89-
COMMAND lcov --capture --directory .
90-
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
91-
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
92-
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
93-
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
94-
)
95-
96-
add_dependencies(coverage_${PROJECT_NAME} check_${PROJECT_NAME})
78+
if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
79+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
80+
target_compile_options(${PROJECT_NAME}_test PRIVATE --coverage)
81+
target_link_libraries(${PROJECT_NAME}_test gcov)
82+
else()
83+
message(FATAL_ERROR "Only GCC is supported for coverage")
84+
endif()
85+
endif ()
86+
87+
add_custom_target(coverage_${PROJECT_NAME})
88+
add_custom_command(
89+
TARGET coverage_${PROJECT_NAME}
90+
COMMAND lcov --capture --directory .
91+
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
92+
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
93+
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
94+
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
95+
)
96+
97+
add_dependencies(coverage_${PROJECT_NAME} check_${PROJECT_NAME})
9798

9899
# -------------------------- Code Coverage End ------------------------------ #
99-
100-
100+
endif ()
101101
# ----------------------- Test Configuration End ---------------------------- #
102102

buffer/CMakeLists.txt

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -20,80 +20,80 @@ endif ()
2020
# --------------------------------------------------------------------------- #
2121
# --------------------- Test Configuration Start ---------------------------- #
2222
# --------------------------------------------------------------------------- #
23+
if(SC_BUILD_TEST)
2324

24-
include(CTest)
25-
include(CheckCCompilerFlag)
25+
include(CTest)
26+
include(CheckCCompilerFlag)
2627

27-
enable_testing()
28+
enable_testing()
2829

29-
add_executable(${PROJECT_NAME}_test buf_test.c sc_buf.c)
30+
add_executable(${PROJECT_NAME}_test buf_test.c sc_buf.c)
3031

31-
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_SIZE_MAX=140000ul)
32+
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_SIZE_MAX=140000ul)
3233

33-
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
34-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
35-
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
36-
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_HAVE_WRAP)
37-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-builtin)
38-
target_link_options(${PROJECT_NAME}_test PRIVATE
39-
-Wl,--wrap=vsnprintf,--wrap=malloc,--wrap=realloc,--wrap=strlen)
40-
endif ()
41-
endif ()
34+
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
35+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
36+
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
37+
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_HAVE_WRAP)
38+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-builtin)
39+
target_link_options(${PROJECT_NAME}_test PRIVATE
40+
-Wl,--wrap=vsnprintf,--wrap=malloc,--wrap=realloc,--wrap=strlen)
41+
endif ()
42+
endif ()
4243

43-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
44-
"${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang" OR
45-
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
46-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-omit-frame-pointer)
44+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
45+
"${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang" OR
46+
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
47+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-omit-frame-pointer)
4748

48-
if (SANITIZER)
49-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
50-
target_link_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
51-
endif ()
52-
endif ()
49+
if (SANITIZER)
50+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
51+
target_link_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
52+
endif ()
53+
endif ()
5354

54-
add_test(NAME ${PROJECT_NAME}_test COMMAND ${PROJECT_NAME}_test)
55+
add_test(NAME ${PROJECT_NAME}_test COMMAND ${PROJECT_NAME}_test)
5556

56-
SET(MEMORYCHECK_COMMAND_OPTIONS
57-
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
58-
--leak-check=full --show-leak-kinds=all \
59-
--error-exitcode=255")
57+
SET(MEMORYCHECK_COMMAND_OPTIONS
58+
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
59+
--leak-check=full --show-leak-kinds=all \
60+
--error-exitcode=255")
6061

61-
add_custom_target(valgrind_${PROJECT_NAME} ${CMAKE_COMMAND}
62-
-E env CTEST_OUTPUT_ON_FAILURE=1
63-
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
64-
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
65-
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
62+
add_custom_target(valgrind_${PROJECT_NAME} ${CMAKE_COMMAND}
63+
-E env CTEST_OUTPUT_ON_FAILURE=1
64+
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
65+
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
66+
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
6667

67-
add_custom_target(check_${PROJECT_NAME} ${CMAKE_COMMAND}
68-
-E env CTEST_OUTPUT_ON_FAILURE=1
69-
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
70-
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
68+
add_custom_target(check_${PROJECT_NAME} ${CMAKE_COMMAND}
69+
-E env CTEST_OUTPUT_ON_FAILURE=1
70+
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
71+
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
7172

7273
# ----------------------- - Code Coverage Start ----------------------------- #
7374

74-
if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
75-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
76-
target_compile_options(${PROJECT_NAME}_test PRIVATE --coverage)
77-
target_link_libraries(${PROJECT_NAME}_test gcov)
78-
else()
79-
message(FATAL_ERROR " Only GCC is supported for coverage")
80-
endif()
81-
endif ()
82-
83-
add_custom_target(coverage_${PROJECT_NAME})
84-
add_custom_command(
85-
TARGET coverage_${PROJECT_NAME}
86-
COMMAND lcov --capture --directory .
87-
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
88-
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
89-
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
90-
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
91-
)
92-
93-
add_dependencies(coverage_${PROJECT_NAME} check_${PROJECT_NAME})
75+
if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
76+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
77+
target_compile_options(${PROJECT_NAME}_test PRIVATE --coverage)
78+
target_link_libraries(${PROJECT_NAME}_test gcov)
79+
else()
80+
message(FATAL_ERROR " Only GCC is supported for coverage")
81+
endif()
82+
endif ()
83+
84+
add_custom_target(coverage_${PROJECT_NAME})
85+
add_custom_command(
86+
TARGET coverage_${PROJECT_NAME}
87+
COMMAND lcov --capture --directory .
88+
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
89+
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
90+
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
91+
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
92+
)
93+
94+
add_dependencies(coverage_${PROJECT_NAME} check_${PROJECT_NAME})
9495

9596
# -------------------------- Code Coverage End ------------------------------ #
96-
97-
97+
endif ()
9898
# ----------------------- Test Configuration End ---------------------------- #
9999

0 commit comments

Comments
 (0)