Skip to content

Commit 4e4cf47

Browse files
committed
test: cover partial branches for multicast_addresses validation and autodetect
1 parent f24fdaf commit 4e4cf47

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

tests/utils/test_net.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,3 +576,39 @@ def test_autodetect_ip_version_includes_multicast_addresses() -> None:
576576
netutils.autodetect_ip_version(["127.0.0.1"], multicast_addresses=["2001:db8::"]) is r.IPVersion.All
577577
)
578578
assert netutils.autodetect_ip_version([], multicast_addresses=["2001:db8::"]) is r.IPVersion.V6Only
579+
580+
581+
def test_autodetect_ip_version_non_list_interfaces_with_multicast_addresses() -> None:
582+
"""autodetect_ip_version handles non-list interfaces (InterfaceChoice) with multicast_addresses."""
583+
assert (
584+
netutils.autodetect_ip_version(r.InterfaceChoice.Default, multicast_addresses=["2001:db8::"])
585+
is r.IPVersion.V6Only
586+
)
587+
assert (
588+
netutils.autodetect_ip_version(r.InterfaceChoice.Default, multicast_addresses=["192.168.1.5"])
589+
is r.IPVersion.V4Only
590+
)
591+
592+
593+
def test_create_sockets_multicast_addresses_ip_version_all() -> None:
594+
"""multicast_addresses works with ip_version=All (no V4Only/V6Only validation triggered)."""
595+
listen_mock = Mock(spec=socket.socket)
596+
respond_mock = Mock(spec=socket.socket)
597+
598+
def _new_socket(bind_addr, **kwargs):
599+
return listen_mock if bind_addr == ("",) else respond_mock
600+
601+
with (
602+
patch("zeroconf._utils.net.new_socket", side_effect=_new_socket),
603+
patch("zeroconf._utils.net.add_multicast_member", return_value=True) as mock_add,
604+
patch("zeroconf._utils.net.set_respond_socket_multicast_options"),
605+
patch("zeroconf._utils.net.socket.socket.setsockopt"),
606+
):
607+
r.create_sockets(
608+
interfaces=["127.0.0.1"],
609+
multicast_addresses=["192.168.1.5"],
610+
ip_version=r.IPVersion.All,
611+
)
612+
613+
joined = [c.args[1] for c in mock_add.call_args_list if c.args[0] is listen_mock]
614+
assert "192.168.1.5" in joined

0 commit comments

Comments
 (0)