def test_cross_Qt_imports(): qt5_bindings = [ dep for dep in ['PyQt5', 'PySide2'] if importlib.util.find_spec(dep) is not None ] qt6_bindings = [ dep for dep in ['PyQt6', 'PySide6'] if importlib.util.find_spec(dep) is not None ] if len(qt5_bindings) == 0 or len(qt6_bindings) == 0: pytest.skip('need both QT6 and QT5 bindings') for qt5 in qt5_bindings: for qt6 in qt6_bindings: for pair in ([qt5, qt6], [qt6, qt5]): try: _run_helper(_impl_test_cross_Qt_imports, *pair, timeout=_test_timeout) except subprocess.CalledProcessError as ex: # if segfault, carry on. We do try to warn the user they # are doing something that we do not expect to work if ex.returncode == -11: continue raise
def test_lazy_linux_headless(env): proc = _run_helper( _lazy_headless, env.pop('MPLBACKEND'), env.pop("BACKEND_DEPS"), timeout=_test_timeout, extra_env={**env, 'DISPLAY': '', 'WAYLAND_DISPLAY': ''} )
def test_blitting_events(env): proc = _run_helper( _test_number_of_draws_script, timeout=_test_timeout, extra_env=env) # Count the number of draw_events we got. We could count some initial # canvas draws (which vary in number by backend), but the critical # check here is that it isn't 10 draws, which would be called if # blitting is not properly implemented ndraws = proc.stdout.count("DrawEvent") assert 0 < ndraws < 5
def test_interactive_backend(env, toolbar): if env["MPLBACKEND"] == "macosx": if toolbar == "toolmanager": pytest.skip("toolmanager is not implemented for macosx.") proc = _run_helper(_test_interactive_impl, json.dumps({"toolbar": toolbar}), timeout=_test_timeout, **env) assert proc.stdout.count("CloseEvent") == 1
def test_figure_leak_20490(env, time_mem): pytest.importorskip("psutil", reason="psutil needed to run this test") # We haven't yet directly identified the leaks so test with a memory growth # threshold. pause_time, acceptable_memory_leakage = time_mem if env["MPLBACKEND"] == "macosx" or ( env["MPLBACKEND"] == "tkagg" and sys.platform == 'darwin' ): acceptable_memory_leakage += 11_000_000 result = _run_helper( _test_figure_leak, str(pause_time), timeout=_test_timeout, extra_env=env) growth = int(result.stdout) assert growth <= acceptable_memory_leakage
def test_qt5backends_uses_qt5(): qt5_bindings = [ dep for dep in ['PyQt5', 'pyside2'] if importlib.util.find_spec(dep) is not None ] qt6_bindings = [ dep for dep in ['PyQt6', 'pyside6'] if importlib.util.find_spec(dep) is not None ] if len(qt5_bindings) == 0 or len(qt6_bindings) == 0: pytest.skip('need both QT6 and QT5 bindings') _run_helper(_implqt5agg, timeout=_test_timeout) if importlib.util.find_spec('pycairo') is not None: _run_helper(_implcairo, timeout=_test_timeout) _run_helper(_implcore, timeout=_test_timeout)
def test_lazy_linux_headless(): proc = _run_helper(_lazy_headless, timeout=_test_timeout, MPLBACKEND="")
def test_lazy_auto_backend_selection(): _run_helper(_impl_test_lazy_auto_backend_selection, timeout=_test_timeout)
def test_interactive_thread_safety(env): proc = _run_helper(_test_thread_impl, timeout=_test_timeout, **env) assert proc.stdout.count("CloseEvent") == 1
def test_qApp_warn(): _run_helper(_qApp_warn_impl, timeout=_test_timeout)