commit | ae07b7ca80048d34ad9558665d51f108d9cb6942 | [log] [tgz] |
---|---|---|
author | gregce <gregce@google.com> | Mon Dec 07 11:00:04 2020 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Dec 07 11:01:18 2020 -0800 |
tree | 3acecba03854300874cfbba9800c0278209b975c | |
parent | 0d564d55612c26a87fccb1a489ee4b88742eda3b [diff] [blame] |
Fix Blaze crash with bad Starlark flags and --keep_going. https://github.com/bazelbuild/bazel/blob/28442ae70099812f57bd4db052b5cc63ecb31845/src/main/java/com/google/devtools/build/lib/runtime/StarlarkOptionsParser.java#L196 crashes with a NoSuchElementException on $ blaze build //foo --//flags:flag_target_that_doesnt_exist --keep_going This is because `--keep_going` stops skyframeExecutor.loadTargetPatternsWithoutFilters from throwing an exception even though it produces no results. PiperOrigin-RevId: 346131655
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkOptionsParsingTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkOptionsParsingTest.java index 994004a..42ef9a8 100644 --- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkOptionsParsingTest.java +++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkOptionsParsingTest.java
@@ -89,6 +89,19 @@ } @Test + public void testBadFlag_keepGoing() throws Exception { + optionsParser.parse("--keep_going"); + scratch.file("test/BUILD"); + reporter.removeHandler(failFastHandler); + + OptionsParsingException e = + assertThrows(OptionsParsingException.class, () -> parseStarlarkOptions("--//fake_flag")); + + assertThat(e).hasMessageThat().contains("Error loading option //fake_flag"); + assertThat(e.getInvalidArgument()).isEqualTo("//fake_flag"); + } + + @Test public void testSingleDash_notAllowed() throws Exception { writeBasicIntFlag();