diff options
| author | Xavier Morel <xmo@openerp.com> | 2012-11-16 08:17:12 +0100 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2012-11-16 08:17:12 +0100 |
| commit | a9645151b6f070d23d2f35810aee562c1354aba9 (patch) | |
| tree | 04a4265b454d75291001a49ee4285b1faab63f92 /addons/web/controllers/testing.py | |
| parent | 8e85f4e0bd0b1fbbf401686b85d7282f8991454d (diff) | |
[IMP] setup & teardown of test runner
simplify code and make setup & teardown processes more reliable
add testing.Stack tools which stacks promise-returning functions
around the actual promise-returning function to execute (the test case
itself).
testing.Stack returns an object with 3 methods, ``push([setup][,
teardown])``, ``unshift([setup][, teardown])`` and ``execute(fn,
*args)``. ``push`` and ``unshift`` create a new stack with the
provided setup and teardown added respectively at the top and bottom
of the stack.
``execute`` will walk the stack from bottom to top executing ``setup``
handlers (and waiting on their result), if all setup handlers execute
without failure the ``fn`` callback gets executed (and waited on) then
*all* ``teardown`` handlers are executed from top to bottom:
| setup
| setup
| setup
| setup
| fn
| teardown
| teardown
| teardown
V teardown
If a ``setup`` handler fails (the promise is rejected), teardowns will
start executing *from the previous level* (so the ``teardown``
matching the failed ``setup`` will *not* be run), but all
``teardowns`` below that will be run regardless, even if one fails the
next one will still be executed.
The stack will either ultimately return a promise rejection using the
*first* rejection it got (a rejection may be cascading, so the
rejection of a setup may also lead to or be linked to a teardown being
rejected later), or will return the resolution from ``fn``.
If ``execute`` is passed further arguments, those arguments will in
turn be forwarded to ``fn`` as well as all ``setup`` and ``teardown``
handlers.
bzr revid: xmo@openerp.com-20121116071712-zuld957icellezum
Diffstat (limited to 'addons/web/controllers/testing.py')
0 files changed, 0 insertions, 0 deletions
