]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fix exclusions for multiple fails_on
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 9 Nov 2019 18:12:13 +0000 (13:12 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 9 Nov 2019 22:00:14 +0000 (17:00 -0500)
The fails_on decorator was not being interpreted
correctly when multiple were present.

Remove obsolete fails_on from test_types that no longer
take place for MySQL, Oracle

Ensure test_types tests are using __backend__

mark currently failing Oracle interval tests

Change-Id: If8db0c02b31a8008fd1673c2380f1f974c3806a6
(cherry picked from commit 56dff403b7cbaf2de342c83d496d0937f5b719b1)

lib/sqlalchemy/testing/exclusions.py
test/engine/test_reflection.py
test/orm/test_naturalpks.py
test/sql/test_types.py

index d205354cfff5a043224d6a653fb0e6d7ff355493..02014e4b2eac36b05b0ae7d9c6b8d7609f2309bd 100644 (file)
@@ -141,19 +141,18 @@ class compound(object):
     def _expect_success(self, config, name="block"):
         if not self.fails:
             return
+
         for fail in self.fails:
-            if not fail(config):
-                break
-        else:
-            raise AssertionError(
-                "Unexpected success for '%s' (%s)"
-                % (
-                    name,
-                    " and ".join(
-                        fail._as_string(config) for fail in self.fails
-                    ),
+            if fail(config):
+                raise AssertionError(
+                    "Unexpected success for '%s' (%s)"
+                    % (
+                        name,
+                        " and ".join(
+                            fail._as_string(config) for fail in self.fails
+                        ),
+                    )
                 )
-            )
 
 
 def requires_tag(tagname):
index 159fa241ae1618643c9fe963032bb62231b89cb8..4959049078c9a1af8137e0b0d8a893a442333c4e 100644 (file)
@@ -1796,8 +1796,6 @@ class SchemaTest(fixtures.TestBase):
             )
 
     @testing.requires.schemas
-    @testing.fails_on("sqlite", "FIXME: unknown")
-    @testing.fails_on("sybase", "FIXME: unknown")
     def test_explicit_default_schema(self):
         engine = testing.db
         engine.connect().close()
index 57f9506edb4c1b58e0fbbda3229b68066905e661..e9b9ac44f67ec6f5d7da49a4958d6854553453f6 100644 (file)
@@ -536,7 +536,6 @@ class NaturalPKTest(fixtures.MappedTest):
         self._test_manytomany(True)
 
     @testing.requires.non_updating_cascade
-    @testing.requires.sane_multi_rowcount.not_()
     def test_manytomany_nonpassive(self):
         self._test_manytomany(False)
 
index 346978b4dcfa8514ff3c1837008c396b41b712f6..34247e9c3e7b5ef87282221324607fd4e8b2afec 100644 (file)
@@ -762,6 +762,8 @@ class UserDefinedTest(
 
 
 class TypeCoerceCastTest(fixtures.TablesTest):
+    __backend__ = True
+
     @classmethod
     def define_tables(cls, metadata):
         class MyType(types.TypeDecorator):
@@ -777,10 +779,6 @@ class TypeCoerceCastTest(fixtures.TablesTest):
 
         Table("t", metadata, Column("data", String(50)))
 
-    @testing.fails_on(
-        "oracle", "oracle doesn't like CAST in the VALUES of an INSERT"
-    )
-    @testing.fails_on("mysql", "mysql dialect warns on skipped CAST")
     def test_insert_round_trip_cast(self):
         self._test_insert_round_trip(cast)
 
@@ -798,12 +796,6 @@ class TypeCoerceCastTest(fixtures.TablesTest):
             [("BIND_INd1BIND_OUT",)],
         )
 
-    @testing.fails_on(
-        "oracle",
-        "ORA-00906: missing left parenthesis - "
-        "seems to be CAST(:param AS type)",
-    )
-    @testing.fails_on("mysql", "mysql dialect warns on skipped CAST")
     def test_coerce_from_nulltype_cast(self):
         self._test_coerce_from_nulltype(cast)
 
@@ -828,10 +820,6 @@ class TypeCoerceCastTest(fixtures.TablesTest):
             [("BIND_INTHISISMYOBJBIND_OUT",)],
         )
 
-    @testing.fails_on(
-        "oracle", "oracle doesn't like CAST in the VALUES of an INSERT"
-    )
-    @testing.fails_on("mysql", "mysql dialect warns on skipped CAST")
     def test_vs_non_coerced_cast(self):
         self._test_vs_non_coerced(cast)
 
@@ -851,10 +839,6 @@ class TypeCoerceCastTest(fixtures.TablesTest):
             [("BIND_INd1", "BIND_INd1BIND_OUT")],
         )
 
