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_unittest.py b/api/controller/test_unittest.py
index b0a36dc..d018e50 100644
--- a/api/controller/test_unittest.py
+++ b/api/controller/test_unittest.py
@@ -103,9 +103,21 @@
                               api_config.ApiConfigMixin):
   """Tests for the UnitTest function."""
 
-  def _GetInput(self, board=None, result_path=None, chroot_path=None,
-                cache_dir=None, empty_sysroot=None, blacklist=None):
+  def _GetInput(self,
+                board=None,
+                result_path=None,
+                chroot_path=None,
+                cache_dir=None,
+                empty_sysroot=None,
+                packages=None,
+                blacklist=None):
     """Helper to build an input message instance."""
+    formatted_packages = []
+    for pkg in packages or []:
+      formatted_packages.append({
+          'category': pkg.category,
+          'package_name': pkg.package
+      })
     formatted_blacklist = []
     for pkg in blacklist or []:
       formatted_blacklist.append({'category': pkg.category,
@@ -231,7 +243,10 @@
 
   def testBuildTargetUnitTest(self):
     """Test BuildTargetUnitTest successful call."""
-    input_msg = self._GetInput(board='board', result_path=self.tempdir)
+    pkgs = ['foo/bar', 'cat/pkg']
+    packages = [portage_util.SplitCPV(p, strict=False) for p in pkgs]
+    input_msg = self._GetInput(
+        board='board', result_path=self.tempdir, packages=packages)
 
     result = test_service.BuildTargetUnitTestResult(0, None)
     self.PatchObject(test_service, 'BuildTargetUnitTest', return_value=result)