tests: Use a different regex for segfault on Windows
[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 if (WIN32)
51     set_tests_properties(
52         test_exception_handler
53             PROPERTIES
54             PASS_REGULAR_EXPRESSION
55             "EXCEPTION_ACCESS_VIOLATION occurred at")
56 else()
57     set_tests_properties(
58         test_exception_handler
59             PROPERTIES
60             PASS_REGULAR_EXPRESSION
61             "Test failed with exception: (Segmentation fault|Segmentation Fault|11)"
62     )
63 endif (WIN32)
64
65 set_tests_properties(
66     test_setup_fail
67         PROPERTIES
68         WILL_FAIL
69         1
70 )
71
72 set_tests_properties(
73     test_group_setup_fail
74         PROPERTIES
75         WILL_FAIL
76         1
77 )
78
79 add_test (test_setup_fail_1_failed test_setup_fail)
80 set_tests_properties(
81     test_setup_fail_1_failed
82         PROPERTIES
83         PASS_REGULAR_EXPRESSION
84         "\\[  ERROR   \\] int_test_ignored"
85 )
86
87 add_test (test_setup_fail_1_passed test_setup_fail)
88 set_tests_properties(
89     test_setup_fail_1_passed
90         PROPERTIES
91         PASS_REGULAR_EXPRESSION
92         "\\[  PASSED  \\] 1 test\\(s\\)."
93 )
94
95 add_test (test_setup_fail_match_failed test_setup_fail)
96 set_tests_properties(
97     test_setup_fail_match_failed
98         PROPERTIES
99         PASS_REGULAR_EXPRESSION
100         "\\[  ERROR   \\] int_test_ignored"
101 )
102
103 add_test (test_setup_fail_match_passed test_setup_fail)
104 set_tests_properties(
105     test_setup_fail_match_passed
106         PROPERTIES
107         PASS_REGULAR_EXPRESSION
108         "\\[       OK \\] int_test_success"
109 )
110
111 ### Output formats
112
113 # test output of success, failure, skip, fixture failure
114 set(OUTPUT_TESTS
115     test_basics
116     test_assert_macros_fail
117     test_skip
118     test_setup_fail)
119
120 set(TEST_OUTPUT_FMTS
121     tap
122     subunit
123     xml)
124
125 set(test_basics_tap_out
126     "^1\\.\\.2[ \n\r]+ok 1 - null_test_success")
127 set(test_assert_macros_fail_tap_out
128     "^1\\.\\.1[ \n\r]+not ok 1 - test_assert_return_code_fail")
129 set(test_skip_tap_out
130     "not ok 1 # SKIP")
131 set(test_setup_fail_tap_out
132     "not ok 1 - int_test_ignored Could not run the test - check test fixtures")
133
134 set(test_basics_subunit_out
135     "^test: null_test_success[ \n\r]+success: null_test_success")
136 set(test_assert_macros_fail_subunit_out
137     "failure: test_assert_return_code_fail \\[")
138 set(test_skip_subunit_out
139     "^test: test_check_skip[ \n\r]+skip: test_check_skip")
140 set(test_setup_fail_subunit_out
141     "error: int_test_ignored \\[ Could not run the test - check test fixtures \\]")
142
143 set(test_basics_xml_out
144     "<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>")
145 set(test_assert_macros_fail_xml_out
146     "<testcase name=\"test_assert_return_code_fail\" time=\"[0-9.]+\" >[ \n\r]+<failure>")
147 set(test_skip_xml_out
148     "<testcase name=\"test_check_skip\" time=\"[0-9.]+\" >[ \n\r]+<skipped/>")
149 set(test_setup_fail_xml_out
150     "<testcase name=\"int_test_ignored\" time=\"[0-9.]+\" >[ \n\r]+<failure><!\\[CDATA\\[Test setup failed\\]\\]></failure>")
151
152 foreach(_TEST_OUTPUT_FMT ${TEST_OUTPUT_FMTS})
153     foreach(_OUTPUT_TEST ${OUTPUT_TESTS})
154         set(TEST_NAME ${_OUTPUT_TEST}_${_TEST_OUTPUT_FMT})
155         add_test(${TEST_NAME} ${_OUTPUT_TEST})
156
157         set_property(
158             TEST
159             ${TEST_NAME}
160             PROPERTY
161                 ENVIRONMENT CMOCKA_MESSAGE_OUTPUT=${_TEST_OUTPUT_FMT}
162             )
163
164             set_tests_properties(
165                     ${TEST_NAME}
166                     PROPERTIES
167                     PASS_REGULAR_EXPRESSION
168                     ${${TEST_NAME}_out}
169             )
170     endforeach()
171 endforeach()