summaryrefslogtreecommitdiff
path: root/tests/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/base.py')
-rw-r--r--tests/base.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/base.py b/tests/base.py
index 51b2300..a2c01fc 100644
--- a/tests/base.py
+++ b/tests/base.py
@@ -21,3 +21,28 @@ def requires_api_version(version):
),
reason="API version is too low (< {0})".format(version)
)
+
+
+class Cleanup(object):
+ if sys.version_info < (2, 7):
+ # Provide a basic implementation of addCleanup for Python < 2.7
+ def __init__(self, *args, **kwargs):
+ super(Cleanup, self).__init__(*args, **kwargs)
+ self._cleanups = []
+
+ def tearDown(self):
+ super(Cleanup, self).tearDown()
+ ok = True
+ while self._cleanups:
+ fn, args, kwargs = self._cleanups.pop(-1)
+ try:
+ fn(*args, **kwargs)
+ except KeyboardInterrupt:
+ raise
+ except:
+ ok = False
+ if not ok:
+ raise
+
+ def addCleanup(self, function, *args, **kwargs):
+ self._cleanups.append((function, args, kwargs))