Skip to content

Commit fdc8a2e

Browse files
committed
only modify test for >=1.2
1 parent 67234aa commit fdc8a2e

3 files changed

Lines changed: 73 additions & 26 deletions

File tree

test/initdb.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ monetdb stop $DATABASE || true
1111
monetdb destroy -f $DATABASE || true
1212
monetdb create $DATABASE
1313
monetdb release $DATABASE
14+
monetdb start $DATABASE
1415
echo "create schema test_schema;" | mclient -d $DATABASE
1516
echo "create schema test_schema2;" | mclient -d $DATABASE
1617
echo "alter user monetdb set schema test_schema2;" | mclient -d $DATABASE

test/initfarm.sh

100644100755
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
FARM="/tmp/monetdb"
44

5+
ps ax | grep monetdbd | grep -v grep | awk '{ print $1 }' | xargs kill -9
56

67
monetdbd stop ${FARM} || true
8+
rm -rf ${FARM}
79
monetdbd create ${FARM} || true
8-
monetdbd start ${FARM}
10+
monetdbd start ${FARM}

test/test_suite.py

Lines changed: 69 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
from sqlalchemy.testing.suite import ComponentReflectionTest as _ComponentReflectionTest
44
from sqlalchemy.testing.suite import ExceptionTest as _ExceptionTest
55
from sqlalchemy.testing.suite import OrderByLabelTest as _OrderByLabelTest
6-
76
from sqlalchemy import inspect
8-
from sqlalchemy.testing import eq_
7+
from sqlalchemy.testing import eq_, is_
98
from sqlalchemy import testing
10-
from sqlalchemy.schema import DDL
9+
from sqlalchemy.schema import DDL, Index
1110
from sqlalchemy import event
1211
from sqlalchemy import MetaData
1312

13+
major, minor = [int(i) for i in sa.__version__.split('.')[:2]]
14+
1415

1516
class ComponentReflectionTest(_ComponentReflectionTest):
1617
@testing.requires.foreign_key_constraint_reflection
@@ -41,15 +42,6 @@ def test_get_temp_table_unique_constraints(self):
4142
# TODO: it looks like MonetDB doesn't show constains for temp tables (yet)
4243
return
4344

44-
insp = inspect(self.bind)
45-
reflected = insp.get_unique_constraints('user_tmp', schema='tmp')
46-
for refl in reflected:
47-
# Different dialects handle duplicate index and constraints
48-
# differently, so ignore this flag
49-
refl.pop('duplicates_index', None)
50-
eq_(reflected, [{'column_names': ['name'], 'name': 'user_tmp_uq'}])
51-
52-
5345
@classmethod
5446
def define_temp_tables(cls, metadata):
5547
user_tmp = Table(
@@ -76,6 +68,13 @@ def define_temp_tables(cls, metadata):
7668

7769
@classmethod
7870
def define_reflected_tables(cls, metadata, schema):
71+
if major >= 1 and minor >= 2:
72+
cls._define_reflected_tables_12(metadata, schema)
73+
else:
74+
super(ComponentReflectionTest, cls).define_reflected_tables(metadata, schema)
75+
76+
@classmethod
77+
def _define_reflected_tables_12(cls, metadata, schema):
7978
if schema:
8079
schema_prefix = schema + "."
8180
else:
@@ -88,7 +87,8 @@ def define_reflected_tables(cls, metadata, schema):
8887
Column('test2', sa.Float(5), nullable=False),
8988
Column('parent_user_id', sa.Integer,
9089
sa.ForeignKey('%susers.user_id' %
91-
schema_prefix)),
90+
schema_prefix,
91+
name='user_id_fk')),
9292
schema=schema,
9393
test_needs_fk=True,
9494
)
@@ -101,9 +101,16 @@ def define_reflected_tables(cls, metadata, schema):
101101
test_needs_fk=True,
102102
)
103103

104-
# somehow the dependencies are not properly resolved, so i modified
105-
# the standard test to have a reference to the address_id column
106-
mail = Table('email_addresses', metadata,
104+
Table("dingalings", metadata,
105+
Column('dingaling_id', sa.Integer, primary_key=True),
106+
Column('address_id', sa.Integer,
107+
sa.ForeignKey('%semail_addresses.address_id' %
108+
schema_prefix)),
109+
Column('data', sa.String(30)),
110+
schema=schema,
111+
test_needs_fk=True,
112+
)
113+
Table('email_addresses', metadata,
107114
Column('address_id', sa.Integer),
108115
Column('remote_user_id', sa.Integer,
109116
sa.ForeignKey(users.c.user_id)),
@@ -112,24 +119,61 @@ def define_reflected_tables(cls, metadata, schema):
112119
schema=schema,
113120
test_needs_fk=True,
114121
)
115-
116-
117-
Table("dingalings", metadata,
118-
Column('dingaling_id', sa.Integer, primary_key=True),
119-
Column('address_id', sa.Integer,
120-
sa.ForeignKey(mail.c.address_id)),
121-
Column('data', sa.String(30)),
122+
Table('comment_test', metadata,
123+
Column('id', sa.Integer, primary_key=True, comment='id comment'),
124+
Column('data', sa.String(20), comment='data % comment'),
125+
Column(
126+
'd2', sa.String(20),
127+
comment=r"""Comment types type speedily ' " \ '' Fun!"""),
122128
schema=schema,
123-
test_needs_fk=True,
124-
)
129+
comment=r"""the test % ' " \ table comment""")
125130

126131
if testing.requires.index_reflection.enabled:
127132
cls.define_index(metadata, users)
133+
134+
if not schema:
135+
noncol_idx_test_nopk = Table(
136+
'noncol_idx_test_nopk', metadata,
137+
Column('q', sa.String(5)),
138+
)
139+
noncol_idx_test_pk = Table(
140+
'noncol_idx_test_pk', metadata,
141+
Column('id', sa.Integer, primary_key=True),
142+
Column('q', sa.String(5)),
143+
)
144+
Index('noncol_idx_nopk', noncol_idx_test_nopk.c.q)
145+
Index('noncol_idx_pk', noncol_idx_test_pk.c.q)
146+
128147
if testing.requires.view_column_reflection.enabled:
129148
cls.define_views(metadata, schema)
130149
if not schema and testing.requires.temp_table_reflection.enabled:
131150
cls.define_temp_tables(metadata)
132151

152+
@testing.requires.index_reflection
153+
def test_get_noncol_index_pk(self):
154+
# TODO: not working for now?
155+
return
156+
157+
tname = "noncol_idx_test_nopk"
158+
ixname = "noncol_idx_nopk"
159+
meta = self.metadata
160+
insp = inspect(meta.bind)
161+
indexes = insp.get_indexes(tname)
162+
163+
# reflecting an index that has "x DESC" in it as the column.
164+
# the DB may or may not give us "x", but make sure we get the index
165+
# back, it has a name, it's connected to the table.
166+
expected_indexes = [
167+
{'unique': False,
168+
'name': ixname}
169+
]
170+
self._assert_insp_indexes(indexes, expected_indexes)
171+
172+
t = Table(tname, meta, autoload_with=meta.bind)
173+
eq_(len(t.indexes), 2)
174+
is_(list(t.indexes)[0].table, t)
175+
eq_(list(t.indexes)[0].name, ixname)
176+
133177

134178
class ExceptionTest(_ExceptionTest):
135179
"""

0 commit comments

Comments
 (0)