aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar dbabkin <dbabkin@google.com>2018-06-05 05:09:32 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-05 05:10:40 -0700
commit52c4d05d1bfd54ea901e9926be7b262dd45e34de (patch)
treeee4467237fb90589e7f29bdac42642126b72cda6 /src
parent4ec0a7524913ab2c4641368e3f8c09b347351a08 (diff)
Add LabelLateBoundDefault to :coverage_report_generator attribute
RELNOTES:none PiperOrigin-RevId: 199280443
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java2
4 files changed, 24 insertions, 5 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 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<TestConfiguration> 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<Artifa
toolsRepository + BaseRuleClasses.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(labelCache.getUnchecked("//tools/defaults:coverage_report_generator"))
+ .value(
+ BaseRuleClasses.coverageReportGeneratorAttribute(
+ labelCache.getUnchecked(
+ toolsRepository
+ + BaseRuleClasses.DEFAULT_COVERAGE_REPORT_GENERATOR_VALUE)))
.singleArtifact())
.add(attr(":run_under", LABEL).cfg(lipoDataTransition).value(RUN_UNDER))
.build();
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 b6b59414f6..e421c15596 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
@@ -329,7 +329,7 @@ public final class TestActionBuilder {
// contain rules with baseline coverage but no test rules that have coverage enabled, and in
// that case, we still need the report generator.
reportGenerator = ruleContext.getPrerequisiteArtifact(
- "$coverage_report_generator", Mode.HOST);
+ ":coverage_report_generator", Mode.HOST);
}
return new TestParams(runsPerTest, shards, TestTimeout.getTestTimeout(ruleContext.getRule()),
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 1749528904..72a2499ea4 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
@@ -180,7 +180,9 @@ public class TestConfiguration extends Fragment {
@Override
public FragmentOptions getHost() {
TestOptions hostOptions = (TestOptions) getDefault();
+ //Need co copy LateBound attribute to make sut its are not null in HostConfiguration.
hostOptions.coverageSupport = this.coverageSupport;
+ hostOptions.coverageReportGenerator = this.coverageReportGenerator;
return hostOptions;
}
}