Hooks before and after|error hooks are now nested
This commit is contained in:
@@ -90,9 +90,14 @@ class Pecan(object):
|
||||
)
|
||||
|
||||
def handle_hooks(self, hook_type, *args):
|
||||
for hook in state.hooks:
|
||||
getattr(hook, hook_type)(*args)
|
||||
|
||||
if hook_type == 'before':
|
||||
hooks = state.hooks
|
||||
else:
|
||||
hooks = reversed(state.hooks)
|
||||
|
||||
for hook in hooks:
|
||||
getattr(hook, hook_type)(*args)
|
||||
|
||||
def get_params(self, all_params, remainder, argspec, im_self):
|
||||
valid_params = dict()
|
||||
positional_params = []
|
||||
|
||||
@@ -70,9 +70,9 @@ class TestHooks(object):
|
||||
assert run_hook[1] == 'before2'
|
||||
assert run_hook[2] == 'before3'
|
||||
assert run_hook[3] == 'inside'
|
||||
assert run_hook[4] == 'after1'
|
||||
assert run_hook[4] == 'after3'
|
||||
assert run_hook[5] == 'after2'
|
||||
assert run_hook[6] == 'after3'
|
||||
assert run_hook[6] == 'after1'
|
||||
|
||||
def test_prioritized_hooks(self):
|
||||
run_hook = []
|
||||
@@ -109,9 +109,9 @@ class TestHooks(object):
|
||||
assert run_hook[1] == 'before2'
|
||||
assert run_hook[2] == 'before3'
|
||||
assert run_hook[3] == 'inside'
|
||||
assert run_hook[4] == 'after1'
|
||||
assert run_hook[4] == 'after3'
|
||||
assert run_hook[5] == 'after2'
|
||||
assert run_hook[6] == 'after3'
|
||||
assert run_hook[6] == 'after1'
|
||||
|
||||
for i in range(len(run_hook)): run_hook.pop()
|
||||
|
||||
@@ -128,9 +128,9 @@ class TestHooks(object):
|
||||
assert run_hook[1] == 'before2'
|
||||
assert run_hook[2] == 'before1'
|
||||
assert run_hook[3] == 'inside'
|
||||
assert run_hook[4] == 'after3'
|
||||
assert run_hook[4] == 'after1'
|
||||
assert run_hook[5] == 'after2'
|
||||
assert run_hook[6] == 'after1'
|
||||
assert run_hook[6] == 'after3'
|
||||
|
||||
def test_transaction_hook(self):
|
||||
run_hook = []
|
||||
@@ -303,8 +303,8 @@ class TestHooks(object):
|
||||
assert run_hook[0] == 'before2'
|
||||
assert run_hook[1] == 'before1'
|
||||
assert run_hook[2] == 'inside_sub'
|
||||
assert run_hook[3] == 'after2'
|
||||
assert run_hook[4] == 'after1'
|
||||
assert run_hook[3] == 'after1'
|
||||
assert run_hook[4] == 'after2'
|
||||
|
||||
def test_hooks_with_validation(self):
|
||||
run_hook = []
|
||||
@@ -417,4 +417,4 @@ class TestHooks(object):
|
||||
assert run_hook[2] == 'before'
|
||||
assert run_hook[3] == 'inside'
|
||||
assert run_hook[4] == 'after'
|
||||
for i in range(len(run_hook)): run_hook.pop()
|
||||
for i in range(len(run_hook)): run_hook.pop()
|
||||
|
||||
Reference in New Issue
Block a user