diff options
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java | 10 |
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 { |