}
-#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::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);
}
}
}
// so we check the file size before
struct stat statBuf;
if (stat( filename.c_str(), &statBuf) != 0)
- throw SystemException(errno SENF_EXC_DEBUGINFO);
+ throw SystemException(filename, errno SENF_EXC_DEBUGINFO);
if (statBuf.st_size == 0) return;
boost::spirit::file_iterator<> i (filename);
if (!i) {
if (errno == 0)
// hmm.. errno==0 but the file_iterator is false; something is wrong but we
// do not know what exactly, so we throw a SystemeException with EINVAL
- throw SystemException(EINVAL SENF_EXC_DEBUGINFO);
+ throw SystemException(filename, EINVAL SENF_EXC_DEBUGINFO);
else
- throw SystemException(errno SENF_EXC_DEBUGINFO);
+ throw SystemException(filename, errno SENF_EXC_DEBUGINFO);
}
boost::spirit::file_iterator<> const i_end (i.make_end());
parseLoop(i, i_end, filename, cb);