From: Bob Halley Date: Sat, 20 Jun 2020 14:38:16 +0000 (-0700) Subject: improve resolver coverage X-Git-Tag: v2.0.0rc1~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dcb8fddd11c1df31349059d7478c0074426d0921;p=thirdparty%2Fdnspython.git improve resolver coverage --- diff --git a/dns/resolver.py b/dns/resolver.py index 3cb51ff2..6c6f5021 100644 --- a/dns/resolver.py +++ b/dns/resolver.py @@ -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 diff --git a/tests/test_resolver.py b/tests/test_resolver.py index e029061a..ce7ffbcc 100644 --- a/tests/test_resolver.py +++ b/tests/test_resolver.py @@ -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()