| Index: recipe_engine/run.py
|
| diff --git a/recipe_engine/run.py b/recipe_engine/run.py
|
| index 503cbeef7cb759719b94ea0fb552c9261bccfda3..abceb586b24d5abaaf1d7b90d199c08d35d8c741 100644
|
| --- a/recipe_engine/run.py
|
| +++ b/recipe_engine/run.py
|
| @@ -297,8 +297,8 @@
|
| * step - uses engine.create_step(...), and previous_step_result.
|
| """
|
|
|
| - ActiveStep = collections.namedtuple('ActiveStep', (
|
| - 'step', 'step_result', 'open_step', 'nest_level'))
|
| + ActiveStep = collections.namedtuple('ActiveStep',
|
| + 'step step_result open_step nest_level')
|
|
|
| def __init__(self, step_runner, properties, universe_view):
|
| """See run_steps() for parameter meanings."""
|
| @@ -344,13 +344,9 @@
|
| " with try-finally blocks.")
|
| return self._step_stack[-1].step_result
|
|
|
| - def _close_through_level(self, level):
|
| - """Close all open steps whose nest level is >= the supplied level.
|
| -
|
| - Args:
|
| - level (int): the nest level to close through.
|
| - """
|
| - while self._step_stack and self._step_stack[-1].nest_level >= level:
|
| + def _close_to_level(self, level):
|
| + """Close all open steps that are at least as deep as level."""
|
| + while self._step_stack and level <= self._step_stack[-1].nest_level:
|
| cur = self._step_stack.pop()
|
| if cur.step_result:
|
| cur.step_result.presentation.finalize(cur.open_step.stream)
|
| @@ -373,8 +369,8 @@
|
|
|
| step_result = None
|
|
|
| - nest_level = step.get('nest_level', 0)
|
| - self._close_through_level(nest_level)
|
| + nest_level = step.pop('step_nest_level', 0)
|
| + self._close_to_level(nest_level)
|
|
|
| open_step = self._step_runner.open_step(step)
|
| self._step_stack.append(self.ActiveStep(
|
| @@ -382,6 +378,8 @@
|
| step_result=None,
|
| open_step=open_step,
|
| nest_level=nest_level))
|
| + if nest_level:
|
| + open_step.stream.set_nest_level(nest_level)
|
|
|
| step_result = open_step.run()
|
| self._step_stack[-1] = (
|
| @@ -431,7 +429,7 @@
|
| "status_code": 0
|
| }
|
| finally:
|
| - self._close_through_level(0)
|
| + self._close_to_level(0)
|
| except recipe_api.StepFailure as f:
|
| result = {
|
| # Include "recipe_result" so it doesn't get marked as infra failure.
|
|
|