diff options
Diffstat (limited to 'lib/testtools/testtools/tests/test_fixturesupport.py')
-rw-r--r-- | lib/testtools/testtools/tests/test_fixturesupport.py | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/lib/testtools/testtools/tests/test_fixturesupport.py b/lib/testtools/testtools/tests/test_fixturesupport.py index ebdd0373e2..ae6f2ec86e 100644 --- a/lib/testtools/testtools/tests/test_fixturesupport.py +++ b/lib/testtools/testtools/tests/test_fixturesupport.py @@ -1,3 +1,5 @@ +# Copyright (c) 2010-2011 testtools developers. See LICENSE for details. + import unittest from testtools import ( @@ -5,8 +7,9 @@ from testtools import ( content, content_type, ) +from testtools.compat import _b, _u from testtools.helpers import try_import -from testtools.tests.helpers import ( +from testtools.testresult.doubles import ( ExtendedTestResult, ) @@ -50,7 +53,7 @@ class TestFixtureSupport(TestCase): def setUp(self): fixtures.Fixture.setUp(self) self.addCleanup(delattr, self, 'content') - self.content = ['content available until cleanUp'] + self.content = [_b('content available until cleanUp')] self.addDetail('content', content.Content(content_type.UTF8_TEXT, self.get_content)) def get_content(self): @@ -61,16 +64,53 @@ class TestFixtureSupport(TestCase): self.useFixture(fixture) # Add a colliding detail (both should show up) self.addDetail('content', - content.Content(content_type.UTF8_TEXT, lambda:['foo'])) + content.Content(content_type.UTF8_TEXT, lambda:[_b('foo')])) result = ExtendedTestResult() SimpleTest('test_foo').run(result) self.assertEqual('addSuccess', result._events[-2][0]) details = result._events[-2][2] self.assertEqual(['content', 'content-1'], sorted(details.keys())) - self.assertEqual('foo', ''.join(details['content'].iter_text())) + self.assertEqual('foo', _u('').join(details['content'].iter_text())) self.assertEqual('content available until cleanUp', ''.join(details['content-1'].iter_text())) + def test_useFixture_multiple_details_captured(self): + class DetailsFixture(fixtures.Fixture): + def setUp(self): + fixtures.Fixture.setUp(self) + self.addDetail('aaa', content.text_content("foo")) + self.addDetail('bbb', content.text_content("bar")) + fixture = DetailsFixture() + class SimpleTest(TestCase): + def test_foo(self): + self.useFixture(fixture) + result = ExtendedTestResult() + SimpleTest('test_foo').run(result) + self.assertEqual('addSuccess', result._events[-2][0]) + details = result._events[-2][2] + self.assertEqual(['aaa', 'bbb'], sorted(details)) + self.assertEqual('foo', ''.join(details['aaa'].iter_text())) + self.assertEqual('bar', ''.join(details['bbb'].iter_text())) + + def test_useFixture_details_captured_from_setUp(self): + # Details added during fixture set-up are gathered even if setUp() + # fails with an exception. + class BrokenFixture(fixtures.Fixture): + def setUp(self): + fixtures.Fixture.setUp(self) + self.addDetail('content', content.text_content("foobar")) + raise Exception() + fixture = BrokenFixture() + class SimpleTest(TestCase): + def test_foo(self): + self.useFixture(fixture) + result = ExtendedTestResult() + SimpleTest('test_foo').run(result) + self.assertEqual('addError', result._events[-2][0]) + details = result._events[-2][2] + self.assertEqual(['content', 'traceback'], sorted(details)) + self.assertEqual('foobar', ''.join(details['content'].iter_text())) + def test_suite(): from unittest import TestLoader |