From e66ca9edd525feb43177014d7736a79440262f3a Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 11 Mar 2010 22:10:25 -0500 Subject: [PATCH] adding windows-appropriate levels of pain to unicode handling --- lib/sqlalchemy/engine/default.py | 4 ++-- test/sql/test_types.py | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index 454d2a593e..87616ed4c8 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -154,7 +154,7 @@ class DefaultDialect(base.Dialect): str( expression.select( [expression.cast( - expression.literal_column("'test unicode returns'"),sqltypes.VARCHAR(60)) + expression.literal_column("'test unicode returns'"),sqltypes.Unicode(60)) ]).compile(dialect=self) ) ) @@ -162,7 +162,7 @@ class DefaultDialect(base.Dialect): row = cursor.fetchone() unicode_for_unicode = isinstance(row[0], unicode) cursor.close() - + if unicode_for_unicode and not unicode_for_varchar: return "conditional" else: diff --git a/test/sql/test_types.py b/test/sql/test_types.py index fa8254a7a4..af8881a4ee 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -311,7 +311,11 @@ class UnicodeTest(TestBase, AssertsExecutionResults): def test_native_unicode(self): """assert expected values for 'native unicode' mode""" - + + if testing.against('mssql+pyodbc') and not testing.db.dialect.freetds: + assert testing.db.dialect.returns_unicode_strings == 'conditional' + return + assert testing.db.dialect.returns_unicode_strings == \ ((testing.db.name, testing.db.driver) in \ ( @@ -518,6 +522,14 @@ class UnicodeTest(TestBase, AssertsExecutionResults): 'drole de petit voix m?a reveille. Elle disait: < S?il vous plait? ' 'dessine-moi un mouton! >' ) + elif testing.against('mssql+pyodbc') and not testing.db.dialect.freetds: + # TODO: no clue what this is + eq_( + x, + u'Alors vous imaginez ma surprise, au lever du jour, quand une ' + u'drle de petit voix ma rveill. Elle disait: Sil vous plat ' + u'dessine-moi un mouton! ' + ) elif engine.dialect.returns_unicode_strings: eq_(x, unicodedata) else: -- 2.47.3