summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2009-10-24 19:24:09 +1100
committerRobert Collins <robertc@robertcollins.net>2009-10-24 19:24:09 +1100
commitab0aada6011a4d0db688de56cffef931d5585629 (patch)
tree44a15a4b47f92a139bc9b9ea6bbced81149e7320 /python
parent1397750c1112952370adbd70f5e19745de8691be (diff)
downloadsubunit-git-ab0aada6011a4d0db688de56cffef931d5585629.tar.gz
change error reports to use the extended details interface.
Diffstat (limited to 'python')
-rw-r--r--python/subunit/__init__.py5
-rw-r--r--python/subunit/content.py4
-rw-r--r--python/subunit/details.py6
-rw-r--r--python/subunit/tests/test_content.py12
-rw-r--r--python/subunit/tests/test_details.py14
-rw-r--r--python/subunit/tests/test_test_protocol.py18
6 files changed, 47 insertions, 12 deletions
diff --git a/python/subunit/__init__.py b/python/subunit/__init__.py
index 4cb273b..a981a82 100644
--- a/python/subunit/__init__.py
+++ b/python/subunit/__init__.py
@@ -266,7 +266,8 @@ class _InTest(_ParserState):
self.parser.stdOutLineReceived(line)
def _error(self):
- self.parser.client.addError(self.parser._current_test, RemoteError(""))
+ self.parser.client.addError(self.parser._current_test,
+ details={})
def addError(self, offset, line):
"""An 'error:' directive has been read."""
@@ -373,7 +374,7 @@ class _ReadingErrorDetails(_ReadingDetails):
def _report_outcome(self):
self.parser.client.addError(self.parser._current_test,
- RemoteError(self.details_parser.get_message()))
+ details=self.details_parser.get_details())
def _outcome_label(self):
return "error"
diff --git a/python/subunit/content.py b/python/subunit/content.py
index 160a58a..d7d3893 100644
--- a/python/subunit/content.py
+++ b/python/subunit/content.py
@@ -42,6 +42,10 @@ class Content(object):
self.content_type = content_type
self._get_bytes = get_bytes
+ def __eq__(self, other):
+ return (self.content_type == other.content_type and
+ ''.join(self.iter_bytes()) == ''.join(other.iter_bytes()))
+
def iter_bytes(self):
"""Iterate over bytestrings of the serialised content."""
return self._get_bytes()
diff --git a/python/subunit/details.py b/python/subunit/details.py
index 1460170..c54a220 100644
--- a/python/subunit/details.py
+++ b/python/subunit/details.py
@@ -43,7 +43,11 @@ class SimpleDetailsParser(DetailsParser):
self._message += line
def get_details(self):
- return None
+ result = {}
+ result['traceback'] = content.Content(
+ content_type.ContentType("text", "x-traceback"),
+ lambda:[self._message])
+ return result
def get_message(self):
return self._message
diff --git a/python/subunit/tests/test_content.py b/python/subunit/tests/test_content.py
index 8075cf9..c13b254 100644
--- a/python/subunit/tests/test_content.py
+++ b/python/subunit/tests/test_content.py
@@ -40,6 +40,18 @@ class TestContent(unittest.TestCase):
self.assertEqual(content_type, content.content_type)
self.assertEqual(["bytes"], list(content.iter_bytes()))
+ def test___eq__(self):
+ content_type = ContentType("foo", "bar")
+ content1 = Content(content_type, lambda:["bytes"])
+ content2 = Content(content_type, lambda:["bytes"])
+ content3 = Content(content_type, lambda:["by", "tes"])
+ content4 = Content(content_type, lambda:["by", "te"])
+ content5 = Content(ContentType("f","b"), lambda:["by", "tes"])
+ self.assertEqual(content1, content2)
+ self.assertEqual(content1, content3)
+ self.assertNotEqual(content1, content4)
+ self.assertNotEqual(content1, content5)
+
class TestTracebackContent(unittest.TestCase):
diff --git a/python/subunit/tests/test_details.py b/python/subunit/tests/test_details.py
index f76d505..5873ee7 100644
--- a/python/subunit/tests/test_details.py
+++ b/python/subunit/tests/test_details.py
@@ -46,9 +46,19 @@ class TestSimpleDetails(unittest.TestCase):
parser = details.SimpleDetailsParser(None)
self.assertEqual("", parser.get_message())
- def test_get_details_is_None(self):
+ def test_get_details(self):
parser = details.SimpleDetailsParser(None)
- self.assertEqual(None, parser.get_details())
+ traceback = ""
+ expected = {}
+ expected['traceback'] = content.Content(
+ content_type.ContentType("text", "x-traceback"),
+ lambda:[""])
+ found = parser.get_details()
+ self.assertEqual(expected.keys(), found.keys())
+ self.assertEqual(expected['traceback'].content_type,
+ found['traceback'].content_type)
+ self.assertEqual(''.join(expected['traceback'].iter_bytes()),
+ ''.join(found['traceback'].iter_bytes()))
class TestMultipartDetails(unittest.TestCase):
diff --git a/python/subunit/tests/test_test_protocol.py b/python/subunit/tests/test_test_protocol.py
index fea715c..39734b5 100644
--- a/python/subunit/tests/test_test_protocol.py
+++ b/python/subunit/tests/test_test_protocol.py
@@ -349,17 +349,17 @@ class TestInTestMultipart(unittest.TestCase):
class TestTestProtocolServerAddError(unittest.TestCase):
def setUp(self):
- self.client = Python26TestResult()
+ self.client = ExtendedTestResult()
self.protocol = subunit.TestProtocolServer(self.client)
self.protocol.lineReceived("test mcdonalds farm\n")
self.test = subunit.RemotedTestCase("mcdonalds farm")
def simple_error_keyword(self, keyword):
self.protocol.lineReceived("%s mcdonalds farm\n" % keyword)
- failure = subunit.RemoteError("")
+ details = {}
self.assertEqual([
('startTest', self.test),
- ('addError', self.test, failure),
+ ('addError', self.test, details),
('stopTest', self.test),
], self.client._calls)
@@ -372,10 +372,12 @@ class TestTestProtocolServerAddError(unittest.TestCase):
def test_error_empty_message(self):
self.protocol.lineReceived("error mcdonalds farm [\n")
self.protocol.lineReceived("]\n")
- failure = subunit.RemoteError("")
+ details = {}
+ details['traceback'] = Content(ContentType("text", "x-traceback"),
+ lambda:[""])
self.assertEqual([
('startTest', self.test),
- ('addError', self.test, failure),
+ ('addError', self.test, details),
('stopTest', self.test),
], self.client._calls)
@@ -383,10 +385,12 @@ class TestTestProtocolServerAddError(unittest.TestCase):
self.protocol.lineReceived("%s mcdonalds farm [\n" % keyword)
self.protocol.lineReceived(" ]\n")
self.protocol.lineReceived("]\n")
- failure = subunit.RemoteError("]\n")
+ details = {}
+ details['traceback'] = Content(ContentType("text", "x-traceback"),
+ lambda:["]\n"])
self.assertEqual([
('startTest', self.test),
- ('addError', self.test, failure),
+ ('addError', self.test, details),
('stopTest', self.test),
], self.client._calls)