diff options
author | 2017-08-29 18:36:17 +0200 | |
---|---|---|
committer | 2017-08-29 18:53:13 +0200 | |
commit | 687d6c449a336cd5f9667cf0b15b0f7a26d6c103 (patch) | |
tree | cfb65b65057a868b40567f0c777b5ac395417ac4 /src/test/java/com/google/devtools | |
parent | adda51294125a335e9b3fad9c72c00b8de54b766 (diff) |
Rollforward of https://github.com/bazelbuild/bazel/commit/0071b396776be4d146fd271499716dd5dea6f7e9: Enable parameter files for manifest merger actions.
NEW: Using shell quoted param files and unescape arguments in ParamsFilePreProcessor to avoid miss-processing --manifestValues arguments containing whitespace.
RELNOTES: None.
PiperOrigin-RevId: 166858411
Diffstat (limited to 'src/test/java/com/google/devtools')
-rw-r--r-- | src/test/java/com/google/devtools/common/options/OptionsParserTest.java | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java index f8a0d5effe..726af7a5d6 100644 --- a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java +++ b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java @@ -397,6 +397,46 @@ public class OptionsParserTest { } @Test + public void parseWithParamsFileSingleQuotesUnescaping() + throws OptionsParsingException, IOException { + Path params = Files.createTempDirectory("foo").resolve("params"); + Files.write( + params, + ImmutableList.of("--foo", "'fuzzy '\\''foo'", "--bar", "17"), + StandardCharsets.UTF_8, + StandardOpenOption.CREATE); + + OptionsParser parser = newOptionsParser(ExampleFoo.class, ExampleBaz.class); + parser.enableParamsFileSupport(FileSystems.getDefault()); + parser.parse("@" + params); + ExampleFoo foo = parser.getOptions(ExampleFoo.class); + assertThat(foo.foo).isEqualTo("fuzzy 'foo"); + assertThat(foo.bar).isEqualTo(17); + ExampleBaz baz = parser.getOptions(ExampleBaz.class); + assertThat(baz.baz).isEqualTo("defaultBaz"); + } + + @Test + public void parseWithParamsFilePartiallyQuotedNoUnescaping() + throws OptionsParsingException, IOException { + Path params = Files.createTempDirectory("foo").resolve("params"); + Files.write( + params, + ImmutableList.of("--foo", "'fuzzy 'foo", "--bar", "17"), + StandardCharsets.UTF_8, + StandardOpenOption.CREATE); + + OptionsParser parser = newOptionsParser(ExampleFoo.class, ExampleBaz.class); + parser.enableParamsFileSupport(FileSystems.getDefault()); + parser.parse("@" + params); + ExampleFoo foo = parser.getOptions(ExampleFoo.class); + assertThat(foo.foo).isEqualTo("'fuzzy 'foo"); + assertThat(foo.bar).isEqualTo(17); + ExampleBaz baz = parser.getOptions(ExampleBaz.class); + assertThat(baz.baz).isEqualTo("defaultBaz"); + } + + @Test public void parseWithParamsFileUnmatchedQuote() throws IOException { Path params = Files.createTempDirectory("foo").resolve("params"); Files.write( @@ -445,7 +485,7 @@ public class OptionsParserTest { assertThat(foo.foo).isEqualTo("hello\\\nworld"); assertThat(foo.nodoc).isEqualTo("\"hello\nworld\""); ExampleBaz baz = parser.getOptions(ExampleBaz.class); - assertThat(baz.baz).isEqualTo("'hello\nworld'"); + assertThat(baz.baz).isEqualTo("hello\nworld"); } @Test @@ -463,7 +503,7 @@ public class OptionsParserTest { parser.enableParamsFileSupport(FileSystems.getDefault()); parser.parse("@" + params); ExampleBaz baz = parser.getOptions(ExampleBaz.class); - assertThat(baz.baz).isEqualTo("'hello\nworld'"); + assertThat(baz.baz).isEqualTo("hello\nworld"); ExampleFoo foo = parser.getOptions(ExampleFoo.class); assertThat(foo.foo).isEqualTo("hello\\\nworld"); assertThat(foo.nodoc).isEqualTo("\"hello\nworld\""); |