From: Peter van Dijk Date: Thu, 3 Oct 2019 13:18:31 +0000 (+0200) Subject: move assert helper out of dnsdist tests X-Git-Tag: dnsdist-1.4.0-rc4~38^2~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6bd430bf549d4c0588e00c80fb71a76b524ea84c;p=pdns move assert helper out of dnsdist tests --- diff --git a/contrib/assert-equal-DNSMessage/eqdnsmessage.py b/contrib/assert-equal-DNSMessage/eqdnsmessage.py new file mode 100644 index 000000000..99a6784c9 --- /dev/null +++ b/contrib/assert-equal-DNSMessage/eqdnsmessage.py @@ -0,0 +1,30 @@ +import difflib +import dns +import unittest + +class AssertEqualDNSMessageMixin(unittest.TestCase): + def assertEqualDNSMessage(self, first, second, msg=None): + if not first == second: + a = str(first).split('\n') + b = str(second).split('\n') + + diff = '\n'.join( + difflib.unified_diff( + a, + b, + fromfile='first', + tofile='second', + n=max(len(a), len(b)), + lineterm="" + ) + ) + + standardMsg = "%s != %s:\n%s" % (repr(first), repr(second), diff) + msg = self._formatMessage(msg, standardMsg) + + raise self.failureException(msg) + + def setUp(self): + self.addTypeEqualityFunc(dns.message.Message, self.assertEqualDNSMessage) + + super(AssertEqualDNSMessageMixin, self).setUp() \ No newline at end of file diff --git a/regression-tests.dnsdist/dnsdisttests.py b/regression-tests.dnsdist/dnsdisttests.py index e5aeae8f7..32020b48a 100644 --- a/regression-tests.dnsdist/dnsdisttests.py +++ b/regression-tests.dnsdist/dnsdisttests.py @@ -16,6 +16,8 @@ import dns.message import libnacl import libnacl.utils +from eqdnsmessage import AssertEqualDNSMessageMixin + # Python2/3 compatibility hacks try: from queue import Queue @@ -28,7 +30,7 @@ except NameError: pass -class DNSDistTest(unittest.TestCase): +class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): """ Set up a dnsdist instance and responder threads. Queries sent to dnsdist are relayed to the responder threads, @@ -440,8 +442,6 @@ class DNSDistTest(unittest.TestCase): def setUp(self): # This function is called before every tests - self.addTypeEqualityFunc(dns.message.Message, self.assertEqualDNSMessage) - # Clear the responses counters for key in self._responsesCounter: self._responsesCounter[key] = 0 @@ -456,6 +456,8 @@ class DNSDistTest(unittest.TestCase): while not self._fromResponderQueue.empty(): self._fromResponderQueue.get(False) + super(DNSDistTest, self).setUp() + @classmethod def clearToResponderQueue(cls): while not cls._toResponderQueue.empty(): @@ -580,25 +582,3 @@ class DNSDistTest(unittest.TestCase): def checkResponseNoEDNS(self, expected, received): self.checkMessageNoEDNS(expected, received) - def assertEqualDNSMessage(self, first, second, msg=None): - if not first == second: - a = str(first).split('\n') - b = str(second).split('\n') - - import difflib - - diff = '\n'.join( - difflib.unified_diff( - a, - b, - fromfile='first', - tofile='second', - n=max(len(a), len(b)), - lineterm="" - ) - ) - - standardMsg = "%s != %s:\n%s" % (repr(first), repr(second), diff) - msg = self._formatMessage(msg, standardMsg) - - raise self.failureException(msg) diff --git a/regression-tests.dnsdist/eqdnsmessage.py b/regression-tests.dnsdist/eqdnsmessage.py new file mode 120000 index 000000000..d9a56a87a --- /dev/null +++ b/regression-tests.dnsdist/eqdnsmessage.py @@ -0,0 +1 @@ +../contrib/assert-equal-DNSMessage/eqdnsmessage.py \ No newline at end of file