summaryrefslogtreecommitdiff
path: root/test/engine
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2021-09-14 23:38:00 +0200
committerMike Bayer <mike_mp@zzzcomputing.com>2021-11-26 10:14:44 -0500
commit5eb407f84bdabdbcd68975dbf76dc4c0809d7373 (patch)
tree0d37ab4b9c28d8a0fa6cefdcc1933d52ffd9a599 /test/engine
parent8ddb3ef165d0c2d6d7167bb861bb349e68b5e8df (diff)
downloadsqlalchemy-5eb407f84bdabdbcd68975dbf76dc4c0809d7373.tar.gz
Added support for ``psycopg`` dialect.
Both sync and async versions are supported. Fixes: #6842 Change-Id: I57751c5028acebfc6f9c43572562405453a2f2a4
Diffstat (limited to 'test/engine')
-rw-r--r--test/engine/test_parseconnect.py58
-rw-r--r--test/engine/test_reconnect.py3
2 files changed, 60 insertions, 1 deletions
diff --git a/test/engine/test_parseconnect.py b/test/engine/test_parseconnect.py
index c69b332a8..f12d32d5d 100644
--- a/test/engine/test_parseconnect.py
+++ b/test/engine/test_parseconnect.py
@@ -1037,6 +1037,64 @@ class TestRegNewDBAPI(fixtures.TestBase):
)
+class TestGetDialect(fixtures.TestBase):
+ @testing.requires.sqlite
+ @testing.combinations(True, False, None)
+ def test_is_async_to_create_engine(self, is_async):
+ def get_dialect_cls(url):
+ url = url.set(drivername="sqlite")
+ return url.get_dialect()
+
+ global MockDialectGetDialect
+ MockDialectGetDialect = Mock()
+ MockDialectGetDialect.get_dialect_cls.side_effect = get_dialect_cls
+ MockDialectGetDialect.get_async_dialect_cls.side_effect = (
+ get_dialect_cls
+ )
+
+ registry.register("mockdialect", __name__, "MockDialectGetDialect")
+
+ from sqlalchemy.dialects import sqlite
+
+ kw = {}
+ if is_async is not None:
+ kw["_is_async"] = is_async
+ e = create_engine("mockdialect://", **kw)
+
+ eq_(e.dialect.name, "sqlite")
+ assert isinstance(e.dialect, sqlite.dialect)
+
+ if is_async:
+ eq_(
+ MockDialectGetDialect.mock_calls,
+ [
+ call.get_async_dialect_cls(url.make_url("mockdialect://")),
+ call.engine_created(e),
+ ],
+ )
+ else:
+ eq_(
+ MockDialectGetDialect.mock_calls,
+ [
+ call.get_dialect_cls(url.make_url("mockdialect://")),
+ call.engine_created(e),
+ ],
+ )
+ MockDialectGetDialect.reset_mock()
+ u = url.make_url("mockdialect://")
+ u.get_dialect(**kw)
+ if is_async:
+ eq_(
+ MockDialectGetDialect.mock_calls,
+ [call.get_async_dialect_cls(u)],
+ )
+ else:
+ eq_(
+ MockDialectGetDialect.mock_calls,
+ [call.get_dialect_cls(u)],
+ )
+
+
class MockDialect(DefaultDialect):
@classmethod
def dbapi(cls, **kw):
diff --git a/test/engine/test_reconnect.py b/test/engine/test_reconnect.py
index afd027698..f37d1893f 100644
--- a/test/engine/test_reconnect.py
+++ b/test/engine/test_reconnect.py
@@ -365,7 +365,7 @@ class MockReconnectTest(fixtures.TestBase):
)
self.mock_connect = call(
- host="localhost", password="bar", user="foo", database="test"
+ host="localhost", password="bar", user="foo", dbname="test"
)
# monkeypatch disconnect checker
self.db.dialect.is_disconnect = lambda e, conn, cursor: isinstance(
@@ -1321,6 +1321,7 @@ class InvalidateDuringResultTest(fixtures.TestBase):
"+aiosqlite",
"+aiomysql",
"+asyncmy",
+ "+psycopg",
],
"Buffers the result set and doesn't check for connection close",
)