From 7461bbefbee32d77c470816cd020a082d07a13b4 Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Wed, 1 Jul 2020 07:43:13 -0700 Subject: [PATCH] increase resolver coverage --- dns/resolver.py | 4 +-- tests/test_resolver.py | 58 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/dns/resolver.py b/dns/resolver.py index c46647c6..f4a07b48 100644 --- a/dns/resolver.py +++ b/dns/resolver.py @@ -834,13 +834,13 @@ class Resolver: else: try: servers, rtype = winreg.QueryValueEx(key, 'DhcpNameServer') - except WindowsError: # pylint: disable=undefined-variable + except WindowsError: # pragma: no cover servers = None if servers: # pragma: no cover self._config_win32_nameservers(servers) try: dom, rtype = winreg.QueryValueEx(key, 'DhcpDomain') - if dom: + if dom: # pragma: no cover self._config_win32_domain(dom) except WindowsError: # pragma: no cover pass diff --git a/tests/test_resolver.py b/tests/test_resolver.py index 373ecb98..2a9c63d7 100644 --- a/tests/test_resolver.py +++ b/tests/test_resolver.py @@ -64,6 +64,34 @@ search search1 search2 options rotate timeout:1 edns0 ndots:2 """ +bad_timeout_1 = """ +nameserver 10.0.0.1 +nameserver 10.0.0.2 +options rotate timeout +""" + +bad_timeout_2 = """ +nameserver 10.0.0.1 +nameserver 10.0.0.2 +options rotate timeout:bogus +""" + +bad_ndots_1 = """ +nameserver 10.0.0.1 +nameserver 10.0.0.2 +options rotate ndots +""" + +bad_ndots_2 = """ +nameserver 10.0.0.1 +nameserver 10.0.0.2 +options rotate ndots:bogus +""" + +no_nameservers = """ +options rotate +""" + message_text = """id 1234 opcode QUERY rcode NOERROR @@ -139,6 +167,36 @@ class BaseResolverTests(unittest.TestCase): self.assertEqual(r.ndots, 2) self.assertEqual(r.edns, 0) + def testReadOptionsBadTimeouts(self): + f = StringIO(bad_timeout_1) + r = dns.resolver.Resolver(configure=False) + r.read_resolv_conf(f) + # timeout should still be default + self.assertEqual(r.timeout, 2.0) + f = StringIO(bad_timeout_2) + r = dns.resolver.Resolver(configure=False) + r.read_resolv_conf(f) + # timeout should still be default + self.assertEqual(r.timeout, 2.0) + + def testReadOptionsBadNdots(self): + f = StringIO(bad_ndots_1) + r = dns.resolver.Resolver(configure=False) + r.read_resolv_conf(f) + # ndots should still be default + self.assertEqual(r.ndots, None) + f = StringIO(bad_ndots_2) + r = dns.resolver.Resolver(configure=False) + r.read_resolv_conf(f) + # ndots should still be default + self.assertEqual(r.ndots, None) + + def testReadNoNameservers(self): + f = StringIO(no_nameservers) + r = dns.resolver.Resolver(configure=False) + with self.assertRaises(dns.resolver.NoResolverConfiguration): + r.read_resolv_conf(f) + def testCacheExpiration(self): message = dns.message.from_text(message_text) name = dns.name.from_text('example.') -- 2.47.3