xref: /freebsd-src/contrib/atf/test-programs/cpp_helpers.cpp (revision c243e4902be8df1e643c76b5f18b68bb77cc5268)
1*c243e490SMarcel Moolenaar //
2*c243e490SMarcel Moolenaar // Automated Testing Framework (atf)
3*c243e490SMarcel Moolenaar //
4*c243e490SMarcel Moolenaar // Copyright (c) 2007 The NetBSD Foundation, Inc.
5*c243e490SMarcel Moolenaar // All rights reserved.
6*c243e490SMarcel Moolenaar //
7*c243e490SMarcel Moolenaar // Redistribution and use in source and binary forms, with or without
8*c243e490SMarcel Moolenaar // modification, are permitted provided that the following conditions
9*c243e490SMarcel Moolenaar // are met:
10*c243e490SMarcel Moolenaar // 1. Redistributions of source code must retain the above copyright
11*c243e490SMarcel Moolenaar //    notice, this list of conditions and the following disclaimer.
12*c243e490SMarcel Moolenaar // 2. Redistributions in binary form must reproduce the above copyright
13*c243e490SMarcel Moolenaar //    notice, this list of conditions and the following disclaimer in the
14*c243e490SMarcel Moolenaar //    documentation and/or other materials provided with the distribution.
15*c243e490SMarcel Moolenaar //
16*c243e490SMarcel Moolenaar // THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17*c243e490SMarcel Moolenaar // CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18*c243e490SMarcel Moolenaar // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19*c243e490SMarcel Moolenaar // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20*c243e490SMarcel Moolenaar // IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21*c243e490SMarcel Moolenaar // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22*c243e490SMarcel Moolenaar // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23*c243e490SMarcel Moolenaar // GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24*c243e490SMarcel Moolenaar // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25*c243e490SMarcel Moolenaar // IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26*c243e490SMarcel Moolenaar // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27*c243e490SMarcel Moolenaar // IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*c243e490SMarcel Moolenaar //
29*c243e490SMarcel Moolenaar 
30*c243e490SMarcel Moolenaar extern "C" {
31*c243e490SMarcel Moolenaar #include <signal.h>
32*c243e490SMarcel Moolenaar #include <unistd.h>
33*c243e490SMarcel Moolenaar }
34*c243e490SMarcel Moolenaar 
35*c243e490SMarcel Moolenaar #include <cstdlib>
36*c243e490SMarcel Moolenaar #include <fstream>
37*c243e490SMarcel Moolenaar #include <iostream>
38*c243e490SMarcel Moolenaar 
39*c243e490SMarcel Moolenaar #include "atf-c++/macros.hpp"
40*c243e490SMarcel Moolenaar 
41*c243e490SMarcel Moolenaar #include "atf-c++/detail/fs.hpp"
42*c243e490SMarcel Moolenaar 
43*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
44*c243e490SMarcel Moolenaar // Helper tests for "t_config".
45*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
46*c243e490SMarcel Moolenaar 
47*c243e490SMarcel Moolenaar ATF_TEST_CASE(config_unset);
48*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(config_unset)
49*c243e490SMarcel Moolenaar {
50*c243e490SMarcel Moolenaar     set_md_var("descr", "Helper test case for the t_config test program");
51*c243e490SMarcel Moolenaar }
52*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(config_unset)
53*c243e490SMarcel Moolenaar {
54*c243e490SMarcel Moolenaar     ATF_REQUIRE(!has_config_var("test"));
55*c243e490SMarcel Moolenaar }
56*c243e490SMarcel Moolenaar 
57*c243e490SMarcel Moolenaar ATF_TEST_CASE(config_empty);
58*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(config_empty)
59*c243e490SMarcel Moolenaar {
60*c243e490SMarcel Moolenaar     set_md_var("descr", "Helper test case for the t_config test program");
61*c243e490SMarcel Moolenaar }
62*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(config_empty)
63*c243e490SMarcel Moolenaar {
64*c243e490SMarcel Moolenaar     ATF_REQUIRE_EQ(get_config_var("test"), "");
65*c243e490SMarcel Moolenaar }
66*c243e490SMarcel Moolenaar 
67*c243e490SMarcel Moolenaar ATF_TEST_CASE(config_value);
68*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(config_value)
69*c243e490SMarcel Moolenaar {
70*c243e490SMarcel Moolenaar     set_md_var("descr", "Helper test case for the t_config test program");
71*c243e490SMarcel Moolenaar }
72*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(config_value)
73*c243e490SMarcel Moolenaar {
74*c243e490SMarcel Moolenaar     ATF_REQUIRE_EQ(get_config_var("test"), "foo");
75*c243e490SMarcel Moolenaar }
76*c243e490SMarcel Moolenaar 
77*c243e490SMarcel Moolenaar ATF_TEST_CASE(config_multi_value);
78*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(config_multi_value)
79*c243e490SMarcel Moolenaar {
80*c243e490SMarcel Moolenaar     set_md_var("descr", "Helper test case for the t_config test program");
81*c243e490SMarcel Moolenaar }
82*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(config_multi_value)
83*c243e490SMarcel Moolenaar {
84*c243e490SMarcel Moolenaar     ATF_REQUIRE_EQ(get_config_var("test"), "foo bar");
85*c243e490SMarcel Moolenaar }
86*c243e490SMarcel Moolenaar 
87*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
88*c243e490SMarcel Moolenaar // Helper tests for "t_expect".
89*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
90*c243e490SMarcel Moolenaar 
91*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_pass_and_pass);
92*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_pass_and_pass)
93*c243e490SMarcel Moolenaar {
94*c243e490SMarcel Moolenaar     expect_pass();
95*c243e490SMarcel Moolenaar }
96*c243e490SMarcel Moolenaar 
97*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_pass_but_fail_requirement);
98*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_pass_but_fail_requirement)
99*c243e490SMarcel Moolenaar {
100*c243e490SMarcel Moolenaar     expect_pass();
101*c243e490SMarcel Moolenaar     fail("Some reason");
102*c243e490SMarcel Moolenaar }
103*c243e490SMarcel Moolenaar 
104*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_pass_but_fail_check);
105*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_pass_but_fail_check)
106*c243e490SMarcel Moolenaar {
107*c243e490SMarcel Moolenaar     expect_pass();
108*c243e490SMarcel Moolenaar     fail_nonfatal("Some reason");
109*c243e490SMarcel Moolenaar }
110*c243e490SMarcel Moolenaar 
111*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_fail_and_fail_requirement);
112*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_fail_and_fail_requirement)
113*c243e490SMarcel Moolenaar {
114*c243e490SMarcel Moolenaar     expect_fail("Fail reason");
115*c243e490SMarcel Moolenaar     fail("The failure");
116*c243e490SMarcel Moolenaar     expect_pass();
117*c243e490SMarcel Moolenaar }
118*c243e490SMarcel Moolenaar 
119*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_fail_and_fail_check);
120*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_fail_and_fail_check)
121*c243e490SMarcel Moolenaar {
122*c243e490SMarcel Moolenaar     expect_fail("Fail first");
123*c243e490SMarcel Moolenaar     fail_nonfatal("abc");
124*c243e490SMarcel Moolenaar     expect_pass();
125*c243e490SMarcel Moolenaar 
126*c243e490SMarcel Moolenaar     expect_fail("And fail again");
127*c243e490SMarcel Moolenaar     fail_nonfatal("def");
128*c243e490SMarcel Moolenaar     expect_pass();
129*c243e490SMarcel Moolenaar }
130*c243e490SMarcel Moolenaar 
131*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_fail_but_pass);
132*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_fail_but_pass)
133*c243e490SMarcel Moolenaar {
134*c243e490SMarcel Moolenaar     expect_fail("Fail first");
135*c243e490SMarcel Moolenaar     fail_nonfatal("abc");
136*c243e490SMarcel Moolenaar     expect_pass();
137*c243e490SMarcel Moolenaar 
138*c243e490SMarcel Moolenaar     expect_fail("Will not fail");
139*c243e490SMarcel Moolenaar     expect_pass();
140*c243e490SMarcel Moolenaar 
141*c243e490SMarcel Moolenaar     expect_fail("And fail again");
142*c243e490SMarcel Moolenaar     fail_nonfatal("def");
143*c243e490SMarcel Moolenaar     expect_pass();
144*c243e490SMarcel Moolenaar }
145*c243e490SMarcel Moolenaar 
146*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_exit_any_and_exit);
147*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_exit_any_and_exit)
148*c243e490SMarcel Moolenaar {
149*c243e490SMarcel Moolenaar     expect_exit(-1, "Call will exit");
150*c243e490SMarcel Moolenaar     std::exit(EXIT_SUCCESS);
151*c243e490SMarcel Moolenaar }
152*c243e490SMarcel Moolenaar 
153*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_exit_code_and_exit);
154*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_exit_code_and_exit)
155*c243e490SMarcel Moolenaar {
156*c243e490SMarcel Moolenaar     expect_exit(123, "Call will exit");
157*c243e490SMarcel Moolenaar     std::exit(123);
158*c243e490SMarcel Moolenaar }
159*c243e490SMarcel Moolenaar 
160*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_exit_but_pass);
161*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_exit_but_pass)
162*c243e490SMarcel Moolenaar {
163*c243e490SMarcel Moolenaar     expect_exit(-1, "Call won't exit");
164*c243e490SMarcel Moolenaar }
165*c243e490SMarcel Moolenaar 
166*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_signal_any_and_signal);
167*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_signal_any_and_signal)
168*c243e490SMarcel Moolenaar {
169*c243e490SMarcel Moolenaar     expect_signal(-1, "Call will signal");
170*c243e490SMarcel Moolenaar     ::kill(getpid(), SIGKILL);
171*c243e490SMarcel Moolenaar }
172*c243e490SMarcel Moolenaar 
173*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_signal_no_and_signal);
174*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_signal_no_and_signal)
175*c243e490SMarcel Moolenaar {
176*c243e490SMarcel Moolenaar     expect_signal(SIGHUP, "Call will signal");
177*c243e490SMarcel Moolenaar     ::kill(getpid(), SIGHUP);
178*c243e490SMarcel Moolenaar }
179*c243e490SMarcel Moolenaar 
180*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_signal_but_pass);
181*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_signal_but_pass)
182*c243e490SMarcel Moolenaar {
183*c243e490SMarcel Moolenaar     expect_signal(-1, "Call won't signal");
184*c243e490SMarcel Moolenaar }
185*c243e490SMarcel Moolenaar 
186*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_death_and_exit);
187*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_death_and_exit)
188*c243e490SMarcel Moolenaar {
189*c243e490SMarcel Moolenaar     expect_death("Exit case");
190*c243e490SMarcel Moolenaar     std::exit(123);
191*c243e490SMarcel Moolenaar }
192*c243e490SMarcel Moolenaar 
193*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_death_and_signal);
194*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_death_and_signal)
195*c243e490SMarcel Moolenaar {
196*c243e490SMarcel Moolenaar     expect_death("Signal case");
197*c243e490SMarcel Moolenaar     kill(getpid(), SIGKILL);
198*c243e490SMarcel Moolenaar }
199*c243e490SMarcel Moolenaar 
200*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(expect_death_but_pass);
201*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_death_but_pass)
202*c243e490SMarcel Moolenaar {
203*c243e490SMarcel Moolenaar     expect_death("Call won't die");
204*c243e490SMarcel Moolenaar }
205*c243e490SMarcel Moolenaar 
206*c243e490SMarcel Moolenaar ATF_TEST_CASE(expect_timeout_and_hang);
207*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(expect_timeout_and_hang)
208*c243e490SMarcel Moolenaar {
209*c243e490SMarcel Moolenaar     set_md_var("timeout", "1");
210*c243e490SMarcel Moolenaar }
211*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_timeout_and_hang)
212*c243e490SMarcel Moolenaar {
213*c243e490SMarcel Moolenaar     expect_timeout("Will overrun");
214*c243e490SMarcel Moolenaar     ::sleep(5);
215*c243e490SMarcel Moolenaar }
216*c243e490SMarcel Moolenaar 
217*c243e490SMarcel Moolenaar ATF_TEST_CASE(expect_timeout_but_pass);
218*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(expect_timeout_but_pass)
219*c243e490SMarcel Moolenaar {
220*c243e490SMarcel Moolenaar     set_md_var("timeout", "1");
221*c243e490SMarcel Moolenaar }
222*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(expect_timeout_but_pass)
223*c243e490SMarcel Moolenaar {
224*c243e490SMarcel Moolenaar     expect_timeout("Will just exit");
225*c243e490SMarcel Moolenaar }
226*c243e490SMarcel Moolenaar 
227*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
228*c243e490SMarcel Moolenaar // Helper tests for "t_fork".
229*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
230*c243e490SMarcel Moolenaar 
231*c243e490SMarcel Moolenaar ATF_TEST_CASE(fork_stop);
232*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(fork_stop)
233*c243e490SMarcel Moolenaar {
234*c243e490SMarcel Moolenaar     set_md_var("descr", "Helper test case for the t_fork test program");
235*c243e490SMarcel Moolenaar }
236*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(fork_stop)
237*c243e490SMarcel Moolenaar {
238*c243e490SMarcel Moolenaar     std::ofstream os(get_config_var("pidfile").c_str());
239*c243e490SMarcel Moolenaar     os << ::getpid() << "\n";
240*c243e490SMarcel Moolenaar     os.close();
241*c243e490SMarcel Moolenaar     std::cout << "Wrote pid file\n";
242*c243e490SMarcel Moolenaar     std::cout << "Waiting for done file\n";
243*c243e490SMarcel Moolenaar     while (::access(get_config_var("donefile").c_str(), F_OK) != 0)
244*c243e490SMarcel Moolenaar         ::usleep(10000);
245*c243e490SMarcel Moolenaar     std::cout << "Exiting\n";
246*c243e490SMarcel Moolenaar }
247*c243e490SMarcel Moolenaar 
248*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
249*c243e490SMarcel Moolenaar // Helper tests for "t_meta_data".
250*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
251*c243e490SMarcel Moolenaar 
252*c243e490SMarcel Moolenaar ATF_TEST_CASE(metadata_no_descr);
253*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(metadata_no_descr)
254*c243e490SMarcel Moolenaar {
255*c243e490SMarcel Moolenaar }
256*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(metadata_no_descr)
257*c243e490SMarcel Moolenaar {
258*c243e490SMarcel Moolenaar }
259*c243e490SMarcel Moolenaar 
260*c243e490SMarcel Moolenaar ATF_TEST_CASE_WITHOUT_HEAD(metadata_no_head);
261*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(metadata_no_head)
262*c243e490SMarcel Moolenaar {
263*c243e490SMarcel Moolenaar }
264*c243e490SMarcel Moolenaar 
265*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
266*c243e490SMarcel Moolenaar // Helper tests for "t_srcdir".
267*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
268*c243e490SMarcel Moolenaar 
269*c243e490SMarcel Moolenaar ATF_TEST_CASE(srcdir_exists);
270*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(srcdir_exists)
271*c243e490SMarcel Moolenaar {
272*c243e490SMarcel Moolenaar     set_md_var("descr", "Helper test case for the t_srcdir test program");
273*c243e490SMarcel Moolenaar }
274*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(srcdir_exists)
275*c243e490SMarcel Moolenaar {
276*c243e490SMarcel Moolenaar     if (!atf::fs::exists(atf::fs::path(get_config_var("srcdir")) /
277*c243e490SMarcel Moolenaar         "datafile"))
278*c243e490SMarcel Moolenaar         ATF_FAIL("Cannot find datafile");
279*c243e490SMarcel Moolenaar }
280*c243e490SMarcel Moolenaar 
281*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
282*c243e490SMarcel Moolenaar // Helper tests for "t_result".
283*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
284*c243e490SMarcel Moolenaar 
285*c243e490SMarcel Moolenaar ATF_TEST_CASE(result_pass);
286*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(result_pass) { }
287*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(result_pass)
288*c243e490SMarcel Moolenaar {
289*c243e490SMarcel Moolenaar     std::cout << "msg\n";
290*c243e490SMarcel Moolenaar }
291*c243e490SMarcel Moolenaar 
292*c243e490SMarcel Moolenaar ATF_TEST_CASE(result_fail);
293*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(result_fail) { }
294*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(result_fail)
295*c243e490SMarcel Moolenaar {
296*c243e490SMarcel Moolenaar     std::cout << "msg\n";
297*c243e490SMarcel Moolenaar     ATF_FAIL("Failure reason");
298*c243e490SMarcel Moolenaar }
299*c243e490SMarcel Moolenaar 
300*c243e490SMarcel Moolenaar ATF_TEST_CASE(result_skip);
301*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(result_skip) { }
302*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(result_skip)
303*c243e490SMarcel Moolenaar {
304*c243e490SMarcel Moolenaar     std::cout << "msg\n";
305*c243e490SMarcel Moolenaar     ATF_SKIP("Skipped reason");
306*c243e490SMarcel Moolenaar }
307*c243e490SMarcel Moolenaar 
308*c243e490SMarcel Moolenaar ATF_TEST_CASE(result_newlines_fail);
309*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(result_newlines_fail)
310*c243e490SMarcel Moolenaar {
311*c243e490SMarcel Moolenaar     set_md_var("descr", "Helper test case for the t_result test program");
312*c243e490SMarcel Moolenaar }
313*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(result_newlines_fail)
314*c243e490SMarcel Moolenaar {
315*c243e490SMarcel Moolenaar     ATF_FAIL("First line\nSecond line");
316*c243e490SMarcel Moolenaar }
317*c243e490SMarcel Moolenaar 
318*c243e490SMarcel Moolenaar ATF_TEST_CASE(result_newlines_skip);
319*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(result_newlines_skip)
320*c243e490SMarcel Moolenaar {
321*c243e490SMarcel Moolenaar     set_md_var("descr", "Helper test case for the t_result test program");
322*c243e490SMarcel Moolenaar }
323*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(result_newlines_skip)
324*c243e490SMarcel Moolenaar {
325*c243e490SMarcel Moolenaar     ATF_SKIP("First line\nSecond line");
326*c243e490SMarcel Moolenaar }
327*c243e490SMarcel Moolenaar 
328*c243e490SMarcel Moolenaar ATF_TEST_CASE(result_exception);
329*c243e490SMarcel Moolenaar ATF_TEST_CASE_HEAD(result_exception) { }
330*c243e490SMarcel Moolenaar ATF_TEST_CASE_BODY(result_exception)
331*c243e490SMarcel Moolenaar {
332*c243e490SMarcel Moolenaar     throw std::runtime_error("This is unhandled");
333*c243e490SMarcel Moolenaar }
334*c243e490SMarcel Moolenaar 
335*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
336*c243e490SMarcel Moolenaar // Main.
337*c243e490SMarcel Moolenaar // ------------------------------------------------------------------------
338*c243e490SMarcel Moolenaar 
339*c243e490SMarcel Moolenaar ATF_INIT_TEST_CASES(tcs)
340*c243e490SMarcel Moolenaar {
341*c243e490SMarcel Moolenaar     // Add helper tests for t_config.
342*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, config_unset);
343*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, config_empty);
344*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, config_value);
345*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, config_multi_value);
346*c243e490SMarcel Moolenaar 
347*c243e490SMarcel Moolenaar     // Add helper tests for t_expect.
348*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_pass_and_pass);
349*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_pass_but_fail_requirement);
350*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_pass_but_fail_check);
351*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_fail_and_fail_requirement);
352*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_fail_and_fail_check);
353*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_fail_but_pass);
354*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_exit_any_and_exit);
355*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_exit_code_and_exit);
356*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_exit_but_pass);
357*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_signal_any_and_signal);
358*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_signal_no_and_signal);
359*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_signal_but_pass);
360*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_death_and_exit);
361*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_death_and_signal);
362*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_death_but_pass);
363*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_timeout_and_hang);
364*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, expect_timeout_but_pass);
365*c243e490SMarcel Moolenaar 
366*c243e490SMarcel Moolenaar     // Add helper tests for t_fork.
367*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, fork_stop);
368*c243e490SMarcel Moolenaar 
369*c243e490SMarcel Moolenaar     // Add helper tests for t_meta_data.
370*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, metadata_no_descr);
371*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, metadata_no_head);
372*c243e490SMarcel Moolenaar 
373*c243e490SMarcel Moolenaar     // Add helper tests for t_srcdir.
374*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, srcdir_exists);
375*c243e490SMarcel Moolenaar 
376*c243e490SMarcel Moolenaar     // Add helper tests for t_result.
377*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, result_pass);
378*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, result_fail);
379*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, result_skip);
380*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, result_newlines_fail);
381*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, result_newlines_skip);
382*c243e490SMarcel Moolenaar     ATF_ADD_TEST_CASE(tcs, result_exception);
383*c243e490SMarcel Moolenaar }
384