summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Henstridge <james@jamesh.id.au>2009-01-20 15:50:19 +1100
committerJames Henstridge <james@jamesh.id.au>2009-01-20 15:50:19 +1100
commitc817560b2ae933eaa58a80db1a7b254a7ee02fe8 (patch)
treef62912ad574b7db8c870ed00fb6b92a288c1ee50
parent517ce1f70cb7a969b808a0445dd75c278f61ff69 (diff)
downloadtestresources-c817560b2ae933eaa58a80db1a7b254a7ee02fe8.tar.gz
Rename _resetResource() to reset() (explicitly documenting it as
overridable), and move the self._dirty check into the method.
-rw-r--r--lib/testresources/__init__.py26
-rw-r--r--lib/testresources/tests/test_test_resource.py35
2 files changed, 53 insertions, 8 deletions
diff --git a/lib/testresources/__init__.py b/lib/testresources/__init__.py
index 2f317ea..01b407e 100644
--- a/lib/testresources/__init__.py
+++ b/lib/testresources/__init__.py
@@ -232,8 +232,8 @@ class TestResource(object):
if self._uses == 0:
self.clean_all(resource)
self._setResource(None)
- elif self._dirty:
- self._resetResource(resource)
+ else:
+ self._setResource(self.reset(resource))
def getResource(self):
"""Get the resource for this class and record that it's being used.
@@ -245,8 +245,8 @@ class TestResource(object):
"""
if self._uses == 0:
self._setResource(self.make_all())
- elif self._dirty:
- self._resetResource(self._currentResource)
+ else:
+ self._setResource(self.reset(self._currentResource))
self._uses += 1
return self._currentResource
@@ -269,6 +269,20 @@ class TestResource(object):
raise NotImplementedError(
"Override make to construct resources.")
+ def reset(self, resource):
+ """Override this to reset resources.
+
+ By default, the resource will be cleaned then remade if it had
+ previously been `dirtied`.
+
+ :param resource: The existing resource.
+ :return: The new resource.
+ """
+ if self._dirty:
+ self.clean_all(resource)
+ resource = self.make_all()
+ return resource
+
def neededResources(self):
"""Return the resources needed for this resource, including self.
@@ -286,10 +300,6 @@ class TestResource(object):
result.append(self)
return result
- def _resetResource(self, old_resource):
- self.clean_all(old_resource)
- self._setResource(self.make_all())
-
def _setResource(self, new_resource):
"""Set the current resource to a new value."""
self._currentResource = new_resource
diff --git a/lib/testresources/tests/test_test_resource.py b/lib/testresources/tests/test_test_resource.py
index 754ecd3..88a0634 100644
--- a/lib/testresources/tests/test_test_resource.py
+++ b/lib/testresources/tests/test_test_resource.py
@@ -45,6 +45,18 @@ class MockResource(testresources.TestResource):
return "Boo!"
+class MockResettableResource(MockResource):
+ """Mock resource that logs the number of reset calls too."""
+
+ def __init__(self):
+ MockResource.__init__(self)
+ self.resets = 0
+
+ def reset(self, resource):
+ self.resets += 1
+ return resource + "!"
+
+
class TestTestResource(testtools.TestCase):
def testUnimplementedGetResource(self):
@@ -225,3 +237,26 @@ class TestTestResource(testtools.TestCase):
self.assertEqual(1, resource_manager.makes)
resource = resource_manager.getResource()
self.assertEqual(2, resource_manager.makes)
+
+ def testGetResourceResetsResource(self):
+ resource_manager = MockResettableResource()
+ resource = resource_manager.getResource()
+ self.assertEqual(1, resource_manager.makes)
+ resource = resource_manager.getResource()
+ self.assertEqual(1, resource_manager.makes)
+ self.assertEqual(1, resource_manager.resets)
+
+ def testFinishedWithResetsResource(self):
+ resource_manager = MockResettableResource()
+ resource = resource_manager.getResource()
+ self.assertEqual(1, resource_manager.makes)
+ resource = resource_manager.getResource()
+ self.assertEqual(1, resource_manager.makes)
+ self.assertEqual(1, resource_manager.resets)
+
+ resource_manager.finishedWith(resource)
+ self.assertEqual(2, resource_manager.resets)
+ self.assertEqual(0, resource_manager.cleans)
+ resource_manager.finishedWith(resource)
+ self.assertEqual(2, resource_manager.resets)
+ self.assertEqual(1, resource_manager.cleans)