summaryrefslogtreecommitdiffstats
path: root/nova/utils.py
diff options
context:
space:
mode:
authorRick Harris <rconradharris@gmail.com>2013-05-16 08:02:21 +0000
committerRick Harris <rconradharris@gmail.com>2013-05-16 18:15:31 +0000
commit4e560d49d4a8d08341dae6df5e123e1be1b3c779 (patch)
tree32ff274a42922f35cf447b898a52923769203149 /nova/utils.py
parent56f5172f33bbd1da1b8749b7754805de44c3ab9c (diff)
downloadnova-4e560d49d4a8d08341dae6df5e123e1be1b3c779.tar.gz
nova-4e560d49d4a8d08341dae6df5e123e1be1b3c779.tar.xz
nova-4e560d49d4a8d08341dae6df5e123e1be1b3c779.zip
Mox should cleanup before stubs
Tests that define both Mox and Stubs may not receive a proper cleanup by the `TestCase` base class. The reason is that the order in which the Mox and Stubs are unset may not necessarily match-up with the order in which the tests called them. For example: Suppose we have a test that Stubs a method in its `setUp` and then Mox's that same method in the test body: Stub: Original-Func -> Stubbed-Func Mox: Stubbed-Func -> Mocked-Func Now when `TestCase` ultimately does its `cleanUp`, it will UnStub before UnMocking: UnStub: Stubbed-Func -> Original-Func UnMox: Mocked-Func -> Stubbed-Func Notice that generic cleanup has mistakingly left `Stubbed-Func` in place. Given that Stubs and Mox can be performed in any order, the upshot here is that the generic cleanup can't always be relied on. The proposed solution has two parts: a best-practice change and a small code-change. The code-change is to reverse the current order to UnMox before UnStubbing. While in theory the order is arbitrary, in practice, we have lots of Stubs in `setUp` methods already, so UnMox'ing first makes sense (and it fixes a current bug to boot!) The best-practice change is to recommend against stubbing and mocking the same function as well as to always place stubs before mocks when relying on the generic cleanup. If a developers needs to deviate from this, cleanup of stubs created after mocks are their responsibility. Fixes bug 1180671 Change-Id: I42ab8b55026c0a133625a7cc81ed8b960e9d47d7
Diffstat (limited to 'nova/utils.py')
0 files changed, 0 insertions, 0 deletions