Only apply deps limit to analysis tests using transitions
Previously, a transitive-dependency count limit was applied to all analysis_test rules for simplicity, since there was not deemed a use case for an analysis test that was "large". However, relaxing this restriction to only apply to rules using transitions facilitates a build_test-like Starlark rule which verifies an existing real target analyzes correctly without executing any actions.
Progress toward #6237
RELNOTES: None.
PiperOrigin-RevId: 235580276
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index d61cc4a..7f96fc4 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -645,6 +645,7 @@
private boolean workspaceOnly = false;
private boolean isExecutableSkylark = false;
private boolean isAnalysisTest = false;
+ private boolean hasAnalysisTestTransition = false;
private boolean isConfigMatcher = false;
private boolean hasFunctionTransitionWhitelist = false;
private boolean ignorePackageLicenses = false;
@@ -808,6 +809,7 @@
workspaceOnly,
isExecutableSkylark,
isAnalysisTest,
+ hasAnalysisTestTransition,
hasFunctionTransitionWhitelist,
ignorePackageLicenses,
implicitOutputsFunction,
@@ -1195,6 +1197,19 @@
}
/**
+ * This rule class has at least one attribute with an analysis test transition. (A
+ * starlark-defined transition using analysis_test_transition()).
+ */
+ public Builder setHasAnalysisTestTransition() {
+ this.hasAnalysisTestTransition = true;
+ return this;
+ }
+
+ public boolean hasAnalysisTestTransition() {
+ return this.hasAnalysisTestTransition;
+ }
+
+ /**
* This rule class has the _whitelist_function_transition attribute. Intended only for Skylark
* rules.
*/
@@ -1390,6 +1405,7 @@
private final boolean workspaceOnly;
private final boolean isExecutableSkylark;
private final boolean isAnalysisTest;
+ private final boolean hasAnalysisTestTransition;
private final boolean isConfigMatcher;
private final boolean hasFunctionTransitionWhitelist;
private final boolean ignorePackageLicenses;
@@ -1519,6 +1535,7 @@
boolean workspaceOnly,
boolean isExecutableSkylark,
boolean isAnalysisTest,
+ boolean hasAnalysisTestTransition,
boolean hasFunctionTransitionWhitelist,
boolean ignorePackageLicenses,
ImplicitOutputsFunction implicitOutputsFunction,
@@ -1569,6 +1586,7 @@
this.workspaceOnly = workspaceOnly;
this.isExecutableSkylark = isExecutableSkylark;
this.isAnalysisTest = isAnalysisTest;
+ this.hasAnalysisTestTransition = hasAnalysisTestTransition;
this.hasFunctionTransitionWhitelist = hasFunctionTransitionWhitelist;
this.ignorePackageLicenses = ignorePackageLicenses;
this.configurationFragmentPolicy = configurationFragmentPolicy;
@@ -2424,6 +2442,14 @@
}
/**
+ * Returns true if this rule class has at least one attribute with an analysis test transition. (A
+ * starlark-defined transition using analysis_test_transition()).
+ */
+ public boolean hasAnalysisTestTransition() {
+ return hasAnalysisTestTransition;
+ }
+
+ /**
* Returns true if this rule class has the _whitelist_function_transition attribute.
*/
public boolean hasFunctionTransitionWhitelist() {