Test the output of subunit_start_test.
authorRobert Collins <robertc@robertcollins.net>
Fri, 14 Apr 2006 14:25:55 +0000 (00:25 +1000)
committerRobert Collins <robertc@robertcollins.net>
Fri, 14 Apr 2006 14:25:55 +0000 (00:25 +1000)
README
shell/share/subunit.sh
shell/test_shell.py
shell/tests/test_function_output.sh [new file with mode: 0755]
shell/tests/test_source_library.sh

diff --git a/README b/README
index af6d0f4..df19683 100644 (file)
--- a/README
+++ b/README
@@ -110,10 +110,10 @@ Some requirements:
   anything taking a reference to them doesn't get 50 copies of the same object.
 
 
-TEST: test foo works
-SUCCESS: test foo works.
-TEST: tar a file.
-FAILURE: tar a file. [
+test: test foo works
+success: test foo works.
+test: tar a file.
+failure: tar a file. [
 ..
  ]..  space is eaten.
 foo.c:34 WARNING foo is not defined.
index f0f21d8..0234737 100644 (file)
@@ -17,4 +17,7 @@
 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #
 
-
+function subunit_start_test () {
+  # emit the current protocol start-marker for test test_name
+  echo "test: $1"
+}
index ddba251..cf891aa 100644 (file)
@@ -30,13 +30,17 @@ import logging
 
 class ShellTests(subunit.ExecTestCase):
 
-    def test_shell(self):
+    def test_sourcing(self):
         """./tests/test_source_library.sh"""
 
+    def test_functions(self):
+        """./tests/test_function_output.sh"""
+
 
 def test_suite():
     result = TestSuite()
-    result.addTest(ShellTests('test_shell'))
+    result.addTest(ShellTests('test_sourcing'))
+    result.addTest(ShellTests('test_functions'))
     return result
 
 
diff --git a/shell/tests/test_function_output.sh b/shell/tests/test_function_output.sh
new file mode 100755 (executable)
index 0000000..a57e6b9
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh
+#  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 script tests the output of the methods. As each is tested we start using
+# it.
+# So the first test manually implements the entire protocol, the next uses the
+# start method and so on.
+# it is assumed that we are running from the 'shell' tree root in the source
+# of subunit, and that the library sourcing tests have all passed - if they 
+# have not, this test script may well fail strangely.
+
+# import the library.
+. share/subunit.sh
+
+echo 'test: subunit_start_test output'
+func_output=$(subunit_start_test "foo bar")
+func_status=$?
+if [ $func_status == 0 -a "x$func_output" = "xtest: foo bar" ]; then
+  echo 'success: subunit_start_test output'
+else
+  echo 'failure: subunit_start_test output ['
+  echo 'got an error code or incorrect output:'
+  echo "exit: $func_status"
+  echo "output: '$func_output'"
+  echo ']' ;
+fi
index fdc5f5c..8fd10e6 100755 (executable)
 # we expect to be run from the 'shell' tree root.
 
 echo 'test: shell bindings can be sourced'
+# if any output occurs, this has failed to source cleanly
+source_output=$(. share/subunit.sh 2>&1)
+if [ $? == 0 -a "x$source_output" = "x" ]; then
+  echo 'success: shell bindings can be sourced'
+else
+  echo 'failure: shell bindings can be sourced ['
+  echo 'got an error code or output during sourcing.:'
+  echo $source_output
+  echo ']' ;
+fi
+
+# now source it for real
 . share/subunit.sh
-echo 'success: shell bindings can be sourced'
+
+# we should have a test-start function
+echo 'test: subunit_start_test exists'
+found_type=$(type -t subunit_start_test)
+status=$?
+if [ $status == 0 -a "x$found_type" = "xfunction" ]; then
+  echo 'success: subunit_start_test exists'
+else
+  echo 'failure: subunit_start_test exists ['
+  echo 'subunit_start_test is not a function:'
+  echo "type -t status: $status"
+  echo "output: $found_type"
+  echo ']' ;
+fi