From 52c4d05d1bfd54ea901e9926be7b262dd45e34de Mon Sep 17 00:00:00 2001 From: dbabkin Date: Tue, 5 Jun 2018 05:09:32 -0700 Subject: Add LabelLateBoundDefault to :coverage_report_generator attribute RELNOTES:none PiperOrigin-RevId: 199280443 --- .../devtools/build/lib/analysis/BaseRuleClasses.java | 17 +++++++++++++++-- .../lib/analysis/skylark/SkylarkRuleClassFunctions.java | 8 ++++++-- .../build/lib/analysis/test/TestActionBuilder.java | 2 +- .../build/lib/analysis/test/TestConfiguration.java | 2 ++ 4 files changed, 24 insertions(+), 5 deletions(-) (limited to 'src') 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 2e5c1d56c9..aa45dba3a1 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 @@ -92,6 +92,17 @@ public class BaseRuleClasses { (rule, attributes, configuration) -> configuration.getCoverageSupport()); } + public static final String DEFAULT_COVERAGE_REPORT_GENERATOR_VALUE = + "//tools/test:coverage_report_generator"; + + public static LabelLateBoundDefault coverageReportGeneratorAttribute( + Label defaultValue) { + return LabelLateBoundDefault.fromTargetConfiguration( + TestConfiguration.class, + defaultValue, + (rule, attributes, configuration) -> configuration.getCoverageReportGenerator()); + } + // TODO(b/65746853): provide a way to do this without passing the entire configuration /** Implementation for the :run_under attribute. */ @AutoCodec @@ -167,9 +178,11 @@ public class BaseRuleClasses { coverageSupportAttribute(env.getToolsLabel(DEFAULT_COVERAGE_SUPPORT_VALUE)))) // Used in the one-per-build coverage report generation action. .add( - attr("$coverage_report_generator", LABEL) + attr(":coverage_report_generator", LABEL) .cfg(HostTransition.INSTANCE) - .value(env.getLabel("//tools/defaults:coverage_report_generator")) + .value( + coverageReportGeneratorAttribute( + env.getToolsLabel(DEFAULT_COVERAGE_REPORT_GENERATOR_VALUE))) .singleArtifact()) // The target itself and run_under both run on the same machine. We use the DATA config 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 73236d45da..5c386177b8 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 @@ -191,9 +191,13 @@ public class SkylarkRuleClassFunctions implements SkylarkRuleFunctionsApi