def test_ignore_OSErrors(self):
"""
If os.close raises an OSError, it is ignored and we continue to close
the rest of the FDs.
"""
closed_fds = []
def remember_and_throw(fd):
closed_fds.append(fd)
raise OSError("Bad FD!")
with patch("os.close", side_effect=remember_and_throw) as close_mock:
with self.mock_getrlimit(10) as getrlimit_mock:
clean_fds()
getrlimit_mock.assert_called_once_with(resource.RLIMIT_NOFILE)
expected_fds = list(range(3, 10))
calls = [call(i) for i in expected_fds]
close_mock.assert_has_calls(calls, any_order=True)
self.assertEqual(closed_fds, expected_fds)
评论列表
文章目录