aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2018-05-30 07:31:48 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-30 07:33:07 -0700
commit15e0fa8342afb1a6c718958f2789c2e6b60f8e92 (patch)
treea97dcdf893c649dc256cc04b6b9b3dcd01ba99a9 /src/test/java/com/google/devtools/build/lib/analysis
parent197cc2471ad4315c4b8b3dc304d9f078b4ead2ad (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.java13
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.
*/