aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar apell <apell@google.com>2017-08-29 18:36:17 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-08-29 18:53:13 +0200
commit687d6c449a336cd5f9667cf0b15b0f7a26d6c103 (patch)
treecfb65b65057a868b40567f0c777b5ac395417ac4 /src/test/java/com/google/devtools
parentadda51294125a335e9b3fad9c72c00b8de54b766 (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.java44
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\"");