aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2016-11-10 16:16:31 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-11-11 10:03:06 +0000
commit0eab1d2f52847b4019deaae0616848814275790d (patch)
treef418ddf323d1b42d867f79b279689ab3e127e8b8 /src/main/java/com/google/devtools
parent736c46d746145657784b589ea7b5efd09c561692 (diff)
Make testonly checking work through aliases.
Fixes #2067. -- MOS_MIGRATED_REVID=138762258
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index 87c85c8624..9b684e9561 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -235,13 +235,21 @@ public class BazelRuleClassProvider {
private void validateDirectPrerequisiteForTestOnly(
RuleContext.Builder context, ConfiguredTarget prerequisite) {
Rule rule = context.getRule();
+
+ if (rule.getRuleClassObject().canHaveAnyProvider()) {
+ // testonly-ness will be checked directly between the depender and the target of the alias;
+ // getTarget() called by the depender will not return the alias rule, but its actual target
+ return;
+ }
+
Target prerequisiteTarget = prerequisite.getTarget();
Label prerequisiteLabel = prerequisiteTarget.getLabel();
String thisPackage = rule.getLabel().getPackageName();
if (isTestOnlyRule(prerequisiteTarget) && !isTestOnlyRule(rule)) {
String message = "non-test target '" + rule.getLabel() + "' depends on testonly target '"
- + prerequisiteLabel + "' and doesn't have testonly attribute set";
+ + prerequisiteLabel + "'" + AliasProvider.printVisibilityChain(prerequisite)
+ + " and doesn't have testonly attribute set";
if (thisPackage.startsWith("experimental/")) {
context.ruleWarning(message);
} else {