From 3e8502bf430d53eb5ef6267eb9579d29a1178944 Mon Sep 17 00:00:00 2001 From: Henry Fredrick Schreiner Date: Wed, 8 Mar 2017 09:50:15 -0500 Subject: [PATCH] Added OptionNotFound, correct throw on failed run --- tests/AppTest.cpp | 124 +++++++++++++++++++++------------------ tests/IniTest.cpp | 4 +- tests/SubcommandTest.cpp | 34 +++++------ 3 files changed, 85 insertions(+), 77 deletions(-) diff --git a/tests/AppTest.cpp b/tests/AppTest.cpp index 55702e7c..a7017215 100644 --- a/tests/AppTest.cpp +++ b/tests/AppTest.cpp @@ -1,18 +1,26 @@ #include "app_helper.hpp" #include + TEST_F(TApp, OneFlagShort) { app.add_flag("-c,--count"); args = {"-c"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("-c")); EXPECT_EQ(1, app.count("--count")); } +TEST_F(TApp, CountNonExist) { + app.add_flag("-c,--count"); + args = {"-c"}; + run(); + EXPECT_THROW(app.count("--nonexist"), CLI::OptionNotFound); +} + TEST_F(TApp, OneFlagLong) { app.add_flag("-c,--count"); args = {"--count"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("-c")); EXPECT_EQ(1, app.count("--count")); } @@ -23,7 +31,7 @@ TEST_F(TApp, DashedOptions) { app.add_flag("--this,--that"); args = {"-c", "--q", "--this", "--that"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("-c")); EXPECT_EQ(1, app.count("--q")); EXPECT_EQ(2, app.count("--this")); @@ -36,7 +44,7 @@ TEST_F(TApp, OneFlagRef) { int ref; app.add_flag("-c,--count", ref); args = {"--count"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("-c")); EXPECT_EQ(1, app.count("--count")); EXPECT_EQ(1, ref); @@ -46,7 +54,7 @@ TEST_F(TApp, OneString) { std::string str; app.add_option("-s,--string", str); args = {"--string", "mystring"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("-s")); EXPECT_EQ(1, app.count("--string")); EXPECT_EQ(str, "mystring"); @@ -56,7 +64,7 @@ TEST_F(TApp, OneStringEqualVersion) { std::string str; app.add_option("-s,--string", str); args = {"--string=mystring"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("-s")); EXPECT_EQ(1, app.count("--string")); EXPECT_EQ(str, "mystring"); @@ -67,7 +75,7 @@ TEST_F(TApp, TogetherInt) { int i; app.add_option("-i,--int", i); args = {"-i4"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("--int")); EXPECT_EQ(1, app.count("-i")); EXPECT_EQ(i, 4); @@ -77,7 +85,7 @@ TEST_F(TApp, SepInt) { int i; app.add_option("-i,--int", i); args = {"-i","4"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("--int")); EXPECT_EQ(1, app.count("-i")); EXPECT_EQ(i, 4); @@ -87,7 +95,7 @@ TEST_F(TApp, OneStringAgain) { std::string str; app.add_option("-s,--string", str); args = {"--string", "mystring"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("-s")); EXPECT_EQ(1, app.count("--string")); EXPECT_EQ(str, "mystring"); @@ -97,7 +105,7 @@ TEST_F(TApp, OneStringAgain) { TEST_F(TApp, DefaultStringAgain) { std::string str = "previous"; app.add_option("-s,--string", str); - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(0, app.count("-s")); EXPECT_EQ(0, app.count("--string")); EXPECT_EQ(str, "previous"); @@ -110,7 +118,7 @@ TEST_F(TApp, LotsOfFlags) { app.add_flag("-b"); args = {"-a","-b","-aA"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(2, app.count("-a")); EXPECT_EQ(1, app.count("-b")); EXPECT_EQ(1, app.count("-A")); @@ -128,7 +136,7 @@ TEST_F(TApp, BoolAndIntFlags) { app.add_flag("-u", uflag); args = {"-b", "-i", "-u"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_TRUE(bflag); EXPECT_EQ(1, iflag); EXPECT_EQ((unsigned int) 1, uflag); @@ -142,7 +150,7 @@ TEST_F(TApp, BoolAndIntFlags) { bflag = false; args = {"-iiiuu"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_FALSE(bflag); EXPECT_EQ(3, iflag); EXPECT_EQ((unsigned int) 2, uflag); @@ -157,7 +165,7 @@ TEST_F(TApp, ShortOpts) { args = {"-zzyzyz",}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(2, app.count("-z")); EXPECT_EQ(1, app.count("-y")); @@ -175,7 +183,7 @@ TEST_F(TApp, DefaultOpts) { args = {"-i2", "9"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("i")); EXPECT_EQ(1, app.count("-s")); @@ -200,7 +208,7 @@ TEST_F(TApp, RequiredFlags) { app.reset(); args = {"-a", "-b"}; - EXPECT_NO_THROW(run()); + run(); } @@ -213,7 +221,7 @@ TEST_F(TApp, Positionals) { args = {"thing1","thing2"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("posit1")); EXPECT_EQ(1, app.count("posit2")); @@ -230,7 +238,7 @@ TEST_F(TApp, MixedPositionals) { args = {"--posit2","thing2","7"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("posit2")); EXPECT_EQ(1, app.count("--posit1")); @@ -246,7 +254,7 @@ TEST_F(TApp, Reset) { args = {"--simple", "--double", "1.2"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("--simple")); EXPECT_EQ(1, app.count("-d")); @@ -257,7 +265,7 @@ TEST_F(TApp, Reset) { EXPECT_EQ(0, app.count("--simple")); EXPECT_EQ(0, app.count("-d")); - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, app.count("--simple")); EXPECT_EQ(1, app.count("-d")); @@ -274,7 +282,7 @@ TEST_F(TApp, FileNotExists) { app.add_option("--file", filename)->check(CLI::NonexistentPath); args = {"--file", myfile}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(myfile, filename); app.reset(); @@ -302,7 +310,7 @@ TEST_F(TApp, FileExists) { bool ok = static_cast(std::ofstream(myfile.c_str()).put('a')); // create file EXPECT_TRUE(ok); - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(myfile, filename); std::remove(myfile.c_str()); @@ -316,7 +324,7 @@ TEST_F(TApp, InSet) { args = {"--quick", "two"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ("two", choice); app.reset(); @@ -332,7 +340,7 @@ TEST_F(TApp, InIntSet) { args = {"--quick", "2"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(2, choice); app.reset(); @@ -347,17 +355,17 @@ TEST_F(TApp, InSetIgnoreCase) { app.add_set_ignore_case("-q,--quick", choice, {"one", "Two", "THREE"}); args = {"--quick", "One"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ("one", choice); app.reset(); args = {"--quick", "two"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ("Two", choice); // Keeps caps from set app.reset(); args = {"--quick", "ThrEE"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ("THREE", choice); // Keeps caps from set @@ -389,7 +397,7 @@ TEST_F(TApp, VectorUnlimString) { EXPECT_EQ(-1, opt->get_expected()); args = {"--string", "mystring", "mystring2", "mystring3"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(3, app.count("--string")); EXPECT_EQ(answer, strvec); } @@ -403,7 +411,7 @@ TEST_F(TApp, VectorFancyOpts) { EXPECT_EQ(3, opt->get_expected()); args = {"--string", "mystring", "mystring2", "mystring3"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(3, app.count("--string")); EXPECT_EQ(answer, strvec); @@ -419,15 +427,15 @@ TEST_F(TApp, RequiresFlags) { CLI::Option* opt = app.add_flag("-s,--string"); app.add_flag("--both")->requires(opt); - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"-s"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"-s", "--both"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--both"}; @@ -439,15 +447,15 @@ TEST_F(TApp, ExcludesFlags) { CLI::Option* opt = app.add_flag("-s,--string"); app.add_flag("--nostr")->excludes(opt); - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"-s"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--nostr"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--nostr", "-s"}; @@ -464,15 +472,15 @@ TEST_F(TApp, ExcludesMixedFlags) { CLI::Option* opt3 = app.add_flag("--opt3"); app.add_flag("--no")->excludes(opt1, "--opt2", opt3); - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--no"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--opt2"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--no", "--opt1"}; @@ -489,15 +497,15 @@ TEST_F(TApp, RequiresMultiFlags) { CLI::Option* opt3 = app.add_flag("--opt3"); app.add_flag("--optall")->requires(opt1, opt2, opt3); - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--opt1"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--opt2"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--optall"}; @@ -513,7 +521,7 @@ TEST_F(TApp, RequiresMultiFlags) { app.reset(); args = {"--optall", "--opt1", "--opt2", "--opt3"}; - EXPECT_NO_THROW(run()); + run(); } TEST_F(TApp, RequiresMixedFlags) { @@ -522,15 +530,15 @@ TEST_F(TApp, RequiresMixedFlags) { app.add_flag("--opt3"); app.add_flag("--optall")->requires(opt1, "--opt2", "--opt3"); - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--opt1"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--opt2"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--optall"}; @@ -546,7 +554,7 @@ TEST_F(TApp, RequiresMixedFlags) { app.reset(); args = {"--optall", "--opt1", "--opt2", "--opt3"}; - EXPECT_NO_THROW(run()); + run(); } TEST_F(TApp, RequiresChainedFlags) { @@ -554,11 +562,11 @@ TEST_F(TApp, RequiresChainedFlags) { CLI::Option* opt2 = app.add_flag("--opt2")->requires(opt1); app.add_flag("--opt3")->requires(opt2); - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--opt1"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--opt2"}; @@ -578,11 +586,11 @@ TEST_F(TApp, RequiresChainedFlags) { app.reset(); args = {"--opt2", "--opt1"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--opt1", "--opt2", "--opt3"}; - EXPECT_NO_THROW(run()); + run(); } TEST_F(TApp, Env) { @@ -592,14 +600,14 @@ TEST_F(TApp, Env) { int val=1; CLI::Option* vopt = app.add_option("--tmp", val)->envname("CLI11_TEST_ENV_TMP"); - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(2, val); EXPECT_EQ(1, vopt->count()); app.reset(); vopt->required(); - EXPECT_NO_THROW(run()); + run(); app.reset(); unset_env("CLI11_TEST_ENV_TMP"); @@ -619,15 +627,15 @@ TEST_F(TApp, RangeInt) { app.reset(); args = {"--one=3"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--one=5"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--one=6"}; - EXPECT_NO_THROW(run()); + run(); } TEST_F(TApp, RangeDouble) { @@ -645,15 +653,15 @@ TEST_F(TApp, RangeDouble) { app.reset(); args = {"--one=3"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--one=5"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"--one=6"}; - EXPECT_NO_THROW(run()); + run(); } // Check to make sure progromatic access to left over is available diff --git a/tests/IniTest.cpp b/tests/IniTest.cpp index b30d090b..f603e094 100644 --- a/tests/IniTest.cpp +++ b/tests/IniTest.cpp @@ -228,13 +228,13 @@ TEST_F(TApp, IniRequired) { args = {"--one=1"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); one=two=three=0; args = {"--one=1", "--two=2"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {}; diff --git a/tests/SubcommandTest.cpp b/tests/SubcommandTest.cpp index d5f97d6a..4d54802c 100644 --- a/tests/SubcommandTest.cpp +++ b/tests/SubcommandTest.cpp @@ -4,19 +4,19 @@ TEST_F(TApp, BasicSubcommands) { auto sub1 = app.add_subcommand("sub1"); auto sub2 = app.add_subcommand("sub2"); - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(0, app.get_subcommands().size()); app.reset(); args = {"sub1"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(sub1, app.get_subcommands().at(0)); app.reset(); EXPECT_EQ(0, app.get_subcommands().size()); args = {"sub2"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(sub2, app.get_subcommands().at(0)); app.reset(); @@ -39,12 +39,12 @@ TEST_F(TApp, MultiSubFallthrough) { app.reset(); app.require_subcommand(); - EXPECT_NO_THROW(run()); + run(); app.reset(); app.require_subcommand(2); - EXPECT_NO_THROW(run()); + run(); app.reset(); app.require_subcommand(1); @@ -66,7 +66,7 @@ TEST_F(TApp, Callbacks) { args = {"sub2"}; EXPECT_FALSE(val); - EXPECT_NO_THROW(run()); + run(); EXPECT_TRUE(val); } @@ -168,7 +168,7 @@ TEST_F(TApp, RequiredSubCom) { args = {"sub1"}; - EXPECT_NO_THROW(run()); + run(); } @@ -182,7 +182,7 @@ TEST_F(TApp, Required1SubCom) { app.reset(); args = {"sub1"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"sub1", "sub2"}; @@ -211,7 +211,7 @@ struct SubcommandProgram : public TApp { TEST_F(SubcommandProgram, Working) { args = {"-d", "start", "-ffilename"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(1, dummy); EXPECT_EQ(start, app.get_subcommands().at(0)); @@ -234,7 +234,7 @@ TEST_F(SubcommandProgram, SpareSub) { TEST_F(SubcommandProgram, Multiple) { args = {"-d", "start", "-ffilename", "stop"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(2, app.get_subcommands().size()); EXPECT_EQ(1, dummy); EXPECT_EQ("filename", file); @@ -249,7 +249,7 @@ TEST_F(SubcommandProgram, MultipleOtherOrder) { TEST_F(SubcommandProgram, MultipleArgs) { args = {"start", "stop"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(2, app.get_subcommands().size()); @@ -262,16 +262,16 @@ TEST_F(SubcommandProgram, CaseCheck) { app.reset(); args = {"start"}; - EXPECT_NO_THROW(run()); + run(); app.reset(); start->ignore_case(); - EXPECT_NO_THROW(run()); + run(); app.reset(); args = {"Start"}; - EXPECT_NO_THROW(run()); + run(); } TEST_F(TApp, SubcomInheritCaseCheck) { @@ -279,19 +279,19 @@ TEST_F(TApp, SubcomInheritCaseCheck) { auto sub1 = app.add_subcommand("sub1"); auto sub2 = app.add_subcommand("sub2"); - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(0, app.get_subcommands().size()); app.reset(); args = {"SuB1"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(sub1, app.get_subcommands().at(0)); app.reset(); EXPECT_EQ(0, app.get_subcommands().size()); args = {"sUb2"}; - EXPECT_NO_THROW(run()); + run(); EXPECT_EQ(sub2, app.get_subcommands().at(0)); }