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