Show More
@@ -1,50 +1,50 b'' | |||
|
1 | 1 | import os |
|
2 | 2 | import importlib |
|
3 | 3 | |
|
4 | 4 | import pytest |
|
5 | 5 | |
|
6 | 6 | from IPython.terminal.pt_inputhooks import set_qt_api, get_inputhook_name_and_func |
|
7 | 7 | |
|
8 | 8 | |
|
9 | 9 | guis_avail = [] |
|
10 | 10 | |
|
11 | 11 | |
|
12 | 12 | def _get_qt_vers(): |
|
13 | 13 | """If any version of Qt is available, this will populate `guis_avail` with 'qt' and 'qtx'. Due |
|
14 | 14 | to the import mechanism, we can't import multiple versions of Qt in one session.""" |
|
15 | 15 | for gui in ["qt", "qt6", "qt5"]: |
|
16 | 16 | print(f"Trying {gui}") |
|
17 | 17 | try: |
|
18 | 18 | set_qt_api(gui) |
|
19 | 19 | importlib.import_module("IPython.terminal.pt_inputhooks.qt") |
|
20 | 20 | guis_avail.append(gui) |
|
21 | 21 | if "QT_API" in os.environ.keys(): |
|
22 | 22 | del os.environ["QT_API"] |
|
23 | 23 | except ImportError: |
|
24 | 24 | pass # that version of Qt isn't available. |
|
25 | 25 | except RuntimeError: |
|
26 | 26 | pass # the version of IPython doesn't know what to do with this Qt version. |
|
27 | 27 | |
|
28 | 28 | |
|
29 | 29 | _get_qt_vers() |
|
30 | 30 | |
|
31 | 31 | |
|
32 | 32 | @pytest.mark.skipif( |
|
33 | 33 | len(guis_avail) == 0, reason="No viable version of PyQt or PySide installed." |
|
34 | 34 | ) |
|
35 | 35 | def test_inputhook_qt(): |
|
36 | gui = guis_avail[0] | |
|
37 | ||
|
38 | # Choose a qt version and get the input hook function. This will import Qt... | |
|
39 | get_inputhook_name_and_func(gui) | |
|
40 | ||
|
41 | # ...and now we're stuck with this version of Qt for good; can't switch. | |
|
42 | for not_gui in ["qt6", "qt5"]: | |
|
43 | if not_gui not in guis_avail: | |
|
44 | break | |
|
45 | ||
|
46 | with pytest.raises(ImportError): | |
|
47 | get_inputhook_name_and_func(not_gui) | |
|
48 | ||
|
49 | # A gui of 'qt' means "best available", or in this case, the last one that was used. | |
|
50 | get_inputhook_name_and_func("qt") | |
|
36 | # Choose the "best" Qt version. | |
|
37 | gui_ret, _ = get_inputhook_name_and_func('qt') | |
|
38 | ||
|
39 | assert gui_ret != "qt" # you get back the specific version that was loaded. | |
|
40 | assert gui_ret in guis_avail | |
|
41 | ||
|
42 | if len(guis_avail) > 2: | |
|
43 | # ...and now we're stuck with this version of Qt for good; can't switch. | |
|
44 | for not_gui in ["qt6", "qt5"]: | |
|
45 | if not_gui != gui_ret: | |
|
46 | break | |
|
47 | # Try to import the other gui; it won't work. | |
|
48 | gui_ret2, _ = get_inputhook_name_and_func(not_gui) | |
|
49 | assert gui_ret2 == gui_ret | |
|
50 | assert gui_ret2 != not_gui |
General Comments 0
You need to be logged in to leave comments.
Login now