Allow unrecognised options. (#105)

Allows unrecognised options to be left alone by the parser without throwing an exception.
This commit is contained in:
Frank Schoenmann
2018-04-12 08:15:07 +10:00
committed by jarro2783
parent 00e8ecc482
commit ca6e9f70eb
3 changed files with 70 additions and 4 deletions
+30
View File
@@ -473,3 +473,33 @@ TEST_CASE("std::optional", "[optional]") {
CHECK(*optional == "foo");
}
#endif
TEST_CASE("Unrecognised options", "[options]") {
cxxopts::Options options("unknown_options", " - test unknown options");
options.add_options()
("long", "a long option")
("s,short", "a short option");
Argv av({
"unknown_options",
"--unknown",
"--long",
"-su",
"--another_unknown",
});
char** argv = av.argv();
auto argc = av.argc();
SECTION("Default behaviour") {
CHECK_THROWS_AS(options.parse(argc, argv), cxxopts::option_not_exists_exception);
}
SECTION("After allowing unrecognised options") {
options.allow_unrecognised_options();
CHECK_NOTHROW(options.parse(argc, argv));
REQUIRE(argc == 3);
CHECK_THAT(argv[1], Catch::Equals("--unknown"));
}
}