summaryrefslogtreecommitdiff
path: root/tests/testutils.py
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2019-09-04 14:58:04 +0100
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2019-09-04 18:17:51 +0100
commitf08019e3568dd845bbefaffbe27c4909cf491d15 (patch)
treea85491c791c19bdd85a6dcaf2fbd161bc2c65267 /tests/testutils.py
parent33d3c074fa2a7591ab539c625bad1c934e21fc37 (diff)
downloadpsycopg2-fix-948.tar.gz
Added decorator to clean up the adaptation mappings after testsfix-948
Many tests were doing it manually, some weren't doing it and resulted in failure if run in different order. Close #948
Diffstat (limited to 'tests/testutils.py')
-rw-r--r--tests/testutils.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/testutils.py b/tests/testutils.py
index 405da18..996ceb7 100644
--- a/tests/testutils.py
+++ b/tests/testutils.py
@@ -429,3 +429,20 @@ def slow(f):
return self.skipTest("slow test")
return f(self)
return slow_
+
+
+def restore_types(f):
+ """Decorator to restore the adaptation system after running a test"""
+ @wraps(f)
+ def restore_types_(self):
+ types = psycopg2.extensions.string_types.copy()
+ adapters = psycopg2.extensions.adapters.copy()
+ try:
+ return f(self)
+ finally:
+ psycopg2.extensions.string_types.clear()
+ psycopg2.extensions.string_types.update(types)
+ psycopg2.extensions.adapters.clear()
+ psycopg2.extensions.adapters.update(adapters)
+
+ return restore_types_