gertvdijk/purepythonmilter

Pytest warning `RuntimeError: Event loop is closed`

gertvdijk opened this issue · 0 comments

Seen in Python 3.12 as warning, and printed on stderr on 3.11.5.

tests/integration/examples/test_append_header_ip.py::test_append_header_ip[start_testserver0]
  /home/gert/repos/purepythonmilter/.direnv/python-3.12/lib/python3.12/site-packages/_pytest/unraisableexception.py:78: PytestUnraisableExceptionWarning: Exception ignored in: <function StreamWriter.__del__ at 0x7fc2455c71a0>
  
  Traceback (most recent call last):
    File "/home/gert/.pyenv/versions/3.12.0/lib/python3.12/asyncio/streams.py", line 397, in __del__
      self.close()
    File "/home/gert/.pyenv/versions/3.12.0/lib/python3.12/asyncio/streams.py", line 343, in close
      return self._transport.close()
             ^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/gert/.pyenv/versions/3.12.0/lib/python3.12/asyncio/selector_events.py", line 1206, in close
      super().close()
    File "/home/gert/.pyenv/versions/3.12.0/lib/python3.12/asyncio/selector_events.py", line 871, in close
      self._loop.call_soon(self._call_connection_lost, None)
    File "/home/gert/.pyenv/versions/3.12.0/lib/python3.12/asyncio/base_events.py", line 772, in call_soon
      self._check_closed()
    File "/home/gert/.pyenv/versions/3.12.0/lib/python3.12/asyncio/base_events.py", line 519, in _check_closed
      raise RuntimeError('Event loop is closed')
  RuntimeError: Event loop is closed
  
    warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
$ pytest -v -k test_server_protocol_violation_close_connection
[...]
tests/integration/test_server.py::test_server_protocol_violation_close_connection[start_testserver0] PASSEDException ignored in: <function StreamWriter.__del__ at 0x7f05a1d22200>
Traceback (most recent call last):
  File "/usr/lib/python3.11/asyncio/streams.py", line 396, in __del__
    self.close()
  File "/usr/lib/python3.11/asyncio/streams.py", line 344, in close
    return self._transport.close()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/asyncio/selector_events.py", line 860, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "/usr/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
    self._check_closed()
  File "/usr/lib/python3.11/asyncio/base_events.py", line 519, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
[...]

Unsure whether this is a test-only issue or an actual bug in real use cases too.