def fails_on(db, reason=None):
- return fails_if(Predicate.as_predicate(db), reason)
+ return fails_if(db, reason)
def fails_on_everything_except(*dbs):
def skip(db, reason=None):
- return skip_if(Predicate.as_predicate(db), reason)
+ return skip_if(db, reason)
def only_on(dbs, reason=None):
return only_if(
- OrPredicate([Predicate.as_predicate(db) for db in util.to_list(dbs)])
+ OrPredicate([Predicate.as_predicate(db, reason)
+ for db in util.to_list(dbs)])
)
def enforces_check_constraints(self):
"""Target database must also enforce check constraints."""
+ def mysql_not_mariadb_102(config):
+ return against(config, "mysql") and (
+ not config.db.dialect._is_mariadb or
+ config.db.dialect.server_version_info < (5, 5, 5, 10, 2)
+ )
+
return self.check_constraints + fails_on(
- ['mysql'], "check constraints don't enforce"
+ mysql_not_mariadb_102,
+ "check constraints don't enforce on MySQL, MariaDB<10.2"
)
@property
t = Table(
'my_table', self.metadata,
Column(
- 'data', Enum("one", "two", "three", name="e1").with_variant(
- Enum("four", "five", "six", name="e2"), "some_other_db"
+ 'data', Enum("one", "two", "three",
+ native_enum=False, name="e1").with_variant(
+ Enum("four", "five", "six", native_enum=False,
+ name="e2"), "some_other_db"
)
- )
+ ),
+ mysql_engine='InnoDB'
)
eq_(
with testing.db.connect() as conn:
self.metadata.create_all(conn)
assert_raises(
- (exc.IntegrityError, exc.ProgrammingError, exc.DataError),
+ (exc.DBAPIError, ),
conn.execute,
"insert into my_table "
"(data) values('four')")
t = Table(
'my_table', self.metadata,
Column(
- 'data', Enum("one", "two", "three", name="e1").with_variant(
- Enum("four", "five", "six", name="e2"),
+ 'data', Enum("one", "two", "three", native_enum=False,
+ name="e1").with_variant(
+ Enum("four", "five", "six", native_enum=False, name="e2"),
testing.db.dialect.name
)
)
with testing.db.connect() as conn:
self.metadata.create_all(conn)
assert_raises(
- (exc.IntegrityError, exc.ProgrammingError, exc.DataError),
+ (exc.DBAPIError, ),
conn.execute,
"insert into my_table "
"(data) values('two')")