summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Halley <halley@play-bow.org>2020-07-01 07:43:13 -0700
committerBob Halley <halley@play-bow.org>2020-07-01 07:43:13 -0700
commit7461bbefbee32d77c470816cd020a082d07a13b4 (patch)
tree3a03b60ee63f861ca968b95883000edefa115847
parentc9620a298f917f127d46dedeac4908ade66c2c19 (diff)
downloaddnspython-7461bbefbee32d77c470816cd020a082d07a13b4.tar.gz
increase resolver coverage
-rw-r--r--dns/resolver.py4
-rw-r--r--tests/test_resolver.py58
2 files changed, 60 insertions, 2 deletions
diff --git a/dns/resolver.py b/dns/resolver.py
index c46647c..f4a07b4 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 373ecb9..2a9c63d 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.')