cmake: Build tests with the static library.
[platform/upstream/cmocka.git] / tests / CMakeLists.txt
1 project(tests C)
2
3 include_directories(
4   ${CMAKE_BINARY_DIR}
5   ${CMAKE_CURRENT_SOURCE_DIR}
6   ${CMAKE_SOURCE_DIR}/include
7 )
8
9 set(CMOCKA_TESTS
10     test_alloc
11     test_group_setup_fail
12     test_fixtures
13     test_group_fixtures
14     test_assert_macros
15     test_assert_macros_fail
16     test_exception_handler
17     test_basics
18     test_skip
19     test_setup_fail)
20
21 foreach(_CMOCKA_TEST ${CMOCKA_TESTS})
22     add_cmocka_test(${_CMOCKA_TEST} ${_CMOCKA_TEST}.c ${CMOCKA_STATIC_LIBRARY})
23 endforeach()
24
25 ### Special Cases
26 if (${CMAKE_C_COMPILER_ID} MATCHES "(GNU|Clang)")
27     set_source_files_properties(test_cmockery.c PROPERTIES COMPILE_FLAGS "-Wno-deprecated-declarations")
28 endif()
29 add_cmocka_test(test_cmockery test_cmockery.c ${CMOCKA_STATIC_LIBRARY})
30
31 ### Exceptions
32
33 # test_assert_macros_fail
34 set_tests_properties(
35     test_skip
36         PROPERTIES
37         PASS_REGULAR_EXPRESSION
38         "\\[  SKIPPED \\] test_check_skip"
39 )
40
41 # test_assert_macros_fail
42 set_tests_properties(
43     test_assert_macros_fail
44         PROPERTIES
45         PASS_REGULAR_EXPRESSION
46         "\\[  FAILED  \\] 1 test"
47 )
48
49 # test_exception_handler
50 set_tests_properties(
51     test_exception_handler
52         PROPERTIES
53         PASS_REGULAR_EXPRESSION
54         "Test failed with exception: (Segmentation fault|Segmentation Fault|11)"
55 )
56
57 set_tests_properties(
58     test_setup_fail
59         PROPERTIES
60         WILL_FAIL
61         1
62 )
63
64 set_tests_properties(
65     test_group_setup_fail
66         PROPERTIES
67         WILL_FAIL
68         1
69 )
70
71 add_test (test_setup_fail_1_failed test_setup_fail)
72 set_tests_properties(
73     test_setup_fail_1_failed
74         PROPERTIES
75         PASS_REGULAR_EXPRESSION
76         "\\[  ERROR   \\] int_test_ignored"
77 )
78
79 add_test (test_setup_fail_1_passed test_setup_fail)
80 set_tests_properties(
81     test_setup_fail_1_passed
82         PROPERTIES
83         PASS_REGULAR_EXPRESSION
84         "\\[  PASSED  \\] 1 test\\(s\\)."
85 )
86
87 add_test (test_setup_fail_match_failed test_setup_fail)
88 set_tests_properties(
89     test_setup_fail_match_failed
90         PROPERTIES
91         PASS_REGULAR_EXPRESSION
92         "\\[  ERROR   \\] int_test_ignored"
93 )
94
95 add_test (test_setup_fail_match_passed test_setup_fail)
96 set_tests_properties(
97     test_setup_fail_match_passed
98         PROPERTIES
99         PASS_REGULAR_EXPRESSION
100         "\\[       OK \\] int_test_success"
101 )
102
103 ### Output formats
104
105 # test output of success, failure, skip, fixture failure
106 set(OUTPUT_TESTS
107     test_basics
108     test_assert_macros_fail
109     test_skip
110     test_setup_fail)
111
112 set(TEST_OUTPUT_FMTS
113     tap
114     subunit
115     xml)
116
117 set(test_basics_tap_out
118     "^1\\.\\.2[ \n\r]+ok 1 - null_test_success")
119 set(test_assert_macros_fail_tap_out
120     "^1\\.\\.1[ \n\r]+not ok 1 - test_assert_return_code_fail")
121 set(test_skip_tap_out
122     "not ok 1 # SKIP")
123 set(test_setup_fail_tap_out
124     "not ok 1 - int_test_ignored Could not run the test - check test fixtures")
125
126 set(test_basics_subunit_out
127     "^test: null_test_success[ \n\r]+success: null_test_success")
128 set(test_assert_macros_fail_subunit_out
129     "failure: test_assert_return_code_fail \\[")
130 set(test_skip_subunit_out
131     "^test: test_check_skip[ \n\r]+skip: test_check_skip")
132 set(test_setup_fail_subunit_out
133     "error: int_test_ignored \\[ Could not run the test - check test fixtures \\]")
134
135 set(test_basics_xml_out
136     "<testsuite name=\"tests\" time=\"[0-9.]+\" tests=\"2\" failures=\"0\" errors=\"0\" skipped=\"0\" >[ \n\r]+<testcase name=\"null_test_success\" time=\"[0-9.]+\" >.*</testcase>")
137 set(test_assert_macros_fail_xml_out
138     "<testcase name=\"test_assert_return_code_fail\" time=\"[0-9.]+\" >[ \n\r]+<failure>")
139 set(test_skip_xml_out
140     "<testcase name=\"test_check_skip\" time=\"[0-9.]+\" >[ \n\r]+<skipped/>")
141 set(test_setup_fail_xml_out
142     "<testcase name=\"int_test_ignored\" time=\"[0-9.]+\" >[ \n\r]+<failure><!\\[CDATA\\[Test setup failed\\]\\]></failure>")
143
144 foreach(_TEST_OUTPUT_FMT ${TEST_OUTPUT_FMTS})
145     foreach(_OUTPUT_TEST ${OUTPUT_TESTS})
146         set(TEST_NAME ${_OUTPUT_TEST}_${_TEST_OUTPUT_FMT})
147         add_test(${TEST_NAME} ${_OUTPUT_TEST})
148
149         set_property(
150             TEST
151             ${TEST_NAME}
152             PROPERTY
153                 ENVIRONMENT CMOCKA_MESSAGE_OUTPUT=${_TEST_OUTPUT_FMT}
154             )
155
156             set_tests_properties(
157                     ${TEST_NAME}
158                     PROPERTIES
159                     PASS_REGULAR_EXPRESSION
160                     ${${TEST_NAME}_out}
161             )
162     endforeach()
163 endforeach()