aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools/common/options/OptionsParserTest.java')
-rw-r--r--src/test/java/com/google/devtools/common/options/OptionsParserTest.java95
1 files changed, 95 insertions, 0 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 0bb8a15758..910e59e15f 100644
--- a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
+++ b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
@@ -1024,4 +1024,99 @@ public class OptionsParserTest {
result = parser.getOptions(LongValueExample.class);
assertEquals(100, result.longval);
}
+
+ public static class OldNameExample extends OptionsBase {
+ @Option(name = "new_name",
+ oldName = "old_name",
+ defaultValue = "defaultValue")
+ public String flag;
+ }
+
+ @Test
+ public void testOldName() throws OptionsParsingException {
+ OptionsParser parser = newOptionsParser(OldNameExample.class);
+ parser.parse("--old_name=foo");
+ OldNameExample result = parser.getOptions(OldNameExample.class);
+ assertEquals("foo", result.flag);
+ assertThat(parser.getWarnings()).contains(
+ "Option 'old_name' is deprecated: Use --new_name instead");
+
+ // Should also work by its new name.
+ parser = newOptionsParser(OldNameExample.class);
+ parser.parse("--new_name=foo");
+ result = parser.getOptions(OldNameExample.class);
+ assertEquals("foo", result.flag);
+ }
+
+ @Test
+ public void testOldNameCanonicalization() throws Exception {
+ assertEquals(
+ Arrays.asList("--new_name=foo"), canonicalize(OldNameExample.class, "--old_name=foo"));
+ }
+
+ public static class OldNameConflictExample extends OptionsBase {
+ @Option(name = "new_name",
+ oldName = "old_name",
+ defaultValue = "defaultValue")
+ public String flag1;
+
+ @Option(name = "old_name",
+ defaultValue = "defaultValue")
+ public String flag2;
+ }
+
+ @Test
+ public void testOldNameConflict() {
+ try {
+ newOptionsParser(OldNameConflictExample.class);
+ fail("old_name should conflict with the flag already named old_name");
+ } catch (DuplicateOptionDeclarationException e) {
+ // expected
+ }
+ }
+
+ public static class WrapperOptionExample extends OptionsBase {
+ @Option(name = "wrapper",
+ defaultValue = "null",
+ wrapperOption = true)
+ public Void wrapperOption;
+
+ @Option(name = "flag1", defaultValue = "false")
+ public boolean flag1;
+
+ @Option(name = "flag2", defaultValue = "42")
+ public int flag2;
+
+ @Option(name = "flag3", defaultValue = "foo")
+ public String flag3;
+ }
+
+ @Test
+ public void testWrapperOption() throws OptionsParsingException {
+ OptionsParser parser = newOptionsParser(WrapperOptionExample.class);
+ parser.parse("--wrapper=--flag1=true", "--wrapper=--flag2=87", "--wrapper=--flag3=bar");
+ WrapperOptionExample result = parser.getOptions(WrapperOptionExample.class);
+ assertEquals(true, result.flag1);
+ assertEquals(87, result.flag2);
+ assertEquals("bar", result.flag3);
+ }
+
+ @Test
+ public void testInvalidWrapperOptionFormat() {
+ OptionsParser parser = newOptionsParser(WrapperOptionExample.class);
+ try {
+ parser.parse("--wrapper=foo");
+ fail();
+ } catch (OptionsParsingException e) {
+ // Check that the message looks like it's suggesting the correct format.
+ assertThat(e.getMessage()).contains("--foo");
+ }
+ }
+
+ @Test
+ public void testWrapperCanonicalization() throws OptionsParsingException {
+ List<String> canonicalized = canonicalize(WrapperOptionExample.class,
+ "--wrapper=--flag1=true", "--wrapper=--flag2=87", "--wrapper=--flag3=bar");
+ assertEquals(Arrays.asList("--flag1=true", "--flag2=87", "--flag3=bar"), canonicalized);
+ }
}