[Fuchsia] Enable code coverage for Cr-Fuchsia test targets.
Support combining cmx files with cmc_merge tool.
Add coverage cmx file for test binaries built with use_clang_coverage flag. The file contains the fuchsia.debugdata.DebugData service, which is used by the Fuchsia profile runtime to gather coverage information.
Bug: 1156885
Change-Id: Iba91a865e0f707706e0550fcea69cb8cc440a781
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2596114
Reviewed-by: Wez <[email protected]>
Reviewed-by: Dirk Pranke <[email protected]>
Reviewed-by: Kevin Marshall <[email protected]>
Commit-Queue: Chong Gu <[email protected]>
Auto-Submit: Chong Gu <[email protected]>
Cr-Commit-Position: refs/heads/master@{#848384}
diff --git a/testing/test.gni b/testing/test.gni
index a9a0ece..a522190 100644
--- a/testing/test.gni
+++ b/testing/test.gni
@@ -16,8 +16,10 @@
import("//build/config/sanitizers/sanitizers.gni")
} else if (is_fuchsia) {
import("//build/config/chromecast_build.gni")
+ import("//build/config/coverage/coverage.gni")
import("//build/config/fuchsia/generate_runner_scripts.gni")
import("//build/config/fuchsia/package.gni")
+ import("//third_party/fuchsia-sdk/sdk/build/cmc.gni")
} else if (is_chromeos_ash) {
import("//build/config/chromeos/rules.gni")
import("//build/config/sanitizers/sanitizers.gni")
@@ -245,6 +247,26 @@
_pkg_target = "${_output_name}_pkg"
_exec_target = "${_output_name}__exec"
+ # TODO(1019938): switch the default to tests.cmx which doesn't request
+ # the deprecated-ambient-replace-as-executable feature.
+ if (!defined(invoker.manifest)) {
+ manifest = "//build/config/fuchsia/tests-with-exec.cmx"
+ } else {
+ manifest = invoker.manifest
+ }
+
+ if (use_clang_coverage) {
+ component_with_coverage_manifest = "${target_name}-coverage.test-cmx"
+ cmc_merge(component_with_coverage_manifest) {
+ sources = [
+ "//build/config/fuchsia/add_DebugData_service.test-cmx",
+ manifest,
+ ]
+ output_name = target_name
+ }
+ manifest = "${target_out_dir}/${component_with_coverage_manifest}"
+ }
+
fuchsia_package_runner(target_name) {
is_test_exe = true
forward_variables_from(invoker,
@@ -261,9 +283,11 @@
}
cr_fuchsia_package(_pkg_target) {
- forward_variables_from(invoker, [ "manifest" ])
binary = ":$_exec_target"
package_name_override = _output_name
+ if (use_clang_coverage) {
+ deps = [ ":$component_with_coverage_manifest" ]
+ }
}
executable(_exec_target) {