diff options
author | gregce <gregce@google.com> | 2018-05-30 07:31:48 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-05-30 07:33:07 -0700 |
commit | 15e0fa8342afb1a6c718958f2789c2e6b60f8e92 (patch) | |
tree | a97dcdf893c649dc256cc04b6b9b3dcd01ba99a9 /src/test/java/com/google/devtools/build/lib/analysis | |
parent | 197cc2471ad4315c4b8b3dc304d9f078b4ead2ad (diff) |
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
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/analysis')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java | 13 |
1 files changed, 13 insertions, 0 deletions
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. */ |