From: Mike Bayer Date: Thu, 2 Jan 2014 19:23:14 +0000 (-0500) Subject: - support addition of fails_if()/only_on(), just wraps the decorators X-Git-Tag: rel_0_9_1~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4b923d37bdfdb44d9a3e74aed08e2726e14c3b19;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 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 --- diff --git a/lib/sqlalchemy/testing/exclusions.py b/lib/sqlalchemy/testing/exclusions.py index 9f14ee105d..611e9de6c8 100644 --- a/lib/sqlalchemy/testing/exclusions.py +++ b/lib/sqlalchemy/testing/exclusions.py @@ -24,6 +24,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 bff737145c..6a12744a73 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 d26eb86cbe..29b7d9997b 100644 --- a/test/requirements.py +++ b/test/requirements.py @@ -401,7 +401,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): @@ -415,7 +415,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') @@ -502,13 +503,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): @@ -574,6 +576,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 ' ) ])