summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2019-11-09 13:12:13 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2019-11-09 16:54:54 -0500
commit042aea980d61024fab3abac55e9e32b6b9ff6692 (patch)
tree74abf00e67240710838d8d3722cdf0cc6a756d4a
parentb3c3562ecf67ae7c94091287504579fcace6a500 (diff)
downloadsqlalchemy-042aea980d61024fab3abac55e9e32b6b9ff6692.tar.gz
Fix exclusions for multiple fails_on
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
-rw-r--r--lib/sqlalchemy/testing/exclusions.py21
-rw-r--r--test/engine/test_reflection.py2
-rw-r--r--test/orm/test_naturalpks.py1
-rw-r--r--test/sql/test_types.py60
4 files changed, 29 insertions, 55 deletions
diff --git a/lib/sqlalchemy/testing/exclusions.py b/lib/sqlalchemy/testing/exclusions.py
index edb9caa16..8f63fcbf8 100644
--- a/lib/sqlalchemy/testing/exclusions.py
+++ b/lib/sqlalchemy/testing/exclusions.py
@@ -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):
diff --git a/test/engine/test_reflection.py b/test/engine/test_reflection.py
index 60352b538..c137488ec 100644
--- a/test/engine/test_reflection.py
+++ b/test/engine/test_reflection.py
@@ -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()
diff --git a/test/orm/test_naturalpks.py b/test/orm/test_naturalpks.py
index 57f9506ed..e9b9ac44f 100644
--- a/test/orm/test_naturalpks.py
+++ b/test/orm/test_naturalpks.py
@@ -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)
diff --git a/test/sql/test_types.py b/test/sql/test_types.py
index 2ffdd83b7..6359728eb 100644
--- a/test/sql/test_types.py
+++ b/test/sql/test_types.py
@@ -763,6 +763,8 @@ class UserDefinedTest(
class TypeCoerceCastTest(fixtures.TablesTest):
+ __backend__ = True
+
@classmethod
def define_tables(cls, metadata):
class MyType(types.TypeDecorator):
@@ -778,10 +780,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)
@@ -799,12 +797,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)
@@ -829,10 +821,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)
@@ -852,10 +840,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)
@@ -877,10 +861,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)
@@ -911,10 +891,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)
@@ -942,10 +918,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)
@@ -1037,12 +1009,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
@@ -1523,11 +1489,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"]
@@ -2815,6 +2776,8 @@ class NumericRawSQLTest(fixtures.TestBase):
"""
+ __backend__ = True
+
def _fixture(self, metadata, type_, data):
t = Table("t", metadata, Column("val", type_))
metadata.create_all()
@@ -2864,6 +2827,9 @@ interval_table = metadata = None
class IntervalTest(fixtures.TestBase, AssertsExecutionResults):
+
+ __backend__ = True
+
@classmethod
def setup_class(cls):
global interval_table, metadata
@@ -2891,6 +2857,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)
@@ -2898,6 +2865,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)
@@ -2911,6 +2882,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
@@ -2922,6 +2896,8 @@ class IntervalTest(fixtures.TestBase, AssertsExecutionResults):
class IntegerTest(fixtures.TestBase):
+ __backend__ = True
+
def test_integer_literal_processor(self):
typ = Integer()
eq_(typ._cached_literal_processor(testing.db.dialect)(5), "5")
@@ -2942,6 +2918,8 @@ class BooleanTest(
"""
+ __backend__ = True
+
@classmethod
def define_tables(cls, metadata):
Table(