]> git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/test-arguments_cc.cc
Merge pull request #14195 from rgacogne/ddist-no-assertions
[thirdparty/pdns.git] / pdns / test-arguments_cc.cc
1 #ifndef BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_DYN_LINK
3 #endif
4
5 #define BOOST_TEST_NO_MAIN
6 #ifdef HAVE_CONFIG_H
7 #include "config.h"
8 #endif
9 #include <stdlib.h>
10 #include <unistd.h>
11 #include <boost/test/unit_test.hpp>
12 #include "arguments.hh"
13 #include "namespaces.hh"
14
15 BOOST_AUTO_TEST_SUITE(test_arguments_cc)
16
17 BOOST_AUTO_TEST_CASE(test_file_parse) {
18 char path[]="/tmp/pdns-test-conf.XXXXXX";
19 int fd=mkstemp(path);
20 if(fd < 0)
21 BOOST_FAIL("Unable to generate a temporary file");
22
23 string config=
24 R"(launch=launch=1234
25 test=123\
26 456
27 test2=here # and here it stops
28 fail=no
29 success=on
30 really=yes)";
31
32 ssize_t len=write(fd, config.c_str(), config.size());
33
34 BOOST_CHECK_EQUAL(len, static_cast<ssize_t>(config.size()));
35 if(!len)
36 return;
37 close(fd);
38
39 try {
40 ArgvMap arg;
41 for(auto& a : {"launch", "test", "test2", "fail", "success", "really"} )
42 arg.set(a,a);
43 arg.set("default", "default")="no";
44 arg.file(path);
45 unlink(path);
46
47 BOOST_CHECK_EQUAL(arg["launch"], "launch=1234");
48 BOOST_CHECK_EQUAL(arg["test"], "123456");
49 BOOST_CHECK_EQUAL(arg.asNum("test"), 123456);
50 BOOST_CHECK_EQUAL(arg["test2"], "here");
51 BOOST_CHECK_EQUAL(arg.mustDo("fail"), false);
52 BOOST_CHECK_EQUAL(arg.mustDo("success"), true);
53 BOOST_CHECK_EQUAL(arg.mustDo("really"), true);
54 BOOST_CHECK_EQUAL(arg["default"], "no");
55
56 }
57 catch(PDNSException& e) {
58 unlink(path);
59 cerr<<"Exception: "<<e.reason<<endl;
60 BOOST_FAIL("Exception: "+e.reason);
61 }
62 };
63
64 BOOST_AUTO_TEST_SUITE_END();