-    @testing.fails_on(
-        "oracle", "oracle doesn't like CAST in the VALUES of an INSERT"
-    )
-    @testing.fails_on("mysql", "mysql dialect warns on skipped CAST")
     def test_vs_non_coerced_alias_cast(self):
         self._test_vs_non_coerced_alias(cast)
 
@@ -876,10 +860,6 @@ class TypeCoerceCastTest(fixtures.TablesTest):
             [("BIND_INd1", "BIND_INd1BIND_OUT")],
         )
 
-    @testing.fails_on(
-        "oracle", "oracle doesn't like CAST in the VALUES of an INSERT"
-    )
-    @testing.fails_on("mysql", "mysql dialect warns on skipped CAST")
     def test_vs_non_coerced_where_cast(self):
         self._test_vs_non_coerced_where(cast)
 
@@ -910,10 +890,6 @@ class TypeCoerceCastTest(fixtures.TablesTest):
             [("BIND_INd1", "BIND_INd1BIND_OUT")],
         )
 
-    @testing.fails_on(
-        "oracle", "oracle doesn't like CAST in the VALUES of an INSERT"
-    )
-    @testing.fails_on("mysql", "mysql dialect warns on skipped CAST")
     def test_coerce_none_cast(self):
         self._test_coerce_none(cast)
 
@@ -941,10 +917,6 @@ class TypeCoerceCastTest(fixtures.TablesTest):
             [],
         )
 
-    @testing.fails_on(
-        "oracle", "oracle doesn't like CAST in the VALUES of an INSERT"
-    )
-    @testing.fails_on("mysql", "mysql dialect warns on skipped CAST")
     def test_resolve_clause_element_cast(self):
         self._test_resolve_clause_element(cast)
 
@@ -1036,12 +1008,6 @@ class TypeCoerceCastTest(fixtures.TablesTest):
             else [("x", "xBIND_OUT")],
         )
 
-    @testing.fails_on(
-        "oracle",
-        "ORA-00906: missing left parenthesis - "
-        "seems to be CAST(:param AS type)",
-    )
-    @testing.fails_on("mysql", "mysql dialect warns on skipped CAST")
     def test_cast_existing_typed(self):
         MyType = self.MyType
         coerce_fn = cast
@@ -1522,11 +1488,6 @@ class EnumTest(AssertsCompiledSQL, fixtures.TablesTest):
             [("footwo",), ("footwo",), ("fooone",)],
         )
 
-    @testing.fails_on(
-        "postgresql+zxjdbc",
-        'zxjdbc fails on ENUM: column "XXX" is of type XXX '
-        "but expression is of type character varying",
-    )
     def test_round_trip(self):
         enum_table = self.tables["enum_table"]
 
@@ -2799,6 +2760,8 @@ class NumericRawSQLTest(fixtures.TestBase):
 
     """
 
+    __backend__ = True
+
     def _fixture(self, metadata, type_, data):
         t = Table("t", metadata, Column("val", type_))
         metadata.create_all()
@@ -2848,6 +2811,9 @@ interval_table = metadata = None
 
 
 class IntervalTest(fixtures.TestBase, AssertsExecutionResults):
+
+    __backend__ = True
+
     @classmethod
     def setup_class(cls):
         global interval_table, metadata
@@ -2875,6 +2841,7 @@ class IntervalTest(fixtures.TestBase, AssertsExecutionResults):
     def teardown_class(cls):
         metadata.drop_all()
 
+    @testing.fails_on("oracle", "See issue #4971")
     def test_non_native_adapt(self):
         interval = Interval(native=False)
         adapted = interval.dialect_impl(testing.db.dialect)
@@ -2882,6 +2849,10 @@ class IntervalTest(fixtures.TestBase, AssertsExecutionResults):
         assert adapted.native is False
         eq_(str(adapted), "DATETIME")
 
+    @testing.fails_on(
+        "oracle",
+        "ORA-01873: the leading precision of the interval is too small",
+    )
     def test_roundtrip(self):
         small_delta = datetime.timedelta(days=15, seconds=5874)
         delta = datetime.timedelta(414)
@@ -2895,6 +2866,9 @@ class IntervalTest(fixtures.TestBase, AssertsExecutionResults):
         eq_(row["native_interval_args"], delta)
         eq_(row["non_native_interval"], delta)
 
+    @testing.fails_on(
+        "oracle", "ORA-00932: inconsistent datatypes: expected NUMBER got DATE"
+    )
     def test_null(self):
         interval_table.insert().execute(
             id=1, native_inverval=None, non_native_interval=None
@@ -2914,6 +2888,8 @@ class BooleanTest(
 
     """
 
+    __backend__ = True
+
     @classmethod
     def define_tables(cls, metadata):
         Table(