Skip to content

Commit ab8abe4

Browse files
authored
test (#53)
* test
1 parent 2944a7c commit ab8abe4

File tree

11 files changed

+302
-124
lines changed

11 files changed

+302
-124
lines changed

buffer/buf_test.c

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ size_t __wrap_strlen(const char *s)
279279
}
280280

281281
bool fail_vsnprintf;
282+
int fail_vsnprintf_value = -1;
282283
int fail_vsnprintf_at = -1;
283284
extern int __real_vsnprintf(char *str, size_t size, const char *format,
284285
va_list ap);
@@ -289,7 +290,7 @@ int __wrap_vsnprintf(char *str, size_t size, const char *format, va_list ap)
289290
return __real_vsnprintf(str, size, format, ap);
290291
}
291292

292-
return -1;
293+
return fail_vsnprintf_value;
293294
}
294295

295296
void fail_test()
@@ -456,6 +457,36 @@ void fail_test()
456457
fail_vsnprintf_at = -1;
457458
fail_realloc = false;
458459

460+
sc_buf_init(&buf, 3);
461+
fail_vsnprintf_at = 2;
462+
fail_vsnprintf_value = 1000000;
463+
sc_buf_put_text(&buf, "test");
464+
assert(sc_buf_valid(&buf) == false);
465+
sc_buf_term(&buf);
466+
467+
sc_buf_init(&buf, 3);
468+
fail_vsnprintf_at = 2;
469+
fail_vsnprintf_value = -1;
470+
sc_buf_put_text(&buf, "test");
471+
assert(sc_buf_valid(&buf) == false);
472+
sc_buf_term(&buf);
473+
474+
sc_buf_init(&buf, 3);
475+
fail_vsnprintf_at = 2;
476+
fail_vsnprintf_value = 1000000;
477+
sc_buf_put_fmt(&buf, "%s", "test");
478+
assert(sc_buf_valid(&buf) == false);
479+
sc_buf_term(&buf);
480+
481+
fail_vsnprintf_value = -1;
482+
fail_vsnprintf_at = -1;
483+
fail_realloc = false;
484+
485+
sc_buf_init(&buf, 3);
486+
sc_buf_put_text(&buf, "test");
487+
assert(sc_buf_valid(&buf) == true);
488+
sc_buf_term(&buf);
489+
459490
}
460491
#else
461492
void fail_test()

buffer/sc_buf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -739,7 +739,7 @@ void sc_buf_put_text(struct sc_buf *buf, const char *fmt, ...)
739739
rc = vsnprintf((char *) sc_buf_wbuf(buf) - offset, quota, fmt, args);
740740
va_end(args);
741741

742-
if (rc < 0 || (uint32_t) rc >= quota) {
742+
if (rc < 0 || (uint32_t) rc >= sc_buf_quota(buf)) {
743743
sc_buf_set_wpos(buf, 0);
744744
buf->error = SC_BUF_OOM;
745745
return;

logger/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ if(SC_BUILD_TEST)
3838
target_link_options(${PROJECT_NAME}_test PRIVATE
3939
-Wl,--wrap=fprintf,--wrap=vfprintf,--wrap=fopen,--wrap=localtime_r
4040
-Wl,--wrap=pthread_mutexattr_init,--wrap=pthread_mutex_init
41-
-Wl,--wrap=fclose)
41+
-Wl,--wrap=fclose,--wrap=ftell)
4242
endif ()
4343
endif ()
4444

logger/log_test.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,17 @@ FILE *__wrap_fopen(const char *filename, const char *mode)
160160
return NULL;
161161
}
162162

