diff options
author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2010-11-28 15:03:34 +0000 |
---|---|---|
committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2010-11-28 17:29:36 +0000 |
commit | 598b9424d27155b49d8ad1ca17dfa0c27b5ad974 (patch) | |
tree | c982d462cfe86e2089cfe21239ee1808703479fd /tests/testutils.py | |
parent | 2b6d2017ed4f199caa7e032100ac048ebc3978e2 (diff) | |
download | psycopg2-598b9424d27155b49d8ad1ca17dfa0c27b5ad974.tar.gz |
Deal uniformly with test servers without pg_sleep.
Diffstat (limited to 'tests/testutils.py')
-rw-r--r-- | tests/testutils.py | 26 |
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_ |