##// END OF EJS Templates
Fix memory leak in Qt event loop integration (#14240) (#14251)...
Fix memory leak in Qt event loop integration (#14240) (#14251) The QEventLoop object, `event_loop`, created in `IPython/terminal/pt_intputhooks/qt.py` L58 is not deleted when exiting the scope as passing `app` to the constructor parents the object to `app`. This creates a memory leak as QEventLoop objects are being accumulated. The issue was originally reported by @pag who also suggested the fix. `pytest IPython/terminal/tests/` runs through without errors. I have tested the changes and see no more accumulation of `QEventLoop` objects. This fixes #14240

File last commit:

r27747:f5d4e0ac
r28517:c0a699d1 merge
Show More
test_autocall.py
67 lines | 1.4 KiB | text/x-python | PythonLexer
"""These kinds of tests are less than ideal, but at least they run.
This was an old test that was being run interactively in the top-level tests/
directory, which we are removing. For now putting this here ensures at least
we do run the test, though ultimately this functionality should all be tested
with better-isolated tests that don't rely on the global instance in iptest.
"""
from IPython.core.splitinput import LineInfo
from IPython.core.prefilter import AutocallChecker
def doctest_autocall():
"""
In [1]: def f1(a,b,c):
...: return a+b+c
...:
In [2]: def f2(a):
...: return a + a
...:
In [3]: def r(x):
...: return True
...:
In [4]: ;f2 a b c
Out[4]: 'a b ca b c'
In [5]: assert _ == "a b ca b c"
In [6]: ,f1 a b c
Out[6]: 'abc'
In [7]: assert _ == 'abc'
In [8]: print(_)
abc
In [9]: /f1 1,2,3
Out[9]: 6
In [10]: assert _ == 6
In [11]: /f2 4
Out[11]: 8
In [12]: assert _ == 8
In [12]: del f1, f2
In [13]: ,r a
Out[13]: True
In [14]: assert _ == True
In [15]: r'a'
Out[15]: 'a'
In [16]: assert _ == 'a'
"""
def test_autocall_should_ignore_raw_strings():
line_info = LineInfo("r'a'")
pm = ip.prefilter_manager
ac = AutocallChecker(shell=pm.shell, prefilter_manager=pm, config=pm.config)
assert ac.check(line_info) is None