1 # ADD_DEFINITIONS(-g -Werror -Wall -Wextra)
2 ADD_CUSTOM_TARGET(ctest ALL make test WORKING_DIRECTORY ./ USES_TERMINAL)
4 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/library)
6 function(add_mocked_test name wraps)
7 add_executable(test_${name} test_${name}.c)
9 target_link_libraries(test_${name} cmocka ${target}_static ${pkgs_LDFLAGS} ${wraps})
11 target_link_libraries(test_${name} -fprofile-arcs -ftest-coverage -lgcov)
12 endif(ENABLE_COVERAGE)
14 add_test(test_${name} ${CMAKE_CURRENT_BINARY_DIR}/test_${name})
15 ADD_DEPENDENCIES(ctest test_${name})
16 endfunction(add_mocked_test)
18 add_mocked_test(diagnostics_set_notification_cb "-Wl,--wrap=system_info_get_platform_bool,--wrap=dbus_subscribe")
19 add_mocked_test(diagnostics_request_client_data "-Wl,--wrap=system_info_get_platform_bool,--wrap=dumpsys_dump")
20 add_mocked_test(diagnostics_get_client_id "-Wl,--wrap=system_info_get_platform_bool")
21 add_mocked_test(diagnostics_get_report_path "")
22 add_mocked_test(diagnostics_get_data "-Wl,--wrap=system_info_get_platform_bool,--wrap=dbus_get_file_from_report")
23 add_mocked_test(diagnostics_data_read "-Wl,--wrap=system_info_get_platform_bool,--wrap=poll,--wrap=read")
24 add_mocked_test(diagnostics_create "")
25 add_mocked_test(diagnostics_data_create "")
26 add_mocked_test(diagnostics_signal_handler "")
27 add_mocked_test(diagnostics_destroy "")
30 function(setup_coverage_target)
31 set(oneValueArgs BASE_DIRECTORY NAME)
32 set(multiValueArgs EXCLUDE EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES LCOV_ARGS GENHTML_ARGS)
33 cmake_parse_arguments(COV "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
35 find_program(GCOV_PATH gcov)
36 find_program(LCOV_PATH NAMES lcov)
37 find_program(GENHTML_PATH NAMES genhtml)
40 message(FATAL_ERROR "gcov not found! Aborting...")
44 message(FATAL_ERROR "lcov not found! Aborting...")
48 message(FATAL_ERROR "genhtml not found! Aborting...")
51 if(${COV_BASE_DIRECTORY})
52 get_filename_component(BASEDIR ${COV_BASE_DIRECTORY} ABSOLUTE)
54 set(BASEDIR ${PROJECT_SOURCE_DIR})
58 foreach(EXCLUDE ${COV_EXCLUDE} ${COVERAGE_EXCLUDES})
59 get_filename_component(EXCLUDE ${EXCLUDE} ABSOLUTE BASE_DIR ${BASEDIR})
60 list(APPEND LCOV_EXCLUDES "${EXCLUDE}")
62 list(REMOVE_DUPLICATES LCOV_EXCLUDES)
65 add_custom_target(${COV_NAME}
67 COMMAND ${LCOV_PATH} ${COV_LCOV_ARGS} --gcov-tool ${GCOV_PATH} -directory . -b ${BASEDIR} --zerocounters
69 COMMAND ${COV_EXECUTABLE} ${COV_EXECUTABLE_ARGS}
71 COMMAND ${LCOV_PATH} ${COV_LCOV_ARGS} --gcov-tool ${GCOV_PATH} --directory . -b ${BASEDIR} --capture --output-file ${COV_NAME}.total
73 COMMAND ${LCOV_PATH} ${COV_LCOV_ARGS} --gcov-tool ${GCOV_PATH} --remove ${COV_NAME}.total ${LCOV_EXCLUDES} --output-file ${COV_NAME}.info
75 COMMAND ${GENHTML_PATH} ${GENHTML_EXTRA_ARGS} ${COV_GENHTML_ARGS} -o ${COV_NAME} ${COV_NAME}.info
82 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
84 DEPENDS ${COV_DEPENDENCIES}
87 endfunction() # setup_coverage_target
89 setup_coverage_target(
92 EXCLUDE "src/test/*" "/usr/include/bits/*"
95 add_custom_command(TARGET ctest POST_BUILD COMMAND make coverage)
97 endif(ENABLE_COVERAGE)