From cc3d1e057da98adb2e33dba2894d0961273da747 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sun, 20 Aug 2017 18:57:05 -0400 Subject: [PATCH] - a few mysql fixes, more to come Change-Id: Icdcc8ed03374251b8d3815ae58e2726ea27c14b4 (cherry picked from commit 64032a35ae3dbed0bd5bbdf4d07b3f0094684f87) --- lib/sqlalchemy/testing/exclusions.py | 7 ++++--- test/requirements.py | 9 ++++++++- test/sql/test_types.py | 18 +++++++++++------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/lib/sqlalchemy/testing/exclusions.py b/lib/sqlalchemy/testing/exclusions.py index 074b98591d..1e893f86a8 100644 --- a/lib/sqlalchemy/testing/exclusions.py +++ b/lib/sqlalchemy/testing/exclusions.py @@ -410,7 +410,7 @@ def future(fn, *arg): 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): @@ -422,12 +422,13 @@ 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)]) ) diff --git a/test/requirements.py b/test/requirements.py index 365df47a61..d43434095b 100644 --- a/test/requirements.py +++ b/test/requirements.py @@ -51,8 +51,15 @@ class DefaultRequirements(SuiteRequirements): 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 diff --git a/test/sql/test_types.py b/test/sql/test_types.py index f46ef21cd8..50d6ddf923 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -1379,10 +1379,13 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): 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_( @@ -1393,7 +1396,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): 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')") @@ -1406,8 +1409,9 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): 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 ) ) @@ -1422,7 +1426,7 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest): 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')") -- 2.47.2