summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Lange <jml@canonical.com>2011-11-25 17:55:19 +0000
committerJonathan Lange <jml@canonical.com>2011-11-25 17:55:19 +0000
commit3ad1928d07b474ad61bc43e4a1482b6821ada126 (patch)
tree94d3bc54bfacee247d4181322c3f50025f36a4c3
parent5c1a5db9a6e06ff1fa2f816e99b606d3622fc789 (diff)
downloadfixtures-3ad1928d07b474ad61bc43e4a1482b6821ada126.tar.gz
Correctly disambiguate duplicate errors.
-rw-r--r--lib/fixtures/fixture.py5
-rw-r--r--lib/fixtures/tests/test_fixture.py12
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/fixtures/fixture.py b/lib/fixtures/fixture.py
index 04bcb5d..40e7738 100644
--- a/lib/fixtures/fixture.py
+++ b/lib/fixtures/fixture.py
@@ -23,7 +23,10 @@ __all__ = [
import itertools
import sys
-from testtools.compat import reraise
+from testtools.compat import (
+ advance_iterator,
+ reraise,
+ )
from testtools.helpers import try_import
class MultipleExceptions(Exception):
diff --git a/lib/fixtures/tests/test_fixture.py b/lib/fixtures/tests/test_fixture.py
index ed4edf0..8443426 100644
--- a/lib/fixtures/tests/test_fixture.py
+++ b/lib/fixtures/tests/test_fixture.py
@@ -163,6 +163,18 @@ class TestFixture(testtools.TestCase):
child.addDetail('foo', 'content')
self.assertEqual({}, parent.getDetails())
+ def test_duplicate_details_are_disambiguated(self):
+ parent = fixtures.Fixture()
+ with parent:
+ parent.addDetail('foo', 'parent-content')
+ child = fixtures.Fixture()
+ parent.useFixture(child)
+ # Note that we add the detail *after* using the fixture: the parent
+ # has to query just-in-time.
+ child.addDetail('foo', 'child-content')
+ self.assertEqual({'foo': 'parent-content',
+ 'foo-1': 'child-content',}, parent.getDetails())
+
def test_addDetail(self):
fixture = fixtures.Fixture()
with fixture: