// $Id$
//
-// Copyright (C) 2008
+// Copyright (C) 2008
// Fraunhofer Institute for Open Communication Systems (FOKUS)
// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
int var1 (0);
bool var2 (false);
-
+
void fun1(int v) { var1 = v; }
void fun2() { var2 = true; }
public:
TempFile(std::string const & name) : name_ (name), file_ (name_.c_str()) {}
~TempFile() { file_.close(); boost::filesystem::remove(name_); }
-
+
template <class T> TempFile & operator<<(T const & v) { file_ << v; return *this; }
enum Closer { close }; void operator<<(Closer) { file_.close(); }
std::string const & name() { return name_; }
std::string name_;
std::ofstream file_;
};
-
+
}
-#define SENF_CHECK_THROW_SYSTEMEXCEPTION( expr, errorNumber) \
+#define SENF_CHECK_THROW_SYSTEMEXCEPTION( expr, errorNumber, msg) \
try { \
BOOST_TEST_PASSPOINT(); \
expr; \
BOOST_ERROR( "senf::SystemException is expected"); \
} catch( senf::SystemException const & ex ) { \
BOOST_CHECK( ex.anyOf( errorNumber)); \
+ BOOST_CHECK( ex.message().find(msg) != std::string::npos); \
} \
-
+
SENF_AUTO_UNIT_TEST(configFile)
{
namespace fty = senf::console::factory;
TempFile cfgf ("test.cfg");
- cfgf << "dir1/fun1 10;\n"
+ cfgf << "dir1/fun1 10;\n"
<< TempFile::close;
-
+
senf::console::ScopedDirectory<> dir1;
senf::console::root().add("dir1", dir1);
dir1.add("fun1",fty::Command(&fun1));
{
senf::console::ConfigFile cfg ("i don't exist");
- SENF_CHECK_THROW_SYSTEMEXCEPTION(
- cfg.parse(), ENOENT);
+ SENF_CHECK_THROW_SYSTEMEXCEPTION(cfg.parse(), ENOENT, "i don't exist");
cfg.ignoreMissing();
SENF_CHECK_NO_THROW( cfg.parse() );
}
- {
- if (getuid() != 0 && boost::filesystem::exists("/etc/shadow")) {
- senf::console::ConfigFile cfg ("/etc/shadow");
- SENF_CHECK_THROW_SYSTEMEXCEPTION(
- cfg.parse(), EACCES);
+ {
+ std::string etc_shaddow ("/etc/shadow");
+ if (getuid() != 0 && boost::filesystem::exists(etc_shaddow)) {
+ senf::console::ConfigFile cfg (etc_shaddow);
+ SENF_CHECK_THROW_SYSTEMEXCEPTION( cfg.parse(), EACCES, etc_shaddow);
}
}
}
cfgf << "dir1/fun1 10;\n"
<< "dir2/fun2;\n"
<< TempFile::close;
-
+
senf::console::ScopedDirectory<> dir1;
senf::console::root().add("dir1", dir1);
dir1.add("fun1",fty::Command(&fun1));
-
+
{
var1 = 0;
var2 = false;
cfgf << "dir1/fun1 10;\n"
<< "dir2 { dir3 { fun2; } fun1 5; }"
<< TempFile::close;
-
+
senf::console::ScopedDirectory<> dir1;
senf::console::root().add("dir1", dir1);
dir1.add("fun1",fty::Command(&fun1));
-
+
senf::console::ScopedDirectory<> dir2;
senf::console::root().add("dir2", dir2);
-
+
dir2.add("dir3",fty::Directory()).add("fun2", fty::Command(&fun2));
dir2.add("fun1", fty::Command(&fun1));
cfgf << "dir1/fun1 10;\n"
<< "link1 { dir3 { fun2; } fun1 5; }"
<< TempFile::close;
-
+
senf::console::ScopedDirectory<> dir1;
senf::console::root().add("dir1", dir1);
dir1.add("fun1",fty::Command(&fun1));
-
+
senf::console::ScopedDirectory<> dir2;
dir1.add("dir2", dir2);
-
+
dir2.add("dir3",fty::Directory()).add("fun2", fty::Command(&fun2));
dir2.add("fun1", fty::Command(&fun1));
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f