diff --git a/CMakeLists.txt b/CMakeLists.txt index 53e985ffdcdc7f2bad68e1a9f0d4501ee60d8ff8..dcb42325427f16f4e43bbf737b6ad5ce39b440ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,8 +85,10 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third_party) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src) -# ut and gcoverage -add_subdirectory(tests) +# llt and gcoverage +if (LCR_GCOV) + add_subdirectory(tests) +endif() # install all files install(FILES ${CMAKE_BINARY_DIR}/conf/lcr.pc diff --git a/cmake/checker.cmake b/cmake/checker.cmake index 7f8e9ccc03d62a7b7a94f273972f752b8352bc32..20ad917cf7da8f59cb16bcf3a62385824817d292 100644 --- a/cmake/checker.cmake +++ b/cmake/checker.cmake @@ -69,7 +69,7 @@ find_library(LIBYAJL_LIBRARY yajl HINTS ${PC_LIBYAJL_LIBDIR} ${PC_LIBYAJL_LIBRARY_DIRS}) _CHECK(LIBYAJL_LIBRARY "LIBYAJL_LIBRARY-NOTFOUND" "libyajl.so") -if (ENABLE_GCOV) +if (LCR_GCOV) pkg_check_modules(PC_GTEST "gtest") find_path(GTEST_INCLUDE_DIR gtest/gtest.h HINTS ${PC_GTEST_INCLUDEDIR} ${PC_GTEST_INCLUDE_DIRS}) diff --git a/cmake/set_build_flags.cmake b/cmake/set_build_flags.cmake index 87cab3ee59521d217a2be4c508cd6686e17c4e21..9aab5e19e6062a5f13e64a8fa66f649caa09f5c0 100644 --- a/cmake/set_build_flags.cmake +++ b/cmake/set_build_flags.cmake @@ -29,8 +29,8 @@ set(CMAKE_EXE_LINKER_FLAGS "-Wl,-E -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -W set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'") -option(ENABLE_GCOV "set lcr gcov option" OFF) -if (ENABLE_GCOV) +option(LCR_GCOV "set lcr gcov option" OFF) +if (LCR_GCOV) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fprofile-arcs -ftest-coverage") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fprofile-arcs -ftest-coverage") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6ed2d955665e89ade37823ce37aa682056935cc5..5e09c93662b0f4b7b1c0ccf6b614b9bf34828ea4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -103,6 +103,10 @@ if (CMAKE_TOOLCHAIN_FILE) target_link_libraries(liblcr ${EXTRAL_LINK_LIBS}) endif() +if (LCR_GCOV) + target_link_libraries(liblcr -lgcov) +endif() + # install all files install(TARGETS liblcr LIBRARY DESTINATION ${LIB_INSTALL_DIR_DEFAULT} PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 58a6fad884379c00a02610c693502bb43bce6226..ca6d164df60dbb623dcd05f1174cd71423af89bf 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -61,48 +61,38 @@ endmacro() # --------------- testcase add here ----------------- # api testcase -_DEFINE_NEW_TEST(log_ut log_testcase) -_DEFINE_NEW_TEST(libocispec_ut json_testcase) - +_DEFINE_NEW_TEST(log_llt log_testcase) +_DEFINE_NEW_TEST(json_llt json_testcase) # mock test for run lcov to generate html -add_executable(mock_ut main.cpp) -target_include_directories(mock_ut PUBLIC +add_executable(mock_llt main.cpp) +target_include_directories(mock_llt PUBLIC ${GTEST_INCLUDE_DIR} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ) -target_link_libraries(mock_ut +target_link_libraries(mock_llt gtest pthread ) -add_dependencies(mock_ut log_ut libocispec_ut) +add_dependencies(mock_llt log_llt json_llt) -# run ut and gcov -if (ENABLE_GCOV) - set(result isula_libutils.info) - set(result_dir lcr_gcovs) - set(target_dir src/CMakeFiles/isula_libutils.dir) +set(result isula_libutils.info) +set(result_dir lcr_gcovs) +set(target_dir src/CMakeFiles/isula_libutils.dir) - add_custom_command(TARGET mock_ut - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E remove -f ${result} - COMMAND ${CMAKE_COMMAND} -E make_directory ${result_dir} - COMMAND "ctest" - COMMAND ${CMD_LCOV} --gcov-tool ${CMD_GCOV} --exclude "/usr/*" --exclude "*/src/utils.c" --exclude "*/json/*" -d ${CMAKE_BINARY_DIR}/${target_dir} -c -o ${result} - COMMAND ${CMD_GENHTML} --ignore-errors source -o ${result_dir} ${result} - COMMAND ${CMAKE_COMMAND} -E echo run gcov finish - VERBATIM - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests - ) -else() - add_custom_command(TARGET mock_ut - PRE_BUILD - COMMAND "ctest" - COMMAND ${CMAKE_COMMAND} -E echo UT finish - VERBATIM - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests - ) -endif() +# generate gcov + +add_custom_command(TARGET mock_llt + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E remove -f ${result} + COMMAND ${CMAKE_COMMAND} -E make_directory ${result_dir} + COMMAND "ctest" + COMMAND ${CMD_LCOV} --gcov-tool ${CMD_GCOV} --exclude "/usr/*" --exclude "*/src/utils.c" --exclude "*/json/*" -d ${CMAKE_BINARY_DIR}/${target_dir} -c -o ${result} + COMMAND ${CMD_GENHTML} --ignore-errors source -o ${result_dir} ${result} + COMMAND ${CMAKE_COMMAND} -E echo LLT finish + VERBATIM + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tests + ) # --------------- testcase add finish ----------------- diff --git a/tests/libocispec_ut.cpp b/tests/json_llt.cpp similarity index 97% rename from tests/libocispec_ut.cpp rename to tests/json_llt.cpp index 58a1f52866e7a34949e77aed8fbfe5d519efe7dd..9622ed4788424d38bf5a9c9a2a27b5cacc7ff1fd 100644 --- a/tests/libocispec_ut.cpp +++ b/tests/json_llt.cpp @@ -30,7 +30,7 @@ #include "read_file.h" #include "oci_runtime_hooks.h" -TEST(libocispec_testcase, test_oci_runtime_spec_hooks) +TEST(json_testcase, test_oci_runtime_spec_hooks) { const char *fname = "./ocihook.json"; oci_runtime_spec_hooks *hooks = nullptr; @@ -79,7 +79,7 @@ TEST(libocispec_testcase, test_oci_runtime_spec_hooks) free(jstr); } -TEST(libocispec_testcase, test_json_readfile) +TEST(json_testcase, test_json_readfile) { const char *fname = "./ocihook.json"; const char *not_exist = "/tmp/not_exist.json"; diff --git a/tests/log_ut.cpp b/tests/log_llt.cpp similarity index 100% rename from tests/log_ut.cpp rename to tests/log_llt.cpp