]> 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>
Mon, 21 Aug 2017 16:10:28 +0000 (12:10 -0400)
Change-Id: Icdcc8ed03374251b8d3815ae58e2726ea27c14b4
(cherry picked from commit 64032a35ae3dbed0bd5bbdf4d07b3f0094684f87)

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 365df47a619af25ce2423814c91e2d9d10a09ceb..d43434095bb194ad08964f0790065c82bdf963b6 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 f46ef21cd8b6571741a3d46f5970b9998e8eea6c..50d6ddf92342da6be87a0ad087d505d13e30d296 100644 (file)
@@ -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')")