pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/RustPython/RustPython/commit/f49af3fd48365cd440e16e7dc98999388c835d7b

ss" /> Update `_test_eintr.py` from 3.14.3 · RustPython/RustPython@f49af3f · GitHub
Skip to content

Commit f49af3f

Browse files
ShaharNavehyouknowone
authored andcommitted
Update _test_eintr.py from 3.14.3
1 parent 9ddd07a commit f49af3f

File tree

1 file changed

+54
-44
lines changed

1 file changed

+54
-44
lines changed

Lib/test/_test_eintr.py

Lines changed: 54 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class OSEINTRTest(EINTRBaseTest):
9191
""" EINTR tests for the os module. """
9292

9393
def new_sleep_process(self):
94-
code = 'import time; time.sleep(%r)' % self.sleep_time
94+
code = f'import time; time.sleep({self.sleep_time!r})'
9595
return self.subprocess(code)
9696

9797
def _test_wait_multiple(self, wait_func):
@@ -123,36 +123,47 @@ def test_waitpid(self):
123123
def test_wait4(self):
124124
self._test_wait_single(lambda pid: os.wait4(pid, 0))
125125

126-
def test_read(self):
126+
def _interrupted_reads(self):
127+
"""Make a fd which will force block on read of expected bytes."""
127128
rd, wr = os.pipe()
128129
self.addCleanup(os.close, rd)
129130
# wr closed explicitly by parent
130131

131132
# the payload below are smaller than PIPE_BUF, hence the writes will be
132133
# atomic
133-
datas = [b"hello", b"world", b"spam"]
134+
data = [b"hello", b"world", b"spam"]
134135

135136
code = '\n'.join((
136137
'import os, sys, time',
137138
'',
138139
'wr = int(sys.argv[1])',
139-
'datas = %r' % datas,
140-
'sleep_time = %r' % self.sleep_time,
140+
f'data = {data!r}',
141+
f'sleep_time = {self.sleep_time!r}',
141142
'',
142-
'for data in datas:',
143+
'for item in data:',
143144
' # let the parent block on read()',
144145
' time.sleep(sleep_time)',
145-
' os.write(wr, data)',
146+
' os.write(wr, item)',
146147
))
147148

148149
proc = self.subprocess(code, str(wr), pass_fds=[wr])
149150
with kill_on_error(proc):
150151
os.close(wr)
151-
for data in datas:
152-
self.assertEqual(data, os.read(rd, len(data)))
152+
for datum in data:
153+
yield rd, datum
153154
self.assertEqual(proc.wait(), 0)
154155

155-
@unittest.expectedFailure # TODO: RUSTPYTHON InterruptedError: [Errno 4] Interrupted system call
156+
def test_read(self):
157+
for fd, expected in self._interrupted_reads():
158+
self.assertEqual(expected, os.read(fd, len(expected)))
159+
160+
def test_readinto(self):
161+
for fd, expected in self._interrupted_reads():
162+
buffer = bytearray(len(expected))
163+
self.assertEqual(os.readinto(fd, buffer), len(expected))
164+
self.assertEqual(buffer, expected)
165+
166+
@unittest.expectedFailure # TODO: RUSTPYTHON; InterruptedError: [Errno 4] Interrupted system call
156167
def test_write(self):
157168
rd, wr = os.pipe()
158169
self.addCleanup(os.close, wr)
@@ -165,8 +176,8 @@ def test_write(self):
165176
'import io, os, sys, time',
166177
'',
167178
'rd = int(sys.argv[1])',
168-
'sleep_time = %r' % self.sleep_time,
169-
'data = b"x" * %s' % support.PIPE_MAX_SIZE,
179+
f'sleep_time = {self.sleep_time!r}',
180+
f'data = b"x" * {support.PIPE_MAX_SIZE}',
170181
'data_len = len(data)',
171182
'',
172183
'# let the parent block on write()',
@@ -179,8 +190,8 @@ def test_write(self):
179190
'',
180191
'value = read_data.getvalue()',
181192
'if value != data:',
182-
' raise Exception("read error: %s vs %s bytes"',
183-
' % (len(value), data_len))',
193+
' raise Exception(f"read error: {len(value)}'
194+
' vs {data_len} bytes")',
184195
))
185196

186197
proc = self.subprocess(code, str(rd), pass_fds=[rd])
@@ -203,33 +214,33 @@ def _test_recv(self, recv_func):
203214
# wr closed explicitly by parent
204215

205216
# single-byte payload guard us against partial recv
206-
datas = [b"x", b"y", b"z"]
217+
data = [b"x", b"y", b"z"]
207218

208219
code = '\n'.join((
209220
'import os, socket, sys, time',
210221
'',
211222
'fd = int(sys.argv[1])',
212-
'family = %s' % int(wr.family),
213-
'sock_type = %s' % int(wr.type),
214-
'datas = %r' % datas,
215-
'sleep_time = %r' % self.sleep_time,
223+
f'family = {int(wr.family)}',
224+
f'sock_type = {int(wr.type)}',
225+
f'data = {data!r}',
226+
f'sleep_time = {self.sleep_time!r}',
216227
'',
217228
'wr = socket.fromfd(fd, family, sock_type)',
218229
'os.close(fd)',
219230
'',
220231
'with wr:',
221-
' for data in datas:',
232+
' for item in data:',
222233
' # let the parent block on recv()',
223234
' time.sleep(sleep_time)',
224-
' wr.sendall(data)',
235+
' wr.sendall(item)',
225236
))
226237

