66 lines
2.5 KiB
Plaintext
66 lines
2.5 KiB
Plaintext
#
|
|
# subunit shell bindings.
|
|
# Copyright (C) 2006 Robert Collins <robertc@robertcollins.net>
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
|
|
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'
|