blob: af894a2bd3ea2632588b9da0f14dd38810e028dd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#
# subunit shell bindings.
# Copyright (C) 2006 Robert Collins <robertc@robertcollins.net>
#
# Licensed under either the Apache License, Version 2.0 or the BSD 3-clause
# license at the users choice. A copy of both licenses are available in the
# project source as Apache-2.0 and BSD. You may not use this file except in
# compliance with one of these two licences.
#
# Unless required by applicable law or agreed to in writing, software
# distributed under these licenses is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# license you chose for the specific language governing permissions and
# limitations under that license.
#
This tree contains shell bindings to the subunit protocol. They are written
entirely in shell, and unit tested in shell. See the tests/ directory for the
test scripts. You can use `make check` to run the tests. There is a trivial
python test_shell.py which uses the pyunit gui to expose the test results in a
compact form.
The shell bindings consist of four functions which you can use to output test
metadata trivially. See share/subunit.sh for the functions and comments.
However, this is not a full test environment, its support code for reporting to
subunit. You can look at ShUnit (http://shunit.sourceforge.net) for 'proper'
shell based xUnit functionality. There is a patch for ShUnit 1.3
(subunit-ui.patch) in the subunit source tree. I hope to have that integrated
upstream in the near future. I will delete the copy of the patch in the subunit
tree a release or two later.
If you are a test environment maintainer - either homegrown, or ShUnit or some
such, you will need to see how the subunit calls should be used. Here is what
a manually written test using the bindings might look like:
subunit_start_test "test name"
# determine if test passes or fails
result=$(something)
if [ $result == 0 ]; then
subunit_pass_test "test name"
else
subunit_fail_test "test name" <<END
Something went wrong running something:
exited with result: '$func_status'
END
fi
Which when run with a subunit test runner will generate something like:
test name ... ok
on success, and:
test name ... FAIL
======================================================================
FAIL: test name
----------------------------------------------------------------------
RemoteError:
Something went wrong running something:
exited with result: '1'
|