From: Paul Johnston Date: Sun, 19 Aug 2007 15:07:30 +0000 (+0000) Subject: MSSQL unit test fixes X-Git-Tag: rel_0_3_11~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=77aa8c605c22220f0a0a5fe63dc3d2abc7a1e3d1;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git MSSQL unit test fixes --- diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index d64fe926a7..b1019b11ca 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -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], diff --git a/test/orm/query.py b/test/orm/query.py index 872d1772e4..f4fe00314c 100644 --- a/test/orm/query.py +++ b/test/orm/query.py @@ -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() diff --git a/test/sql/testtypes.py b/test/sql/testtypes.py index ed9de09120..00f382e209 100644 --- a/test/sql/testtypes.py +++ b/test/sql/testtypes.py @@ -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'] diff --git a/test/testbase.py b/test/testbase.py index 7c5095d1a0..557554c221 100644 --- a/test/testbase.py +++ b/test/testbase.py @@ -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()