summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-01-02 14:23:14 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2014-01-02 14:24:44 -0500
commitcc82ea33a03a55c04f220113c51a85352395f012 (patch)
tree3c60c3a9f8e152b5c5fd99a067e1f5a01d7c8eb8
parenta1d2e4d4915544b0257d294f4a92fb904fbf1a6b (diff)
downloadsqlalchemy-cc82ea33a03a55c04f220113c51a85352395f012.tar.gz
- support addition of fails_if()/only_on(), just wraps the decorators
- update a few exclusions to support current pymssql. passes all of test_suite and dialect/mssql
-rw-r--r--lib/sqlalchemy/testing/exclusions.py5
-rw-r--r--test/dialect/mssql/test_query.py3
-rw-r--r--test/requirements.py14
3 files changed, 17 insertions, 5 deletions
diff --git a/lib/sqlalchemy/testing/exclusions.py b/lib/sqlalchemy/testing/exclusions.py
index 2c0679e1d..b3f6b2253 100644
--- a/lib/sqlalchemy/testing/exclusions.py
+++ b/lib/sqlalchemy/testing/exclusions.py
@@ -19,6 +19,11 @@ class skip_if(object):
def enabled(self):
return not self.predicate()
+ def __add__(self, other):
+ def decorate(fn):
+ return other(self(fn))
+ return decorate
+
@contextlib.contextmanager
def fail_if(self, name='block'):
try:
diff --git a/test/dialect/mssql/test_query.py b/test/dialect/mssql/test_query.py
index bff737145..6a12744a7 100644
--- a/test/dialect/mssql/test_query.py
+++ b/test/dialect/mssql/test_query.py
@@ -232,9 +232,10 @@ class QueryTest(testing.AssertsExecutionResults, fixtures.TestBase):
con.execute("""drop trigger paj""")
meta.drop_all()
+ @testing.fails_on_everything_except('mssql+pyodbc', 'pyodbc-specific feature')
@testing.provide_metadata
def test_disable_scope_identity(self):
- engine = engines.testing_engine(options={"use_scope_identity":False})
+ engine = engines.testing_engine(options={"use_scope_identity": False})
metadata = self.metadata
metadata.bind = engine
t1 = Table('t1', metadata,
diff --git a/test/requirements.py b/test/requirements.py
index 21583ec22..25b5b7205 100644
--- a/test/requirements.py
+++ b/test/requirements.py
@@ -406,7 +406,7 @@ class DefaultRequirements(SuiteRequirements):
return fails_on_everything_except('mysql+mysqldb', 'mysql+oursql',
'sqlite+pysqlite', 'mysql+pymysql',
'mysql+cymysql',
- 'sybase', 'mssql+pyodbc', 'mssql+mxodbc')
+ 'sybase', 'mssql')
@property
def implements_get_lastrowid(self):
@@ -420,7 +420,8 @@ class DefaultRequirements(SuiteRequirements):
cursor object.
"""
- return fails_on_everything_except('mysql+mysqldb', 'mysql+oursql',
+ return skip_if('mssql+pymssql', 'crashes on pymssql') + \
+ fails_on_everything_except('mysql+mysqldb', 'mysql+oursql',
'sqlite+pysqlite', 'mysql+pymysql',
'mysql+cymysql')
@@ -498,13 +499,14 @@ class DefaultRequirements(SuiteRequirements):
def precision_numerics_general(self):
"""target backend has general support for moderately high-precision
numerics."""
- return fails_if('mssql+pymssql', 'FIXME: improve pymssql dec handling')
+ return exclusions.open()
@property
def precision_numerics_enotation_small(self):
"""target backend supports Decimal() objects using E notation
to represent very small values."""
- return fails_if('mssql+pymssql', 'FIXME: improve pymssql dec handling')
+ # NOTE: this exclusion isn't used in current tests.
+ return exclusions.open()
@property
def precision_numerics_enotation_large(self):
@@ -570,6 +572,10 @@ class DefaultRequirements(SuiteRequirements):
('mssql+pyodbc', None, None,
'mssql+pyodbc has FP inaccuracy even with '
'only four decimal places '
+ ),
+ ('mssql+pymssql', None, None,
+ 'mssql+pymssql has FP inaccuracy even with '
+ 'only four decimal places '
)
])