]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
improve resolver coverage
authorBob Halley <halley@dnspython.org>
Sat, 20 Jun 2020 14:38:16 +0000 (07:38 -0700)
committerBob Halley <halley@dnspython.org>
Sat, 20 Jun 2020 14:38:16 +0000 (07:38 -0700)
dns/resolver.py
tests/test_resolver.py

index 3cb51ff242cb052419f29b62cc8523ebd4d9059c..6c6f5021c6b31578a86ce1b1fd53b0e7270a87d0 100644 (file)
@@ -25,8 +25,8 @@ import random
 import warnings
 try:
     import threading as _threading
-except ImportError:
-    import dummy_threading as _threading    # type: ignore  # pragma: no cover
+except ImportError:  # pragma: no cover
+    import dummy_threading as _threading    # type: ignore
 
 import dns.exception
 import dns.flags
@@ -690,7 +690,7 @@ class Resolver:
         self.reset()
         if configure:
             if sys.platform == 'win32':
-                self.read_registry()
+                self.read_registry()  # pragma: no cover
             elif filename:
                 self.read_resolv_conf(filename)
 
@@ -741,7 +741,7 @@ class Resolver:
             if isinstance(f, str):
                 try:
                     f = stack.enter_context(open(f))
-                except IOError:
+                except OSError:
                     # /etc/resolv.conf doesn't exist, can't be read, etc.
                     raise NoResolverConfiguration
 
@@ -1096,7 +1096,7 @@ class Resolver:
 
     def query(self, qname, rdtype=dns.rdatatype.A, rdclass=dns.rdataclass.IN,
               tcp=False, source=None, raise_on_no_answer=True, source_port=0,
-              lifetime=None):
+              lifetime=None):  # pragma: no cover
         """Query nameservers to find the answer to the question.
 
         This method calls resolve() with ``search=True``, and is
@@ -1243,7 +1243,7 @@ def resolve(qname, rdtype=dns.rdatatype.A, rdclass=dns.rdataclass.IN,
 
 def query(qname, rdtype=dns.rdatatype.A, rdclass=dns.rdataclass.IN,
           tcp=False, source=None, raise_on_no_answer=True,
-          source_port=0, lifetime=None):
+          source_port=0, lifetime=None):  # pragma: no cover
     """Query nameservers to find the answer to the question.
 
     This method calls resolve() with ``search=True``, and is
index e029061a3b9a56fd834cba2f77aefdcb3fa5f92d..ce7ffbcc00370600463dcd0573fec4753e25fb95 100644 (file)
@@ -572,6 +572,25 @@ class NXDOMAINExceptionTestCase(unittest.TestCase):
         self.assertEqual(e2.canonical_name, dns.name.from_text(cname2))
 
 
+class ResolverMiscTestCase(unittest.TestCase):
+    if sys.platform != 'win32':
+        def test_read_nonexistent_config(self):
+            res = dns.resolver.Resolver(configure=False)
+            pathname = '/etc/nonexistent-resolv.conf'
+            self.assertRaises(dns.resolver.NoResolverConfiguration,
+                              lambda: res.read_resolv_conf(pathname))
+
+    def test_compute_timeout(self):
+        res = dns.resolver.Resolver(configure=False)
+        now = time.time()
+        self.assertRaises(dns.resolver.Timeout,
+                          lambda: res._compute_timeout(now + 10000))
+        self.assertRaises(dns.resolver.Timeout,
+                          lambda: res._compute_timeout(0))
+        # not raising is the test
+        res._compute_timeout(now + 0.5)
+
+
 class ResolverNameserverValidTypeTestCase(unittest.TestCase):
     def test_set_nameservers_to_list(self):
         resolver = dns.resolver.Resolver()