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