94dfb75c391fc392c1c6d4f6ffb9d70061256e3f
[platform/core/api/diagnostics.git] / src / test / CMakeLists.txt
1 # ADD_DEFINITIONS(-g -Werror -Wall -Wextra)
2 ADD_CUSTOM_TARGET(ctest ALL make test WORKING_DIRECTORY ./ USES_TERMINAL)
3
4 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/library)
5
6 function(add_mocked_test name wraps)
7         add_executable(test_${name} test_${name}.c)
8
9         target_link_libraries(test_${name} cmocka ${target}_static ${pkgs_LDFLAGS} ${wraps})
10         if(ENABLE_COVERAGE)
11                 target_link_libraries(test_${name} -fprofile-arcs -ftest-coverage -lgcov)
12         endif(ENABLE_COVERAGE)
13
14         add_test(test_${name} ${CMAKE_CURRENT_BINARY_DIR}/test_${name})
15         ADD_DEPENDENCIES(ctest test_${name})
16 endfunction(add_mocked_test)
17
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 "")
28
29 if(ENABLE_COVERAGE)
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})
34
35         find_program(GCOV_PATH gcov)
36         find_program(LCOV_PATH  NAMES lcov)
37         find_program(GENHTML_PATH NAMES genhtml)
38
39         if(NOT GCOV_PATH)
40                 message(FATAL_ERROR "gcov not found! Aborting...")
41         endif()
42
43         if(NOT LCOV_PATH)
44                 message(FATAL_ERROR "lcov not found! Aborting...")
45         endif()
46
47         if(NOT GENHTML_PATH)
48                 message(FATAL_ERROR "genhtml not found! Aborting...")
49         endif()
50
51         if(${COV_BASE_DIRECTORY})
52                 get_filename_component(BASEDIR ${COV_BASE_DIRECTORY} ABSOLUTE)
53         else()
54                 set(BASEDIR ${PROJECT_SOURCE_DIR})
55         endif()
56
57         set(LCOV_EXCLUDES "")
58         foreach(EXCLUDE ${COV_EXCLUDE} ${COVERAGE_EXCLUDES})
59                 get_filename_component(EXCLUDE ${EXCLUDE} ABSOLUTE BASE_DIR ${BASEDIR})
60                 list(APPEND LCOV_EXCLUDES "${EXCLUDE}")
61         endforeach()
62         list(REMOVE_DUPLICATES LCOV_EXCLUDES)
63
64         # Setup target
65         add_custom_target(${COV_NAME}
66
67                 COMMAND ${LCOV_PATH} ${COV_LCOV_ARGS} --gcov-tool ${GCOV_PATH} -directory . -b ${BASEDIR} --zerocounters
68
69                 COMMAND ${COV_EXECUTABLE} ${COV_EXECUTABLE_ARGS}
70
71                 COMMAND ${LCOV_PATH} ${COV_LCOV_ARGS} --gcov-tool ${GCOV_PATH} --directory . -b ${BASEDIR} --capture --output-file ${COV_NAME}.total
72
73                 COMMAND ${LCOV_PATH} ${COV_LCOV_ARGS} --gcov-tool ${GCOV_PATH} --remove ${COV_NAME}.total ${LCOV_EXCLUDES} --output-file ${COV_NAME}.info
74
75                 COMMAND ${GENHTML_PATH} ${GENHTML_EXTRA_ARGS} ${COV_GENHTML_ARGS} -o ${COV_NAME} ${COV_NAME}.info
76
77                 BYPRODUCTS
78                         ${COV_NAME}.total
79                         ${COV_NAME}.info
80                         ${COV_NAME}
81
82                 WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
83
84                 DEPENDS ${COV_DEPENDENCIES}
85         )
86
87 endfunction() # setup_coverage_target
88
89 setup_coverage_target(
90         NAME coverage
91         EXECUTABLE make test
92         EXCLUDE "src/test/*" "/usr/include/bits/*"
93 )
94
95 add_custom_command(TARGET ctest POST_BUILD COMMAND make coverage)
96
97 endif(ENABLE_COVERAGE)