Fix configuration error handling for the interleaved case.
In the interleaved case, loading errors can occur during configuration creation
and we need to correctly report such errors in that case.
--
MOS_MIGRATED_REVID=113826273
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index ac289bb..1e9e882 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -1011,6 +1011,27 @@
.contains("execution phase succeeded, but there were loading phase errors");
}
+ @Test
+ public void testMissingLabelInConfiguration() throws Exception {
+ scratch.file("nobuild/BUILD",
+ "cc_library(name= 'lib')");
+ useConfiguration("--experimental_action_listener=//nobuild:bar");
+ reporter.removeHandler(failFastHandler);
+ String begin = String.format(
+ "Failed to load required %s target: '%s'", "action_listener", "//nobuild:bar");
+ try {
+ update(defaultFlags().with(Flag.KEEP_GOING), "//nobuild:lib");
+ fail();
+ } catch (InvalidConfigurationException e) {
+ // Interleaved loading and analysis - loading errors are found during configuration creation.
+ assertThat(e.getMessage()).startsWith(begin);
+ } catch (LoadingFailedException e) {
+ assertThat(e.getMessage()).startsWith(begin);
+ }
+ assertContainsEventWithFrequency(
+ "no such target '//nobuild:bar': target 'bar' not declared in package 'nobuild'", 1);
+ }
+
/** Runs the same test with the reduced loading phase. */
@TestSpec(size = Suite.SMALL_TESTS)
@RunWith(JUnit4.class)