From: Peter van Dijk Date: Thu, 11 Apr 2019 15:40:20 +0000 (+0200) Subject: better assertEqual for dnspython X-Git-Tag: dnsdist-1.4.0-rc4~38^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b0d08f82c5f4c7cafb96f2144bc20d101ec98b6b;p=pdns better assertEqual for dnspython before: AssertionError: != after: AssertionError: != : --- first +++ second @@ -1,10 +1,10 @@ id 46818 -opcode 6 -rcode NOTAUTH -flags AD CD +opcode QUERY +rcode NOERROR +flags RD ;QUESTION xpf.tests.powerdns.com. IN A ;ANSWER ;AUTHORITY ;ADDITIONAL -. 0 IN TYPE65422 \# 14 04117f0000017f000001f8bc14dc +xpf.tests.powerdns.com. 60 IN TYPE65422 \# 14 04117f0000017f00000100000000 --- diff --git a/regression-tests.dnsdist/dnsdisttests.py b/regression-tests.dnsdist/dnsdisttests.py index f5e0b92ee..e5aeae8f7 100644 --- a/regression-tests.dnsdist/dnsdisttests.py +++ b/regression-tests.dnsdist/dnsdisttests.py @@ -440,6 +440,8 @@ 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 @@ -577,3 +579,26 @@ 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)