summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2009-12-19 12:05:27 +1100
committerRobert Collins <robertc@robertcollins.net>2009-12-19 12:05:27 +1100
commit290ae5cbc481fec6a68e8851c87bd31cafbcc31f (patch)
tree1d573143d2826b27289fbf01ca4b316327ac2efb
parent2934942897b593aa74451e4642b4e540d7594b30 (diff)
downloadtestscenarios-git-290ae5cbc481fec6a68e8851c87bd31cafbcc31f.tar.gz
Start running tests using testtools.
-rw-r--r--Makefile3
-rw-r--r--lib/testscenarios/tests/__init__.py3
-rwxr-xr-xtest_all.py109
3 files changed, 5 insertions, 110 deletions
diff --git a/Makefile b/Makefile
index ec83908..75e780d 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,8 @@ PYTHON ?= python
all:
check:
- PYTHONPATH=$(PYTHONPATH) $(PYTHON) ./test_all.py $(TESTRULE)
+ PYTHONPATH=$(PYTHONPATH) $(PYTHON) -m testtools.run \
+ testscenarios.test_suite
clean:
find . -name '*.pyc' -print0 | xargs -0 rm -f
diff --git a/lib/testscenarios/tests/__init__.py b/lib/testscenarios/tests/__init__.py
index 9bce8a3..226f852 100644
--- a/lib/testscenarios/tests/__init__.py
+++ b/lib/testscenarios/tests/__init__.py
@@ -17,6 +17,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
+import doctest
import sys
import unittest
@@ -39,4 +40,6 @@ def load_tests(standard_tests, module, loader):
prefix = "testscenarios.tests.test_"
test_mod_names = [prefix + test_module for test_module in test_modules]
standard_tests.addTests(loader.loadTestsFromNames(test_mod_names))
+ doctest.set_unittest_reportflags(doctest.REPORT_ONLY_FIRST_FAILURE)
+ standard_tests.addTest(doctest.DocFileSuite("../../../README"))
return standard_tests
diff --git a/test_all.py b/test_all.py
deleted file mode 100755
index f5330ea..0000000
--- a/test_all.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: python -*-
-#
-# Copyright (C) 2004 Canonical.com
-# Author: Robert Collins <robert.collins@canonical.com>
-#
-# 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
-#
-
-import doctest
-import unittest
-import sys
-import os
-import shutil
-
-from testtools.utils import iterate_tests
-
-class ParameterisableTextTestRunner(unittest.TextTestRunner):
- """I am a TextTestRunner whose result class is
- parameterisable without further subclassing"""
- def __init__(self, **args):
- unittest.TextTestRunner.__init__(self, **args)
- self._resultFactory=None
- def resultFactory(self, *args):
- """set or retrieve the result factory"""
- if args:
- self._resultFactory=args[0]
- return self
- if self._resultFactory is None:
- self._resultFactory=unittest._TextTestResult
- return self._resultFactory
-
- def _makeResult(self):
- return self.resultFactory()(self.stream, self.descriptions, self.verbosity)
-
-
-class EarlyStoppingTextTestResult(unittest._TextTestResult):
- """I am a TextTestResult that can optionally stop at the first failure
- or error"""
-
- def addError(self, test, err):
- unittest._TextTestResult.addError(self, test, err)
- if self.stopOnError():
- self.stop()
-
- def addFailure(self, test, err):
- unittest._TextTestResult.addError(self, test, err)
- if self.stopOnFailure():
- self.stop()
-
- def stopOnError(self, *args):
- """should this result indicate an abort when an error occurs?
- TODO parameterise this"""
- return True
-
- def stopOnFailure(self, *args):
- """should this result indicate an abort when a failure error occurs?
- TODO parameterise this"""
- return True
-
-
-def earlyStopFactory(*args, **kwargs):
- """return a an early stopping text test result"""
- result=EarlyStoppingTextTestResult(*args, **kwargs)
- return result
-
-def test_suite():
- import testscenarios
- result = testscenarios.test_suite()
- doctest.set_unittest_reportflags(doctest.REPORT_ONLY_FIRST_FAILURE)
- result.addTest(doctest.DocFileSuite("README"))
- return result
-
-
-def main(argv):
- """To parameterise what tests are run, run this script like so:
- python test_all.py REGEX
- i.e.
- python test_all.py .*Protocol.*
- to run all tests with Protocol in their id."""
- if len(argv) > 1:
- pattern = argv[1]
- suite = unittest.TestSuite()
- filter = re.compile(pattern)
- for test in iterate_tests(test_suite()):
- if filter.search(test.id()):
- suite.addTest(test)
- else:
- suite = test_suite()
- runner = ParameterisableTextTestRunner(verbosity=2)
- runner.resultFactory(earlyStopFactory)
- if not runner.run(suite).wasSuccessful():
- return 1
- return 0
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))