From 7dff6f6d490528f5e88493cdf4b14d3136b40d3c Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 29 Mar 2013 12:09:11 -0400 Subject: [PATCH] - test all pymssql messages here - changelog --- doc/build/changelog/changelog_08.rst | 7 +++++++ test/dialect/test_mssql.py | 30 +++++++++++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/doc/build/changelog/changelog_08.rst b/doc/build/changelog/changelog_08.rst index d48b7080c5..634ea4a953 100644 --- a/doc/build/changelog/changelog_08.rst +++ b/doc/build/changelog/changelog_08.rst @@ -6,6 +6,13 @@ .. changelog:: :version: 0.8.1 + .. change:: + :tags: bug, mssql + :pullreq: 47 + + Added support for additional "disconnect" messages + to the pymssql dialect. Courtesy John Anderson. + .. change:: :tags: feature, sql diff --git a/test/dialect/test_mssql.py b/test/dialect/test_mssql.py index def70207e8..0dfda9015c 100644 --- a/test/dialect/test_mssql.py +++ b/test/dialect/test_mssql.py @@ -1210,28 +1210,28 @@ class MatchTest(fixtures.TestBase, AssertsCompiledSQL): eq_([1, 3, 5], [r.id for r in results]) -class ParseConnectTest(fixtures.TestBase, AssertsCompiledSQL): - @classmethod - def setup_class(cls): - global dialect - dialect = pyodbc.dialect() +class ParseConnectTest(fixtures.TestBase): def test_pyodbc_connect_dsn_trusted(self): + dialect = pyodbc.dialect() u = url.make_url('mssql://mydsn') connection = dialect.create_connect_args(u) eq_([['dsn=mydsn;Trusted_Connection=Yes'], {}], connection) def test_pyodbc_connect_old_style_dsn_trusted(self): + dialect = pyodbc.dialect() u = url.make_url('mssql:///?dsn=mydsn') connection = dialect.create_connect_args(u) eq_([['dsn=mydsn;Trusted_Connection=Yes'], {}], connection) def test_pyodbc_connect_dsn_non_trusted(self): + dialect = pyodbc.dialect() u = url.make_url('mssql://username:password@mydsn') connection = dialect.create_connect_args(u) eq_([['dsn=mydsn;UID=username;PWD=password'], {}], connection) def test_pyodbc_connect_dsn_extra(self): + dialect = pyodbc.dialect() u = \ url.make_url('mssql://username:password@mydsn/?LANGUAGE=us_' 'english&foo=bar') @@ -1241,12 +1241,14 @@ class ParseConnectTest(fixtures.TestBase, AssertsCompiledSQL): assert ";foo=bar" in dsn_string def test_pyodbc_connect(self): + dialect = pyodbc.dialect() u = url.make_url('mssql://username:password@hostspec/database') connection = dialect.create_connect_args(u) eq_([['DRIVER={SQL Server};Server=hostspec;Database=database;UI' 'D=username;PWD=password'], {}], connection) def test_pyodbc_connect_comma_port(self): + dialect = pyodbc.dialect() u = \ url.make_url('mssql://username:password@hostspec:12345/data' 'base') @@ -1255,6 +1257,7 @@ class ParseConnectTest(fixtures.TestBase, AssertsCompiledSQL): 'ase;UID=username;PWD=password'], {}], connection) def test_pyodbc_connect_config_port(self): + dialect = pyodbc.dialect() u = \ url.make_url('mssql://username:password@hostspec/database?p' 'ort=12345') @@ -1263,6 +1266,7 @@ class ParseConnectTest(fixtures.TestBase, AssertsCompiledSQL): 'D=username;PWD=password;port=12345'], {}], connection) def test_pyodbc_extra_connect(self): + dialect = pyodbc.dialect() u = \ url.make_url('mssql://username:password@hostspec/database?L' 'ANGUAGE=us_english&foo=bar') @@ -1275,6 +1279,7 @@ class ParseConnectTest(fixtures.TestBase, AssertsCompiledSQL): 'username;PWD=password;LANGUAGE=us_english;foo=bar'), True) def test_pyodbc_odbc_connect(self): + dialect = pyodbc.dialect() u = \ url.make_url('mssql:///?odbc_connect=DRIVER%3D%7BSQL+Server' '%7D%3BServer%3Dhostspec%3BDatabase%3Ddatabase' @@ -1284,6 +1289,7 @@ class ParseConnectTest(fixtures.TestBase, AssertsCompiledSQL): 'D=username;PWD=password'], {}], connection) def test_pyodbc_odbc_connect_with_dsn(self): + dialect = pyodbc.dialect() u = \ url.make_url('mssql:///?odbc_connect=dsn%3Dmydsn%3BDatabase' '%3Ddatabase%3BUID%3Dusername%3BPWD%3Dpassword' @@ -1293,6 +1299,7 @@ class ParseConnectTest(fixtures.TestBase, AssertsCompiledSQL): {}], connection) def test_pyodbc_odbc_connect_ignores_other_values(self): + dialect = pyodbc.dialect() u = \ url.make_url('mssql://userdiff:passdiff@localhost/dbdiff?od' 'bc_connect=DRIVER%3D%7BSQL+Server%7D%3BServer' @@ -1324,10 +1331,19 @@ class ParseConnectTest(fixtures.TestBase, AssertsCompiledSQL): def test_pymssql_disconnect(self): dialect = pymssql.dialect() - for error in ['Adaptive Server connection timed out', 'message 20003']: + for error in [ + 'Adaptive Server connection timed out', + 'message 20003', + "Error 10054", + "Not connected to any MS SQL server", + "Connection is closed" + ]: eq_(dialect.is_disconnect(error, None, None), True) - @testing.only_on(['mssql+pyodbc', 'mssql+pymssql'], "FreeTDS specific test") + eq_(dialect.is_disconnect("not an error", None, None), False) + + @testing.only_on(['mssql+pyodbc', 'mssql+pymssql'], + "FreeTDS specific test") def test_bad_freetds_warning(self): engine = engines.testing_engine() -- 2.47.2