1*00b67f09SDavid van Moolenbroekdnl 2*00b67f09SDavid van Moolenbroekdnl Automated Testing Framework (atf) 3*00b67f09SDavid van Moolenbroekdnl 4*00b67f09SDavid van Moolenbroekdnl Copyright (c) 2007 The NetBSD Foundation, Inc. 5*00b67f09SDavid van Moolenbroekdnl All rights reserved. 6*00b67f09SDavid van Moolenbroekdnl 7*00b67f09SDavid van Moolenbroekdnl Redistribution and use in source and binary forms, with or without 8*00b67f09SDavid van Moolenbroekdnl modification, are permitted provided that the following conditions 9*00b67f09SDavid van Moolenbroekdnl are met: 10*00b67f09SDavid van Moolenbroekdnl 1. Redistributions of source code must retain the above copyright 11*00b67f09SDavid van Moolenbroekdnl notice, this list of conditions and the following disclaimer. 12*00b67f09SDavid van Moolenbroekdnl 2. Redistributions in binary form must reproduce the above copyright 13*00b67f09SDavid van Moolenbroekdnl notice, this list of conditions and the following disclaimer in the 14*00b67f09SDavid van Moolenbroekdnl documentation and/or other materials provided with the distribution. 15*00b67f09SDavid van Moolenbroekdnl 16*00b67f09SDavid van Moolenbroekdnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 17*00b67f09SDavid van Moolenbroekdnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 18*00b67f09SDavid van Moolenbroekdnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19*00b67f09SDavid van Moolenbroekdnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20*00b67f09SDavid van Moolenbroekdnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 21*00b67f09SDavid van Moolenbroekdnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*00b67f09SDavid van Moolenbroekdnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 23*00b67f09SDavid van Moolenbroekdnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*00b67f09SDavid van Moolenbroekdnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25*00b67f09SDavid van Moolenbroekdnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26*00b67f09SDavid van Moolenbroekdnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27*00b67f09SDavid van Moolenbroekdnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28*00b67f09SDavid van Moolenbroekdnl 29*00b67f09SDavid van Moolenbroek 30*00b67f09SDavid van MoolenbroekAT_SETUP([atf-run: execution of tests]) 31*00b67f09SDavid van MoolenbroekAT_TESTED(atf-run) 32*00b67f09SDavid van Moolenbroek 33*00b67f09SDavid van Moolenbroekm4_define([CREATE_PASS_TEST], 34*00b67f09SDavid van Moolenbroek[AT_CHECK([sed -e 's,@TC_NAME@,$2,g' <TEST_HELPER_NO_S(tp_pass)], 35*00b67f09SDavid van Moolenbroek [0], [stdout], []) 36*00b67f09SDavid van MoolenbroekAT_CHECK([mv stdout $1], [0], [], []) 37*00b67f09SDavid van MoolenbroekAT_CHECK([chmod +x $1], [0], [], []) 38*00b67f09SDavid van Moolenbroek]) 39*00b67f09SDavid van Moolenbroek 40*00b67f09SDavid van Moolenbroekm4_define([CREATE_FAIL_TEST], 41*00b67f09SDavid van Moolenbroek[AT_CHECK([sed -e 's,@TC_NAME@,$2,g' <TEST_HELPER_NO_S(tp_fail)], 42*00b67f09SDavid van Moolenbroek [0], [stdout], []) 43*00b67f09SDavid van MoolenbroekAT_CHECK([mv stdout $1], [0], [], []) 44*00b67f09SDavid van MoolenbroekAT_CHECK([chmod +x $1], [0], [], []) 45*00b67f09SDavid van Moolenbroek]) 46*00b67f09SDavid van Moolenbroek 47*00b67f09SDavid van MoolenbroekAT_CHECK([mkdir top], [0], [], []) 48*00b67f09SDavid van MoolenbroekAT_CHECK([mkdir top/dir1], [0], [], []) 49*00b67f09SDavid van MoolenbroekAT_CHECK([mkdir top/dir2], [0], [], []) 50*00b67f09SDavid van MoolenbroekAT_DATA([top/Atffile], 51*00b67f09SDavid van Moolenbroek[Content-Type: application/X-atf-atffile; version="1" 52*00b67f09SDavid van Moolenbroek 53*00b67f09SDavid van Moolenbroekprop: test-suite = atf 54*00b67f09SDavid van Moolenbroek 55*00b67f09SDavid van Moolenbroektp: dir1 56*00b67f09SDavid van Moolenbroektp: dir2 57*00b67f09SDavid van Moolenbroektp: test1 58*00b67f09SDavid van Moolenbroektp: test2 59*00b67f09SDavid van Moolenbroek]) 60*00b67f09SDavid van MoolenbroekAT_DATA([top/dir1/Atffile], 61*00b67f09SDavid van Moolenbroek[Content-Type: application/X-atf-atffile; version="1" 62*00b67f09SDavid van Moolenbroek 63*00b67f09SDavid van Moolenbroekprop: test-suite = atf 64*00b67f09SDavid van Moolenbroek 65*00b67f09SDavid van Moolenbroektp: test3 66*00b67f09SDavid van Moolenbroek]) 67*00b67f09SDavid van MoolenbroekAT_DATA([top/dir2/Atffile], 68*00b67f09SDavid van Moolenbroek[Content-Type: application/X-atf-atffile; version="1" 69*00b67f09SDavid van Moolenbroek 70*00b67f09SDavid van Moolenbroekprop: test-suite = atf 71*00b67f09SDavid van Moolenbroek 72*00b67f09SDavid van Moolenbroektp: test4 73*00b67f09SDavid van Moolenbroektp: test5 74*00b67f09SDavid van Moolenbroek]) 75*00b67f09SDavid van MoolenbroekCREATE_PASS_TEST([top/test1], [tc_1]) 76*00b67f09SDavid van MoolenbroekCREATE_FAIL_TEST([top/test2], [tc_2]) 77*00b67f09SDavid van MoolenbroekCREATE_PASS_TEST([top/dir1/test3], [tc_3]) 78*00b67f09SDavid van MoolenbroekCREATE_FAIL_TEST([top/dir2/test4], [tc_4]) 79*00b67f09SDavid van MoolenbroekCREATE_PASS_TEST([top/dir2/test5], [tc_5]) 80*00b67f09SDavid van Moolenbroek 81*00b67f09SDavid van MoolenbroekAT_CHECK([cd top/dir1 && atf-run], [0], [stdout], []) 82*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_3, passed, stdout) 83*00b67f09SDavid van MoolenbroekAT_CHECK([grep -i 'tc_@<:@1245@:>@' stdout], [1], [], []) 84*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) 85*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) 86*00b67f09SDavid van Moolenbroek 87*00b67f09SDavid van MoolenbroekAT_CHECK([cd top/dir2 && atf-run], [1], [stdout], [stderr]) 88*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_4, failed, stdout) 89*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_5, passed, stdout) 90*00b67f09SDavid van MoolenbroekAT_CHECK([grep -i 'tc_@<:@123@:>@' stdout], [1], [], []) 91*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) 92*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) 93*00b67f09SDavid van Moolenbroek 94*00b67f09SDavid van MoolenbroekAT_CHECK([cd top && atf-run], [1], [stdout], [stderr]) 95*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_1, passed, stdout) 96*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_2, failed, stdout) 97*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_3, passed, stdout) 98*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_4, failed, stdout) 99*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_5, passed, stdout) 100*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) 101*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) 102*00b67f09SDavid van Moolenbroek 103*00b67f09SDavid van Moolenbroekdnl Repeat previous but using a glob that matches everything. 104*00b67f09SDavid van MoolenbroekAT_DATA([top/Atffile], 105*00b67f09SDavid van Moolenbroek[Content-Type: application/X-atf-atffile; version="1" 106*00b67f09SDavid van Moolenbroek 107*00b67f09SDavid van Moolenbroekprop: test-suite = atf 108*00b67f09SDavid van Moolenbroek 109*00b67f09SDavid van Moolenbroektp-glob: * 110*00b67f09SDavid van Moolenbroek]) 111*00b67f09SDavid van MoolenbroekAT_CHECK([cd top && atf-run], [1], [stdout], [stderr]) 112*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_1, passed, stdout) 113*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_2, failed, stdout) 114*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_3, passed, stdout) 115*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_4, failed, stdout) 116*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_5, passed, stdout) 117*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) 118*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) 119*00b67f09SDavid van Moolenbroek 120*00b67f09SDavid van Moolenbroekdnl Repeat previous but using a glob that matches directories only. 121*00b67f09SDavid van MoolenbroekAT_DATA([top/Atffile], 122*00b67f09SDavid van Moolenbroek[Content-Type: application/X-atf-atffile; version="1" 123*00b67f09SDavid van Moolenbroek 124*00b67f09SDavid van Moolenbroekprop: test-suite = atf 125*00b67f09SDavid van Moolenbroek 126*00b67f09SDavid van Moolenbroektp-glob: d* 127*00b67f09SDavid van Moolenbroek]) 128*00b67f09SDavid van MoolenbroekAT_CHECK([cd top && atf-run], [1], [stdout], [stderr]) 129*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_3, passed, stdout) 130*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_4, failed, stdout) 131*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_5, passed, stdout) 132*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-so:ignore-me' stdout], [0], [ignore], []) 133*00b67f09SDavid van MoolenbroekAT_CHECK([grep 'tc-se:ignore-me' stdout], [0], [ignore], []) 134*00b67f09SDavid van Moolenbroek 135*00b67f09SDavid van Moolenbroekdnl Make sure globs do not match non-executable nor hidden files. 136*00b67f09SDavid van Moolenbroekdnl XXX This is not really part of the bootstrap test suite. Move to 137*00b67f09SDavid van Moolenbroekdnl tests/atf/tools/t_atf_run.sh when it exists. 138*00b67f09SDavid van MoolenbroekAT_CHECK([rm -rf top], [0], [], []) 139*00b67f09SDavid van MoolenbroekAT_CHECK([mkdir top], [0], [], []) 140*00b67f09SDavid van MoolenbroekCREATE_PASS_TEST([top/test1], [tc_1]) 141*00b67f09SDavid van MoolenbroekCREATE_PASS_TEST([top/test2], [tc_2]) 142*00b67f09SDavid van MoolenbroekCREATE_PASS_TEST([top/test3], [tc_3]) 143*00b67f09SDavid van MoolenbroekAT_CHECK([chmod -x top/test3], [0], [], []) 144*00b67f09SDavid van MoolenbroekCREATE_PASS_TEST([top/.test4], [tc_4]) 145*00b67f09SDavid van MoolenbroekAT_CHECK([chmod -x top/.test4], [0], [], []) 146*00b67f09SDavid van MoolenbroekAT_DATA([top/Atffile], 147*00b67f09SDavid van Moolenbroek[Content-Type: application/X-atf-atffile; version="1" 148*00b67f09SDavid van Moolenbroek 149*00b67f09SDavid van Moolenbroekprop: test-suite = atf 150*00b67f09SDavid van Moolenbroek 151*00b67f09SDavid van Moolenbroektp-glob: * 152*00b67f09SDavid van Moolenbroek]) 153*00b67f09SDavid van MoolenbroekAT_CHECK([cd top && atf-run], [0], [stdout], [stderr]) 154*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_1, passed, stdout) 155*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(tc_2, passed, stdout) 156*00b67f09SDavid van MoolenbroekAT_CHECK([grep -i 'tc_3' stdout], [1], [ignore], []) 157*00b67f09SDavid van MoolenbroekAT_CHECK([grep -i 'tc_4' stdout], [1], [ignore], []) 158*00b67f09SDavid van Moolenbroek 159*00b67f09SDavid van Moolenbroekdnl Run all test cases from a test program. 160*00b67f09SDavid van MoolenbroekAT_CHECK([rm -rf top], [0], [], []) 161*00b67f09SDavid van MoolenbroekAT_CHECK([mkdir top], [0], [], []) 162*00b67f09SDavid van MoolenbroekAT_CHECK([cp TEST_HELPER_NO_S(tp_basic_sh) top]) 163*00b67f09SDavid van MoolenbroekAT_DATA([top/Atffile], 164*00b67f09SDavid van Moolenbroek[Content-Type: application/X-atf-atffile; version="1" 165*00b67f09SDavid van Moolenbroek 166*00b67f09SDavid van Moolenbroekprop: test-suite = atf 167*00b67f09SDavid van Moolenbroek 168*00b67f09SDavid van Moolenbroektp: h_tp_basic_sh 169*00b67f09SDavid van Moolenbroek]) 170*00b67f09SDavid van MoolenbroekAT_CHECK([cd top && atf-run], [1], [stdout], [stderr]) 171*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(pass, passed, stdout) 172*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(fail, failed, stdout) 173*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(skip, skipped, stdout) 174*00b67f09SDavid van MoolenbroekCHECK_TPS_TCR(default, passed, stdout) 175*00b67f09SDavid van Moolenbroek 176*00b67f09SDavid van MoolenbroekAT_CLEANUP() 177*00b67f09SDavid van Moolenbroek 178*00b67f09SDavid van Moolenbroekdnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 179