Begin implementing GetTargetVersions by porting code to get android
versions.
Regenerated api/gen/chromite/api/packages_pb2.py by running
api/compile_build_api_proto.
BUG=chromium:1004438
TEST=manual, run_tests
Change-Id: I77b669af261248384de96e4079b8cedece40563b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1854566
Reviewed-by: Alex Klein <saklein@chromium.org>
Tested-by: Michael Mortensen <mmortensen@google.com>
Commit-Queue: Michael Mortensen <mmortensen@google.com>
diff --git a/api/controller/packages.py b/api/controller/packages.py
index 04f87bf..3f977cf 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -117,6 +117,21 @@
output_proto.has_prebuilt = True
+@faux.all_empty
+@validate.require('build_target.name')
+@validate.validation_complete
+def GetTargetVersions(input_proto, output_proto, _config):
+ """Returns the target versions."""
+ build_target = controller_util.ParseBuildTarget(input_proto.build_target)
+ output_proto.android_version = packages.determine_android_version(
+ build_target)
+ output_proto.android_branch_version = packages.determine_android_branch(
+ build_target)
+ output_proto.android_target_version = packages.determine_android_target(
+ build_target)
+ # TODO(crbug.com/1004438): Implement remaining version fields.
+
+
@faux.success(_HasChromePrebuiltSuccess)
@faux.empty_error
@validate.require('build_target.name')
diff --git a/api/controller/packages_unittest.py b/api/controller/packages_unittest.py
index b7aa15a..f70845a 100644
--- a/api/controller/packages_unittest.py
+++ b/api/controller/packages_unittest.py
@@ -230,6 +230,46 @@
self.assertEqual(package_info.version, cpv.version)
+class GetTargetVersionsTest(cros_test_lib.MockTestCase, ApiConfigMixin):
+ """GetTargetVersions tests."""
+
+ def setUp(self):
+ self.response = packages_pb2.GetTargetVersionsResponse()
+
+ def _GetRequest(self, board=None):
+ """Helper to build out a request."""
+ request = packages_pb2.GetTargetVersionsRequest()
+
+ if board:
+ request.build_target.name = board
+
+ return request
+
+ def testValidateOnly(self):
+ """Sanity check that a validate only call does not execute any logic."""
+ patch_version = self.PatchObject(packages_service,
+ 'determine_android_version')
+ patch_branch_version = self.PatchObject(packages_service,
+ 'determine_android_branch')
+ patch_target_version = self.PatchObject(packages_service,
+ 'determine_android_target')
+
+ request = self._GetRequest(board='betty')
+ packages_controller.GetTargetVersions(request, self.response,
+ self.validate_only_config)
+ patch_version.assert_not_called()
+ patch_branch_version.assert_not_called()
+ patch_target_version.assert_not_called()
+
+ def testNoBuildTargetFails(self):
+ """No build target argument should fail."""
+ request = self._GetRequest()
+
+ with self.assertRaises(cros_build_lib.DieSystemExit):
+ packages_controller.GetTargetVersions(request, self.response,
+ self.api_config)
+
+
class HasChromePrebuiltTest(cros_test_lib.MockTestCase, ApiConfigMixin):
"""HasChromePrebuilt tests."""