api: Refactor failed_package_data proto population

Use single function to locate most recent log file for failed package
installations. Since code was duplicated between InstallPackages and
InstallToolchain, a short function was in order.

BUG=b:204816060
TEST=./run_tests
TEST=cq forthcoming

Change-Id: I65fab1abaa8b27928d0721f1707ea4edbe27ebcf
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3373476
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Lizzy Presland <zland@google.com>
Tested-by: Lizzy Presland <zland@google.com>
diff --git a/api/controller/controller_util_unittest.py b/api/controller/controller_util_unittest.py
index ac40548..def3080 100644
--- a/api/controller/controller_util_unittest.py
+++ b/api/controller/controller_util_unittest.py
@@ -9,10 +9,12 @@
 from chromite.api.gen.chromite.api import sysroot_pb2
 from chromite.api.gen.chromiumos import common_pb2
 from chromite.lib import build_target_lib
+from chromite.lib import cros_build_lib
 from chromite.lib import cros_test_lib
 from chromite.lib.parser import package_info
 from chromite.lib.chroot_lib import Chroot
 from chromite.lib.sysroot_lib import Sysroot
+from chromite.lib.sysroot_lib import PackageInstallError
 
 
 class ParseChrootTest(cros_test_lib.MockTestCase):
@@ -228,3 +230,17 @@
   pkg_info_msg.version = '1.2.3-r4'
   pkg_info = controller_util.deserialize_package_info(pkg_info_msg)
   assert pkg_info.cpvr == 'foo/bar-1.2.3-r4'
+
+
+def test_retrieve_package_log_paths():
+  error = PackageInstallError(
+      msg='Failed to install 3 packages',
+      result=cros_build_lib.CommandResult(),
+      packages=[package_info.parse('foo/bar%d-1.0-r1' % num)
+                for num in range(1, 4)])
+  output_proto = sysroot_pb2.InstallPackagesResponse()
+  target_sysroot = Sysroot(path='/path/to/sysroot')
+  controller_util.retrieve_package_log_paths(error,
+                                             output_proto,
+                                             target_sysroot)
+  assert len(output_proto.failed_package_data) == 3