]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- a few mysql fixes, more to come
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 20 Aug 2017 22:57:05 +0000 (18:57 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 20 Aug 2017 22:57:05 +0000 (18:57 -0400)
Change-Id: Icdcc8ed03374251b8d3815ae58e2726ea27c14b4

lib/sqlalchemy/testing/exclusions.py
test/requirements.py
test/sql/test_types.py

index 074b98591d728ea7ca0f392402f6a4e7f19a76cd..1e893f86a87e5068ed07400d942ffd74a1cfc993 100644 (file)
@@ -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)])
     )
 
 
index 1a8af2aed2ae5dda59d95ff2e4b987161214c6f9..ee3bb2db5215631a2b45957340e0ce19558b67f8 100644 (file)
@@ -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
index 404d42c7aaa81c98fcb73fbbd527eb8c34361abc..fdcf53c27769577558de1fe7367f268c3abf341e 100644 (file)
@@ -1381,10 +1381,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_(
@@ -1395,7 +1398,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')")
@@ -1408,8 +1411,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
                 )
             )
@@ -1424,7 +1428,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')")