Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build test on debug only #45

Merged
merged 5 commits into from
Feb 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 41 additions & 36 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,15 @@ endif ()
message(STATUS "Build type ${CMAKE_BUILD_TYPE}")

option(SC_BUILD_TEST "Build tests" ON)
if(NOT SC_BUILD_TEST)
message(STATUS "Turned off building tests because SC is a subproject.")
message(STATUS "Turned off coverage because SC is a subproject.")
endif()
if (NOT SC_BUILD_TEST)
message(STATUS "Turned off building tests because SC is a subproject.")
message(STATUS "Turned off coverage because SC is a subproject.")
endif ()

if (NOT ${CMAKE_BUILD_TYPE} MATCHES "Debug" AND NOT ${CMAKE_BUILD_TYPE} MATCHES "Coverage")
SET(SC_BUILD_TEST OFF CACHE BOOL "Turn off sc_lib tests" FORCE)
message(STATUS "Not building tests, SC tests are supported in Debug build only.")
endif ()

add_subdirectory(array)
add_subdirectory(buffer)
Expand Down Expand Up @@ -43,47 +48,47 @@ add_subdirectory(uri)
# --------------------------------------------------------------------------- #
# --------------------- Test Configuration Start ---------------------------- #
# --------------------------------------------------------------------------- #
if(SC_BUILD_TEST)
# ----------------------- - Code Coverage Start ----------------------------- #
if (SC_BUILD_TEST)
# ----------------------- - Code Coverage Start ----------------------------- #

if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(--coverage)
link_libraries(gcov)
else()
message(FATAL_ERROR "Only GCC is supported for coverage")
endif()
endif ()
if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(--coverage)
link_libraries(gcov)
else ()
message(FATAL_ERROR "Only GCC is supported for coverage")
endif ()
endif ()

add_custom_target(coverage)
add_custom_command(
TARGET coverage
COMMAND lcov --capture --directory .
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
)
add_custom_target(coverage)
add_custom_command(
TARGET coverage
COMMAND lcov --capture --directory .
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
)

# -------------------------- Code Coverage End ------------------------------ #
# -------------------------- Code Coverage End ------------------------------ #

SET(MEMORYCHECK_COMMAND_OPTIONS
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
SET(MEMORYCHECK_COMMAND_OPTIONS
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
--leak-check=full --show-leak-kinds=all \
--error-exitcode=255")

add_custom_target(valgrind ${CMAKE_COMMAND}
-E env CTEST_OUTPUT_ON_FAILURE=1
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
add_custom_target(valgrind ${CMAKE_COMMAND}
-E env CTEST_OUTPUT_ON_FAILURE=1
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

add_custom_target(check ${CMAKE_COMMAND}
-E env CTEST_OUTPUT_ON_FAILURE=1
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
add_custom_target(check ${CMAKE_COMMAND}
-E env CTEST_OUTPUT_ON_FAILURE=1
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

add_dependencies(coverage check)
add_dependencies(coverage check)

endif ()
# ----------------------- Test Configuration End ---------------------------- #
2 changes: 2 additions & 0 deletions condition/sc_cond.c
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ void sc_cond_signal(struct sc_cond *cond, void *data)
// This won't fail as long as we pass correct params.
rc = pthread_cond_signal(&cond->cond);
assert(rc == 0);
(void) rc;

pthread_mutex_unlock(&cond->mtx);
}
Expand All @@ -174,6 +175,7 @@ void *sc_cond_wait(struct sc_cond *cond)
// This won't fail as long as we pass correct params.
rc = pthread_cond_wait(&cond->cond, &cond->mtx);
assert(rc == 0);
(void) rc;
}

data = cond->data;
Expand Down
3 changes: 3 additions & 0 deletions mutex/sc_mutex.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ int sc_mutex_init(struct sc_mutex *mtx)
// This won't fail as long as we pass correct param.
rv = pthread_mutexattr_destroy(&attr);
assert(rv == 0);
(void) rv;

return rc != 0 ? -1 : 0;
}
Expand All @@ -98,6 +99,7 @@ void sc_mutex_lock(struct sc_mutex *mtx)
// This won't fail as long as we pass correct param.
rc = pthread_mutex_lock(&mtx->mtx);
assert(rc == 0);
(void) rc;
}

void sc_mutex_unlock(struct sc_mutex *mtx)
Expand All @@ -107,6 +109,7 @@ void sc_mutex_unlock(struct sc_mutex *mtx)
// This won't fail as long as we pass correct param.
rc = pthread_mutex_unlock(&mtx->mtx);
assert(rc == 0);
(void) rc;
}

#endif
5 changes: 3 additions & 2 deletions signal/sc_signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -510,12 +510,13 @@ int sc_signal_init()

void sc_signal_log(int fd, char *buf, size_t len, char *fmt, ...)
{
int written;
int written, rc;
va_list args;

va_start(args, fmt);
written = sc_signal_vsnprintf(buf, len, fmt, args);
va_end(args);

(void) write(fd, buf, (size_t) written);
rc = write(fd, buf, (size_t) written);
(void) rc;
}
6 changes: 3 additions & 3 deletions thread/sc_thread.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ int sc_thread_start(struct sc_thread *thread, void *(*fn)(void *), void *arg)

rc = pthread_attr_init(&attr);
if (rc != 0) {
strncpy(thread->err, strerror(rc), sizeof(thread->err));
strncpy(thread->err, strerror(rc), sizeof(thread->err) - 1);
return -1;
}

Expand All @@ -124,7 +124,7 @@ int sc_thread_start(struct sc_thread *thread, void *(*fn)(void *), void *arg)

rc = pthread_create(&thread->id, &attr, fn, arg);
if (rc != 0) {
strncpy(thread->err, strerror(rc), sizeof(thread->err));
strncpy(thread->err, strerror(rc), sizeof(thread->err) - 1);
}

// This may only fail with EINVAL.
Expand All @@ -144,7 +144,7 @@ int sc_thread_join(struct sc_thread *thread, void **ret)

rc = pthread_join(thread->id, &val);
if (rc != 0) {
strncpy(thread->err, strerror(rc), sizeof(thread->err));
strncpy(thread->err, strerror(rc), sizeof(thread->err) - 1);
}

thread->id = 0;
Expand Down
4 changes: 4 additions & 0 deletions time/sc_time.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ uint64_t sc_time_ms()

rc = clock_gettime(CLOCK_REALTIME, &ts);
assert(rc == 0);
(void) rc;

return ts.tv_sec * 1000 + (uint64_t)(ts.tv_nsec / 10e6);
#endif
Expand All @@ -76,6 +77,7 @@ uint64_t sc_time_ns()

rc = clock_gettime(CLOCK_REALTIME, &ts);
assert(rc == 0);
(void) rc;

return ts.tv_sec * (uint64_t)1000000000 + ts.tv_nsec;
#endif
Expand All @@ -101,6 +103,7 @@ uint64_t sc_time_mono_ms()

rc = clock_gettime(CLOCK_MONOTONIC, &ts);
assert(rc == 0);
(void) rc;

return (uint64_t)((uint64_t) ts.tv_sec * 1000 +
(uint64_t) ts.tv_nsec / 1000000);
Expand All @@ -126,6 +129,7 @@ uint64_t sc_time_mono_ns()

rc = clock_gettime(CLOCK_MONOTONIC, &ts);
assert(rc == 0);
(void) rc;

return ((uint64_t) ts.tv_sec * 1000000000 + (uint64_t) ts.tv_nsec);
#endif
Expand Down