api: Populate UprevPackagesResponse.packages field

Logic and unittest to populate the new field.

BUG=b:195415844
TEST=run_tests

Change-Id: Ib36f8936b2ec31870932d601dd9479ee6e7fec05
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3115229
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Dhanya Ganesh <dhanyaganesh@chromium.org>
Tested-by: Dhanya Ganesh <dhanyaganesh@chromium.org>
diff --git a/api/controller/packages.py b/api/controller/packages.py
index 7e80975..5ab1389 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -44,15 +44,20 @@
   output_dir = input_proto.output_dir or None
 
   try:
-    uprevved = packages.uprev_build_targets(build_targets, overlay_type, chroot,
-                                            output_dir)
+    modified_ebuilds, revved_packages = (
+        packages.uprev_build_targets(build_targets, overlay_type, chroot,
+                                     output_dir))
   except packages.Error as e:
     # Handle module errors nicely, let everything else bubble up.
     cros_build_lib.Die(e)
 
-  for path in uprevved:
+  for path in modified_ebuilds:
     output_proto.modified_ebuilds.add().path = path
 
+  for package in revved_packages:
+    pkg_info = package_info.parse(package)
+    pkg_proto = output_proto.packages.add()
+    controller_util.serialize_package_info(pkg_info, pkg_proto)
 
 def _UprevVersionedPackageResponse(_input_proto, output_proto, _config):
   """Add fake paths to a successful uprev versioned package response."""
diff --git a/api/controller/packages_unittest.py b/api/controller/packages_unittest.py
index 1c7ab80..83dbd39 100644
--- a/api/controller/packages_unittest.py
+++ b/api/controller/packages_unittest.py
@@ -78,11 +78,12 @@
     targets = ['foo', 'bar']
     output_dir = '/tmp/uprev_output_dir'
     changed = ['/ebuild-1.0-r1.ebuild', '/ebuild-1.0-r2.ebuild']
+    revved_packages = ['cat1/pkg1-1.11', 'cat2/pkg2-1.12']
     expected_type = constants.BOTH_OVERLAYS
     request = self._GetRequest(targets=targets, overlay_type=self._BOTH,
                                output_dir=output_dir)
     uprev_patch = self.PatchObject(packages_service, 'uprev_build_targets',
-                                   return_value=changed)
+                                   return_value=(changed, revved_packages))
 
     packages_controller.Uprev(request, self.response, self.api_config)
 
@@ -98,6 +99,11 @@
       changed.remove(ebuild.path)
     self.assertFalse(changed)
 
+    for pkg in self.response.packages:
+      self.assertTrue(pkg.category.startswith('cat'))
+      self.assertTrue(pkg.package_name.startswith('pkg'))
+      self.assertTrue(pkg.version.startswith('1.1'))
+
 
 class UprevVersionedPackageTest(cros_test_lib.MockTestCase, ApiConfigMixin):
   """UprevVersionedPackage tests."""