From d2e3822d6784f7d2116fc362d44bbc84dc9c5572 Mon Sep 17 00:00:00 2001 From: Ben Mehne Date: Fri, 20 Mar 2020 10:51:48 -0700 Subject: [PATCH] Make testpilot recognize that these tests have coverage instrumentation Summary: TestPilot uses two flags to determine whether coverage is already instrumented: `fbcode_macros` and `coverage`. Normally, these two tags are added automatically to cpp tests, but this is a fake cpp test, so we must manually add them. The first is easy - `fbcode_macros` is added by the `custom_unittest` library, which is in `fbcode_macros`, so it is appropriate. The second is harder - we need to verify that we should add the macro. We do this using the `coverage.bzl` functions. Reviewed By: siying Differential Revision: D20549040 fbshipit-source-id: d2732b3ec26f3dff065efdf398abe3241075bb2f --- defs.bzl | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/defs.bzl b/defs.bzl index 40aba062a..679937c3a 100644 --- a/defs.bzl +++ b/defs.bzl @@ -3,6 +3,7 @@ # defs.bzl - Definitions for Facebook-specific buck build integration # in TARGETS +load("@fbcode_macros//build_defs:coverage.bzl", "coverage") load("@fbcode_macros//build_defs:cpp_binary.bzl", "cpp_binary") load("@fbcode_macros//build_defs:custom_unittest.bzl", "custom_unittest") @@ -37,9 +38,19 @@ def test_binary( binary_path = "$(location :{})".format(test_bin) + base_path = native.package_name() + tags = [] + if coverage.is_coverage_enabled(base_path): + # This tag instructs testpilot to use + # the lower-memory coverage runner + # (e.g. it tells testpilot that the binary + # is actually instrumented with coverage info) + tags = ["coverage"] + custom_unittest( name = test_name, command = [TEST_RUNNER, binary_path], type = ttype, env = {"BUCK_BASE_BINARY": binary_path}, + tags = tags, )