aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java79
1 files changed, 48 insertions, 31 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 b4553767c8..2c30c49ee6 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
@@ -49,6 +49,7 @@ import com.google.devtools.build.lib.packages.RuleClass.Builder;
import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
import com.google.devtools.build.lib.packages.TestSize;
import com.google.devtools.build.lib.rules.MakeVariableProvider;
+import com.google.devtools.build.lib.rules.test.TestConfiguration;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.FileTypeSet;
import java.util.List;
@@ -110,45 +111,61 @@ public class BaseRuleClasses {
@Override
public RuleClass build(Builder builder, RuleDefinitionEnvironment env) {
return builder
- .add(attr("size", STRING).value("medium").taggable()
- .nonconfigurable("policy decision: should be consistent across configurations"))
- .add(attr("timeout", STRING).taggable()
- .nonconfigurable("policy decision: should be consistent across configurations")
- .value(new Attribute.ComputedDefault() {
- @Override
- public Object getDefault(AttributeMap rule) {
- TestSize size = TestSize.getTestSize(rule.get("size", Type.STRING));
- if (size != null) {
- String timeout = size.getDefaultTimeout().toString();
- if (timeout != null) {
- return timeout;
- }
- }
- return "illegal";
- }
- }))
- .add(attr("flaky", BOOLEAN).value(false).taggable()
- .nonconfigurable("policy decision: should be consistent across configurations"))
+ .requiresConfigurationFragments(TestConfiguration.class)
+ .add(
+ attr("size", STRING)
+ .value("medium")
+ .taggable()
+ .nonconfigurable("policy decision: should be consistent across configurations"))
+ .add(
+ attr("timeout", STRING)
+ .taggable()
+ .nonconfigurable("policy decision: should be consistent across configurations")
+ .value(
+ new Attribute.ComputedDefault() {
+ @Override
+ public Object getDefault(AttributeMap rule) {
+ TestSize size = TestSize.getTestSize(rule.get("size", Type.STRING));
+ if (size != null) {
+ String timeout = size.getDefaultTimeout().toString();
+ if (timeout != null) {
+ return timeout;
+ }
+ }
+ return "illegal";
+ }
+ }))
+ .add(
+ attr("flaky", BOOLEAN)
+ .value(false)
+ .taggable()
+ .nonconfigurable("policy decision: should be consistent across configurations"))
.add(attr("shard_count", INTEGER).value(-1))
- .add(attr("local", BOOLEAN).value(false).taggable()
- .nonconfigurable("policy decision: should be consistent across configurations"))
+ .add(
+ attr("local", BOOLEAN)
+ .value(false)
+ .taggable()
+ .nonconfigurable("policy decision: should be consistent across configurations"))
.add(attr("args", STRING_LIST))
// Input files for every test action
- .add(attr("$test_runtime", LABEL_LIST).cfg(HOST).value(ImmutableList.of(
- env.getToolsLabel("//tools/test:runtime"))))
+ .add(
+ attr("$test_runtime", LABEL_LIST)
+ .cfg(HOST)
+ .value(ImmutableList.of(env.getToolsLabel("//tools/test:runtime"))))
// Input files for test actions collecting code coverage
- .add(attr("$coverage_support", LABEL)
- .value(env.getLabel("//tools/defaults:coverage_support")))
+ .add(
+ attr("$coverage_support", LABEL)
+ .value(env.getLabel("//tools/defaults:coverage_support")))
// Used in the one-per-build coverage report generation action.
- .add(attr("$coverage_report_generator", LABEL)
- .cfg(HOST)
- .value(env.getLabel("//tools/defaults:coverage_report_generator"))
- .singleArtifact())
+ .add(
+ attr("$coverage_report_generator", LABEL)
+ .cfg(HOST)
+ .value(env.getLabel("//tools/defaults:coverage_report_generator"))
+ .singleArtifact())
// The target itself and run_under both run on the same machine. We use the DATA config
// here because the run_under acts like a data dependency (e.g. no LIPO optimization).
- .add(attr(":run_under", LABEL).cfg(DATA).value(RUN_UNDER)
- .skipPrereqValidatorCheck())
+ .add(attr(":run_under", LABEL).cfg(DATA).value(RUN_UNDER).skipPrereqValidatorCheck())
.build();
}