diff options
author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2011-01-10 00:29:09 +0000 |
---|---|---|
committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2011-01-10 00:46:02 +0000 |
commit | 79048ff19a2e3d14b8c7fa73f53ea3da9705afdd (patch) | |
tree | b12044135997adc76e16ab18bd16de40a023b808 /tests/testutils.py | |
parent | f345e7daeb1f4a80be168215b7256ae3a9c5b6c3 (diff) | |
parent | 48588e5f6943ad31ac9080536514e4ef5e52a60c (diff) | |
download | psycopg2-79048ff19a2e3d14b8c7fa73f53ea3da9705afdd.tar.gz |
Merge branch 'python2' into python3
Conflicts:
NEWS-2.3
tests/__init__.py
tests/test_lobject.py
tests/test_quote.py
tests/testutils.py
Diffstat (limited to 'tests/testutils.py')
-rw-r--r-- | tests/testutils.py | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/tests/testutils.py b/tests/testutils.py index cd034e5..6de3a4b 100644 --- a/tests/testutils.py +++ b/tests/testutils.py @@ -1,6 +1,25 @@ -# Utility module for psycopg2 testing. -# -# Copyright (C) 2010 Daniele Varrazzo <daniele.varrazzo@gmail.com> +# testutils.py - utility module for psycopg2 testing. +# +# Copyright (C) 2010-2011 Daniele Varrazzo <daniele.varrazzo@gmail.com> +# +# psycopg2 is free software: you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# In addition, as a special exception, the copyright holders give +# permission to link this program with the OpenSSL library (or with +# modified versions of OpenSSL that use the same license as OpenSSL), +# and distribute linked combinations including the two. +# +# You must obey the GNU Lesser General Public License in all respects for +# all of the code used other than OpenSSL. +# +# psycopg2 is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +# License for more details. + # Use unittest2 if available. Otherwise mock a skip facility with warnings. @@ -83,6 +102,32 @@ def skip_if_no_pg_sleep(name): return skip_if_no_pg_sleep_ + +def skip_if_tpc_disabled(f): + """Skip a test if the server has tpc support disabled.""" + def skip_if_tpc_disabled_(self): + from psycopg2 import ProgrammingError + cnn = self.connect() + cur = cnn.cursor() + try: + cur.execute("SHOW max_prepared_transactions;") + except ProgrammingError: + return self.skipTest( + "server too old: two phase transactions not supported.") + else: + mtp = int(cur.fetchone()[0]) + cnn.close() + + if not mtp: + return self.skipTest( + "server not configured for two phase transactions. " + "set max_prepared_transactions to > 0 to run the test") + return f(self) + + skip_if_tpc_disabled_.__name__ = f.__name__ + return skip_if_tpc_disabled_ + + def skip_on_python2(f): """Skip a test on Python 3 and following.""" def skip_on_python2_(self): |