]> git.ipfire.org Git - thirdparty/pdns.git/blobdiff - pdns/test-zoneparser_tng_cc.cc
rec: ensure correct service user on debian
[thirdparty/pdns.git] / pdns / test-zoneparser_tng_cc.cc
index 7c1a35519481a7811481e54cd599e11396412f7f..d923d52d1ea001cfcfb71d3cd38573bc34b6fbbb 100644 (file)
@@ -1,38 +1,51 @@
 #define BOOST_TEST_DYN_LINK
 #define BOOST_TEST_NO_MAIN
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 #include <boost/test/unit_test.hpp>
 #include <boost/assign/list_of.hpp>
-#include <boost/foreach.hpp>
+
 #include <boost/tuple/tuple.hpp>
-#include <boost/iostreams/stream.hpp>
 #include <boost/iostreams/device/file.hpp>
-#include <boost/lexical_cast.hpp>
 #include "dns.hh"
 #include "zoneparser-tng.hh"
+#include "dnsrecords.hh"
+#include "dnsname.hh"
 #include <fstream>
+#include <cstdlib>
 
 BOOST_AUTO_TEST_SUITE(test_zoneparser_tng_cc)
 
 BOOST_AUTO_TEST_CASE(test_tng_record_types) {
-  ZoneParserTNG zp("../regression-tests/zones/unit.test", "unit.test");
+  reportAllTypes();
+
+  std::ostringstream pathbuf;
+  const char* p = std::getenv("SRCDIR");
+  if(!p)
+    p = ".";
+  pathbuf << p << "/../regression-tests/zones/unit.test";
+  ZoneParserTNG zp(pathbuf.str(), DNSName("unit.test"));
   DNSResourceRecord rr;
 
-  boost::iostreams::stream<boost::iostreams::file_source> ifs("../regression-tests/zones/unit.test");
+  ifstream ifs(pathbuf.str());
 
   while(zp.get(rr)) {
     // make sure these concur.
     std::string host, type, data;
-    int ttl;
+    unsigned int ttl;
     std::getline(ifs, host, ' ');
     std::getline(ifs, type, ' ');
-    ttl = boost::lexical_cast<int>(type);
+    ttl = pdns_stou(type);
     std::getline(ifs, type, ' ');
     std::getline(ifs, type, ' ');
     std::getline(ifs, data, '\n');
     // see if these agree
-    BOOST_CHECK_EQUAL(rr.qname, host);
+    BOOST_CHECK_EQUAL(rr.qname.toString(), host);
     BOOST_CHECK_EQUAL(rr.ttl, ttl);
     BOOST_CHECK_EQUAL(rr.qtype.getName(), type);
+    if (rr.qtype == QType::SOA)
+      continue; // FIXME400 remove trailing dots from data
     if (*(rr.content.rbegin()) != '.' && *(data.rbegin()) == '.') 
       BOOST_CHECK_EQUAL(rr.content, std::string(data.begin(),data.end()-1));
     else