add coverage · python-zeroconf/python-zeroconf@b33a88e
@@ -606,6 +606,51 @@ def test_multiple_addresses():
606606 ]
607607608608609+@unittest.skipIf(sys.version_info < (3, 9, 0), 'Requires newer python')
610+def test_scoped_addresses_from_cache():
611+type_ = "_http._tcp.local."
612+registration_name = f"scoped.{type_}"
613+zeroconf = r.Zeroconf(interfaces=['127.0.0.1'])
614+host = "scoped.local."
615+616+zeroconf.cache.async_add_records(
617+ [
618+r.DNSPointer(
619+type_,
620+const._TYPE_PTR,
621+const._CLASS_IN | const._CLASS_UNIQUE,
622+120,
623+registration_name,
624+ ),
625+r.DNSService(
626+registration_name,
627+const._TYPE_SRV,
628+const._CLASS_IN | const._CLASS_UNIQUE,
629+120,
630+0,
631+0,
632+80,
633+host,
634+ ),
635+r.DNSAddress(
636+host,
637+const._TYPE_AAAA,
638+const._CLASS_IN | const._CLASS_UNIQUE,
639+120,
640+socket.inet_pton(socket.AF_INET6, "fe80::52e:c2f2:bc5f:e9c6"),
641+scope_id=12,
642+ ),
643+ ]
644+ )
645+646+# New kwarg way
647+info = ServiceInfo(type_, registration_name)
648+info.load_from_cache(zeroconf)
649+assert info.parsed_scoped_addresses() == ["fe80::52e:c2f2:bc5f:e9c6%12"]
650+assert info.ip_addresses_by_version(r.IPVersion.V6Only) == [ip_address("fe80::52e:c2f2:bc5f:e9c6%12")]
651+zeroconf.close()
652+653+609654# This test uses asyncio because it needs to access the cache directly
610655# which is not threadsafe
611656@pytest.mark.asyncio