]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- break out unicode tests to a varchar + a text test, add a requires
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 15 Oct 2012 21:36:17 +0000 (17:36 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 15 Oct 2012 21:36:17 +0000 (17:36 -0400)
lib/sqlalchemy/testing/requirements.py
lib/sqlalchemy/testing/suite/test_types.py

index ae285afa4b50c32b3239e6aea5f9018f3051ddc3..ade1fd241cb04266f4e66c1709cc0b3b02b92c3c 100644 (file)
@@ -178,6 +178,13 @@ class SuiteRequirements(Requirements):
         """
         return exclusions.open()
 
+    @property
+    def text_type(self):
+        """Target database must support an unbounded Text() "
+        "type such as TEXT or CLOB"""
+
+        return exclusions.open()
+
     @property
     def empty_strings(self):
         """target database can persist/return an empty string."""
index 4c1f57bc911e825373784c4639da938b23081dc1..361d784b8b599d27bdeef7ac9fdc8ce91a7f49c2 100644 (file)
@@ -7,7 +7,7 @@ from sqlalchemy import Integer, Unicode, UnicodeText, select
 from ..schema import Table, Column
 
 
-class UnicodeTest(fixtures.TablesTest):
+class _UnicodeFixture(object):
     __requires__ = 'unicode_data',
 
     data = u"Alors vous imaginez ma surprise, au lever du jour, "\
@@ -19,8 +19,7 @@ class UnicodeTest(fixtures.TablesTest):
         Table('unicode_table', metadata,
             Column('id', Integer, primary_key=True,
                         test_needs_autoincrement=True),
-            Column('unicode_varchar', Unicode(250)),
-            Column('unicode_text', UnicodeText),
+            Column('unicode_data', cls.datatype),
             )
 
     def test_round_trip(self):
@@ -29,24 +28,21 @@ class UnicodeTest(fixtures.TablesTest):
         config.db.execute(
             unicode_table.insert(),
             {
-                'unicode_varchar': self.data,
-                'unicode_text': self.data
+                'unicode_data': self.data,
             }
         )
 
         row = config.db.execute(
                     select([
-                            unicode_table.c.unicode_varchar,
-                            unicode_table.c.unicode_text
+                            unicode_table.c.unicode_data,
                     ])
                 ).first()
 
         eq_(
             row,
-            (self.data, self.data)
+            (self.data, )
         )
         assert isinstance(row[0], unicode)
-        assert isinstance(row[1], unicode)
 
     def test_round_trip_executemany(self):
         unicode_table = self.tables.unicode_table
@@ -55,8 +51,7 @@ class UnicodeTest(fixtures.TablesTest):
             unicode_table.insert(),
             [
                 {
-                    'unicode_varchar': self.data,
-                    'unicode_text': self.data
+                    'unicode_data': self.data,
                 }
                 for i in xrange(3)
             ]
@@ -64,17 +59,15 @@ class UnicodeTest(fixtures.TablesTest):
 
         rows = config.db.execute(
                     select([
-                            unicode_table.c.unicode_varchar,
-                            unicode_table.c.unicode_text
+                            unicode_table.c.unicode_data,
                     ])
                 ).fetchall()
         eq_(
             rows,
-            [(self.data, self.data) for i in xrange(3)]
+            [(self.data, ) for i in xrange(3)]
         )
         for row in rows:
             assert isinstance(row[0], unicode)
-            assert isinstance(row[1], unicode)
 
 
     @requirements.empty_strings
@@ -83,12 +76,22 @@ class UnicodeTest(fixtures.TablesTest):
 
         config.db.execute(
             unicode_table.insert(),
-            {"unicode_varchar": u''}
+            {"unicode_data": u''}
         )
         row = config.db.execute(
-                    select([unicode_table.c.unicode_varchar])
+                    select([unicode_table.c.unicode_data])
                 ).first()
         eq_(row, (u'',))
 
+class UnicodeVarcharTest(_UnicodeFixture, fixtures.TablesTest):
+    __requires__ = 'unicode_data',
+
+    datatype = Unicode(255)
+
+
+class UnicodeTextTest(_UnicodeFixture, fixtures.TablesTest):
+    __requires__ = 'unicode_data', 'text_type'
+
+    datatype = UnicodeText()
 
-__all__ = ('UnicodeTest',)
\ No newline at end of file
+__all__ = ('UnicodeVarcharTest', 'UnicodeTextTest')
\ No newline at end of file