summaryrefslogtreecommitdiff
path: root/lib/testresources/tests/test_test_resource.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/testresources/tests/test_test_resource.py')
-rw-r--r--lib/testresources/tests/test_test_resource.py59
1 files changed, 46 insertions, 13 deletions
diff --git a/lib/testresources/tests/test_test_resource.py b/lib/testresources/tests/test_test_resource.py
index 02524e7..5ef7fc7 100644
--- a/lib/testresources/tests/test_test_resource.py
+++ b/lib/testresources/tests/test_test_resource.py
@@ -46,11 +46,11 @@ class MockResourceInstance(object):
return self._name
-class MockResource(testresources.TestResource):
+class MockResource(testresources.TestResourceManager):
"""Mock resource that logs the number of make and clean calls."""
def __init__(self):
- testresources.TestResource.__init__(self)
+ super(MockResource, self).__init__()
self.makes = 0
self.cleans = 0
@@ -66,12 +66,13 @@ class MockResettableResource(MockResource):
"""Mock resource that logs the number of reset calls too."""
def __init__(self):
- MockResource.__init__(self)
+ super(MockResettableResource, self).__init__()
self.resets = 0
- def reset(self, resource, result):
+ def _reset(self, resource, dependency_resources):
self.resets += 1
resource._name += "!"
+ self._dirty = False
return resource
@@ -214,14 +215,16 @@ class TestTestResource(testtools.TestCase):
def testIsResetIfDependenciesAreDirty(self):
resource_manager = MockResource()
- dep1 = MockResource()
+ dep1 = MockResettableResource()
resource_manager.resources.append(("dep1", dep1))
r = resource_manager.getResource()
dep1.dirtied(r.dep1)
- # if we get the resource again, it should be clean
+ # if we get the resource again, it should be cleaned.
r = resource_manager.getResource()
self.assertFalse(resource_manager.isDirty())
self.assertFalse(dep1.isDirty())
+ resource_manager.finishedWith(r)
+ resource_manager.finishedWith(r)
def testUsedResourceResetBetweenUses(self):
resource_manager = MockResettableResource()
@@ -294,8 +297,6 @@ class TestTestResource(testtools.TestCase):
self.assertIs(resource, resource_manager._currentResource)
resource_manager.finishedWith(resource)
- # The default implementation of reset() performs a make/clean if
- # the dirty flag is set.
def testDirtiedSetsDirty(self):
resource_manager = MockResource()
resource = resource_manager.getResource()
@@ -334,6 +335,39 @@ class TestTestResource(testtools.TestCase):
self.assertEqual(2, resource_manager.makes)
self.assertEqual(1, resource_manager.cleans)
+ def testDefaultResetResetsDependencies(self):
+ resource_manager = MockResettableResource()
+ dep1 = MockResettableResource()
+ dep2 = MockResettableResource()
+ resource_manager.resources.append(("dep1", dep1))
+ resource_manager.resources.append(("dep2", dep2))
+ # A typical OptimisingTestSuite workflow
+ r_outer = resource_manager.getResource()
+ # test 1
+ r_inner = resource_manager.getResource()
+ dep2.dirtied(r_inner.dep2)
+ resource_manager.finishedWith(r_inner)
+ # test 2
+ r_inner = resource_manager.getResource()
+ dep2.dirtied(r_inner.dep2)
+ resource_manager.finishedWith(r_inner)
+ resource_manager.finishedWith(r_outer)
+ # Dep 1 was clean, doesn't do a reset, and should only have one
+ # make+clean.
+ self.assertEqual(1, dep1.makes)
+ self.assertEqual(1, dep1.cleans)
+ self.assertEqual(0, dep1.resets)
+ # Dep 2 was dirty, so _reset happens, and likewise only one make and
+ # clean.
+ self.assertEqual(1, dep2.makes)
+ self.assertEqual(1, dep2.cleans)
+ self.assertEqual(1, dep2.resets)
+ # The top layer should have had a reset happen, and only one make and
+ # clean.
+ self.assertEqual(1, resource_manager.makes)
+ self.assertEqual(1, resource_manager.cleans)
+ self.assertEqual(1, resource_manager.resets)
+
def testDirtyingWhenUnused(self):
resource_manager = MockResource()
resource = resource_manager.getResource()
@@ -388,10 +422,9 @@ class TestTestResource(testtools.TestCase):
def testResetActivityForResourceWithExtensions(self):
result = ResultWithResourceExtensions()
resource_manager = MockResource()
- expected = [("clean", "start", resource_manager),
- ("clean", "stop", resource_manager),
- ("make", "start", resource_manager),
- ("make", "stop", resource_manager)]
+ expected = [("reset", "start", resource_manager),
+ ("reset", "stop", resource_manager),
+ ]
resource_manager.getResource()
r = resource_manager.getResource()
resource_manager.dirtied(r)
@@ -488,4 +521,4 @@ class TestFixtureResource(testtools.TestCase):
mgr.reset(resource)
mgr.finishedWith(resource)
self.assertEqual(
- ['setUp', 'cleanUp', 'setUp', 'cleanUp'], fixture.calls)
+ ['setUp', 'reset', 'cleanUp'], fixture.calls)