diff options
| author | Robert Collins <robertc@robertcollins.net> | 2013-08-24 09:37:31 +1200 |
|---|---|---|
| committer | Robert Collins <robertc@robertcollins.net> | 2013-08-24 09:37:31 +1200 |
| commit | cd68831166b680d37fb98bfd5dc6fda319ab1bfd (patch) | |
| tree | 0433191f2183a6b56289282d2d3c8ead3d834169 /python | |
| parent | ecca497abd0b38f531f929bb35aaf02d5185a1d8 (diff) | |
| download | subunit-git-cd68831166b680d37fb98bfd5dc6fda319ab1bfd.tar.gz | |
* TestTestProtocols' test_*_details were dictionary sort order dependent.
(Robert Collins, #1025392)
* TestSubUnitTags's test_add_tag was also se sort order dependent.
(Robert Collins, #1025392)
Diffstat (limited to 'python')
| -rw-r--r-- | python/subunit/tests/test_subunit_tags.py | 39 | ||||
| -rw-r--r-- | python/subunit/tests/test_test_protocol.py | 43 |
2 files changed, 63 insertions, 19 deletions
diff --git a/python/subunit/tests/test_subunit_tags.py b/python/subunit/tests/test_subunit_tags.py index 17a5839..a16edc1 100644 --- a/python/subunit/tests/test_subunit_tags.py +++ b/python/subunit/tests/test_subunit_tags.py @@ -17,25 +17,46 @@ """Tests for subunit.tag_stream.""" from io import BytesIO -import unittest + +import testtools +from testtools.matchers import Contains import subunit import subunit.test_results -class TestSubUnitTags(unittest.TestCase): +class TestSubUnitTags(testtools.TestCase): def setUp(self): + super(TestSubUnitTags, self).setUp() self.original = BytesIO() self.filtered = BytesIO() def test_add_tag(self): - reference = BytesIO() - stream = subunit.StreamResultToBytes(reference) - stream.status( - test_id='test', test_status='inprogress', test_tags=set(['quux', 'foo'])) - stream.status( - test_id='test', test_status='success', test_tags=set(['bar', 'quux', 'foo'])) + # Literal values to avoid set sort-order dependencies. Python code show + # derivation. + # reference = BytesIO() + # stream = subunit.StreamResultToBytes(reference) + # stream.status( + # test_id='test', test_status='inprogress', test_tags=set(['quux', 'foo'])) + # stream.status( + # test_id='test', test_status='success', test_tags=set(['bar', 'quux', 'foo'])) + reference = [ + b'\xb3)\x82\x17\x04test\x02\x04quux\x03foo\x05\x97n\x86\xb3)' + b'\x83\x1b\x04test\x03\x03bar\x04quux\x03fooqn\xab)', + b'\xb3)\x82\x17\x04test\x02\x04quux\x03foo\x05\x97n\x86\xb3)' + b'\x83\x1b\x04test\x03\x04quux\x03foo\x03bar\xaf\xbd\x9d\xd6', + b'\xb3)\x82\x17\x04test\x02\x04quux\x03foo\x05\x97n\x86\xb3)' + b'\x83\x1b\x04test\x03\x04quux\x03bar\x03foo\x03\x04b\r', + b'\xb3)\x82\x17\x04test\x02\x04quux\x03foo\x05\x97n\x86\xb3)' + b'\x83\x1b\x04test\x03\x03bar\x03foo\x04quux\xd2\x18\x1bC', + b'\xb3)\x82\x17\x04test\x02\x03foo\x04quux\xa6\xe1\xde\xec\xb3)' + b'\x83\x1b\x04test\x03\x03foo\x04quux\x03bar\x08\xc2X\x83', + b'\xb3)\x82\x17\x04test\x02\x03foo\x04quux\xa6\xe1\xde\xec\xb3)' + b'\x83\x1b\x04test\x03\x03bar\x03foo\x04quux\xd2\x18\x1bC', + b'\xb3)\x82\x17\x04test\x02\x03foo\x04quux\xa6\xe1\xde\xec\xb3)' + b'\x83\x1b\x04test\x03\x03foo\x03bar\x04quux:\x05e\x80', + ] stream = subunit.StreamResultToBytes(self.original) stream.status( test_id='test', test_status='inprogress', test_tags=set(['foo'])) @@ -44,7 +65,7 @@ class TestSubUnitTags(unittest.TestCase): self.original.seek(0) self.assertEqual( 0, subunit.tag_stream(self.original, self.filtered, ["quux"])) - self.assertEqual(reference.getvalue(), self.filtered.getvalue()) + self.assertThat(reference, Contains(self.filtered.getvalue())) def test_remove_tag(self): reference = BytesIO() diff --git a/python/subunit/tests/test_test_protocol.py b/python/subunit/tests/test_test_protocol.py index 9bdf388..4fa66ab 100644 --- a/python/subunit/tests/test_test_protocol.py +++ b/python/subunit/tests/test_test_protocol.py @@ -1193,15 +1193,23 @@ class TestTestProtocolClient(TestCase): """Test addFailure on a TestProtocolClient with details.""" self.protocol.addFailure( self.test, details=self.sample_tb_details) - self.assertEqual( - self.io.getvalue(), + self.assertThat([ _b(("failure: %s [ multipart\n" "Content-Type: text/plain\n" "something\n" "F\r\nserialised\nform0\r\n" "Content-Type: text/x-traceback;charset=utf8,language=python\n" "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n" - "]\n") % self.test.id())) + "]\n") % self.test.id()), + _b(("failure: %s [ multipart\n" + "Content-Type: text/plain\n" + "something\n" + "F\r\nserialised\nform0\r\n" + "Content-Type: text/x-traceback;language=python,charset=utf8\n" + "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n" + "]\n") % self.test.id()) + ], + Contains(self.io.getvalue())), def test_add_error(self): """Test stopTest on a TestProtocolClient.""" @@ -1217,15 +1225,23 @@ class TestTestProtocolClient(TestCase): """Test stopTest on a TestProtocolClient with details.""" self.protocol.addError( self.test, details=self.sample_tb_details) - self.assertEqual( - self.io.getvalue(), + self.assertThat([ _b(("error: %s [ multipart\n" "Content-Type: text/plain\n" "something\n" "F\r\nserialised\nform0\r\n" "Content-Type: text/x-traceback;charset=utf8,language=python\n" "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n" - "]\n") % self.test.id())) + "]\n") % self.test.id()), + _b(("error: %s [ multipart\n" + "Content-Type: text/plain\n" + "something\n" + "F\r\nserialised\nform0\r\n" + "Content-Type: text/x-traceback;language=python,charset=utf8\n" + "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n" + "]\n") % self.test.id()), + ], + Contains(self.io.getvalue())), def test_add_expected_failure(self): """Test addExpectedFailure on a TestProtocolClient.""" @@ -1241,16 +1257,23 @@ class TestTestProtocolClient(TestCase): """Test addExpectedFailure on a TestProtocolClient with details.""" self.protocol.addExpectedFailure( self.test, details=self.sample_tb_details) - self.assertEqual( - self.io.getvalue(), + self.assertThat([ _b(("xfail: %s [ multipart\n" "Content-Type: text/plain\n" "something\n" "F\r\nserialised\nform0\r\n" "Content-Type: text/x-traceback;charset=utf8,language=python\n" "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n" - "]\n") % self.test.id())) - + "]\n") % self.test.id()), + _b(("xfail: %s [ multipart\n" + "Content-Type: text/plain\n" + "something\n" + "F\r\nserialised\nform0\r\n" + "Content-Type: text/x-traceback;language=python,charset=utf8\n" + "traceback\n" + _remote_exception_str_chunked + ": boo qux\n0\r\n" + "]\n") % self.test.id()), + ], + Contains(self.io.getvalue())), def test_add_skip(self): """Test addSkip on a TestProtocolClient.""" |
