MCPcopy
hub / github.com/python-trio/trio / test_nonwindows_functionality

Function test_nonwindows_functionality

src/trio/_tests/test_fakenet.py:143–193  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

141 reason="functions not in socket on windows",
142)
143async def test_nonwindows_functionality() -> None:
144 # mypy doesn't support a good way of aborting typechecking on different platforms
145 if sys.platform != "win32": # pragma: no branch
146 fn()
147 s1 = trio.socket.socket(type=trio.socket.SOCK_DGRAM)
148 s2 = trio.socket.socket(type=trio.socket.SOCK_DGRAM)
149 await s2.bind(("127.0.0.1", 0))
150
151 # sendmsg
152 with pytest.raises(OSError, match=ENOTCONN_MSG) as exc:
153 await s2.sendmsg([b"mno"])
154 assert exc.value.errno == errno.ENOTCONN
155
156 assert await s1.sendmsg([b"jkl"], (), 0, s2.getsockname()) == 3
157 data, ancdata, msg_flags, addr = await s2.recvmsg(10)
158 assert data == b"jkl"
159 assert ancdata == []
160 assert msg_flags == 0
161 assert addr == s1.getsockname()
162
163 # TODO: recvmsg
164
165 # recvmsg_into
166 assert await s1.sendto(b"xyzw", s2.getsockname()) == 4
167 buf1 = bytearray(2)
168 buf2 = bytearray(3)
169 ret = await s2.recvmsg_into([buf1, buf2])
170 nbytes, ancdata, msg_flags, addr = ret
171 assert nbytes == 4
172 assert buf1 == b"xy"
173 assert buf2 == b"zw" + b"\x00"
174 assert ancdata == []
175 assert msg_flags == 0
176 assert addr == s1.getsockname()
177
178 # recvmsg_into with MSG_TRUNC set
179 assert await s1.sendto(b"xyzwv", s2.getsockname()) == 5
180 buf1 = bytearray(2)
181 ret = await s2.recvmsg_into([buf1])
182 nbytes, ancdata, msg_flags, addr = ret
183 assert nbytes == 2
184 assert buf1 == b"xy"
185 assert ancdata == []
186 assert msg_flags == socket.MSG_TRUNC
187 assert addr == s1.getsockname()
188
189 with pytest.raises(
190 AttributeError,
191 match=r"^'FakeSocket' object has no attribute 'share'$",
192 ):
193 await s1.share(0) # type: ignore[attr-defined]
194
195
196@pytest.mark.skipif(

Callers

nothing calls this directly

Calls 9

fnFunction · 0.70
socketMethod · 0.45
bindMethod · 0.45
sendmsgMethod · 0.45
getsocknameMethod · 0.45
recvmsgMethod · 0.45
sendtoMethod · 0.45
recvmsg_intoMethod · 0.45
shareMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…