build_api: Allow BuildTargetUnitTest to specify packages to be run.

Currently, all testable packages are always tested. Allow, only
specified packages to be tested.

BUG=chromium:1102809
TEST=run_pytest

Cq-Depend: chromium:2289493
Change-Id: I52ec8256d169145c2f06e3e607832c6d4c1bdd3a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2289494
Tested-by: Navil Perez <navil@google.com>
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Navil Perez <navil@google.com>
diff --git a/api/controller/test.py b/api/controller/test.py
index 05dbf95..c7043d6 100644
--- a/api/controller/test.py
+++ b/api/controller/test.py
@@ -94,6 +94,12 @@
   # certain boards that need to use prebuilts (e.g. grunt's unittest-only).
   was_built = not input_proto.flags.empty_sysroot
 
+  # Packages to be tested.
+  packages_package_info = input_proto.packages
+  packages = []
+  for package_info in packages_package_info:
+    packages.append(controller_util.PackageInfoToString(package_info))
+
   # Skipped tests.
   blacklisted_package_info = input_proto.package_blacklist
   blacklist = []
@@ -103,8 +109,12 @@
   build_target = controller_util.ParseBuildTarget(input_proto.build_target)
   chroot = controller_util.ParseChroot(input_proto.chroot)
 
-  result = test.BuildTargetUnitTest(build_target, chroot, blacklist=blacklist,
-                                    was_built=was_built)
+  result = test.BuildTargetUnitTest(
+      build_target,
+      chroot,
+      packages=packages,
+      blacklist=blacklist,
+      was_built=was_built)
 
   if not result.success:
     # Failed to run tests or some tests failed.