diff options
| author | Federico Caselli <cfederico87@gmail.com> | 2021-09-14 23:38:00 +0200 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-11-26 10:14:44 -0500 |
| commit | 5eb407f84bdabdbcd68975dbf76dc4c0809d7373 (patch) | |
| tree | 0d37ab4b9c28d8a0fa6cefdcc1933d52ffd9a599 /test/engine | |
| parent | 8ddb3ef165d0c2d6d7167bb861bb349e68b5e8df (diff) | |
| download | sqlalchemy-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.py | 58 | ||||
| -rw-r--r-- | test/engine/test_reconnect.py | 3 |
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", ) |
