From: bert hubert Date: Thu, 7 May 2015 10:12:57 +0000 (+0200) Subject: add rudementary unit tests for our horrible configfile parser, so we don't get it... X-Git-Tag: dnsdist-1.0.0-alpha1~248^2~28^2~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8954859e59b396140e22392a9db7814b275b66cd;p=thirdparty%2Fpdns.git add rudementary unit tests for our horrible configfile parser, so we don't get it wrong when we improve it --- diff --git a/pdns/Makefile.am b/pdns/Makefile.am index e126cb82e2..e5f7fbd49d 100644 --- a/pdns/Makefile.am +++ b/pdns/Makefile.am @@ -951,6 +951,7 @@ testrunner_SOURCES = \ responsestats.cc \ sillyrecords.cc \ statbag.cc \ + test-arguments_cc.cc \ test-base32_cc.cc \ test-base64_cc.cc \ test-bindparser_cc.cc \ diff --git a/pdns/test-arguments_cc.cc b/pdns/test-arguments_cc.cc new file mode 100644 index 0000000000..70f04f3770 --- /dev/null +++ b/pdns/test-arguments_cc.cc @@ -0,0 +1,61 @@ +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_NO_MAIN +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include +#include +#include +#include "arguments.hh" +#include "namespaces.hh" + +BOOST_AUTO_TEST_SUITE(test_arguments_cc) + +BOOST_AUTO_TEST_CASE(test_file_parse) { + char path[]="/tmp/pdns-test-conf.XXXXXX"; + int fd=mkstemp(path); + if(fd < 0) + BOOST_FAIL("Unable to generate a temporary file"); + + string config= +R"(launch=launch=1234 +test=123\ +456 +test2=here # and here it stops +fail=no +success=on +really=yes)"; + + int len=write(fd, config.c_str(), config.size()); + + BOOST_CHECK_EQUAL(len, config.size()); + if(!len) + return; + close(fd); + + try { + ArgvMap arg; + for(auto& a : {"launch", "test", "test2", "fail", "success", "really"} ) + arg.set(a,a); + arg.set("default", "default")="no"; + arg.file(path); + unlink(path); + + BOOST_CHECK_EQUAL(arg["launch"], "launch=1234"); + BOOST_CHECK_EQUAL(arg["test"], "123456"); + BOOST_CHECK_EQUAL(arg.asNum("test"), 123456); + BOOST_CHECK_EQUAL(arg["test2"], "here"); + BOOST_CHECK_EQUAL(arg.mustDo("fail"), false); + BOOST_CHECK_EQUAL(arg.mustDo("success"), true); + BOOST_CHECK_EQUAL(arg.mustDo("really"), true); + BOOST_CHECK_EQUAL(arg["default"], "no"); + + } + catch(PDNSException& e) { + unlink(path); + cerr<<"Exception: "<