From: Mike Bayer Date: Sun, 20 Aug 2017 22:57:05 +0000 (-0400) Subject: - a few mysql fixes, more to come X-Git-Tag: rel_1_1_14~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc3d1e057da98adb2e33dba2894d0961273da747;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - a few mysql fixes, more to come Change-Id: Icdcc8ed03374251b8d3815ae58e2726ea27c14b4 (cherry picked from commit 64032a35ae3dbed0bd5bbdf4d07b3f0094684f87) --- 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')")