1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
from __future__ import annotations
import gc
import pytest
from prompt_toolkit.shortcuts.prompt import PromptSession
def _count_prompt_session_instances() -> int:
# Run full GC collection first.
gc.collect()
# Count number of remaining referenced `PromptSession` instances.
objects = gc.get_objects()
return len([obj for obj in objects if isinstance(obj, PromptSession)])
# Fails in GitHub CI, probably due to GC differences.
@pytest.mark.xfail(reason="Memory leak testing fails in GitHub CI.")
def test_prompt_session_memory_leak() -> None:
before_count = _count_prompt_session_instances()
# Somehow in CI/CD, the before_count is > 0
assert before_count == 0
p = PromptSession()
after_count = _count_prompt_session_instances()
assert after_count == before_count + 1
del p
after_delete_count = _count_prompt_session_instances()
assert after_delete_count == before_count
|