]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
increase resolver coverage
authorBob Halley <halley@play-bow.org>
Wed, 1 Jul 2020 14:43:13 +0000 (07:43 -0700)
committerBob Halley <halley@play-bow.org>
Wed, 1 Jul 2020 14:43:13 +0000 (07:43 -0700)
dns/resolver.py
tests/test_resolver.py

index c46647c697d8298ba2820373e804e0eb63b4d9ad..f4a07b48e2d13c38b5378abeed41d075e803dcb9 100644 (file)
@@ -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
index 373ecb989252835524ecee8a4e15ad8c2054f9c4..2a9c63d7acdb5384ea8c6731471019a4748eff29 100644 (file)
@@ -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.')