]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- more pg8000 tests passing
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 25 Jul 2014 20:39:44 +0000 (16:39 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 25 Jul 2014 20:39:44 +0000 (16:39 -0400)
lib/sqlalchemy/engine/base.py
lib/sqlalchemy/testing/requirements.py
test/engine/test_ddlevents.py
test/engine/test_pool.py
test/engine/test_reconnect.py
test/ext/test_serializer.py
test/requirements.py

index f9dfea32b09183d16a83f9f6fe6dcfe9bbd7ff1d..2dc4d43f2d575488b6cdb490e22c1238935eb049 100644 (file)
@@ -1071,7 +1071,6 @@ class Connection(Connectable):
                                 parameters,
                                 cursor,
                                 context):
-
         exc_info = sys.exc_info()
 
         if context and context.exception is None:
index 3413c0d303761b27acd3c3e8c8611c8b61aed595..8fe7a509013a7bc98b5c7b9cb8e1bc7956c1ea63 100644 (file)
@@ -592,6 +592,14 @@ class SuiteRequirements(Requirements):
         """
         return exclusions.open()
 
+    @property
+    def graceful_disconnects(self):
+        """Target driver must raise a DBAPI-level exception, such as
+        InterfaceError, when the underlying connection has been closed
+        and the execute() method is called.
+        """
+        return exclusions.open()
+
     @property
     def skip_mysql_on_windows(self):
         """Catchall for a large variety of MySQL on Windows failures"""
index b3f73f6b147c40a181653fc319f937fdaa931dd5..0d828b3407e91a69f680ded976d64f8b4f8adb68 100644 (file)
@@ -461,12 +461,11 @@ class DDLExecutionTest(fixtures.TestBase):
                 r = eval(py)
                 assert list(r) == [(1,)], py
 
-    @testing.fails_on('postgresql+pg8000', 'pg8000 requires explicit types')
     def test_platform_escape(self):
         """test the escaping of % characters in the DDL construct."""
 
         default_from = testing.db.dialect.statement_compiler(
-                            testing.db.dialect, None).default_from()
+            testing.db.dialect, None).default_from()
 
         # We're abusing the DDL()
         # construct here by pushing a SELECT through it
index a9e650cca8bd74987c6d6db5649ececed8c65801..29f3697530a377a9ae96b9ab5f6c45741e23a33f 100644 (file)
@@ -101,6 +101,7 @@ class PoolTest(PoolTestBase):
 
     @testing.fails_on('+pyodbc',
                       "pyodbc cursor doesn't implement tuple __eq__")
+    @testing.fails_on("+pg8000", "returns [1], not (1,)")
     def test_cursor_iterable(self):
         conn = testing.db.raw_connection()
         cursor = conn.cursor()
@@ -109,7 +110,6 @@ class PoolTest(PoolTestBase):
         for row in cursor:
             eq_(row, expected.pop(0))
 
-
     def test_no_connect_on_recreate(self):
         def creator():
             raise Exception("no creates allowed")
index e6897b13d681c0bc995bc2c15a9ca32edeb0034f..f92b874da8924fe0915f81d429cab5cf98b1a9e3 100644 (file)
@@ -444,7 +444,6 @@ class CursorErrTest(fixtures.TestBase):
         )
 
 
-
 def _assert_invalidated(fn, *args):
     try:
         fn(*args)
@@ -453,8 +452,10 @@ def _assert_invalidated(fn, *args):
         if not e.connection_invalidated:
             raise
 
+
 class RealReconnectTest(fixtures.TestBase):
     __backend__ = True
+    __requires__ = 'graceful_disconnects',
 
     def setup(self):
         self.engine = engines.reconnecting_engine()
index ffeac55c1e0e4f0838c943cb017c080bc63479f7..e6754d91105b8503c56abe0c56b0d6a418361f55 100644 (file)
@@ -3,7 +3,7 @@
 from sqlalchemy.ext import serializer
 from sqlalchemy import testing
 from sqlalchemy import Integer, String, ForeignKey, select, \
-    desc, func, util, MetaData
+    desc, func, util, MetaData, literal_column
 from sqlalchemy.testing.schema import Table
 from sqlalchemy.testing.schema import Column
 from sqlalchemy.orm import relationship, sessionmaker, scoped_session, \
@@ -105,7 +105,7 @@ class SerializeTest(AssertsCompiledSQL, fixtures.MappedTest):
         self.assert_sql_count(testing.db, go, 1)
 
         eq_(q2.join(User.addresses).filter(Address.email
-            == 'ed@bettyboop.com').value(func.count('*')), 1)
+            == 'ed@bettyboop.com').value(func.count(literal_column('*'))), 1)
         u1 = Session.query(User).get(8)
         q = Session.query(Address).filter(Address.user
                 == u1).order_by(desc(Address.email))
index f91c8f68a5315bd168d3c4a25c5f776461f65e23..024f32c5428dfd1575ea3d0abc61be51643f78ec 100644 (file)
@@ -364,6 +364,16 @@ class DefaultRequirements(SuiteRequirements):
             no_support("postgresql+pg8000", "not supported and/or hangs")
             ])
 
+    @property
+    def graceful_disconnects(self):
+        """Target driver must raise a DBAPI-level exception, such as
+        InterfaceError, when the underlying connection has been closed
+        and the execute() method is called.
+        """
+        return fails_on(
+                    "postgresql+pg8000", "Driver crashes"
+                )
+
     @property
     def views(self):
         """Target database must support VIEWs."""