X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FExecutor.test.cc;h=0e751f17337270877478df899c870320d242e3b3;hb=0734de7b0f8616d5f2454289d1c686ba1d2c625b;hp=7453af2b70e50a06909247f772f563400836d90c;hpb=fa5eaa97c8593e3587c87f25adb14f7f91f31f37;p=senf.git diff --git a/Console/Executor.test.cc b/Console/Executor.test.cc index 7453af2..0e751f1 100644 --- a/Console/Executor.test.cc +++ b/Console/Executor.test.cc @@ -163,6 +163,71 @@ BOOST_AUTO_UNIT_TEST(executor) senf::console::root().remove("dir2"); } +BOOST_AUTO_UNIT_TEST(executorChroot) +{ + senf::console::root().mkdir("dir1").mkdir("dir3"); + senf::console::root().mkdir("dir2").doc("Helptext").add("test",&testCommand); + + senf::console::Executor executor; + senf::console::CommandParser parser; + + executor.chroot( senf::console::root()["dir2"] ); + + BOOST_CHECK( & executor.chroot() == & senf::console::root()["dir2"] ); + + { + std::stringstream os; + parser.parse("../test", &setCommand); + executor(os, commands.back()); + BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::NoBuiltin ); + BOOST_CHECK_EQUAL( os.str(), "testCommand\n" ); + } + + commands.clear(); + senf::console::root().remove("dir1"); + senf::console::root().remove("dir2"); +} + +namespace { + + void testPolicy(senf::console::DirectoryNode & dir, std::string const & entry) + { + if (dir == senf::console::root() && entry == "dir2") + throw senf::console::Executor::IgnoreCommandException(); + } +} + +BOOST_AUTO_UNIT_TEST(executorPolicy) +{ + senf::console::root().mkdir("dir1").mkdir("dir3"); + senf::console::root().mkdir("dir2").doc("Helptext").add("test",&testCommand); + + senf::console::Executor executor; + senf::console::CommandParser parser; + + executor.policy(&testPolicy); + + { + std::stringstream os; + parser.parse("ls dir1", &setCommand); + executor(os, commands.back()); + BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinLS ); + BOOST_CHECK_EQUAL( os.str(), "dir3/\n" ); + } + + { + std::stringstream os; + parser.parse("dir2/test", &setCommand); + executor(os, commands.back()); + BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::NoBuiltin ); + BOOST_CHECK_EQUAL( os.str(), "" ); + } + + commands.clear(); + senf::console::root().remove("dir1"); + senf::console::root().remove("dir2"); +} + ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_