163+
bool mock_ftell = false;
164+
extern long int __real_ftell (FILE *stream);
165+
extern long int __wrap_ftell (FILE *stream)
166+
{
167+
if (mock_ftell) {
168+
return -1;
169+
}
170+
171+
return __real_ftell(stream);
172+
}
173+
163174
bool mock_fclose = false;
164175
extern int __real_fclose (FILE *__stream);
165176
int __wrap_fclose (FILE *__stream)
@@ -277,6 +288,10 @@ void fail_test(void)
277288
mock_fopen = true;
278289
assert(sc_log_set_file("prev.txt", "current.txt") == -1);
279290
mock_fopen = false;
291+
mock_ftell = true;
292+
assert(sc_log_set_file("prev.txt", "current.txt") == -1);
293+
mock_ftell = false;
294+
280295
assert(sc_log_set_file("prev.txt", "current.txt") == 0);
281296
mock_localtime_r= true;
282297
assert(sc_log_error("test") == -1);

signal/CMakeLists.txt

Lines changed: 74 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
66
set(CMAKE_C_EXTENSIONS OFF)
77

88
add_library(
9-
sc_signal SHARED
10-
sc_signal.c
11-
sc_signal.h)
9+
sc_signal SHARED
10+
sc_signal.c
11+
sc_signal.h)
1212

1313
target_include_directories(sc_signal PUBLIC ${CMAKE_CURRENT_LIST_DIR})
1414

@@ -20,18 +20,18 @@ endif ()
2020
# --------------------------------------------------------------------------- #
2121
# --------------------- Test Configuration Start ---------------------------- #
2222
# --------------------------------------------------------------------------- #
23-
if(SC_BUILD_TEST)
23+
if (SC_BUILD_TEST)
2424

25-
include(CTest)
26-
include(CheckCCompilerFlag)
25+
include(CTest)
26+
include(CheckCCompilerFlag)
2727

28-
enable_testing()
28+
enable_testing()
2929

30-
add_executable(${PROJECT_NAME}_test signal_test.c sc_signal.c)
30+
add_executable(${PROJECT_NAME}_test signal_test.c sc_signal.c)
3131

32-
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_SIZE_MAX=1400000ul)
32+
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_SIZE_MAX=1400000ul)
3333

34-
check_c_source_compiles("
34+
check_c_source_compiles("
3535
#include <execinfo.h>
3636
#include <unistd.h>
3737
@@ -42,80 +42,84 @@ if(SC_BUILD_TEST)
4242
return 0;
4343
}" HAVE_BACKTRACE)
4444

45-
FIND_LIBRARY(EXECINFO_LIBRARY NAMES execinfo)
46-
IF (EXECINFO_LIBRARY)
47-
SET(CMAKE_REQUIRED_LIBRARIES "${EXECINFO_LIBRARY}")
48-
ENDIF(EXECINFO_LIBRARY)
45+
FIND_LIBRARY(EXECINFO_LIBRARY NAMES execinfo)
46+
IF (EXECINFO_LIBRARY)
47+
SET(CMAKE_REQUIRED_LIBRARIES "${EXECINFO_LIBRARY}")
48+
ENDIF (EXECINFO_LIBRARY)
4949

50-
if (${HAVE_BACKTRACE})
51-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_BACKTRACE")
52-
endif ()
50+
if (${HAVE_BACKTRACE})
51+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_BACKTRACE")
52+
endif ()
5353

54-
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
55-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
56-
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
54+
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
55+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
56+
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
5757

58-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-omit-frame-pointer)
59-
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_HAVE_WRAP -DSC_SIGNAL_TEST)
60-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-builtin)
61-
endif ()
62-
endif ()
58+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-omit-frame-pointer)
59+
target_compile_options(${PROJECT_NAME}_test PRIVATE -DSC_HAVE_WRAP -DSC_SIGNAL_TEST)
60+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-builtin)
61+
target_link_options(${PROJECT_NAME}_test PRIVATE -Wl,--wrap=signal)
6362

64-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
65-
"${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang" OR
66-
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
63+
endif ()
64+
endif ()
6765

68-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-omit-frame-pointer)
66+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
67+
"${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang" OR
68+
"${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
6969

70-
if (SANITIZER)
71-
target_compile_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
72-
target_link_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
73-
endif ()
74-
endif ()
70+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fno-omit-frame-pointer)
7571

