test_main.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import os
  2. from qtpy import QtCore, QtGui, QtWidgets, QtWebEngineWidgets
  3. def assert_pyside():
  4. """
  5. Make sure that we are using PySide
  6. """
  7. import PySide
  8. assert QtCore.QEvent is PySide.QtCore.QEvent
  9. assert QtGui.QPainter is PySide.QtGui.QPainter
  10. assert QtWidgets.QWidget is PySide.QtGui.QWidget
  11. assert QtWebEngineWidgets.QWebEnginePage is PySide.QtWebKit.QWebPage
  12. def assert_pyside2():
  13. """
  14. Make sure that we are using PySide
  15. """
  16. import PySide2
  17. assert QtCore.QEvent is PySide2.QtCore.QEvent
  18. assert QtGui.QPainter is PySide2.QtGui.QPainter
  19. assert QtWidgets.QWidget is PySide2.QtWidgets.QWidget
  20. assert QtWebEngineWidgets.QWebEnginePage is PySide2.QtWebEngineWidgets.QWebEnginePage
  21. def assert_pyqt4():
  22. """
  23. Make sure that we are using PyQt4
  24. """
  25. import PyQt4
  26. assert QtCore.QEvent is PyQt4.QtCore.QEvent
  27. assert QtGui.QPainter is PyQt4.QtGui.QPainter
  28. assert QtWidgets.QWidget is PyQt4.QtGui.QWidget
  29. assert QtWebEngineWidgets.QWebEnginePage is PyQt4.QtWebKit.QWebPage
  30. def assert_pyqt5():
  31. """
  32. Make sure that we are using PyQt5
  33. """
  34. import PyQt5
  35. assert QtCore.QEvent is PyQt5.QtCore.QEvent
  36. assert QtGui.QPainter is PyQt5.QtGui.QPainter
  37. assert QtWidgets.QWidget is PyQt5.QtWidgets.QWidget
  38. if QtWebEngineWidgets.WEBENGINE:
  39. assert QtWebEngineWidgets.QWebEnginePage is PyQt5.QtWebEngineWidgets.QWebEnginePage
  40. else:
  41. assert QtWebEngineWidgets.QWebEnginePage is PyQt5.QtWebKitWidgets.QWebPage
  42. def test_qt_api():
  43. """
  44. If QT_API is specified, we check that the correct Qt wrapper was used
  45. """
  46. QT_API = os.environ.get('QT_API', '').lower()
  47. if QT_API == 'pyside':
  48. assert_pyside()
  49. elif QT_API in ('pyqt', 'pyqt4'):
  50. assert_pyqt4()
  51. elif QT_API == 'pyqt5':
  52. assert_pyqt5()
  53. elif QT_API == 'pyside2':
  54. assert_pyside2()
  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()