BuildTargetUnitTest: Add package blacklist support.
BUG=chromium:964128
TEST=run_tests
Change-Id: Icae780e987389057f8a4d477e0432c4ba0b70d97
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1615655
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Evan Hernandez <evanhernandez@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/test.py b/api/controller/test.py
index aa0d541..bdc089f 100644
--- a/api/controller/test.py
+++ b/api/controller/test.py
@@ -59,6 +59,12 @@
# An empty sysroot means build packages was not run.
was_built = not input_proto.flags.empty_sysroot
+ # Skipped tests.
+ blacklisted_package_info = input_proto.package_blacklist
+ blacklist = []
+ for package_info in blacklisted_package_info:
+ blacklist.append(controller_util.PackageInfoToString(package_info))
+
# Chroot handling.
chroot = input_proto.chroot.path
cache_dir = input_proto.chroot.cache_dir
@@ -84,7 +90,8 @@
try:
commands.RunUnitTests(constants.SOURCE_ROOT, board, extra_env=extra_env,
- chroot_args=chroot_args, build_stage=was_built)
+ chroot_args=chroot_args, build_stage=was_built,
+ blacklist=blacklist)
except failures_lib.PackageBuildFailure as e:
# Add the failed packages.
for pkg in e.failed_packages:
diff --git a/api/controller/test_unittest.py b/api/controller/test_unittest.py
index 4ffdf34..48a151b 100644
--- a/api/controller/test_unittest.py
+++ b/api/controller/test_unittest.py
@@ -26,12 +26,18 @@
"""Tests for the UnitTest function."""
def _GetInput(self, board=None, result_path=None, chroot_path=None,
- cache_dir=None, empty_sysroot=None):
+ cache_dir=None, empty_sysroot=None, blacklist=None):
"""Helper to build an input message instance."""
+ formatted_blacklist = []
+ for pkg in blacklist or []:
+ formatted_blacklist.append({'category': pkg.category,
+ 'package_name': pkg.package})
+
return test_pb2.BuildTargetUnitTestRequest(
build_target={'name': board}, result_path=result_path,
chroot={'path': chroot_path, 'cache_dir': cache_dir},
- flags={'empty_sysroot': empty_sysroot}
+ flags={'empty_sysroot': empty_sysroot},
+ package_blacklist=formatted_blacklist,
)
def _GetOutput(self):
@@ -123,8 +129,10 @@
self.PatchObject(portage_util, 'ParseParallelEmergeStatusFile',
return_value=[])
+ pkgs = ['foo/bar', 'cat/pkg']
+ blacklist = [portage_util.SplitCPV(p, strict=False) for p in pkgs]
input_msg = self._GetInput(board='board', result_path=self.tempdir,
- empty_sysroot=True)
+ empty_sysroot=True, blacklist=blacklist)
output_msg = self._GetOutput()
rc = test_controller.BuildTargetUnitTest(input_msg, output_msg)
@@ -132,7 +140,8 @@
self.assertNotEqual(0, rc)
self.assertFalse(output_msg.failed_packages)
patch.assert_called_with(constants.SOURCE_ROOT, 'board', extra_env=mock.ANY,
- chroot_args=mock.ANY, build_stage=False)
+ chroot_args=mock.ANY, build_stage=False,
+ blacklist=pkgs)
class VmTestTest(cros_test_lib.MockTestCase):