| Index: recipes/example/nested.py | 
| diff --git a/recipes/example/nested.py b/recipes/example/nested.py | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..c16844aca179c895b31e80ea776565d5b358d1f4 | 
| --- /dev/null | 
| +++ b/recipes/example/nested.py | 
| @@ -0,0 +1,41 @@ | 
| +# Copyright 2015 The LUCI Authors. All rights reserved. | 
| +# Use of this source code is governed under the Apache License, Version 2.0 | 
| +# that can be found in the LICENSE file. | 
| + | 
| + | 
| +DEPS = [ | 
| +  'step', | 
| +] | 
| + | 
| + | 
| +def RunSteps(api): | 
| +  # Nest all steps below this. | 
| +  with api.step.nest('complicated thing'): | 
| +    with api.step.nest('first part'): | 
| +      api.step('wait a bit', ['sleep', '1']) | 
| + | 
| +    # Prefix the name without indenting. | 
| +    with api.step.context({'name': 'attempt number'}): | 
| +      step_result = api.step('one', ['echo', 'herpy']) | 
| +      assert step_result.step['name'] == 'complicated thing.attempt number.one' | 
| +      api.step('two', ['echo', 'derpy']) | 
| + | 
| +  # Outer nested step's status should not inherit from inner. | 
| +  with api.step.nest('inherit status') as nest_step: | 
| +    with api.step.nest('inner step') as other_nest_step: | 
| +      other_nest_step.presentation.status = api.step.EXCEPTION | 
| +  assert nest_step.presentation.status == api.step.SUCCESS | 
| + | 
| +  # Change outer status after nesting is complete. | 
| +  with api.step.nest('versatile status') as nest_step: | 
| +    with api.step.nest('inner step'): | 
| +      with api.step.nest('even deeper'): | 
| +        pass | 
| +    nest_step.presentation.status = api.step.FAILURE | 
| +  assert nest_step.presentation.status == api.step.FAILURE | 
| + | 
| +  api.step('simple thing', ['sleep', '1']) | 
| + | 
| + | 
| +def GenTests(api): | 
| +  yield api.test('basic') | 
|  |