Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion py/_process/forkedfunc.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def _removetemp(self):
self.tempdir.remove()

def __del__(self):
if self.pid is not None: # only clean up in main process
if getattr(self, "pid", None) is not None: # only clean up in main process
self._removetemp()


Expand Down
10 changes: 10 additions & 0 deletions testing/process/test_forkedfunc.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ def test_tempdir_gets_gc_collected(monkeypatch):
assert ff.tempdir.check()
ff.__del__()
assert not ff.tempdir.check()

def test_no_second_exception_if_fork_fails(monkeypatch):
def raise_oserror():
# BlockingIOError on py3k
raise OSError("Resource temporarily unavailable")
monkeypatch.setattr(os, "fork", raise_oserror)
with pytest.raises(OSError, match="Resource temporarily unavailable"):
py.process.ForkedFunc(boxf1)
# The second exception would be raised while leaving the with block
# Not marking it should be equivalent to assert_does_not_raise

def test_basic_forkedfunc():
result = py.process.ForkedFunc(boxf1).waitfinish()
Expand Down