##// END OF EJS Templates
PR: Add needs_local_scope to debug magic (#13960)...
PR: Add needs_local_scope to debug magic (#13960) Fixes https://github.com/ipython/ipython/issues/13959

File last commit:

r28021:b332fd1a
r28162:83f90a3f merge
Show More
test_pt_inputhooks.py
50 lines | 1.5 KiB | text/x-python | PythonLexer
/ IPython / terminal / tests / test_pt_inputhooks.py
Emilio Graff
TST: smoke test for `get_inputhook_name_and_func`
r27999 import os
import importlib
import pytest
from IPython.terminal.pt_inputhooks import set_qt_api, get_inputhook_name_and_func
guis_avail = []
def _get_qt_vers():
"""If any version of Qt is available, this will populate `guis_avail` with 'qt' and 'qtx'. Due
to the import mechanism, we can't import multiple versions of Qt in one session."""
Emilio Graff
Remove direct support for Qt4...
r28021 for gui in ["qt", "qt6", "qt5"]:
Emilio Graff
Formatting
r28001 print(f"Trying {gui}")
Emilio Graff
TST: smoke test for `get_inputhook_name_and_func`
r27999 try:
set_qt_api(gui)
importlib.import_module("IPython.terminal.pt_inputhooks.qt")
guis_avail.append(gui)
Emilio Graff
Formatting
r28001 if "QT_API" in os.environ.keys():
del os.environ["QT_API"]
Emilio Graff
TST: smoke test for `get_inputhook_name_and_func`
r27999 except ImportError:
pass # that version of Qt isn't available.
except RuntimeError:
pass # the version of IPython doesn't know what to do with this Qt version.
_get_qt_vers()
Emilio Graff
Formatting
r28001 @pytest.mark.skipif(
len(guis_avail) == 0, reason="No viable version of PyQt or PySide installed."
)
Emilio Graff
TST: smoke test for `get_inputhook_name_and_func`
r27999 def test_inputhook_qt():
gui = guis_avail[0]
# Choose a qt version and get the input hook function. This will import Qt...
get_inputhook_name_and_func(gui)
# ...and now we're stuck with this version of Qt for good; can't switch.
Emilio Graff
Remove direct support for Qt4...
r28021 for not_gui in ["qt6", "qt5"]:
Emilio Graff
TST: smoke test for `get_inputhook_name_and_func`
r27999 if not_gui not in guis_avail:
break
with pytest.raises(ImportError):
get_inputhook_name_and_func(not_gui)
# A gui of 'qt' means "best available", or in this case, the last one that was used.
Emilio Graff
Formatting
r28001 get_inputhook_name_and_func("qt")