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