aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar dbabkin <dbabkin@google.com>2018-06-07 02:31:16 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-07 02:32:36 -0700
commit708b957f7c37fd83410588d8ef3792135abd4d8d (patch)
treef683ce2c6d8073a8f9b6d8c953934b820cbd3048 /src/main/java/com/google/devtools/build
parent5146ce0da00ea12f1730b7036e8e9f42d3561477 (diff)
Add LabelLateBoundDefault to :coverage_support attribute
RELNOTES:none PiperOrigin-RevId: 199604462
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java7
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 */