]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- test all pymssql messages here
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 29 Mar 2013 16:09:11 +0000 (12:09 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 29 Mar 2013 16:09:11 +0000 (12:09 -0400)
- changelog

doc/build/changelog/changelog_08.rst
test/dialect/test_mssql.py

index d48b7080c5792d18da9ded4634a07cbb1ea0f814..634ea4a953f672978248a5468dae5db1d6bcceac 100644 (file)
@@ -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
 
index def70207e8867a3b67544a0ff2b90269d27781ce..0dfda9015ce2da47dd3766b38b62754f2e59d38a 100644 (file)
@@ -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()