227238
fd = wr.fileno()
228239
proc = self.subprocess(code, str(fd), pass_fds=[fd])
229240
with kill_on_error(proc):
230241
wr.close()
231-
for data in datas:
232-
self.assertEqual(data, recv_func(rd, len(data)))
242+
for item in data:
243+
self.assertEqual(item, recv_func(rd, len(item)))
233244
self.assertEqual(proc.wait(), 0)
234245

235246
def test_recv(self):
@@ -251,10 +262,10 @@ def _test_send(self, send_func):
251262
'import os, socket, sys, time',
252263
'',
253264
'fd = int(sys.argv[1])',
254-
'family = %s' % int(rd.family),
255-
'sock_type = %s' % int(rd.type),
256-
'sleep_time = %r' % self.sleep_time,
257-
'data = b"xyz" * %s' % (support.SOCK_MAX_SIZE // 3),
265+
f'family = {int(rd.family)}',
266+
f'sock_type = {int(rd.type)}',
267+
f'sleep_time = {self.sleep_time!r}',
268+
f'data = b"xyz" * {support.SOCK_MAX_SIZE // 3}',
258269
'data_len = len(data)',
259270
'',
260271
'rd = socket.fromfd(fd, family, sock_type)',
@@ -270,8 +281,8 @@ def _test_send(self, send_func):
270281
' n += rd.recv_into(memoryview(received_data)[n:])',
271282
'',
272283
'if received_data != data:',
273-
' raise Exception("recv error: %s vs %s bytes"',
274-
' % (len(received_data), data_len))',
284+
' raise Exception(f"recv error: {len(received_data)}'
285+
' vs {data_len} bytes")',
275286
))
276287

277288
fd = rd.fileno()
@@ -303,9 +314,9 @@ def test_accept(self):
303314
code = '\n'.join((
304315
'import socket, time',
305316
'',
306-
'host = %r' % socket_helper.HOST,
307-
'port = %s' % port,
308-
'sleep_time = %r' % self.sleep_time,
317+
f'host = {socket_helper.HOST!r}',
318+
f'port = {port}',
319+
f'sleep_time = {self.sleep_time!r}',
309320
'',
310321
'# let parent block on accept()',
311322
'time.sleep(sleep_time)',
@@ -333,15 +344,15 @@ def _test_open(self, do_open_close_reader, do_open_close_writer):
333344
os_helper.unlink(filename)
334345
try:
335346
os.mkfifo(filename)
336-
except PermissionError as e:
337-
self.skipTest('os.mkfifo(): %s' % e)
347+
except PermissionError as exc:
348+
self.skipTest(f'os.mkfifo(): {exc!r}')
338349
self.addCleanup(os_helper.unlink, filename)
339350

340351
code = '\n'.join((
341352
'import os, time',
342353
'',
343-
'path = %a' % filename,
344-
'sleep_time = %r' % self.sleep_time,
354+
f'path = {filename!a}',
355+
f'sleep_time = {self.sleep_time!r}',
345356
'',
346357
'# let the parent block',
347358
'time.sleep(sleep_time)',
@@ -400,21 +411,20 @@ class SignalEINTRTest(EINTRBaseTest):
400411

401412
def check_sigwait(self, wait_func):
402413
signum = signal.SIGUSR1
403-
pid = os.getpid()
404414

405415
old_handler = signal.signal(signum, lambda *args: None)
406416
self.addCleanup(signal.signal, signum, old_handler)
407417

408418
code = '\n'.join((
409419
'import os, time',
410-
'pid = %s' % os.getpid(),
411-
'signum = %s' % int(signum),
412-
'sleep_time = %r' % self.sleep_time,
420+
f'pid = {os.getpid()}',
421+
f'signum = {int(signum)}',
422+
f'sleep_time = {self.sleep_time!r}',
413423
'time.sleep(sleep_time)',
414424
'os.kill(pid, signum)',
415425
))
416426

417-
old_mask = signal.pthread_sigmask(signal.SIG_BLOCK, [signum])
427+
signal.pthread_sigmask(signal.SIG_BLOCK, [signum])
418428
self.addCleanup(signal.pthread_sigmask, signal.SIG_UNBLOCK, [signum])
419429

420430
proc = self.subprocess(code)
@@ -452,7 +462,7 @@ def test_select(self):
452462
self.stop_alarm()
453463
self.check_elapsed_time(dt)
454464

455-
@unittest.skip('TODO: RUSTPYTHON timed out at the 10 minute mark')
465+
@unittest.skip("TODO: RUSTPYTHON; timed out at the 10 minute mark")
456466
@unittest.skipIf(sys.platform == "darwin",
457467
"poll may fail on macOS; see issue #28087")
458468
@unittest.skipUnless(hasattr(select, 'poll'), 'need select.poll')
@@ -534,14 +544,14 @@ def _lock(self, lock_func, lock_name):
534544
self.check_elapsed_time(dt)
535545
proc.wait()
536546

537-
@unittest.expectedFailure # TODO: RUSTPYTHON InterruptedError: [Errno 4] Interrupted system call
538547
# Issue 35633: See https://bugs.python.org/issue35633#msg333662
539548
# skip test rather than accept PermissionError from all platforms
549+
@unittest.expectedFailure # TODO: RUSTPYTHON; InterruptedError: [Errno 4] Interrupted system call
540550
@unittest.skipIf(platform.system() == "AIX", "AIX returns PermissionError")
541551
def test_lockf(self):
542552
self._lock(fcntl.lockf, "lockf")
543553

544-
@unittest.expectedFailure # TODO: RUSTPYTHON InterruptedError: [Errno 4] Interrupted system call
554+
@unittest.expectedFailure # TODO: RUSTPYTHON; InterruptedError: [Errno 4] Interrupted system call
545555
def test_flock(self):
546556
self._lock(fcntl.flock, "flock")
547557

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy