From 6c3fe26cbd07d3cb52739c1c296853f23332275d Mon Sep 17 00:00:00 2001 From: Googler Date: Wed, 17 Aug 2016 20:03:35 +0000 Subject: Fix NPE when aspect propagates over an alias. -- MOS_MIGRATED_REVID=130553300 --- .../devtools/build/lib/packages/TargetUtils.java | 3 ++- .../lib/ideinfo/AndroidStudioInfoAspectTest.java | 29 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java b/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java index 85dc32044d..17b09a4ef7 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java +++ b/src/main/java/com/google/devtools/build/lib/packages/TargetUtils.java @@ -261,7 +261,8 @@ public final class TargetUtils { } Rule rule = (Rule) target; - if (!rule.getRuleClass().equals("bind")) { + String ruleClass = rule.getRuleClass(); + if (!(ruleClass.equals("alias") || ruleClass.equals("bind"))) { return null; } diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java index c7e161b8e5..4f59705365 100644 --- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java +++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java @@ -1620,6 +1620,35 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase assertThat(ruleIdeInfo.hasCRuleIdeInfo()).isFalse(); } + @Test + public void testAlias() throws Exception { + scratch.file( + "com/google/example/BUILD", + "java_library(", + " name = 'test',", + " srcs = ['Test.java'],", + " deps = [':alias']", + ")", + "alias(", + " name = 'alias',", + " actual = ':alias2',", + ")", + "alias(", + " name = 'alias2',", + " actual = ':real',", + ")", + "java_library(", + " name = 'real',", + " srcs = ['Real.java'],", + ")"); + Map ruleIdeInfos = buildRuleIdeInfo("//com/google/example:test"); + RuleIdeInfo testInfo = getRuleInfoAndVerifyLabel( + "//com/google/example:test", ruleIdeInfos); + assertThat(testInfo.getDependenciesList()) + .contains("//com/google/example:real"); + assertThat(getRuleInfoAndVerifyLabel("//com/google/example:real", ruleIdeInfos)).isNotNull(); + } + /** * Returns true if we are testing the native aspect, not the Skylark one. * Eventually Skylark aspect will be equivalent to a native one, and this method -- cgit v1.2.3