]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Do no raise an assertion getting a nonexistent rdataset without a txn in a versioned... 2.2
authorBob Halley <halley@play-bow.org>
Sat, 12 Mar 2022 22:45:40 +0000 (14:45 -0800)
committerBob Halley <halley@play-bow.org>
Sat, 12 Mar 2022 22:45:40 +0000 (14:45 -0800)
dns/versioned.py
tests/test_zone.py

index 8b6c275fd2398875f2fbd03bfd16aa39ba737bff..9e26759507dbbef58c7d56369678f9976ca4444b 100644 (file)
@@ -265,7 +265,10 @@ class Zone(dns.zone.Zone):
         if create:
             raise UseTransaction
         rdataset = super().get_rdataset(name, rdtype, covers)
-        return dns.rdataset.ImmutableRdataset(rdataset)
+        if rdataset is not None:
+            return dns.rdataset.ImmutableRdataset(rdataset)
+        else:
+            return None
 
     def delete_rdataset(self, name, rdtype, covers=dns.rdatatype.NONE):
         raise UseTransaction
index 45fa27239740ad45aaaa5f5863d293d36ab0d0d5..9059388ebd34f828ed2443203db7e2892f28a87c 100644 (file)
@@ -1076,6 +1076,18 @@ class VersionedZoneTestCase(unittest.TestCase):
                                             dns.rdatatype.RRSIG,
                                             dns.rdatatype.NSEC))
 
+    def testGetRdataset1(self):
+        z = dns.zone.from_text(example_text, 'example.', relativize=True,
+                               zone_factory=dns.versioned.Zone)
+        rds = z.get_rdataset('@', 'soa')
+        exrds = dns.rdataset.from_text('IN', 'SOA', 300, 'foo bar 1 2 3 4 5')
+        self.assertEqual(rds, exrds)
+
+    def testGetRdataset2(self):
+        z = dns.zone.from_text(example_text, 'example.', relativize=True,
+                               zone_factory=dns.versioned.Zone)
+        rds = z.get_rdataset('@', 'loc')
+        self.assertTrue(rds is None)
 
 if __name__ == '__main__':
     unittest.main()