diff options
author | 2018-06-07 02:31:16 -0700 | |
---|---|---|
committer | 2018-06-07 02:32:36 -0700 | |
commit | 708b957f7c37fd83410588d8ef3792135abd4d8d (patch) | |
tree | f683ce2c6d8073a8f9b6d8c953934b820cbd3048 /src/main/java/com | |
parent | 5146ce0da00ea12f1730b7036e8e9f42d3561477 (diff) |
Add LabelLateBoundDefault to :coverage_support attribute
RELNOTES:none
PiperOrigin-RevId: 199604462
Diffstat (limited to 'src/main/java/com')
4 files changed, 31 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java index a1454b23d2..e38a5e41d6 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java @@ -33,9 +33,11 @@ import com.google.devtools.build.lib.analysis.config.HostTransition; import com.google.devtools.build.lib.analysis.config.RunUnder; import com.google.devtools.build.lib.analysis.constraints.EnvironmentRule; import com.google.devtools.build.lib.analysis.test.TestConfiguration; +import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault; import com.google.devtools.build.lib.packages.Attribute.LabelListLateBoundDefault; +import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault.Resolver; import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; @@ -81,6 +83,18 @@ public class BaseRuleClasses { BuildConfiguration.class, (rule, attributes, configuration) -> configuration.getActionListeners()); + public static final String DEFAULT_COVERAGE_SUPPORT_VALUE = "//tools/test:coverage_support"; + + @AutoCodec + static final Resolver<TestConfiguration, Label> COVERAGE_SUPPORT_CONFIGURATION_RESOLVER = + (rule, attributes, configuration) -> configuration.getCoverageSupport(); + + public static LabelLateBoundDefault<TestConfiguration> coverageSupportAttribute( + Label defaultValue) { + return LabelLateBoundDefault.fromTargetConfiguration( + TestConfiguration.class, defaultValue, COVERAGE_SUPPORT_CONFIGURATION_RESOLVER); + } + // TODO(b/65746853): provide a way to do this without passing the entire configuration /** Implementation for the :run_under attribute. */ @AutoCodec @@ -151,8 +165,9 @@ public class BaseRuleClasses { .value(env.getToolsLabel("//tools/test:collect_coverage"))) // Input files for test actions collecting code coverage .add( - attr("$coverage_support", LABEL) - .value(env.getLabel("//tools/defaults:coverage_support"))) + attr(":coverage_support", LABEL) + .value( + coverageSupportAttribute(env.getToolsLabel(DEFAULT_COVERAGE_SUPPORT_VALUE)))) // Used in the one-per-build coverage report generation action. .add( attr("$coverage_report_generator", LABEL) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java index b93f357939..73236d45da 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java @@ -183,9 +183,12 @@ public class SkylarkRuleClassFunctions implements SkylarkRuleFunctionsApi<Artifa .value(labelCache.getUnchecked(toolsRepository + "//tools/test:collect_coverage"))) // Input files for test actions collecting code coverage .add( - attr("$coverage_support", LABEL) + attr(":coverage_support", LABEL) .cfg(HostTransition.INSTANCE) - .value(labelCache.getUnchecked("//tools/defaults:coverage_support"))) + .value( + BaseRuleClasses.coverageSupportAttribute( + labelCache.getUnchecked( + toolsRepository + BaseRuleClasses.DEFAULT_COVERAGE_SUPPORT_VALUE)))) // Used in the one-per-build coverage report generation action. .add( attr("$coverage_report_generator", LABEL) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java index 936ebd77f2..b6b59414f6 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java @@ -217,8 +217,8 @@ public final class TestActionBuilder { // exec paths of all source files that should be included into the code coverage output. NestedSet<Artifact> metadataFiles = instrumentedFiles.getInstrumentationMetadataFiles(); inputsBuilder.addTransitive(metadataFiles); - inputsBuilder.addTransitive(PrerequisiteArtifacts.nestedSet( - ruleContext, "$coverage_support", Mode.DONT_CHECK)); + inputsBuilder.addTransitive( + PrerequisiteArtifacts.nestedSet(ruleContext, ":coverage_support", Mode.DONT_CHECK)); // We don't add this attribute to non-supported test target if (ruleContext.isAttrDefined("$lcov_merger", LABEL)) { TransitiveInfoCollection lcovMerger = diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java index 6247fde3cc..1749528904 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java @@ -176,6 +176,13 @@ public class TestConfiguration extends Fragment { "coverage_support", ImmutableSet.of(coverageSupport), "coverage_report_generator", ImmutableSet.of(coverageReportGenerator)); } + + @Override + public FragmentOptions getHost() { + TestOptions hostOptions = (TestOptions) getDefault(); + hostOptions.coverageSupport = this.coverageSupport; + return hostOptions; + } } /** Configuration loader for test options */ |