allow command to accept "--" separator
[folly.git] / folly / experimental / test / NestedCommandLineAppTest.cpp
index 27c698d..3d8e3ac 100644 (file)
@@ -75,6 +75,7 @@ TEST(ProgramOptionsTest, Help) {
   callHelper({"--help"});
   callHelper({"--help", "foo"});
   callHelper({"--help", "bar"});
   callHelper({"--help"});
   callHelper({"--help", "foo"});
   callHelper({"--help", "bar"});
+  callHelper({"--help", "--", "bar"});
   callHelper({"help"});
   callHelper({"help", "foo"});
   callHelper({"help", "bar"});
   callHelper({"help"});
   callHelper({"help", "foo"});
   callHelper({"help", "bar"});
@@ -82,6 +83,9 @@ TEST(ProgramOptionsTest, Help) {
   // wrong command name
   callHelper({"--help", "qux"}, 1);
   callHelper({"help", "qux"}, 1);
   // wrong command name
   callHelper({"--help", "qux"}, 1);
   callHelper({"help", "qux"}, 1);
+
+  // anything after -- is parsed as arguments
+  callHelper({"--", "help", "bar"}, 1);
 }
 
 TEST(ProgramOptionsTest, DevFull) {
 }
 
 TEST(ProgramOptionsTest, DevFull) {
@@ -89,6 +93,20 @@ TEST(ProgramOptionsTest, DevFull) {
   callHelper({"--help"}, 1, full.fd());
 }
 
   callHelper({"--help"}, 1, full.fd());
 }
 
+TEST(ProgramOptionsTest, CutArguments) {
+  // anything after -- is parsed as arguments
+  EXPECT_EQ(
+      "running foo\n"
+      "foo global-foo 43\n"
+      "foo local-foo 42\n"
+      "foo arg b\n"
+      "foo arg --local-foo\n"
+      "foo arg 44\n"
+      "foo arg a\n",
+      callHelper(
+          {"foo", "--global-foo", "43", "--", "b", "--local-foo", "44", "a"}));
+}
+
 TEST(ProgramOptionsTest, Success) {
   EXPECT_EQ(
       "running foo\n"
 TEST(ProgramOptionsTest, Success) {
   EXPECT_EQ(
       "running foo\n"