xref: /freebsd/contrib/kyua/bootstrap/testsuite.at (revision b0d29bc47dba79f6f38e67eabadfb4b32ffd9390)
1dnl Copyright 2010 The Kyua Authors.
2dnl All rights reserved.
3dnl
4dnl Redistribution and use in source and binary forms, with or without
5dnl modification, are permitted provided that the following conditions are
6dnl met:
7dnl
8dnl * Redistributions of source code must retain the above copyright
9dnl   notice, this list of conditions and the following disclaimer.
10dnl * Redistributions in binary form must reproduce the above copyright
11dnl   notice, this list of conditions and the following disclaimer in the
12dnl   documentation and/or other materials provided with the distribution.
13dnl * Neither the name of Google Inc. nor the names of its contributors
14dnl   may be used to endorse or promote products derived from this software
15dnl   without specific prior written permission.
16dnl
17dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20dnl A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21dnl OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22dnl SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23dnl LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24dnl DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25dnl THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26dnl (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27dnl OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29AT_INIT([bootstrapping tests])
30
31
32m4_define([GUESS_TOPDIR], {
33    old=$(pwd)
34    cd "$(dirname ${as_myself})"
35    # We need to locate a build product, not a source file, because the
36    # test suite may be run outside of the source tree (think distcheck).
37    while test $(pwd) != '/' -a ! -e bootstrap/plain_helpers; do
38        cd ..
39    done
40    topdir=$(pwd)
41    cd ${old}
42    echo ${topdir}
43})
44
45
46m4_define([CREATE_ATF_HELPERS], [
47    AT_DATA([Kyuafile], [
48syntax(2)
49test_suite("bootstrap")
50atf_test_program{name="atf_helpers"}
51])
52    ln -s $(GUESS_TOPDIR)/bootstrap/atf_helpers atf_helpers
53])
54m4_define([RUN_ATF_HELPERS],
55    [HOME=$(pwd) TESTS="$1" kyua --config=none \
56        test --results-file=bootstrap.db $2])
57
58
59m4_define([CREATE_PLAIN_HELPERS], [
60    AT_DATA([Kyuafile], [
61syntax(2)
62test_suite("bootstrap")
63atf_test_program{name="plain_helpers"}
64])
65    ln -s $(GUESS_TOPDIR)/bootstrap/plain_helpers plain_helpers
66])
67m4_define([RUN_PLAIN_HELPER],
68    [HOME=$(pwd) HELPER="$1" kyua --config=none \
69        test --results-file=bootstrap.db])
70
71
72AT_SETUP([test program crashes in test list])
73AT_TESTED([kyua])
74
75CREATE_PLAIN_HELPERS
76AT_CHECK([RUN_PLAIN_HELPER([abort_test_cases_list])], [1], [stdout], [])
77re='plain_helpers:__test_cases_list__.*broken.*Test program received signal'
78AT_CHECK([grep "${re}" stdout], [0], [ignore], [])
79
80AT_CLEANUP
81
82
83AT_SETUP([test program prints an empty test list])
84AT_TESTED([kyua])
85
86CREATE_PLAIN_HELPERS
87AT_CHECK([RUN_PLAIN_HELPER([empty_test_cases_list])], [1], [stdout], [])
88re="plain_helpers:__test_cases_list__.*broken.*Invalid header.*got ''"
89AT_CHECK([grep "${re}" stdout], [0], [ignore], [])
90
91AT_CLEANUP
92
93
94AT_SETUP([test program with zero test cases])
95AT_TESTED([kyua])
96
97CREATE_PLAIN_HELPERS
98AT_CHECK([RUN_PLAIN_HELPER([zero_test_cases])], [1], [stdout], [])
99re='plain_helpers:__test_cases_list__.*broken.*No test cases'
100AT_CHECK([grep "${re}" stdout], [0], [ignore], [])
101
102AT_CLEANUP
103
104
105AT_SETUP([run test case that passes])
106AT_TESTED([kyua])
107
108CREATE_ATF_HELPERS
109AT_CHECK([RUN_ATF_HELPERS([passes])], [0], [stdout], [])
110AT_CHECK([grep "atf_helpers:fails" stdout], [1], [], [])
111AT_CHECK([grep "atf_helpers:passes.*passed" stdout], [0], [ignore], [])
112AT_CHECK([grep "atf_helpers:skips" stdout], [1], [], [])
113
114AT_CLEANUP
115
116
117AT_SETUP([run test case that fails])
118AT_TESTED([kyua])
119
120CREATE_ATF_HELPERS
121AT_CHECK([RUN_ATF_HELPERS([fails])], [1], [stdout], [])
122AT_CHECK([grep "atf_helpers:fails.*failed.*Failed on purpose" stdout],
123         [0], [ignore], [])
124AT_CHECK([grep "atf_helpers:passes" stdout], [1], [], [])
125AT_CHECK([grep "atf_helpers:skips" stdout], [1], [], [])
126
127AT_CLEANUP
128
129
130AT_SETUP([run test case that skips])
131AT_TESTED([kyua])
132
133CREATE_ATF_HELPERS
134AT_CHECK([RUN_ATF_HELPERS([skips])], [0], [stdout], [])
135AT_CHECK([grep "atf_helpers:fails" stdout], [1], [], [])
136AT_CHECK([grep "atf_helpers:passes" stdout], [1], [], [])
137AT_CHECK([grep "atf_helpers:skips.*skipped.*Skipped on purpose" stdout],
138         [0], [ignore], [])
139
140AT_CLEANUP
141
142
143AT_SETUP([run two test cases, success])
144AT_TESTED([kyua])
145
146CREATE_ATF_HELPERS
147AT_CHECK([RUN_ATF_HELPERS([passes skips])], [0], [stdout], [])
148AT_CHECK([grep "atf_helpers:fails" stdout], [1], [], [])
149AT_CHECK([grep "atf_helpers:passes.*passed" stdout], [0], [ignore], [])
150AT_CHECK([grep "atf_helpers:skips.*skipped.*Skipped on purpose" stdout],
151         [0], [ignore], [])
152
153AT_CLEANUP
154
155
156AT_SETUP([run two test cases, failure])
157AT_TESTED([kyua])
158
159CREATE_ATF_HELPERS
160AT_CHECK([RUN_ATF_HELPERS([fails passes])], [1], [stdout], [])
161AT_CHECK([grep "atf_helpers:fails.*failure.*Failed on purpose" stdout],
162         [1], [], [])
163AT_CHECK([grep "atf_helpers:passes.*passed" stdout], [0], [ignore], [])
164AT_CHECK([grep "atf_helpers:skips" stdout], [1], [], [])
165
166AT_CLEANUP
167
168
169AT_SETUP([run mixed test cases])
170AT_TESTED([kyua])
171
172CREATE_ATF_HELPERS
173AT_CHECK([RUN_ATF_HELPERS([fails passes skips])], [1], [stdout], [])
174AT_CHECK([grep "atf_helpers:fails.*failure.*Failed on purpose" stdout],
175         [1], [], [])
176AT_CHECK([grep "atf_helpers:passes.*passed" stdout], [0], [ignore], [])
177AT_CHECK([grep "atf_helpers:skips.*skipped.*Skipped on purpose" stdout],
178         [0], [ignore], [])
179
180AT_CLEANUP
181
182
183AT_SETUP([run tests from build directories])
184AT_TESTED([kyua])
185
186CREATE_ATF_HELPERS
187AT_CHECK([mkdir src], [0], [], [])
188AT_CHECK([mv Kyuafile src], [0], [], [])
189AT_CHECK([mkdir obj], [0], [], [])
190AT_CHECK([mv atf_helpers obj], [0], [], [])
191AT_CHECK([RUN_ATF_HELPERS([fails passes skips],
192                          [--kyuafile=src/Kyuafile --build-root=obj])],
193         [1], [stdout], [])
194AT_CHECK([grep "atf_helpers:fails.*failure.*Failed on purpose" stdout],
195         [1], [], [])
196AT_CHECK([grep "atf_helpers:passes.*passed" stdout], [0], [ignore], [])
197AT_CHECK([grep "atf_helpers:skips.*skipped.*Skipped on purpose" stdout],
198         [0], [ignore], [])
199
200AT_CLEANUP
201