Completed
Branch master (6f2cba)
by Gonzalo
01:09
created

test_qt_api()   D

Complexity

Conditions 8

Size

Total Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 0 Features 1
Metric Value
cc 8
c 4
b 0
f 1
dl 0
loc 30
rs 4
1
import os
2
3
from qtpy import QtCore, QtGui, QtWidgets, QtWebEngineWidgets
4
5
6
def assert_pyside():
7
    """
8
    Make sure that we are using PySide
9
    """
10
    import PySide
11
    assert QtCore.QEvent is PySide.QtCore.QEvent
12
    assert QtGui.QPainter is PySide.QtGui.QPainter
13
    assert QtWidgets.QWidget is PySide.QtGui.QWidget
14
    assert QtWebEngineWidgets.QWebEnginePage is PySide.QtWebKit.QWebPage
15
16
17
def assert_pyqt4():
18
    """
19
    Make sure that we are using PyQt4
20
    """
21
    import PyQt4
22
    assert QtCore.QEvent is PyQt4.QtCore.QEvent
23
    assert QtGui.QPainter is PyQt4.QtGui.QPainter
24
    assert QtWidgets.QWidget is PyQt4.QtGui.QWidget
25
    assert QtWebEngineWidgets.QWebEnginePage is PyQt4.QtWebKit.QWebPage
26
27
28
def assert_pyqt5():
29
    """
30
    Make sure that we are using PyQt5
31
    """
32
    import PyQt5
33
    assert QtCore.QEvent is PyQt5.QtCore.QEvent
34
    assert QtGui.QPainter is PyQt5.QtGui.QPainter
35
    assert QtWidgets.QWidget is PyQt5.QtWidgets.QWidget
36
    if QtWebEngineWidgets.WEBENGINE:
37
        assert QtWebEngineWidgets.QWebEnginePage is PyQt5.QtWebEngineWidgets.QWebEnginePage
38
    else:
39
        assert QtWebEngineWidgets.QWebEnginePage is PyQt5.QtWebKitWidgets.QWebPage
40
41
42
def test_qt_api():
43
    """
44
    If QT_API is specified, we check that the correct Qt wrapper was used
45
    """
46
47
    QT_API = os.environ.get('QT_API', '').lower()
48
49
    if QT_API == 'pyside':
50
        assert_pyside()
51
    elif QT_API in ('pyqt', 'pyqt4'):
52
        assert_pyqt4()
53
    elif QT_API == 'pyqt5':
54
        assert_pyqt5()
55
    else:
56
        # If the tests are run locally, USE_QT_API and QT_API may not be
57
        # defined, but we still want to make sure qtpy is behaving sensibly.
58
        # We should then be loading, in order of decreasing preference, PyQt5,
59
        # PyQt4, and PySide.
60
        try:
61
            import PyQt5
62
        except ImportError:
63
            try:
64
                import PyQt4
65
            except ImportError:
66
                import PySide
67
                assert_pyside()
68
            else:
69
                assert_pyqt4()
70
        else:
71
            assert_pyqt5()
72