summaryrefslogtreecommitdiff
path: root/tests/testutils.py
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2010-11-28 15:03:34 +0000
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2010-11-28 17:29:36 +0000
commit598b9424d27155b49d8ad1ca17dfa0c27b5ad974 (patch)
treec982d462cfe86e2089cfe21239ee1808703479fd /tests/testutils.py
parent2b6d2017ed4f199caa7e032100ac048ebc3978e2 (diff)
downloadpsycopg2-598b9424d27155b49d8ad1ca17dfa0c27b5ad974.tar.gz
Deal uniformly with test servers without pg_sleep.
Diffstat (limited to 'tests/testutils.py')
-rw-r--r--tests/testutils.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/tests/testutils.py b/tests/testutils.py
index fdc5f54..b7c0fab 100644
--- a/tests/testutils.py
+++ b/tests/testutils.py
@@ -44,4 +44,28 @@ def decorate_all_tests(cls, decorator):
for n in dir(cls):
if n.startswith('test'):
setattr(cls, n, decorator(getattr(cls, n)))
-
+
+
+def skip_if_no_pg_sleep(name):
+ """Decorator to skip a test if pg_sleep is not supported by the server.
+
+ Pass it the name of an attribute containing a connection or of a method
+ returning a connection.
+ """
+ def skip_if_no_pg_sleep_(f):
+ def skip_if_no_pg_sleep__(self):
+ cnn = getattr(self, name)
+ if callable(cnn):
+ cnn = cnn()
+
+ if cnn.server_version < 80100:
+ return self.skipTest(
+ "server version %s doesn't support pg_sleep"
+ % cnn.server_version)
+
+ return f(self)
+
+ skip_if_no_pg_sleep__.__name__ = f.__name__
+ return skip_if_no_pg_sleep__
+
+ return skip_if_no_pg_sleep_