From d0ce4cb3cff02690727b92a711d39427857a434d Mon Sep 17 00:00:00 2001 From: Charles Mita Date: Tue, 4 Jul 2023 14:25:47 +0200 Subject: [PATCH 1/2] Add internal metadata_files parameter to instrumented_files_info(..) Partial cherry-pick of c449a821 onto the 6.3.0 branch. --- .../lib/analysis/test/CoverageCommon.java | 24 ++++++++++++------- .../test/CoverageCommonApi.java | 10 ++++++++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java index 503cc825913a5f..c05eb154444289 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java @@ -54,6 +54,7 @@ public InstrumentedFilesInfoApi instrumentedFilesInfo( Object supportFiles, // Depset or Sequence of Dict environment, // Object extensions, + Sequence metadataFiles, // Sequence StarlarkThread thread) throws EvalException, TypeException { List extensionsList = @@ -75,13 +76,17 @@ public InstrumentedFilesInfoApi instrumentedFilesInfo( if (!supportFilesBuilder.isEmpty() || !environmentPairs.isEmpty()) { BuiltinRestriction.throwIfNotBuiltinUsage(thread); } + if (!metadataFiles.isEmpty()) { + BuiltinRestriction.throwIfNotBuiltinUsage(thread); + } return createInstrumentedFilesInfo( starlarkRuleContext.getRuleContext(), Sequence.cast(sourceAttributes, String.class, "source_attributes"), Sequence.cast(dependencyAttributes, String.class, "dependency_attributes"), supportFilesBuilder.build(), NestedSetBuilder.wrap(Order.COMPILE_ORDER, environmentPairs), - extensionsList); + extensionsList, + Sequence.cast(metadataFiles, Artifact.class, "metadata_files")); } /** @@ -109,7 +114,8 @@ public static InstrumentedFilesInfo createInstrumentedFilesInfo( dependencyAttributes, NestedSetBuilder.emptySet(Order.STABLE_ORDER), NestedSetBuilder.emptySet(Order.STABLE_ORDER), - extensions); + extensions, + null); } private static InstrumentedFilesInfo createInstrumentedFilesInfo( @@ -118,7 +124,8 @@ private static InstrumentedFilesInfo createInstrumentedFilesInfo( List dependencyAttributes, NestedSet supportFiles, NestedSet> environment, - @Nullable List extensions) { + @Nullable List extensions, + @Nullable List metadataFiles) { FileTypeSet fileTypeSet = FileTypeSet.ANY_FILE; if (extensions != null) { if (extensions.isEmpty()) { @@ -137,11 +144,12 @@ private static InstrumentedFilesInfo createInstrumentedFilesInfo( ruleContext, instrumentationSpec, InstrumentedFilesCollector.NO_METADATA_COLLECTOR, - /* rootFiles = */ ImmutableList.of(), - /* coverageSupportFiles = */ supportFiles, - /* coverageEnvironment = */ environment, - /* withBaselineCoverage = */ !TargetUtils.isTestRule(ruleContext.getTarget()), - /* reportedToActualSources= */ NestedSetBuilder.create(Order.STABLE_ORDER)); + /* rootFiles= */ ImmutableList.of(), + /* coverageSupportFiles= */ supportFiles, + /* coverageEnvironment= */ environment, + /* withBaselineCoverage= */ !TargetUtils.isTestRule(ruleContext.getTarget()), + /* reportedToActualSources= */ NestedSetBuilder.create(Order.STABLE_ORDER), + /* additionalMetadata= */ metadataFiles); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/CoverageCommonApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/CoverageCommonApi.java index a129285d3778b9..e5c9de629ef73b 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/CoverageCommonApi.java +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/CoverageCommonApi.java @@ -93,6 +93,15 @@ public interface CoverageCommonApi< positional = false, named = true, defaultValue = "None"), + @Param( + name = "metadata_files", + named = true, + positional = false, + documented = false, + defaultValue = "[]", + allowedTypes = { + @ParamType(type = Sequence.class, generic1 = FileApi.class), + }) }, useStarlarkThread = true) InstrumentedFilesInfoApi instrumentedFilesInfo( @@ -102,6 +111,7 @@ InstrumentedFilesInfoApi instrumentedFilesInfo( Object supportFiles, // Sequence or Depset of expected Dict environment, // Object extensions, + Sequence metadataFiles, StarlarkThread thread) throws EvalException, TypeException; } From e6e9d34cdd62fedf4084a684cfc1500251e650eb Mon Sep 17 00:00:00 2001 From: Googler Date: Tue, 4 Jul 2023 02:59:09 -0700 Subject: [PATCH 2/2] Expose metadata_files parameter in coverage_common.instrumented_files_info Cherry-pick of ef54ef5d. RELNOTES: coverage_common.instrumented_files_info now has a metadata_files argument --- .../devtools/build/lib/analysis/test/CoverageCommon.java | 3 --- .../build/lib/starlarkbuildapi/test/CoverageCommonApi.java | 4 +++- .../devtools/build/lib/starlark/StarlarkIntegrationTest.java | 5 ++++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java index c05eb154444289..73260031d8a9a6 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java @@ -76,9 +76,6 @@ public InstrumentedFilesInfoApi instrumentedFilesInfo( if (!supportFilesBuilder.isEmpty() || !environmentPairs.isEmpty()) { BuiltinRestriction.throwIfNotBuiltinUsage(thread); } - if (!metadataFiles.isEmpty()) { - BuiltinRestriction.throwIfNotBuiltinUsage(thread); - } return createInstrumentedFilesInfo( starlarkRuleContext.getRuleContext(), Sequence.cast(sourceAttributes, String.class, "source_attributes"), diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/CoverageCommonApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/CoverageCommonApi.java index e5c9de629ef73b..b66d3527d25130 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/CoverageCommonApi.java +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test/CoverageCommonApi.java @@ -95,9 +95,11 @@ public interface CoverageCommonApi< defaultValue = "None"), @Param( name = "metadata_files", + doc = + "Additional files required to generate coverage LCOV files after code execution." + + " e.g. .gcno files for C++.", named = true, positional = false, - documented = false, defaultValue = "[]", allowedTypes = { @ParamType(type = Sequence.class, generic1 = FileApi.class), diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java index 49eef9661a1cad..3c3c8493863db6 100644 --- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java +++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java @@ -947,6 +947,8 @@ public void testInstrumentedFilesInfo_coverageEnabled() throws Exception { "load('//myinfo:myinfo.bzl', 'MyInfo')", "", "def custom_rule_impl(ctx):", + " metadata = ctx.actions.declare_file(ctx.label.name + '.metadata')", + " ctx.actions.write(metadata, '')", " return [", " coverage_common.instrumented_files_info(", " ctx,", @@ -966,6 +968,7 @@ public void testInstrumentedFilesInfo_coverageEnabled() throws Exception { // Missing attrs are ignored " 'missing_dep_attr',", " ],", + " metadata_files = [metadata],", " ),", " ]", "", @@ -1032,7 +1035,7 @@ public void testInstrumentedFilesInfo_coverageEnabled() throws Exception { assertThat( ActionsTestUtil.baseArtifactNames( ((Depset) myInfo.getValue("metadata_files")).getSet(Artifact.class))) - .containsExactly("label_dep.gcno", "label_list_dep.gcno", "dict_dep.gcno"); + .containsExactly("label_dep.gcno", "label_list_dep.gcno", "dict_dep.gcno", "cr.metadata"); ConfiguredTarget customRule = getConfiguredTarget("//test/starlark:cr"); assertThat( ActionsTestUtil.baseArtifactNames(