]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
MSSQL unit test fixes
authorPaul Johnston <paj@pajhome.org.uk>
Sun, 19 Aug 2007 15:07:30 +0000 (15:07 +0000)
committerPaul Johnston <paj@pajhome.org.uk>
Sun, 19 Aug 2007 15:07:30 +0000 (15:07 +0000)
lib/sqlalchemy/databases/mssql.py
test/orm/query.py
test/sql/testtypes.py
test/testbase.py

index d64fe926a754812cae71b516b2d7736ba25ff007..b1019b11ca8cd99cc937afee86d6929653daa475 100644 (file)
@@ -468,7 +468,7 @@ class MSSQLDialect(ansisql.ANSIDialect):
     def preparer(self):
         return MSSQLIdentifierPreparer(self)
 
-    def get_default_schema_name(self):
+    def get_default_schema_name(self, connection):
         return self.schema_name
 
     def set_default_schema_name(self, schema_name):
@@ -513,7 +513,7 @@ class MSSQLDialect(ansisql.ANSIDialect):
     def has_table(self, connection, tablename, schema=None):
         import sqlalchemy.databases.information_schema as ischema
 
-        current_schema = schema or self.get_default_schema_name()
+        current_schema = schema or self.get_default_schema_name(connection)
         columns = self.uppercase_table(ischema.columns)
         s = sql.select([columns],
                    current_schema
@@ -532,7 +532,7 @@ class MSSQLDialect(ansisql.ANSIDialect):
         if table.schema is not None:
             current_schema = table.schema
         else:
-            current_schema = self.get_default_schema_name()
+            current_schema = self.get_default_schema_name(connection)
 
         columns = self.uppercase_table(ischema.columns)
         s = sql.select([columns],
index 872d1772e4c4bcd55749d21db0886935aac79374..f4fe00314c3197d148bb55a956c862e78ad8691f 100644 (file)
@@ -114,6 +114,7 @@ class FilterTest(QueryTest):
     def test_basic(self):
         assert [User(id=7), User(id=8), User(id=9),User(id=10)] == create_session().query(User).all()
 
+    @testbase.unsupported('mssql')
     def test_limit(self):
         assert [User(id=8), User(id=9)] == create_session().query(User).limit(2).offset(1).all()
 
index ed9de091201290d7f8ab3b32b9403d9ff48f9e35..00f382e209e286a80c14b5f6500f92f540fb3541 100644 (file)
@@ -312,8 +312,8 @@ class DateTest(AssertMixin):
             ]
 
             if db.engine.name == 'mssql':
-                # MSSQL Datetime values have only a 3.33 milliseconds precision
-                insert_data[2] = [9, 'foo', datetime.datetime(2005, 11, 10, 11, 52, 35, 547000), datetime.date(1970,4,1), datetime.time(23,59,59,997000)]
+                # MSSQL can't reliably fetch the millisecond part
+                insert_data[2] = [9, 'foo', datetime.datetime(2005, 11, 10, 11, 52, 35), datetime.date(1970,4,1), datetime.time(23,59,59)]
 
             fnames = ['user_id', 'user_name', 'user_datetime', 'user_date', 'user_time']
 
index 7c5095d1a0abf432a18d54cc5c07613e3154c4de..557554c2214d5edaf83d3ff32c6d1a6607f3b81e 100644 (file)
@@ -309,6 +309,8 @@ class ExecutionContextWrapper(object):
         ctx = self.ctx
         statement = unicode(ctx.compiled)
         statement = re.sub(r'\n', '', ctx.statement)
+        if db.engine.name == 'mssql' and statement.endswith('; select scope_identity()'):
+            statement = statement[:-25]
         if testdata.buffer is not None:
             testdata.buffer.write(statement + "\n")
 
@@ -333,6 +335,7 @@ class ExecutionContextWrapper(object):
                         testdata.assert_list.pop()
                     item = (statement, entry)
                 except KeyError:
+                    print "Testing for one of the following queries: %s, received '%s'" % (repr([k for k in item.keys()]), statement)
                     self.unittest.assert_(False, "Testing for one of the following queries: %s, received '%s'" % (repr([k for k in item.keys()]), statement))
 
             (query, params) = item
@@ -347,8 +350,6 @@ class ExecutionContextWrapper(object):
                 parameters = [p.get_original_dict() for p in ctx.compiled_parameters]
                     
             query = self.convert_statement(query)
-            if db.engine.name == 'mssql' and statement.endswith('; select scope_identity()'):
-                statement = statement[:-25]
             testdata.unittest.assert_(statement == query and (params is None or params == parameters), "Testing for query '%s' params %s, received '%s' with params %s" % (query, repr(params), statement, repr(parameters)))
         testdata.sql_count += 1
         self.ctx.post_exec()