enthought / pyface

pyface: traits-capable windowing framework
Other
106 stars 55 forks source link

Bug report: (some) tests should be skipped when ETS_TOOLKIT=qt4 #1252

Open itziakos opened 1 year ago

itziakos commented 1 year ago

Environment

OS: all Python version: 3.8 Toolkit: Qt Qt API: PySide6

Description

Tests fail when ETS_TOOLKIT is set to 'qt4'. The TestQt4ImportHooks assume that the qt4 modules have not been imported yet which is probably not true in this case. I think that the testcase should detect that ETS_TOOLKIT is qt4 and skip the related tests or ask the user to stop using the qt4 value.

Steps to Reproduce

export ETS_TOOLKIT=qt4
export QT_API=pyside6
export EXCLUDE_TESTS=wx
export CI=1
python -m unittest discover pyface

failed tests:

FAIL: test_qt4_import_no_hook (pyface.ui.qt.tests.test_qt4_import_hooks.TestQt4ImportHooks)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/itziakos/.edm/envs/build-env/lib/python3.8/site-packages/pyface/ui/qt/tests/test_qt4_import_hooks.py", line 33, in test_qt4_import_no_hook
    import pyface.ui.qt4.tests.good_package.good_import  # noqa F401
AssertionError: ModuleNotFoundError not raised

======================================================================
FAIL: test_qt4_import_other_package_hook (pyface.ui.qt.tests.test_qt4_import_hooks.TestQt4ImportHooks)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/itziakos/.edm/envs/build-env/lib/python3.8/site-packages/pyface/ui/qt/tests/test_qt4_import_hooks.py", line 53, in test_qt4_import_other_package_hook
    import pyface.ui.qt4.tests.good_package.good_import  # noqa F401
AssertionError: ModuleNotFoundError not raised

======================================================================
FAIL: test_qt4_import_with_ets_toolkit_qt (pyface.ui.qt.tests.test_qt4_import_hooks.TestQt4ImportHooks)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/itziakos/.edm/envs/build-env/lib/python3.8/site-packages/pyface/ui/qt/tests/test_qt4_import_hooks.py", line 171, in test_qt4_import_with_ets_toolkit_qt
    import pyface.ui.qt4.tests.good_package.good_import  # noqa F401
AssertionError: ModuleNotFoundError not raised

======================================================================
FAIL: test_qt4_import_with_etsconfig_toolkit_qt (pyface.ui.qt.tests.test_qt4_import_hooks.TestQt4ImportHooks)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/itziakos/.edm/envs/build-env/lib/python3.8/site-packages/pyface/ui/qt/tests/test_qt4_import_hooks.py", line 204, in test_qt4_import_with_etsconfig_toolkit_qt
    import pyface.ui.qt4.tests.good_package.good_import  # noqa F401
AssertionError: ModuleNotFoundError not raised
corranwebster commented 1 year ago

I think this is more an issue with the tests themselves - they should be robust against unexpected values for ETS_TOOLKIT - but yes, skipping would be a first step to resolving.