Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(801)

Unified Diff: scripts/slave/recipe_modules/raw_io/api.py

Issue 1241323004: Cross-repo recipe package system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Roll to latest recipes-py Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « scripts/slave/recipe_modules/raw_io/__init__.py ('k') | scripts/slave/recipe_modules/raw_io/example.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scripts/slave/recipe_modules/raw_io/api.py
diff --git a/scripts/slave/recipe_modules/raw_io/api.py b/scripts/slave/recipe_modules/raw_io/api.py
deleted file mode 100644
index 2cbece1950d9ab0e6ebfa02a891ee8855bb196d8..0000000000000000000000000000000000000000
--- a/scripts/slave/recipe_modules/raw_io/api.py
+++ /dev/null
@@ -1,159 +0,0 @@
-# Copyright 2014 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.
-
-from recipe_engine import recipe_api
-from recipe_engine import util as recipe_util
-
-import os
-import shutil
-import tempfile
-
-
-class InputDataPlaceholder(recipe_util.Placeholder):
- def __init__(self, data, suffix):
- assert isinstance(data, basestring)
- self.data = data
- self.suffix = suffix
- self._backing_file = None
- super(InputDataPlaceholder, self).__init__()
-
- @property
- def backing_file(self):
- return self._backing_file
-
- def render(self, test):
- assert not self._backing_file, 'Placeholder can be used only once'
- if test.enabled:
- # cheat and pretend like we're going to pass the data on the
- # cmdline for test expectation purposes.
- self._backing_file = self.data
- else: # pragma: no cover
- input_fd, self._backing_file = tempfile.mkstemp(suffix=self.suffix)
- os.write(input_fd, self.data)
- os.close(input_fd)
- return [self._backing_file]
-
- def result(self, presentation, test):
- assert self._backing_file
- exists = os.path.exists(self._backing_file)
- if not test.enabled and exists: # pragma: no cover
- os.unlink(self._backing_file)
- self._backing_file = None
-
-
-class OutputDataPlaceholder(recipe_util.Placeholder):
- def __init__(self, suffix, leak_to):
- self.suffix = suffix
- self.leak_to = leak_to
- self._backing_file = None
- super(OutputDataPlaceholder, self).__init__()
-
- @property
- def backing_file(self):
- return self._backing_file
-
- def render(self, test):
- assert not self._backing_file, 'Placeholder can be used only once'
- if self.leak_to:
- self._backing_file = str(self.leak_to)
- return [self._backing_file]
- if test.enabled:
- self._backing_file = '/path/to/tmp/' + self.suffix.lstrip('.')
- else: # pragma: no cover
- output_fd, self._backing_file = tempfile.mkstemp(suffix=self.suffix)
- os.close(output_fd)
- return [self._backing_file]
-
- def result(self, presentation, test):
- assert self._backing_file
- if test.enabled:
- self._backing_file = None
- return test.data
- else: # pragma: no cover
- try:
- with open(self._backing_file, 'rb') as f:
- return f.read()
- finally:
- if not self.leak_to:
- os.unlink(self._backing_file)
- self._backing_file = None
-
-
-class OutputDataDirPlaceholder(recipe_util.Placeholder):
- def __init__(self, suffix, leak_to):
- self.suffix = suffix
- self.leak_to = leak_to
- self._backing_dir = None
- super(OutputDataDirPlaceholder, self).__init__()
-
- @property
- def backing_file(self): # pragma: no cover
- raise ValueError('Output dir placeholders can not be used for stdin, '
- 'stdout or stderr')
-
- def render(self, test):
- assert not self._backing_dir, 'Placeholder can be used only once'
- if self.leak_to:
- self._backing_dir = str(self.leak_to)
- return [self._backing_dir]
- if test.enabled:
- self._backing_dir = '/path/to/tmp/' + self.suffix
- else: # pragma: no cover
- self._backing_dir = tempfile.mkdtemp(suffix=self.suffix)
- return [self._backing_dir]
-
- def result(self, presentation, test):
- assert self._backing_dir
- if test.enabled:
- self._backing_dir = None
- return test.data or {}
- else: # pragma: no cover
- try:
- all_files = {}
- for dir_path, _, files in os.walk(self._backing_dir):
- for filename in files:
- abs_path = os.path.join(dir_path, filename)
- rel_path = os.path.relpath(abs_path, self._backing_dir)
- with open(abs_path, 'rb') as f:
- all_files[rel_path] = f.read()
- return all_files
- finally:
- if not self.leak_to:
- shutil.rmtree(self._backing_dir)
- self._backing_dir = None
-
-
-class RawIOApi(recipe_api.RecipeApi):
- @recipe_util.returns_placeholder
- @staticmethod
- def input(data, suffix=''):
- return InputDataPlaceholder(data, suffix)
-
- @recipe_util.returns_placeholder
- @staticmethod
- def output(suffix='', leak_to=None):
- """Returns a Placeholder for use as a step argument, or for std{out,err}.
-
- If 'leak_to' is None, the placeholder is backed by a temporary file with
- a suffix 'suffix'. The file is deleted when the step finishes.
-
- If 'leak_to' is not None, then it should be a Path and placeholder
- redirects IO to a file at that path. Once step finishes, the file is
- NOT deleted (i.e. it's 'leaking'). 'suffix' is ignored in that case.
- """
- return OutputDataPlaceholder(suffix, leak_to)
-
- @recipe_util.returns_placeholder
- @staticmethod
- def output_dir(suffix='', leak_to=None):
- """Returns a directory Placeholder for use as a step argument.
-
- If 'leak_to' is None, the placeholder is backed by a temporary dir with
- a suffix 'suffix'. The dir is deleted when the step finishes.
-
- If 'leak_to' is not None, then it should be a Path and placeholder
- redirects IO to a dir at that path. Once step finishes, the dir is
- NOT deleted (i.e. it's 'leaking'). 'suffix' is ignored in that case.
- """
- return OutputDataDirPlaceholder(suffix, leak_to)
« no previous file with comments | « scripts/slave/recipe_modules/raw_io/__init__.py ('k') | scripts/slave/recipe_modules/raw_io/example.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698