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_8_5~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc82ea33a03a55c04f220113c51a85352395f012;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 2c0679e1d3..b3f6b22536 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 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 21583ec22c..25b5b72058 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 ' ) ])