diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b9d0af..48fff69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,7 +92,8 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) --src=${PROJECT_SOURCE_DIR}/src/eztest/eztest.h --prefix=${PROJECT_BINARY_DIR}/${EZTEST_INTERNAL_PREFIX_} --dst=eztest.h --trim-pragmas - DEPENDS ${PROJECT_SOURCE_DIR}/src/eztest/eztest-api.h + DEPENDS ${PROJECT_SOURCE_DIR}/src/eztest/eztest-algo.h + ${PROJECT_SOURCE_DIR}/src/eztest/eztest-api.h ${PROJECT_SOURCE_DIR}/src/eztest/eztest-arch.h ${PROJECT_SOURCE_DIR}/src/eztest/eztest-asserts-impl.h ${PROJECT_SOURCE_DIR}/src/eztest/eztest-c-asserts-impl.h diff --git a/src/eztest/eztest-algo.h b/src/eztest/eztest-algo.h new file mode 100644 index 0000000..021f636 --- /dev/null +++ b/src/eztest/eztest-algo.h @@ -0,0 +1,17 @@ +#ifndef EZTEST_D_EZTEST_D_EZTEST_ALGO_H_ +#define EZTEST_D_EZTEST_D_EZTEST_ALGO_H_ + +#include "eztest-lang.h" + +#if EZTEST_CXX_LANG_ +/* NOLINTBEGIN(llvmlibc-restrict-system-libc-headers) */ +# include +/* NOLINTEND(llvmlibc-restrict-system-libc-headers) */ +# define EZTEST_MIN_(eztest_lhs, eztest_rhs) \ + EZTEST_STD_NS_ min(eztest_lhs, eztest_rhs) +#else +# define EZTEST_MIN_(eztest_lhs, eztest_rhs) \ + ((eztest_lhs) < (eztest_rhs) ? (eztest_lhs) : (eztest_rhs)) +#endif + +#endif diff --git a/src/eztest/eztest-containers.h b/src/eztest/eztest-containers.h index ad8eb84..ee45ca8 100644 --- a/src/eztest/eztest-containers.h +++ b/src/eztest/eztest-containers.h @@ -6,16 +6,17 @@ #if EZTEST_CXX_LANG_ >= 2011 +/* NOLINTBEGIN(llvmlibc-restrict-system-libc-headers) */ # include +/* NOLINTEND(llvmlibc-restrict-system-libc-headers) */ # define EZTEST_ARR_BUILDER_(name, T, k_n) EZTEST_STD_NS_ array name # define EZTEST_ARR_T_INIT_ \ - { \ - { 0 } \ - } + { \ + { 0 } \ + } #else # define EZTEST_ARR_BUILDER_(name, T, k_n) T name[k_n] -# define EZTEST_ARR_T_INIT_ \ - { 0 } +# define EZTEST_ARR_T_INIT_ { 0 } #endif #endif diff --git a/src/eztest/eztest-cxx-asserts-impl.h b/src/eztest/eztest-cxx-asserts-impl.h index 43d7c8c..a591b7b 100644 --- a/src/eztest/eztest-cxx-asserts-impl.h +++ b/src/eztest/eztest-cxx-asserts-impl.h @@ -344,7 +344,7 @@ class eztest_cxx_binop_streq_t : public EZTEST_NS_ eztest_cxx_print_var_t { eztest_cxx_run(const EZTEST_STD_NS_ string & eztest_op0, const EZTEST_STD_NS_ string_view & eztest_op1) { EZTEST_DISABLE_WAGGREGATE_RETURN_ - EZTEST_STD_NS_ string_view eztest_op0_sv(eztest_op0); + const EZTEST_STD_NS_ string_view eztest_op0_sv(eztest_op0); EZTEST_REENABLE_WAGGREGATE_RETURN_ return EZTEST_STD_NS_ operator==(eztest_op0_sv, eztest_op1); } @@ -353,7 +353,7 @@ class eztest_cxx_binop_streq_t : public EZTEST_NS_ eztest_cxx_print_var_t { eztest_cxx_run(const EZTEST_STD_NS_ string_view & eztest_op0, const EZTEST_STD_NS_ string & eztest_op1) { EZTEST_DISABLE_WAGGREGATE_RETURN_ - EZTEST_STD_NS_ string_view eztest_op1_sv(eztest_op1); + const EZTEST_STD_NS_ string_view eztest_op1_sv(eztest_op1); EZTEST_REENABLE_WAGGREGATE_RETURN_ return EZTEST_STD_NS_ operator==(eztest_op0, eztest_op1_sv); } diff --git a/src/eztest/eztest-lang.h b/src/eztest/eztest-lang.h index bf258cb..80da125 100644 --- a/src/eztest/eztest-lang.h +++ b/src/eztest/eztest-lang.h @@ -10,20 +10,20 @@ # define EZTEST_STRUCT_ # define EZTEST_NAMESPACE_BEGIN_ \ - EZTEST_DISABLE_WNAMESPACES_ \ - namespace eztest { + EZTEST_DISABLE_WNAMESPACES_ \ + namespace eztest { # define EZTEST_NAMESPACE_END_ \ - } \ - EZTEST_REENABLE_WNAMESPACES_ + } \ + EZTEST_REENABLE_WNAMESPACES_ # define EZTEST_NS_ \ - /* NOLINTBEGIN(llvmlibc-callee-namespace) */ \ - eztest::/* NOLINTEND(llvmlibc-callee-namespace) */ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ \ + eztest::/* NOLINTEND(llvmlibc-callee-namespace) */ # define EZTEST_STD_NS_ \ - /* NOLINTBEGIN(llvmlibc-callee-namespace) */ \ - std::/* NOLINTEND(llvmlibc-callee-namespace) */ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ \ + std::/* NOLINTEND(llvmlibc-callee-namespace) */ # define EZTEST_VOID_ARG_ @@ -32,17 +32,17 @@ # endif # define EZTEST_PRIVATE_CXX_INL_ /* NOLINTBEGIN(llvmlibc-inl*-func*-decl) */ \ - static EZTEST_INLINE_ /* NOLINTEND(llvmlibc-inl*-func*-decl) */ + static EZTEST_INLINE_ /* NOLINTEND(llvmlibc-inl*-func*-decl) */ # define EZTEST_PRIVATE_ \ - /* NOLINTBEGIN(llvmlibc-inl*-func*-decl) */ \ - static /* NOLINTEND(llvmlibc-inl*-func*-decl) */ + /* NOLINTBEGIN(llvmlibc-inl*-func*-decl) */ \ + static /* NOLINTEND(llvmlibc-inl*-func*-decl) */ # if EZTEST_CXX_LANG_ >= 2011 # define EZTEST_NULL_ \ - EZTEST_DISABLE_WCXX98_COMPAT_ nullptr EZTEST_REENABLE_WCXX98_COMPAT_ + EZTEST_DISABLE_WCXX98_COMPAT_ nullptr EZTEST_REENABLE_WCXX98_COMPAT_ # else # include /* NULL. */ # define EZTEST_NULL_ NULL @@ -50,16 +50,16 @@ # define EZTEST_CAST_(type, expr) static_cast(expr) # define EZTEST_REINTERPRET_CAST_(type, var) \ - /* NOLINTBEGIN(cppcoreguidelines-pro-type-reinterpret-cast) */ \ - reinterpret_cast( \ - var) /* NOLINTEND(cppcoreguidelines-pro-type-reinterpret-cast) */ + /* NOLINTBEGIN(cppcoreguidelines-pro-type-reinterpret-cast) */ \ + reinterpret_cast( \ + var) /* NOLINTEND(cppcoreguidelines-pro-type-reinterpret-cast) */ # if EZTEST_CXX_LANG_ >= 2011 # define EZTEST_STATIC_ASSERT_MSG_(cond, msg) \ - EZTEST_DISABLE_WCXX98_COMPAT_ static_assert(cond, msg) \ - EZTEST_REENABLE_WCXX98_COMPAT_ + EZTEST_DISABLE_WCXX98_COMPAT_ static_assert(cond, msg) \ + EZTEST_REENABLE_WCXX98_COMPAT_ # define EZTEST_AUTO_(eztest_unused_A0) \ - EZTEST_DISABLE_WCXX98_COMPAT_ auto EZTEST_REENABLE_WCXX98_COMPAT_ + EZTEST_DISABLE_WCXX98_COMPAT_ auto EZTEST_REENABLE_WCXX98_COMPAT_ # endif @@ -79,7 +79,7 @@ # endif # define EZTEST_PRIVATE_ /* NOLINTBEGIN(llvmlibc-inline-function-decl) */ \ - static /* NOLINTEND(llvmlibc-inline-function-decl) */ + static /* NOLINTEND(llvmlibc-inline-function-decl) */ # define EZTEST_PRIVATE_CXX_INL_ EZTEST_PRIVATE_ @@ -102,9 +102,9 @@ #ifndef EZTEST_STATIC_ASSERT_MSG_ # define EZTEST_STATIC_ASSERT_MSG_(cond, msg) \ - struct EZTEST_UNIQUE_NAME_(eztest_static_assertion) { \ - char EZTEST_UNIQUE_NAME_(eztest_x_)[(cond) ? 1 : -1]; \ - } + struct EZTEST_UNIQUE_NAME_(eztest_static_assertion) { \ + char EZTEST_UNIQUE_NAME_(eztest_x_)[(cond) ? 1 : -1]; \ + } #endif @@ -116,9 +116,9 @@ #define EZTEST_STRUCT_NS_ EZTEST_STRUCT_ EZTEST_NS_ #define EZTEST_UNIMPLEMENTED_(name) \ - EZTEST_STATIC_ASSERT_MSG_(0, name " is unimplemented") + EZTEST_STATIC_ASSERT_MSG_(0, name " is unimplemented") #define EZTEST_STATIC_ASSERT_(cond) \ - EZTEST_STATIC_ASSERT_MSG_(cond, EZTEST_STRINGIFY_(cond)) + EZTEST_STATIC_ASSERT_MSG_(cond, EZTEST_STRINGIFY_(cond)) #endif diff --git a/src/eztest/eztest-libc.h b/src/eztest/eztest-libc.h index 13deb41..ce8d73a 100644 --- a/src/eztest/eztest-libc.h +++ b/src/eztest/eztest-libc.h @@ -6,18 +6,21 @@ #include "eztest-lang.h" #include "eztest-libc-incs.h" - -#define EZTEST_EXIT_ EZTEST_STD_NS_ exit +/* TODO: Wrap the call to exit in a mutex. */ +#define EZTEST_EXIT_ /* NOLINTBEGIN(concurrency-mt-unsafe) */ \ + EZTEST_STD_NS_ exit /* NOLINTEND(concurrency-mt-unsafe) */ EZTEST_DISABLE_WCXX98_COMPAT_PEDANTIC_ #define EZTEST_PRINTF_(...) \ - /* NOLINTBEGIN(clang-ana*-sec*.insecureAPI.Depr*OrUnsafeBufferHandling) */ \ - /* NOLINTBEGIN(cppcoreguide*-pro-type-vararg,hicpp-vararg) */ \ - EZTEST_STD_NS_ fprintf( \ - EZTEST_STDOUT_, \ - __VA_ARGS__) /* NOLINTEND(cppcoreguide*-pro-type-vararg,hicpp-vararg) */ \ + /* NOLINTBEGIN(clang-ana*-sec*.insecureAPI.Depr*OrUnsafeBufferHandling) */ \ + /* NOLINTBEGIN(cppcoreguide*-pro-type-vararg,hicpp-vararg) */ \ + EZTEST_STD_NS_ fprintf( \ + EZTEST_STDOUT_, \ + __VA_ARGS__) /* NOLINTEND(cppcoreguide*-pro-type-vararg,hicpp-vararg) \ + */ \ \ - /* NOLINTEND(clang-ana*-sec*.insecureAPI.Depr*OrUnsafeBufferHandling) */ + /* NOLINTEND(clang-ana*-sec*.insecureAPI.Depr*OrUnsafeBufferHandling) \ + */ EZTEST_REENABLE_WCXX98_COMPAT_PEDANTIC_ @@ -25,8 +28,8 @@ EZTEST_REENABLE_WCXX98_COMPAT_PEDANTIC_ #define EZTEST_FFLUSH_ EZTEST_STD_NS_ fflush #define EZTEST_ERRNO_ errno #define EZTEST_STDOUT_ \ - EZTEST_DISABLE_WDISABLED_MACRO_EXPANSION_ stdout \ - EZTEST_REENABLE_WDISABLED_MACRO_EXPANSION_ + EZTEST_DISABLE_WDISABLED_MACRO_EXPANSION_ stdout \ + EZTEST_REENABLE_WDISABLED_MACRO_EXPANSION_ /* strerror is safe here. We have complete control of the threads and know in the parent proc there will only be 1 thread (the @@ -37,17 +40,17 @@ EZTEST_REENABLE_WCXX98_COMPAT_PEDANTIC_ # define EZTEST_STRERROR_R_(errnum, buf, bufsz) strerror_r(errnum, buf, bufsz) # else # define EZTEST_STRERROR_R_(errnum, buf, bufsz) \ - (strerror_r(errnum, buf, bufsz) == 0 ? &((buf)[0]) : "Unknown error") + (strerror_r(errnum, buf, bufsz) == 0 ? &((buf)[0]) : "Unknown error") # endif #else # if EZTEST_CXX_LANG_ # define EZTEST_STRERROR_R_(errnum, buf, bufsz) \ - /* NOLINTBEGIN(concurrency-mt-unsafe) */ \ - std::strerror(errnum) /* NOLINTEND(concurrency-mt-unsafe) */ + /* NOLINTBEGIN(concurrency-mt-unsafe) */ \ + std::strerror(errnum) /* NOLINTEND(concurrency-mt-unsafe) */ # else # define EZTEST_STRERROR_R_(errnum, buf, bufsz) \ - /* NOLINTBEGIN(concurrency-mt-unsafe) */ \ - strerror(errnum) /* NOLINTEND(concurrency-mt-unsafe) */ + /* NOLINTBEGIN(concurrency-mt-unsafe) */ \ + strerror(errnum) /* NOLINTEND(concurrency-mt-unsafe) */ # endif #endif @@ -85,7 +88,7 @@ EZTEST_NAMESPACE_END_ #define EZTEST_STRCMP_(lhs, rhs) EZTEST_STD_NS_ strcmp(lhs, rhs) #define EZTEST_STARTSWITH_(prefix, str) \ - (EZTEST_STD_NS_ strncmp(prefix, str, EZTEST_STD_NS_ strlen(prefix)) == 0) + (EZTEST_STD_NS_ strncmp(prefix, str, EZTEST_STD_NS_ strlen(prefix)) == 0) #define EZTEST_MEMCPY_(dst, src, sz) EZTEST_STD_NS_ memcpy(dst, src, sz) #define EZTEST_MEMSET_(dst, val, sz) EZTEST_STD_NS_ memset(dst, val, sz) @@ -93,8 +96,8 @@ EZTEST_NAMESPACE_END_ #if EZTEST_POSIX_VERSION_ >= 200809L || EZTEST_GNU_SOURCE_ != 0 # define EZTEST_STRNLEN_(str, maxlen) \ - /* NOLINTBEGIN(llvmlibc-callee-namespace) */ \ - strnlen(str, maxlen) /* NOLINTEND(llvmlibc-callee-namespace) */ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ \ + strnlen(str, maxlen) /* NOLINTEND(llvmlibc-callee-namespace) */ #else EZTEST_NAMESPACE_BEGIN_ @@ -119,11 +122,11 @@ EZTEST_NAMESPACE_END_ #if EZTEST_GNU_SOURCE_ != 0 # define EZTEST_STRCASECMP_(lhs, rhs) \ - /* NOLINTBEGIN(llvmlibc-callee-namespace) */ strcasecmp( \ - lhs, rhs) /* NOLINTEND(llvmlibc-callee-namespace) */ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ strcasecmp( \ + lhs, rhs) /* NOLINTEND(llvmlibc-callee-namespace) */ # define EZTEST_STRNCASECMP_(lhs, rhs, len) \ - /* NOLINTBEGIN(llvmlibc-callee-namespace) */ strncasecmp( \ - lhs, rhs, len) /* NOLINTEND(llvmlibc-callee-namespace) */ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ strncasecmp( \ + lhs, rhs, len) /* NOLINTEND(llvmlibc-callee-namespace) */ #else EZTEST_NAMESPACE_BEGIN_ @@ -190,7 +193,7 @@ EZTEST_REENABLE_WUNUSED_FUNCTION_ EZTEST_NAMESPACE_END_ # define EZTEST_STRCASECMP_(lhs, rhs) EZTEST_NS_ eztest_strcasecmp(lhs, rhs) # define EZTEST_STRNCASECMP_(lhs, rhs, len) \ - EZTEST_NS_ eztest_strncasecmp(lhs, rhs, len) + EZTEST_NS_ eztest_strncasecmp(lhs, rhs, len) #endif #endif diff --git a/src/eztest/eztest-results.h b/src/eztest/eztest-results.h index 88d5024..4ebfbdd 100644 --- a/src/eztest/eztest-results.h +++ b/src/eztest/eztest-results.h @@ -19,7 +19,7 @@ struct eztest_results_t { EZTEST_REENABLE_WPADDED_ #define EZTEST_RESULTS_T_ EZTEST_STRUCT_NS_ eztest_results_t #define EZTEST_RESULTS_T_INIT_ \ - { EZTEST_DURATION_T_INIT_, EZTEST_ARR_T_INIT_, 0 } + { EZTEST_DURATION_T_INIT_, EZTEST_ARR_T_INIT_, 0 } EZTEST_PRIVATE_ unsigned @@ -27,6 +27,7 @@ eztest_results_count_failed(const EZTEST_RESULTS_T_ * eztest_results) { unsigned eztest_cnt = 0; EZTEST_DISABLE_WUNSAFE_BUFFER_USAGE_ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ eztest_cnt += eztest_results->eztest_stats_[EZTEST_NS_ eztest_k_status_fail]; eztest_cnt += @@ -35,6 +36,7 @@ eztest_results_count_failed(const EZTEST_RESULTS_T_ * eztest_results) { eztest_results->eztest_stats_[EZTEST_NS_ eztest_k_status_fail_unknown]; eztest_cnt += eztest_results->eztest_stats_[EZTEST_NS_ eztest_k_status_fail_timeout]; + /* NOLINTEND(llvmlibc-callee-namespace) */ EZTEST_REENABLE_WUNSAFE_BUFFER_USAGE_ return eztest_cnt; } @@ -44,7 +46,9 @@ EZTEST_PRIVATE_ unsigned eztest_results_count_passed(const EZTEST_RESULTS_T_ * eztest_results) { EZTEST_DISABLE_WUNSAFE_BUFFER_USAGE_ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ return eztest_results->eztest_stats_[EZTEST_NS_ eztest_k_status_passed]; + /* NOLINTEND(llvmlibc-callee-namespace) */ EZTEST_REENABLE_WUNSAFE_BUFFER_USAGE_ } @@ -53,7 +57,9 @@ EZTEST_PRIVATE_ unsigned eztest_results_count_disabled(const EZTEST_RESULTS_T_ * eztest_results) { EZTEST_DISABLE_WUNSAFE_BUFFER_USAGE_ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ return eztest_results->eztest_stats_[EZTEST_NS_ eztest_k_status_disabled]; + /* NOLINTEND(llvmlibc-callee-namespace) */ EZTEST_REENABLE_WUNSAFE_BUFFER_USAGE_ } @@ -62,7 +68,9 @@ EZTEST_PRIVATE_ unsigned eztest_results_count_unknown(const EZTEST_RESULTS_T_ * eztest_results) { EZTEST_DISABLE_WUNSAFE_BUFFER_USAGE_ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ return eztest_results->eztest_stats_[EZTEST_NS_ eztest_k_status_unknown]; + /* NOLINTEND(llvmlibc-callee-namespace) */ EZTEST_REENABLE_WUNSAFE_BUFFER_USAGE_ } @@ -72,12 +80,14 @@ eztest_results_count_internal_errors(const EZTEST_RESULTS_T_ * eztest_results) { unsigned eztest_cnt = 0; EZTEST_DISABLE_WUNSAFE_BUFFER_USAGE_ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ eztest_cnt += eztest_results ->eztest_stats_[EZTEST_NS_ eztest_k_status_internal_error]; eztest_cnt += eztest_results ->eztest_stats_[EZTEST_NS_ eztest_k_status_internal_fatal_error]; + /* NOLINTEND(llvmlibc-callee-namespace) */ EZTEST_REENABLE_WUNSAFE_BUFFER_USAGE_ return eztest_cnt; } diff --git a/src/eztest/eztest-run.h b/src/eztest/eztest-run.h index 5c31f60..c2f83a6 100644 --- a/src/eztest/eztest-run.h +++ b/src/eztest/eztest-run.h @@ -1,6 +1,7 @@ #ifndef EZTEST_D_EZTEST_D_EZTEST_RUN_H_ #define EZTEST_D_EZTEST_D_EZTEST_RUN_H_ +#include "eztest-algo.h" #include "eztest-duration.h" #include "eztest-fail.h" #include "eztest-group-it.h" @@ -183,13 +184,17 @@ eztest_run_tests(const EZTEST_LIST_T_ * eztest_tests_base, return 1; } } - if (eztest_run_result > EZTEST_NS_ eztest_k_status_unknown) { - eztest_run_result = EZTEST_NS_ eztest_k_status_unknown; - } + /* Clamp return value. */ + eztest_run_result = EZTEST_MIN_( + eztest_run_result, + EZTEST_CAST_(unsigned, EZTEST_NS_ eztest_k_status_unknown)); + eztest_test->eztest_status_ = eztest_run_result; EZTEST_DISABLE_WUNSAFE_BUFFER_USAGE_ /* NOLINTBEGIN(cppcoreguidelines-pro-bounds-constant-array-index) */ + /* NOLINTBEGIN(llvmlibc-callee-namespace) */ ++eztest_results->eztest_stats_[eztest_run_result]; + /* NOLINTEND(llvmlibc-callee-namespace) */ /* NOLINTEND(cppcoreguidelines-pro-bounds-constant-array-index) */ EZTEST_REENABLE_WUNSAFE_BUFFER_USAGE_ } diff --git a/src/eztest/eztest-time.h b/src/eztest/eztest-time.h index 24998be..efce97c 100644 --- a/src/eztest/eztest-time.h +++ b/src/eztest/eztest-time.h @@ -7,8 +7,9 @@ #include "eztest-system.h" #define EZTEST_CXX_HAS_TS_ \ - (EZTEST_CXX_LANG_ >= 2020 || \ - (EZTEST_CXX_LANG_ >= 2017 && EZTEST_USING_GCC_ >= EZTEST_VERNUM_(9, 0, 0))) + (EZTEST_CXX_LANG_ >= 2020 || \ + (EZTEST_CXX_LANG_ >= 2017 && \ + EZTEST_USING_GCC_ >= EZTEST_VERNUM_(9, 0, 0))) #if EZTEST_CXX_HAS_TS_ || (EZTEST_C_LANG_ >= 2011) || \ (EZTEST_POSIX_VERSION_ >= 199309L) @@ -39,8 +40,7 @@ #endif -#define EZTEST_TIME_T_INIT_ \ - { 0, 0 } +#define EZTEST_TIME_T_INIT_ { 0, 0 } #define EZTEST_TIME_GET_(tsp) EZTEST_NS_ eztest_time_get(tsp) #define EZTEST_TIME_AS_MS_(tsp) EZTEST_NS_ eztest_time_timespec_to_ms(tsp) @@ -74,11 +74,11 @@ EZTEST_PRIVATE_ int64_t eztest_time_timespec_to_ms(const EZTEST_TIME_T_ * eztest_ts) { #if EZTEST_TIME_IS_TIMESPEC_ - return EZTEST_CAST_(int64_t, eztest_ts->tv_sec) * EZTEST_MSEC_TO_SEC_L_ + - EZTEST_CAST_(int64_t, eztest_ts->tv_nsec) / (EZTEST_USEC_TO_SEC_L_); + return (EZTEST_CAST_(int64_t, eztest_ts->tv_sec) * EZTEST_MSEC_TO_SEC_L_) + + (EZTEST_CAST_(int64_t, eztest_ts->tv_nsec) / EZTEST_USEC_TO_SEC_L_); #else - return EZTEST_CAST_(int64_t, eztest_ts->tv_sec) * EZTEST_MSEC_TO_SEC_L_ + - EZTEST_CAST_(int64_t, eztest_ts->tv_usec) / (EZTEST_MSEC_TO_SEC_L_); + return (EZTEST_CAST_(int64_t, eztest_ts->tv_sec) * EZTEST_MSEC_TO_SEC_L_) + + (EZTEST_CAST_(int64_t, eztest_ts->tv_usec) / EZTEST_MSEC_TO_SEC_L_); #endif } EZTEST_NAMESPACE_END_ diff --git a/src/eztest/eztest.h b/src/eztest/eztest.h index 1b04e40..8b7aee0 100644 --- a/src/eztest/eztest.h +++ b/src/eztest/eztest.h @@ -32,6 +32,8 @@ /* * Disable warnings that are inevitable in implementation: * The following warnings are present / disabled: + * + * -Waggregate-returns * -Wcxx98-compat * -Wcxx98-compat-pedantic * -Wdouble-promotion diff --git a/tests/cmake/static-analysis.cmake b/tests/cmake/static-analysis.cmake index d23eeea..70864f0 100644 --- a/tests/cmake/static-analysis.cmake +++ b/tests/cmake/static-analysis.cmake @@ -9,6 +9,7 @@ set(CMAKE_FIND_PACKAGE_SORT_DIRECTION DEC) option(EZTEST_CLANG_TIDY "Path: path to clang tidy executable") set(EZTEST_CLANG_TIDY_EXE_NAMES_ + clang-tidy-20 clang-tidy-19 clang-tidy-18 clang-tidy-17 diff --git a/tests/test-complete.c b/tests/test-complete.c index 754396b..3004b6d 100644 --- a/tests/test-complete.c +++ b/tests/test-complete.c @@ -809,7 +809,9 @@ TEST(fpe, assert_double_near16_okay) { /* NOLINTBEGIN(*-magic-numbers) */ float fp0 = 1.10001F; float fp1 = 1.1F; + /* NOLINTBEGIN(performance-type-promotion-in-math-fn) */ ASSERT_NEAR(fp0, fp1, .0001); + /* NOLINTEND(performance-type-promotion-in-math-fn) */ /* NOLINTEND(*-magic-numbers) */ } @@ -817,7 +819,9 @@ TEST(fpe, assert_double_near17_okay) { /* NOLINTBEGIN(*-magic-numbers) */ float fp0 = 1.10001F; float fp1 = 1.1F; + /* NOLINTBEGIN(performance-type-promotion-in-math-fn) */ ASSERT_NEAR(fp0, fp1, .0001F); + /* NOLINTEND(performance-type-promotion-in-math-fn) */ /* NOLINTEND(*-magic-numbers) */ } @@ -1067,7 +1071,9 @@ TEST(fpe, assert_long_double_near16_okay) { float fp0 = 1.10001F; float fp1 = 1.1F; TS_DISABLE_WIMPLICIT_FLOAT_CONVERSION_ + /* NOLINTBEGIN(performance-type-promotion-in-math-fn) */ ASSERT_NEAR(fp0, fp1, .0001); + /* NOLINTEND(performance-type-promotion-in-math-fn) */ TS_REENABLE_WIMPLICIT_FLOAT_CONVERSION_ /* NOLINTEND(*-magic-numbers) */ } @@ -1079,7 +1085,9 @@ TEST(fpe, assert_long_double_near17_okay) { TS_DISABLE_WIMPLICIT_FLOAT_CONVERSION_ TS_DISABLE_WABSOLUTE_VALUE_ TS_DISABLE_WCONVERSION_ + /* NOLINTBEGIN(performance-type-promotion-in-math-fn) */ ASSERT_NEAR(fp0, fp1, .0001L); + /* NOLINTEND(performance-type-promotion-in-math-fn) */ TS_REENABLE_WCONVERSION_ TS_REENABLE_WABSOLUTE_VALUE_ TS_REENABLE_WIMPLICIT_FLOAT_CONVERSION_ @@ -1923,7 +1931,9 @@ TEST(fpe, expect_double_near16_okay) { /* NOLINTBEGIN(*-magic-numbers) */ float fp0 = 1.10001F; float fp1 = 1.1F; + /* NOLINTBEGIN(performance-type-promotion-in-math-fn) */ EXPECT_NEAR(fp0, fp1, .0001); + /* NOLINTEND(performance-type-promotion-in-math-fn) */ /* NOLINTEND(*-magic-numbers) */ } @@ -1931,7 +1941,9 @@ TEST(fpe, expect_double_near17_okay) { /* NOLINTBEGIN(*-magic-numbers) */ float fp0 = 1.10001F; float fp1 = 1.1F; + /* NOLINTBEGIN(performance-type-promotion-in-math-fn) */ EXPECT_NEAR(fp0, fp1, .0001F); + /* NOLINTEND(performance-type-promotion-in-math-fn) */ /* NOLINTEND(*-magic-numbers) */ } @@ -2179,7 +2191,9 @@ TEST(fpe, expect_long_double_near16_okay) { /* NOLINTBEGIN(*-magic-numbers) */ float fp0 = 1.10001F; float fp1 = 1.1F; + /* NOLINTBEGIN(performance-type-promotion-in-math-fn) */ EXPECT_NEAR(fp0, fp1, .0001); + /* NOLINTEND(performance-type-promotion-in-math-fn) */ /* NOLINTEND(*-magic-numbers) */ } @@ -2190,7 +2204,9 @@ TEST(fpe, expect_long_double_near17_okay) { TS_DISABLE_WIMPLICIT_FLOAT_CONVERSION_ TS_DISABLE_WABSOLUTE_VALUE_ TS_DISABLE_WCONVERSION_ + /* NOLINTBEGIN(performance-type-promotion-in-math-fn) */ EXPECT_NEAR(fp0, fp1, .0001L); + /* NOLINTEND(performance-type-promotion-in-math-fn) */ TS_REENABLE_WCONVERSION_ TS_REENABLE_WABSOLUTE_VALUE_ TS_REENABLE_WIMPLICIT_FLOAT_CONVERSION_ diff --git a/tests/test-complete.cc b/tests/test-complete.cc index 4ee3036..cdc05d1 100644 --- a/tests/test-complete.cc +++ b/tests/test-complete.cc @@ -4327,7 +4327,9 @@ TEST(sigs, fpe_self_Uultamsan_sigfail) { } #elif EZTEST_ARCH_IS_AARCH64_ TEST(sigs, fpe_self_Uusan_fail) { + /* NOLINTBEGIN(google-runtime-int) */ long val = 0; + /* NOLINTEND(google-runtime-int) */ /* NOLINTBEGIN(hicpp-no-assembler) */ __asm__ volatile("" : "+r"(val) : : "memory"); /* NOLINTEND(hicpp-no-assembler) */