| Index: scripts/slave/recipe_modules/step/api.py
|
| diff --git a/scripts/slave/recipe_modules/step/api.py b/scripts/slave/recipe_modules/step/api.py
|
| deleted file mode 100644
|
| index 976bc28b0aa28568e30d942e5dab7c61216f749d..0000000000000000000000000000000000000000
|
| --- a/scripts/slave/recipe_modules/step/api.py
|
| +++ /dev/null
|
| @@ -1,150 +0,0 @@
|
| -# Copyright 2013 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import contextlib
|
| -
|
| -from recipe_engine import recipe_api
|
| -
|
| -
|
| -# Inherit from RecipeApiPlain because the only thing which is a step is
|
| -# run_from_dict()
|
| -class StepApi(recipe_api.RecipeApiPlain):
|
| - def __init__(self, **kwargs):
|
| - super(StepApi, self).__init__(**kwargs)
|
| - self._step_names = {}
|
| -
|
| - EXCEPTION = 'EXCEPTION'
|
| - FAILURE = 'FAILURE'
|
| - SUCCESS = 'SUCCESS'
|
| - WARNING = 'WARNING'
|
| -
|
| - @property
|
| - def StepFailure(self):
|
| - """ See recipe_api.py for docs. """
|
| - return recipe_api.StepFailure
|
| -
|
| - @property
|
| - def StepWarning(self):
|
| - """ See recipe_api.py for docs. """
|
| - return recipe_api.StepWarning
|
| -
|
| - @property
|
| - def InfraFailure(self):
|
| - """ See recipe_api.py for docs. """
|
| - return recipe_api.InfraFailure
|
| -
|
| - @property
|
| - def active_result(self):
|
| - """The currently active (open) result from the last step that was run.
|
| -
|
| - Allows you to do things like:
|
| - try:
|
| - api.step('run test', [..., api.json.output()])
|
| - finally:
|
| - result = api.step.active_result
|
| - if result.json.output:
|
| - new_step_text = result.json.output['step_text']
|
| - api.step.active_result.presentation.step_text = new_step_text
|
| -
|
| - This will update the step_text of the test, even if the test fails. Without
|
| - this api, the above code would look like:
|
| -
|
| - try:
|
| - result = api.step('run test', [..., api.json.output()])
|
| - except api.StepFailure as f:
|
| - result = f.result
|
| - raise
|
| - finally:
|
| - if result.json.output:
|
| - new_step_text = result.json.output['step_text']
|
| - api.step.active_result.presentation.step_text = new_step_text
|
| - """
|
| - return self._engine.previous_step_result
|
| -
|
| - @property
|
| - def context(self):
|
| - """ See recipe_api.py for docs. """
|
| - return recipe_api.context
|
| -
|
| - @contextlib.contextmanager
|
| - def nest(self, name):
|
| - """Nest is the high-level interface to annotated hierarchical steps.
|
| -
|
| - Calling
|
| -
|
| - with api.step.nest(<name>):
|
| - ...
|
| -
|
| - will generate a dummy step and implicitly create a new context (as
|
| - above); the dummy step will govern annotation emission, while the implicit
|
| - context will propagate the dummy step's name to subordinate steps.
|
| - """
|
| - self(name, [])
|
| - context_dict = {'name': name, 'nest_level': 1}
|
| - with self.context(context_dict):
|
| - yield
|
| -
|
| - @property
|
| - def defer_results(self):
|
| - """ See recipe_api.py for docs. """
|
| - return recipe_api.defer_results
|
| -
|
| - def __call__(self, name, cmd, ok_ret=None, infra_step=False, wrapper=(),
|
| - **kwargs):
|
| - """Returns a step dictionary which is compatible with annotator.py.
|
| -
|
| - Args:
|
| - name (string): The name of this step.
|
| - cmd (list of strings): in the style of subprocess.Popen or None to create
|
| - a no-op fake step.
|
| - ok_ret (tuple or set of ints, str): allowed return codes. Any unexpected
|
| - return codes will cause an exception to be thrown. If you pass in the
|
| - value 'any' or 'all', the engine will allow any return code to be
|
| - returned. Defaults to {0}
|
| - infra_step: Whether or not this is an infrastructure step. Infrastructure
|
| - steps will place the step in an EXCEPTION state and raise InfraFailure.
|
| - wrapper: If supplied, a command to prepend to the executed step as a
|
| - command wrapper.
|
| - **kwargs: Additional entries to add to the annotator.py step dictionary.
|
| -
|
| - Returns:
|
| - Opaque step object produced and understood by recipe engine.
|
| - """
|
| - assert 'shell' not in kwargs
|
| - assert cmd is None or isinstance(cmd, list)
|
| - if not ok_ret:
|
| - ok_ret = {0}
|
| - if ok_ret in ('any', 'all'):
|
| - ok_ret = set(range(-256, 256))
|
| -
|
| - if cmd is not None:
|
| - command = list(wrapper)
|
| - command += cmd
|
| - kwargs['cmd'] = command
|
| -
|
| - kwargs['ok_ret'] = ok_ret
|
| - kwargs['infra_step'] = bool(infra_step)
|
| -
|
| - # Obtain information from composite step parent.
|
| - compositor = recipe_api._STEP_CONTEXT
|
| - name = compositor.get_with_context('name', name)
|
| - kwargs['env'] = compositor.get_with_context('env', kwargs.get('env', {}))
|
| - kwargs['step_nest_level'] = compositor.get_with_context('nest_level', 0)
|
| - kwargs.setdefault('cwd', self.m.path['slave_build'])
|
| -
|
| - # Disambiguate repeated names
|
| - step_count = self._step_names.setdefault(name, 0) + 1
|
| - self._step_names[name] = step_count
|
| - if step_count > 1:
|
| - name = "%s (%d)" % (name, step_count)
|
| - kwargs['name'] = name
|
| -
|
| - schema = self.make_config()
|
| - schema.set_val(kwargs)
|
| - return self.run_from_dict(self._engine.create_step(schema))
|
| -
|
| - # TODO(martiniss) delete, and make generator_script use **kwargs on step()
|
| - @recipe_api.composite_step
|
| - def run_from_dict(self, dct):
|
| - return self._engine.run_step(dct)
|
|
|