diff options
| author | Michael Trier <mtrier@gmail.com> | 2008-12-11 19:24:22 +0000 |
|---|---|---|
| committer | Michael Trier <mtrier@gmail.com> | 2008-12-11 19:24:22 +0000 |
| commit | 052d7f36433a0c29ab20d0ea37933c03a488e12d (patch) | |
| tree | 86f5e5c3438a32f0edfc89467a740f6e9038d45d /test | |
| parent | 5b0c456abd7756fa50700b7332f2cbe1d5aef620 (diff) | |
| download | sqlalchemy-052d7f36433a0c29ab20d0ea37933c03a488e12d.tar.gz | |
Implemented experimental savepoint support in mssql. There are still some failing savepoint related tests.
Diffstat (limited to 'test')
| -rw-r--r-- | test/orm/session.py | 2 | ||||
| -rw-r--r-- | test/testlib/requires.py | 5 | ||||
| -rw-r--r-- | test/testlib/testing.py | 24 |
3 files changed, 28 insertions, 3 deletions
diff --git a/test/orm/session.py b/test/orm/session.py index d72514a33..57780e4e5 100644 --- a/test/orm/session.py +++ b/test/orm/session.py @@ -199,7 +199,7 @@ class SessionTest(_fixtures.FixtureTest): u2 = sess.query(User).filter_by(name='ed').one() assert u2 is u eq_(conn1.execute("select count(1) from users").scalar(), 1) - eq_(conn2.execute("select count(1) from users").scalar(), 0) + eq_(conn2.execute("select count(1) from users").scalar(), 0) sess.commit() eq_(conn1.execute("select count(1) from users").scalar(), 1) eq_(bind.connect().execute("select count(1) from users").scalar(), 1) diff --git a/test/testlib/requires.py b/test/testlib/requires.py index 7b2d33beb..13d4cdf11 100644 --- a/test/testlib/requires.py +++ b/test/testlib/requires.py @@ -8,7 +8,8 @@ target database. from testlib.testing import \ _block_unconditionally as no_support, \ _chain_decorators_on, \ - exclude + exclude, \ + emits_warning_on def deferrable_constraints(fn): @@ -66,8 +67,8 @@ def savepoints(fn): """Target database must support savepoints.""" return _chain_decorators_on( fn, + emits_warning_on('mssql', 'Savepoint support in mssql is experimental and may lead to data loss.'), no_support('access', 'FIXME: guessing, needs confirmation'), - no_support('mssql', 'FIXME: guessing, needs confirmation'), no_support('sqlite', 'not supported by database'), no_support('sybase', 'FIXME: guessing, needs confirmation'), exclude('mysql', '<', (5, 0, 3), 'not supported by database'), diff --git a/test/testlib/testing.py b/test/testlib/testing.py index 0bf083bbd..ed7669be9 100644 --- a/test/testlib/testing.py +++ b/test/testlib/testing.py @@ -322,6 +322,30 @@ def emits_warning(*messages): return _function_named(safe, fn.__name__) return decorate +def emits_warning_on(db, *warnings): + """Mark a test as emitting a warning on a specific dialect. + + With no arguments, squelches all SAWarning failures. Or pass one or more + strings; these will be matched to the root of the warning description by + warnings.filterwarnings(). + """ + def decorate(fn): + def maybe(*args, **kw): + if isinstance(db, basestring): + if config.db.name != db: + return fn(*args, **kw) + else: + wrapped = emits_warning(*warnings)(fn) + return wrapped(*args, **kw) + else: + if not _is_excluded(*db): + return fn(*args, **kw) + else: + wrapped = emits_warning(*warnings)(fn) + return wrapped(*args, **kw) + return _function_named(maybe, fn.__name__) + return decorate + def uses_deprecated(*messages): """Mark a test as immune from fatal deprecation warnings. |
