summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2009-10-24 20:46:23 +1100
committerRobert Collins <robertc@robertcollins.net>2009-10-24 20:46:23 +1100
commit30dae38d5c6a1f20bd4becf34f2cb5d57247c54a (patch)
tree39d2cce3307864ae67a60b40651fadf3153db5b1 /python
parent887d9b402b18a94c4cb36eab1dbfd9df342be31e (diff)
downloadsubunit-git-30dae38d5c6a1f20bd4becf34f2cb5d57247c54a.tar.gz
Start reporting additional messages on successes via the details API.
Diffstat (limited to 'python')
-rw-r--r--python/subunit/__init__.py7
-rw-r--r--python/subunit/details.py10
-rw-r--r--python/subunit/tests/test_details.py12
-rw-r--r--python/subunit/tests/test_test_protocol.py25
4 files changed, 37 insertions, 17 deletions
diff --git a/python/subunit/__init__.py b/python/subunit/__init__.py
index ab7fbd9..b5c678c 100644
--- a/python/subunit/__init__.py
+++ b/python/subunit/__init__.py
@@ -300,7 +300,7 @@ class _InTest(_ParserState):
self.parser._reading_skip_details)
def _succeed(self):
- self.parser.client.addSuccess(self.parser._current_test)
+ self.parser.client.addSuccess(self.parser._current_test, details={})
def addSuccess(self, offset, line):
"""A 'success:' directive has been read."""
@@ -396,7 +396,7 @@ class _ReadingSkipDetails(_ReadingDetails):
def _report_outcome(self):
self.parser.client.addSkip(self.parser._current_test,
- details=self.details_parser.get_details(True))
+ details=self.details_parser.get_details("skip"))
def _outcome_label(self):
return "skip"
@@ -406,7 +406,8 @@ class _ReadingSuccessDetails(_ReadingDetails):
"""State for the subunit parser when reading success details."""
def _report_outcome(self):
- self.parser.client.addSuccess(self.parser._current_test)
+ self.parser.client.addSuccess(self.parser._current_test,
+ details=self.details_parser.get_details("success"))
def _outcome_label(self):
return "success"
diff --git a/python/subunit/details.py b/python/subunit/details.py
index 43e723d..2cedba2 100644
--- a/python/subunit/details.py
+++ b/python/subunit/details.py
@@ -42,14 +42,18 @@ class SimpleDetailsParser(DetailsParser):
else:
self._message += line
- def get_details(self, for_skip=False):
+ def get_details(self, style=None):
result = {}
- if not for_skip:
+ if not style:
result['traceback'] = content.Content(
content_type.ContentType("text", "x-traceback"),
lambda:[self._message])
else:
- result['reason'] = content.Content(
+ if style == 'skip':
+ name = 'reason'
+ else:
+ name = 'message'
+ result[name] = content.Content(
content_type.ContentType("text", "plain"),
lambda:[self._message])
return result
diff --git a/python/subunit/tests/test_details.py b/python/subunit/tests/test_details.py
index af87655..2700d4a 100644
--- a/python/subunit/tests/test_details.py
+++ b/python/subunit/tests/test_details.py
@@ -67,7 +67,17 @@ class TestSimpleDetails(unittest.TestCase):
expected['reason'] = content.Content(
content_type.ContentType("text", "plain"),
lambda:[""])
- found = parser.get_details(True)
+ found = parser.get_details("skip")
+ self.assertEqual(expected, found)
+
+ def test_get_details_success(self):
+ parser = details.SimpleDetailsParser(None)
+ traceback = ""
+ expected = {}
+ expected['message'] = content.Content(
+ content_type.ContentType("text", "plain"),
+ lambda:[""])
+ found = parser.get_details("success")
self.assertEqual(expected, found)
diff --git a/python/subunit/tests/test_test_protocol.py b/python/subunit/tests/test_test_protocol.py
index da57745..c109724 100644
--- a/python/subunit/tests/test_test_protocol.py
+++ b/python/subunit/tests/test_test_protocol.py
@@ -631,7 +631,7 @@ class TestTestProtocolServerAddSkip(unittest.TestCase):
class TestTestProtocolServerAddSuccess(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")
@@ -656,26 +656,31 @@ class TestTestProtocolServerAddSuccess(unittest.TestCase):
def test_simple_success_colon(self):
self.simple_success_keyword("successful:")
- def test_success_empty_message(self):
- self.protocol.lineReceived("success mcdonalds farm [\n")
- self.protocol.lineReceived("]\n")
+ def assertSuccess(self, details):
self.assertEqual([
('startTest', self.test),
- ('addSuccess', self.test),
+ ('addSuccess', self.test, details),
('stopTest', self.test),
], self.client._calls)
+ def test_success_empty_message(self):
+ self.protocol.lineReceived("success mcdonalds farm [\n")
+ self.protocol.lineReceived("]\n")
+ details = {}
+ details['message'] = Content(ContentType("text", "plain"),
+ lambda:[""])
+ self.assertSuccess(details)
+
def success_quoted_bracket(self, keyword):
# This tests it is accepted, but cannot test it is used today, because
# of not having a way to expose it in Python so far.
self.protocol.lineReceived("%s mcdonalds farm [\n" % keyword)
self.protocol.lineReceived(" ]\n")
self.protocol.lineReceived("]\n")
- self.assertEqual([
- ('startTest', self.test),
- ('addSuccess', self.test),
- ('stopTest', self.test),
- ], self.client._calls)
+ details = {}
+ details['message'] = Content(ContentType("text", "plain"),
+ lambda:["]\n"])
+ self.assertSuccess(details)
def test_success_quoted_bracket(self):
self.success_quoted_bracket("success")