Target level cleaning had been forgotten
... when action level cleaning was added Test both while we're at it, as this is pretty critical for actions to clean up properly
This commit is contained in:
parent
c46b42b23a
commit
f5765c08a9
@ -47,10 +47,18 @@ class Target:
|
||||
# the calling target
|
||||
self.parent = target
|
||||
|
||||
result = Result(self, self)
|
||||
result.status = 'success'
|
||||
|
||||
for action in actions or self.actions:
|
||||
if await self.action(action, reraise=bool(actions)):
|
||||
result.status = 'failure'
|
||||
break
|
||||
|
||||
if getattr(self, 'clean', None):
|
||||
self.output.clean(self)
|
||||
await self.clean(self, result)
|
||||
|
||||
async def action(self, action, reraise=False):
|
||||
result = Result(self, action)
|
||||
self.output.start(action)
|
||||
|
||||
@ -72,6 +72,37 @@ async def test_function():
|
||||
await Stub()(hello)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_action_clean():
|
||||
class Example:
|
||||
def __init__(self):
|
||||
self.was_called = False
|
||||
async def clean(self, target, result):
|
||||
self.was_called = True
|
||||
async def __call__(self, target):
|
||||
raise Exception('lol')
|
||||
|
||||
action = Example()
|
||||
target = Stub()
|
||||
with pytest.raises(Exception):
|
||||
await target(action)
|
||||
assert action.was_called
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_target_clean():
|
||||
class Example(Stub):
|
||||
def __init__(self, action):
|
||||
self.was_called = False
|
||||
super().__init__(action)
|
||||
async def clean(self, target, result):
|
||||
self.was_called = True
|
||||
|
||||
target = Example(Error())
|
||||
await target()
|
||||
assert target.was_called
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_method():
|
||||
class Example:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user