Skip to content

Commit eb613ec

Browse files
committed
review
- simplify test (remove threads)
1 parent e313258 commit eb613ec

1 file changed

Lines changed: 7 additions & 25 deletions

File tree

‎test/test_util.py‎

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -90,38 +90,20 @@ def read(self, size):
9090
@pytest.mark.skipif(sys.platform == "win32", reason="requires POSIX unbuffered pipe reads")
9191
def test_stream_copy_keeps_reading_an_unbuffered_pipe():
9292
read_fd, write_fd = os.pipe()
93-
first_copied = threading.Event()
94-
errors = []
9593

9694
class Destination(BytesIO):
9795
def write(self, data):
9896
result = super().write(data)
99-
if data:
100-
first_copied.set()
97+
if data and not writer.closed:
98+
# Make the second chunk available only after the first short read is copied.
99+
writer.write(b"second")
100+
writer.close()
101101
return result
102102

103-
def produce():
104-
try:
105-
os.write(write_fd, b"first-")
106-
if not first_copied.wait(5):
107-
raise RuntimeError("first pipe chunk was not copied")
108-
os.write(write_fd, b"second")
109-
except Exception as error:
110-
errors.append(error)
111-
finally:
112-
os.close(write_fd)
113-
114103
destination = Destination()
115-
with os.fdopen(read_fd, "rb", buffering=0) as source:
116-
thread = threading.Thread(target=produce)
117-
thread.start()
118-
try:
119-
copied = stream_copy(source, destination, chunk_size=1024)
120-
finally:
121-
first_copied.set()
122-
thread.join(5)
123-
assert not thread.is_alive()
124-
assert not errors
104+
with os.fdopen(read_fd, "rb", buffering=0) as source, os.fdopen(write_fd, "wb", buffering=0) as writer:
105+
writer.write(b"first-")
106+
copied = stream_copy(source, destination, chunk_size=1024)
125107
assert copied == len(b"first-second")
126108
assert destination.getvalue() == b"first-second"
127109

0 commit comments

Comments
 (0)