diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-01-02 14:23:14 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-01-02 14:24:44 -0500 |
commit | cc82ea33a03a55c04f220113c51a85352395f012 (patch) | |
tree | 3c60c3a9f8e152b5c5fd99a067e1f5a01d7c8eb8 | |
parent | a1d2e4d4915544b0257d294f4a92fb904fbf1a6b (diff) | |
download | sqlalchemy-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.py | 5 | ||||
-rw-r--r-- | test/dialect/mssql/test_query.py | 3 | ||||
-rw-r--r-- | test/requirements.py | 14 |
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 ' ) ]) |