summaryrefslogtreecommitdiff
path: root/test/ext/test_serializer.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-11-21 13:30:32 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2013-11-21 13:30:32 -0500
commit2aa00c49d7a1a783ff50832f2de7760bfaaccf6d (patch)
tree8cee77853374a0570c562e1b5510bb55da3290ce /test/ext/test_serializer.py
parent42fd77a4bfb8c5a1c02c89a17481a90cd039f10e (diff)
downloadsqlalchemy-2aa00c49d7a1a783ff50832f2de7760bfaaccf6d.tar.gz
- Fixed bug which prevented the ``serializer`` extension from working
correctly with table or column names that contain non-ASCII characters. [ticket:2869]
Diffstat (limited to 'test/ext/test_serializer.py')
-rw-r--r--test/ext/test_serializer.py24
1 files changed, 21 insertions, 3 deletions
diff --git a/test/ext/test_serializer.py b/test/ext/test_serializer.py
index 1950bd2d1..ffeac55c1 100644
--- a/test/ext/test_serializer.py
+++ b/test/ext/test_serializer.py
@@ -1,13 +1,15 @@
+# coding: utf-8
from sqlalchemy.ext import serializer
from sqlalchemy import testing
from sqlalchemy import Integer, String, ForeignKey, select, \
- desc, func, util
+ desc, func, util, MetaData
from sqlalchemy.testing.schema import Table
from sqlalchemy.testing.schema import Column
from sqlalchemy.orm import relationship, sessionmaker, scoped_session, \
class_mapper, mapper, joinedload, configure_mappers, aliased
-from sqlalchemy.testing import eq_
+from sqlalchemy.testing import eq_, AssertsCompiledSQL
+from sqlalchemy.util import u, ue
from sqlalchemy.testing import fixtures
@@ -19,7 +21,7 @@ class Address(fixtures.ComparableEntity):
users = addresses = Session = None
-class SerializeTest(fixtures.MappedTest):
+class SerializeTest(AssertsCompiledSQL, fixtures.MappedTest):
run_setup_mappers = 'once'
run_inserts = 'once'
@@ -171,6 +173,22 @@ class SerializeTest(fixtures.MappedTest):
x = serializer.loads(ser, users.metadata)
eq_(str(r), str(x))
+ def test_unicode(self):
+ m = MetaData()
+ t = Table(ue('\u6e2c\u8a66'), m,
+ Column(ue('\u6e2c\u8a66_id'), Integer))
+
+ expr = select([t]).where(t.c[ue('\u6e2c\u8a66_id')] == 5)
+
+ expr2 = serializer.loads(serializer.dumps(expr, -1), m)
+
+ self.assert_compile(
+ expr2,
+ ue('SELECT "\u6e2c\u8a66"."\u6e2c\u8a66_id" FROM "\u6e2c\u8a66" '
+ 'WHERE "\u6e2c\u8a66"."\u6e2c\u8a66_id" = :\u6e2c\u8a66_id_1'),
+ dialect="default"
+ )
+
if __name__ == '__main__':
testing.main()