summaryrefslogtreecommitdiff
path: root/test/dialect/test_sqlite.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-01-12 17:17:33 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-01-12 17:17:33 -0500
commitaf3bfefc622031786a4f9d9befd8b1d1da8a8922 (patch)
tree507a604e963d07f9891ab1abd567cf94a98f74ad /test/dialect/test_sqlite.py
parent0f31f36fe59aa2053271df459fbc3092a0ce599c (diff)
downloadsqlalchemy-af3bfefc622031786a4f9d9befd8b1d1da8a8922.tar.gz
- fix reflection of unknown types with arguments, NullType() accepts no arguments.
Diffstat (limited to 'test/dialect/test_sqlite.py')
-rw-r--r--test/dialect/test_sqlite.py45
1 files changed, 27 insertions, 18 deletions
diff --git a/test/dialect/test_sqlite.py b/test/dialect/test_sqlite.py
index 11b0c004e..2413c12e8 100644
--- a/test/dialect/test_sqlite.py
+++ b/test/dialect/test_sqlite.py
@@ -4,7 +4,7 @@ from test.lib.testing import eq_, assert_raises, \
assert_raises_message
import datetime
from sqlalchemy import *
-from sqlalchemy import exc, sql, schema, pool
+from sqlalchemy import exc, sql, schema, pool, types as sqltypes
from sqlalchemy.dialects.sqlite import base as sqlite, \
pysqlite as pysqlite_dialect
from test.lib import *
@@ -98,6 +98,7 @@ class TestTypes(TestBase, AssertsExecutionResults):
assert not bindproc or isinstance(bindproc(u'some string'),
unicode)
+ @testing.provide_metadata
def test_type_reflection(self):
# (ask_for, roundtripped_as_if_different)
@@ -135,25 +136,33 @@ class TestTypes(TestBase, AssertsExecutionResults):
columns = [Column('c%i' % (i + 1), t[0]) for (i, t) in
enumerate(specs)]
db = testing.db
- m = MetaData(db)
- t_table = Table('types', m, *columns)
- m.create_all()
+ t_table = Table('types', metadata, *columns)
+ metadata.create_all()
+ m2 = MetaData(db)
+ rt = Table('types', m2, autoload=True)
try:
- m2 = MetaData(db)
- rt = Table('types', m2, autoload=True)
- try:
- db.execute('CREATE VIEW types_v AS SELECT * from types')
- rv = Table('types_v', m2, autoload=True)
- expected = [len(c) > 1 and c[1] or c[0] for c in specs]
- for table in rt, rv:
- for i, reflected in enumerate(table.c):
- assert isinstance(reflected.type,
- type(expected[i])), '%d: %r' % (i,
- type(expected[i]))
- finally:
- db.execute('DROP VIEW types_v')
+ db.execute('CREATE VIEW types_v AS SELECT * from types')
+ rv = Table('types_v', m2, autoload=True)
+ expected = [len(c) > 1 and c[1] or c[0] for c in specs]
+ for table in rt, rv:
+ for i, reflected in enumerate(table.c):
+ assert isinstance(reflected.type,
+ type(expected[i])), '%d: %r' % (i,
+ type(expected[i]))
finally:
- m.drop_all()
+ db.execute('DROP VIEW types_v')
+
+ @testing.emits_warning('Did not recognize')
+ @testing.provide_metadata
+ def test_unknown_reflection(self):
+ t = Table('t', metadata,
+ Column('x', sqltypes.BINARY(16)),
+ Column('y', sqltypes.BINARY())
+ )
+ t.create()
+ t2 = Table('t', MetaData(), autoload=True, autoload_with=testing.db)
+ assert isinstance(t2.c.x.type, sqltypes.NullType)
+ assert isinstance(t2.c.y.type, sqltypes.NullType)
class TestDefaults(TestBase, AssertsExecutionResults):