diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2014-12-11 02:26:54 +0000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2015-03-06 04:41:47 +0100 |
commit | 84922852c338566be67aeddae5598c805679c1f7 (patch) | |
tree | 1bc6b40c513e7b16cfc741b58d65d36b72567b2a | |
parent | ed65e04fa3942ce5c7dc1c3897e58e16da6691a8 (diff) | |
download | samba-84922852c338566be67aeddae5598c805679c1f7.tar.gz samba-84922852c338566be67aeddae5598c805679c1f7.tar.xz samba-84922852c338566be67aeddae5598c805679c1f7.zip |
Add RemoteTestCase and RemoteError to samba.subunit.
Change-Id: Ib3946cf4eae69f53270a299660f6029290d3791a
Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
-rw-r--r-- | python/samba/subunit/__init__.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/python/samba/subunit/__init__.py b/python/samba/subunit/__init__.py index f452db6dde..bd320fdc25 100644 --- a/python/samba/subunit/__init__.py +++ b/python/samba/subunit/__init__.py @@ -18,6 +18,7 @@ """Subunit test protocol.""" import datetime +import unittest PROGRESS_SET = 0 @@ -44,3 +45,61 @@ class UTC(datetime.tzinfo): return _ZERO utc = UTC() + + +def RemoteError(description=""): + return (Exception, Exception(description), None) + + +class RemotedTestCase(unittest.TestCase): + """A class to represent test cases run in child processes. + + Instances of this class are used to provide the Python test API a TestCase + that can be printed to the screen, introspected for metadata and so on. + However, as they are a simply a memoisation of a test that was actually + run in the past by a separate process, they cannot perform any interactive + actions. + """ + + def __eq__ (self, other): + try: + return self.__description == other.__description + except AttributeError: + return False + + def __init__(self, description): + """Create a psuedo test case with description description.""" + self.__description = description + + def error(self, label): + raise NotImplementedError("%s on RemotedTestCases is not permitted." % + label) + + def setUp(self): + self.error("setUp") + + def tearDown(self): + self.error("tearDown") + + def shortDescription(self): + return self.__description + + def id(self): + return "%s" % (self.__description,) + + def __str__(self): + return "%s (%s)" % (self.__description, self._strclass()) + + def __repr__(self): + return "<%s description='%s'>" % \ + (self._strclass(), self.__description) + + def run(self, result=None): + if result is None: result = self.defaultTestResult() + result.startTest(self) + result.addError(self, RemoteError("Cannot run RemotedTestCases.\n")) + result.stopTest(self) + + def _strclass(self): + cls = self.__class__ + return "%s.%s" % (cls.__module__, cls.__name__) |