From 15e0fa8342afb1a6c718958f2789c2e6b60f8e92 Mon Sep 17 00:00:00 2001 From: gregce Date: Wed, 30 May 2018 07:31:48 -0700 Subject: Fix Bazel crash on bad config_setting labels. This used to work more smoothly. But the introduction of ConfiguredTargetAndData adds a Precondition check: https://source.bazel.build/bazel/+/master:src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java;l=68?q=ConfiguredTargetAndData that crashes if innerConfigurationKey is null. The only way that can happen is when reading a bad label, which Bazel assumes (incorrectly in this case) to be a null-configured source file. Good times. PiperOrigin-RevId: 198557148 --- .../build/lib/analysis/ConfigurableAttributesTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/test/java/com/google/devtools/build/lib/analysis') diff --git a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java index 18f4c9303d..3a9a8dcd73 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java @@ -551,6 +551,19 @@ public class ConfigurableAttributesTest extends BuildViewTestCase { assertDoesNotContainEvent("//conditions:a"); // This one is legitimate.. } + @Test + public void configKeyNonexistentTarget() throws Exception { + reporter.removeHandler(failFastHandler); // Expect errors. + scratch.file("foo/BUILD", + "genrule(", + " name = 'g',", + " outs = ['g.out'],", + " cmd = select({':fake': ''})", + ")"); + assertThat(getConfiguredTarget("//foo:g")).isNull(); + assertContainsEvent("//foo:fake is not a valid configuration key for //foo:g"); + } + /** * Tests config keys with multiple requirements. */ -- cgit v1.2.3