72+
if (SANITIZER)
73+
target_compile_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
74+
target_link_options(${PROJECT_NAME}_test PRIVATE -fsanitize=${SANITIZER})
75+
endif ()
76+
endif ()
7677

77-
add_test(NAME ${PROJECT_NAME}_test COMMAND ${PROJECT_NAME}_test)
7878

79-
SET(MEMORYCHECK_COMMAND_OPTIONS
80-
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
79+
add_test(NAME ${PROJECT_NAME}_test COMMAND ${PROJECT_NAME}_test)
80+
81+
SET(MEMORYCHECK_COMMAND_OPTIONS
82+
"-q --log-fd=2 --trace-children=yes --track-origins=yes \
8183
--leak-check=full --show-leak-kinds=all \
8284
--error-exitcode=255")
8385

84-
add_custom_target(valgrind_${PROJECT_NAME} ${CMAKE_COMMAND}
85-
-E env CTEST_OUTPUT_ON_FAILURE=1
86-
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
87-
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
88-
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
89-
90-
add_custom_target(check_${PROJECT_NAME} ${CMAKE_COMMAND}
91-
-E env CTEST_OUTPUT_ON_FAILURE=1
92-
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
93-
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
94-
95-
# ----------------------- - Code Coverage Start ----------------------------- #
96-
97-
if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
98-
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
99-
target_compile_options(${PROJECT_NAME}_test PRIVATE --coverage)
100-
target_link_libraries(${PROJECT_NAME}_test gcov)
101-
else ()
102-
message(FATAL_ERROR "Only GCC is supported for coverage")
103-
endif ()
104-
endif ()
105-
106-
add_custom_target(coverage_${PROJECT_NAME})
107-
add_custom_command(
108-
TARGET coverage_${PROJECT_NAME}
109-
COMMAND lcov --capture --directory .
110-
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
111-
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
112-
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
113-
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
114-
)
115-
116-
add_dependencies(coverage_${PROJECT_NAME} check_${PROJECT_NAME})
86+
add_custom_target(valgrind_${PROJECT_NAME} ${CMAKE_COMMAND}
87+
-E env CTEST_OUTPUT_ON_FAILURE=1
88+
${CMAKE_CTEST_COMMAND} -C $<CONFIG>
89+
--overwrite MemoryCheckCommandOptions=${MEMORYCHECK_COMMAND_OPTIONS}
90+
--verbose -T memcheck WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
91+
92+
add_custom_target(check_${PROJECT_NAME} ${CMAKE_COMMAND}
93+
-E env CTEST_OUTPUT_ON_FAILURE=1
94+
${CMAKE_CTEST_COMMAND} -C $<CONFIG> --verbose
95+
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
96+
97+
# ------------------------- Code Coverage Start ----------------------------- #
98+
99+
if (${CMAKE_BUILD_TYPE} MATCHES "Coverage")
100+
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
101+
target_compile_options(${PROJECT_NAME}_test PRIVATE --coverage)
102+
target_link_libraries(${PROJECT_NAME}_test gcov)
103+
else ()
104+
message(FATAL_ERROR "Only GCC is supported for coverage")
105+
endif ()
106+
endif ()
107+
108+
add_custom_target(coverage_${PROJECT_NAME})
109+
add_custom_command(
110+
TARGET coverage_${PROJECT_NAME}
111+
COMMAND lcov --capture --directory .
112+
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
113+
COMMAND lcov --remove coverage.info '/usr/*' '*example*' '*test*'
114+
--output-file coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
115+
COMMAND lcov --list coverage.info --rc lcov_branch_coverage=1 --rc lcov_excl_br_line='assert'
116+
)
117+
118+
add_dependencies(coverage_${PROJECT_NAME} check_${PROJECT_NAME})
117119

118120
# -------------------------- Code Coverage End ------------------------------ #
121+
119122
endif ()
123+
120124
# ----------------------- Test Configuration End ---------------------------- #
121125

0 commit comments

Comments
 (0)