aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/common
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-01-25 22:16:18 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2017-01-25 22:24:41 +0000
commit4d0f864fb17b2f5ada4280e5758f924628f990c2 (patch)
tree2d414ef9e44f7202eb7a44bc5d8038248ba93a39 /src/test/java/com/google/devtools/common
parentdd335bed009f40f66a7376c803d44193b7409e2f (diff)
Fix the OptionsParser to deal with CRLF line endings.
Fixes https://github.com/bazelbuild/bazel/issues/2416 -- PiperOrigin-RevId: 145595491 MOS_MIGRATED_REVID=145595491
Diffstat (limited to 'src/test/java/com/google/devtools/common')
-rw-r--r--src/test/java/com/google/devtools/common/options/OptionsParserTest.java136
1 files changed, 131 insertions, 5 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 c2e3d6018f..edc1898e24 100644
--- a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
+++ b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
@@ -144,7 +144,7 @@ public class OptionsParserTest {
@Test
public void parseWithParamsFile() throws OptionsParsingException, IOException {
- // TODO(bazel-team): Switch to an in memory file system.
+ // TODO(bazel-team): Switch to an in memory file system, here and below.
Path params = Files.createTempDirectory("foo").resolve("params");
Files.write(
params,
@@ -161,10 +161,91 @@ public class OptionsParserTest {
ExampleBaz baz = parser.getOptions(ExampleBaz.class);
assertEquals("oops", baz.baz);
}
+
+ @Test
+ public void parseWithEmptyParamsFile() throws OptionsParsingException, IOException {
+ // TODO(bazel-team): Switch to an in memory file system, here and below.
+ Path params = Files.createTempDirectory("foo").resolve("params");
+ Files.write(
+ params,
+ ImmutableList.of(""),
+ 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);
+ assertEquals("defaultFoo", foo.foo);
+ assertEquals(42, foo.bar);
+ ExampleBaz baz = parser.getOptions(ExampleBaz.class);
+ assertEquals("defaultBaz", baz.baz);
+ }
+
+ @Test
+ public void parseWithParamsFileWithEmptyStringValues() throws Exception {
+ Path params = Files.createTempDirectory("foo").resolve("params");
+ Files.write(
+ params,
+ ImmutableList.of("--baz", "", "--foo", ""),
+ 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);
+ assertEquals("", foo.foo);
+ ExampleBaz baz = parser.getOptions(ExampleBaz.class);
+ assertEquals("", baz.baz);
+ }
+
+ @Test
+ public void parseWithParamsFileWithEmptyString() throws OptionsParsingException, IOException {
+ // TODO(bazel-team): Switch to an in memory file system, here and below.
+ Path params = Files.createTempDirectory("foo").resolve("params");
+ Files.write(
+ params,
+ ImmutableList.of("--baz --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);
+ assertEquals("defaultFoo", foo.foo);
+ assertEquals(17, foo.bar);
+ ExampleBaz baz = parser.getOptions(ExampleBaz.class);
+ assertEquals("", baz.baz);
+ }
+
+ @Test
+ public void parseWithParamsFileWithEmptyStringAtEnd()
+ throws OptionsParsingException, IOException {
+ // TODO(bazel-team): Switch to an in memory file system, here and below.
+ Path params = Files.createTempDirectory("foo").resolve("params");
+ Files.write(
+ params,
+ ImmutableList.of("--bar",
+ "17",
+ " --baz",
+ ""),
+ 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);
+ assertEquals("defaultFoo", foo.foo);
+ assertEquals(17, foo.bar);
+ ExampleBaz baz = parser.getOptions(ExampleBaz.class);
+ assertEquals("", baz.baz);
+ }
@Test
public void parseWithParamsFileWithQuotedSpaces() throws OptionsParsingException, IOException {
- // TODO(bazel-team): Switch to an in memory file system.
Path params = Files.createTempDirectory("foo").resolve("params");
Files.write(
params,
@@ -184,7 +265,6 @@ public class OptionsParserTest {
@Test
public void parseWithParamsFileWithEscapedSpaces() throws OptionsParsingException, IOException {
- // TODO(bazel-team): Switch to an in memory file system.
Path params = Files.createTempDirectory("foo").resolve("params");
Files.write(
params,
@@ -204,7 +284,6 @@ public class OptionsParserTest {
@Test
public void parseWithParamsFileWithEscapedQuotes() throws OptionsParsingException, IOException {
- // TODO(bazel-team): Switch to an in memory file system.
Path params = Files.createTempDirectory("foo").resolve("params");
Files.write(
params,
@@ -224,7 +303,6 @@ public class OptionsParserTest {
@Test
public void parseWithParamsFileUnmatchedQuote() throws IOException {
- // TODO(bazel-team): Switch to an in memory file system.
Path params = Files.createTempDirectory("foo").resolve("params");
Files.write(
params,
@@ -246,6 +324,54 @@ public class OptionsParserTest {
e.getMessage());
}
}
+
+ @Test
+ public void parseWithParamsFileWithMultilineStringValues() throws Exception {
+ Path params = Files.createTempDirectory("foo").resolve("params");
+ Files.write(
+ params,
+ ImmutableList.of(
+ "--baz",
+ "'hello\nworld'",
+ "--foo",
+ "hello\\",
+ "world",
+ "--nodoc",
+ "\"hello",
+ "world\""),
+ 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);
+ assertEquals("hello\\\nworld", foo.foo);
+ assertEquals("\"hello\nworld\"", foo.nodoc);
+ ExampleBaz baz = parser.getOptions(ExampleBaz.class);
+ assertEquals("'hello\nworld'", baz.baz);
+ }
+
+ @Test
+ public void parseWithParamsFileWithMultilineStringValuesCRLF() throws Exception {
+ Path params = Files.createTempDirectory("foo").resolve("params");
+ Files.write(
+ params,
+ ImmutableList.of(
+ "--baz\r\n'hello\nworld'\r\n--foo\r\nhello\\\r\nworld\r\n\r\n"
+ + "--nodoc\r\n\"hello\r\nworld\""),
+ StandardCharsets.UTF_8,
+ StandardOpenOption.CREATE);
+
+ OptionsParser parser = newOptionsParser(ExampleFoo.class, ExampleBaz.class);
+ parser.enableParamsFileSupport(FileSystems.getDefault());
+ parser.parse("@" + params);
+ ExampleBaz baz = parser.getOptions(ExampleBaz.class);
+ assertEquals("'hello\nworld'", baz.baz);
+ ExampleFoo foo = parser.getOptions(ExampleFoo.class);
+ assertEquals("hello\\\nworld", foo.foo);
+ assertEquals("\"hello\nworld\"", foo.nodoc);
+ }
@Test
public void parseWithParamsFileMultiline() throws OptionsParsingException, IOException {