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

Unified Diff: recipe_modules/cipd/test_api.py

Issue 2243773002: Add cipd recipe module to depot_tools (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: fixes for pylint Created 4 years, 4 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 | « recipe_modules/cipd/resources/bootstrap.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: recipe_modules/cipd/test_api.py
diff --git a/recipe_modules/cipd/test_api.py b/recipe_modules/cipd/test_api.py
new file mode 100644
index 0000000000000000000000000000000000000000..63165359269d34a6427779f7fca7444520eff3e5
--- /dev/null
+++ b/recipe_modules/cipd/test_api.py
@@ -0,0 +1,102 @@
+# Copyright 2015 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_test_api
+
+
+class CIPDTestApi(recipe_test_api.RecipeTestApi):
+ def make_resolved_version(self, v):
+ if not v:
+ return '40-chars-fake-of-the-package-instance_id'
+ if len(v) == 40:
+ return v
+ # Truncate or pad to 40 chars.
+ prefix = 'resolved-instance_id-of-'
+ if len(v) + len(prefix) >= 40:
+ return '%s%s' % (prefix, v[:40-len(prefix)])
+ return '%s%s%s' % (prefix, v, '-' * (40 - len(prefix) - len(v)))
+
+ def make_pin(self, package_name, version=None):
+ return {
+ 'package': package_name,
+ 'instance_id': self.make_resolved_version(version),
+ }
+
+ def _resultify(self, result, error=None, retcode=None):
+ dic = {'result': result}
+ if error:
+ dic['error'] = error
+ return self.m.json.output(dic, retcode=retcode)
+
+ def make_test_executable(self):
+ return str(self.m.path['slave_build'].join('cipd', 'cipd'))
+
+ def example_error(self, error, retcode=None):
+ return self._resultify(
+ result=None,
+ error=error,
+ retcode=1 if retcode is None else retcode)
+
+ def example_install_client(self, package_name, version=None, retcode=None):
+ return self.m.json.output({
+ 'executable': self.make_test_executable(),
+ 'instance_id': self.make_resolved_version(version),
+ }, retcode=retcode)
+
+ def example_build(self, package_name, version=None):
+ return self._resultify(self.make_pin(package_name, version))
+
+ example_register = example_build
+
+ def example_ensure(self, packages):
+ return self._resultify([self.make_pin(name, version)
+ for name, version in sorted(packages.items())])
+
+ def example_set_tag(self, package_name, version):
+ return self._resultify({
+ 'package': package_name,
+ 'pin': self.make_pin(package_name, version)
+ })
+
+ example_set_ref = example_set_tag
+
+ def example_search(self, package_name, instances=None):
+ if instances is None:
+ # Return one instance by default.
+ return self._resultify([self.make_pin(package_name)])
+ if isinstance(instances, int):
+ instances = ['instance_id_%i' % (i+1) for i in xrange(instances)]
+ return self._resultify([self.make_pin(package_name, instance)
+ for instance in instances])
+
+ def example_describe(self, package_name, version=None,
+ test_data_refs=None, test_data_tags=None,
+ user='user:44-blablbla@developer.gserviceaccount.com',
+ tstamp=1446574210):
+ assert not test_data_tags or all(':' in tag for tag in test_data_tags)
+ return self._resultify({
+ 'pin': self.make_pin(package_name, version),
+ 'registered_by': user,
+ 'registered_ts': tstamp,
+ 'refs': [
+ {
+ 'ref': ref,
+ 'modified_by': user,
+ 'modified_ts': tstamp,
+ }
+ for ref in (['latest'] if test_data_refs is None else test_data_refs)
+ ],
+ 'tags': [
+ {
+ 'tag': tag,
+ 'registered_by': user,
+ 'registered_ts': tstamp,
+ }
+ for tag in ([
+ 'buildbot_build:some.waterfall/builder/1234',
+ 'git_repository:https://chromium.googlesource.com/some/repo',
+ 'git_revision:397a2597cdc237f3026e6143b683be4b9ab60540',
+ ] if test_data_tags is None else test_data_tags)
+ ],
+ })
« no previous file with comments | « recipe_modules/cipd/resources/bootstrap.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698