X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/011188e3920f21e6883c2dab956b3d4fb4e8cbfa..8757a0f:/test/libapt/commandline_test.cc?ds=inline diff --git a/test/libapt/commandline_test.cc b/test/libapt/commandline_test.cc index 0da2ba45f..7783c47a4 100644 --- a/test/libapt/commandline_test.cc +++ b/test/libapt/commandline_test.cc @@ -17,24 +17,30 @@ class CLT: public CommandLine { } }; -#define EXPECT_CMD(x, ...) { const char * const argv[] = { __VA_ARGS__ }; EXPECT_EQ(x, CLT::AsString(argv, sizeof(argv)/sizeof(argv[0]))); } +bool ShowHelp(CommandLine &) {return false;} +std::vector GetCommands() {return {};} + TEST(CommandLineTest,SaveInConfig) { - EXPECT_CMD("apt-get install -sf", +#define APT_EXPECT_CMD(x, ...) { const char * const argv[] = { __VA_ARGS__ }; EXPECT_EQ(x, CLT::AsString(argv, sizeof(argv)/sizeof(argv[0]))); } + APT_EXPECT_CMD("apt-get install -sf", "apt-get", "install", "-sf"); - EXPECT_CMD("apt-cache -s apt -so Debug::test=Test", + APT_EXPECT_CMD("apt-cache -s apt -so Debug::test=Test", "apt-cache", "-s", "apt", "-so", "Debug::test=Test"); - EXPECT_CMD("apt-cache -s apt -so Debug::test=\"Das ist ein Test\"", + APT_EXPECT_CMD("apt-cache -s apt -so Debug::test=\"Das ist ein Test\"", "apt-cache", "-s", "apt", "-so", "Debug::test=Das ist ein Test"); - EXPECT_CMD("apt-cache -s apt --hallo test=1.0", + APT_EXPECT_CMD("apt-cache -s apt --hallo test=1.0", "apt-cache", "-s", "apt", "--hallo", "test=1.0"); +#undef APT_EXPECT_CMD } TEST(CommandLineTest,Parsing) { CommandLine::Args Args[] = { { 't', 0, "Test::Worked", 0 }, + { 'T', "testing", "Test::Worked", CommandLine::HasArg }, { 'z', "zero", "Test::Zero", 0 }, + { 'o', "option", 0, CommandLine::ArbItem }, {0,0,0,0} }; ::Configuration c; @@ -56,6 +62,79 @@ TEST(CommandLineTest,Parsing) CmdL.Parse(3 , argv2); EXPECT_TRUE(c.FindB("Test::Worked", false)); EXPECT_FALSE(c.FindB("Test::Zero", false)); + + c.Clear("Test"); + { + char const * argv[] = { "test", "-T", "yes" }; + CmdL.Parse(3 , argv); + EXPECT_TRUE(c.FindB("Test::Worked", false)); + EXPECT_EQ("yes", c.Find("Test::Worked", "no")); + EXPECT_EQ(0, CmdL.FileSize()); + } + c.Clear("Test"); + { + char const * argv[] = { "test", "-T=yes" }; + CmdL.Parse(2 , argv); + EXPECT_TRUE(c.Exists("Test::Worked")); + EXPECT_EQ("yes", c.Find("Test::Worked", "no")); + EXPECT_EQ(0, CmdL.FileSize()); + } + c.Clear("Test"); + { + char const * argv[] = { "test", "-T=", "yes" }; + CmdL.Parse(3 , argv); + EXPECT_TRUE(c.Exists("Test::Worked")); + EXPECT_EQ("no", c.Find("Test::Worked", "no")); + EXPECT_EQ(1, CmdL.FileSize()); + } + + c.Clear("Test"); + { + char const * argv[] = { "test", "--testing", "yes" }; + CmdL.Parse(3 , argv); + EXPECT_TRUE(c.FindB("Test::Worked", false)); + EXPECT_EQ("yes", c.Find("Test::Worked", "no")); + EXPECT_EQ(0, CmdL.FileSize()); + } + c.Clear("Test"); + { + char const * argv[] = { "test", "--testing=yes" }; + CmdL.Parse(2 , argv); + EXPECT_TRUE(c.Exists("Test::Worked")); + EXPECT_EQ("yes", c.Find("Test::Worked", "no")); + EXPECT_EQ(0, CmdL.FileSize()); + } + c.Clear("Test"); + { + char const * argv[] = { "test", "--testing=", "yes" }; + CmdL.Parse(3 , argv); + EXPECT_TRUE(c.Exists("Test::Worked")); + EXPECT_EQ("no", c.Find("Test::Worked", "no")); + EXPECT_EQ(1, CmdL.FileSize()); + } + + c.Clear("Test"); + { + char const * argv[] = { "test", "-o", "test::worked=yes" }; + CmdL.Parse(3 , argv); + EXPECT_TRUE(c.FindB("Test::Worked", false)); + EXPECT_EQ("yes", c.Find("Test::Worked", "no")); + } + c.Clear("Test"); + { + char const * argv[] = { "test", "-o", "test::worked=" }; + CmdL.Parse(3 , argv); + EXPECT_TRUE(c.Exists("Test::Worked")); + EXPECT_EQ("no", c.Find("Test::Worked", "no")); + } + c.Clear("Test"); + { + char const * argv[] = { "test", "-o", "test::worked=", "yes" }; + CmdL.Parse(4 , argv); + EXPECT_TRUE(c.Exists("Test::Worked")); + EXPECT_EQ("no", c.Find("Test::Worked", "no")); + } + c.Clear("Test"); } TEST(CommandLineTest, BoolParsing)