X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FConsole%2FConfigFile.test.cc;h=13fcbc23a1a8fc66eb962cbcd9d0913a15dd319e;hb=8a6697d11e9a6557d9a5c42b4052666fce32bc10;hp=8cb3e302d0a96e8a5cde2355034a24be10fa438f;hpb=8ce5d6817ae748496d7db06ff4b35ad496fa3d21;p=senf.git diff --git a/senf/Utils/Console/ConfigFile.test.cc b/senf/Utils/Console/ConfigFile.test.cc index 8cb3e30..13fcbc2 100644 --- a/senf/Utils/Console/ConfigFile.test.cc +++ b/senf/Utils/Console/ConfigFile.test.cc @@ -1,24 +1,29 @@ // $Id$ // -// Copyright (C) 2008 +// Copyright (C) 2008 // Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY -// Stefan Bund // -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// All Rights Reserved. +// +// Contributor(s): +// Stefan Bund /** \file \brief ConfigFile unit tests */ @@ -35,13 +40,13 @@ #include #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace { int var1 (0); bool var2 (false); - + void fun1(int v) { var1 = v; } void fun2() { var2 = true; } @@ -50,7 +55,7 @@ namespace { public: TempFile(std::string const & name) : name_ (name), file_ (name_.c_str()) {} ~TempFile() { file_.close(); boost::filesystem::remove(name_); } - + template TempFile & operator<<(T const & v) { file_ << v; return *this; } enum Closer { close }; void operator<<(Closer) { file_.close(); } std::string const & name() { return name_; } @@ -59,27 +64,28 @@ namespace { 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)); @@ -103,16 +109,15 @@ SENF_AUTO_UNIT_TEST(configFile) { 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); } } } @@ -125,11 +130,11 @@ SENF_AUTO_UNIT_TEST(configFileRestrict) 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; @@ -161,14 +166,14 @@ SENF_AUTO_UNIT_TEST(configFileSkipGroup) 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)); @@ -204,14 +209,14 @@ SENF_AUTO_UNIT_TEST(configRestrictAndLink) 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)); @@ -232,7 +237,7 @@ SENF_AUTO_UNIT_TEST(configRestrictAndLink) } } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_