diff options
author | Florian Bruhin <me@the-compiler.org> | 2024-04-30 19:24:25 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2024-04-30 19:24:25 +0200 |
commit | 3d96fc2656b372474c4f302617333bf2bb3e9cde (patch) | |
tree | 25fc6ee188aaadb1128e3cd956c5beed828d372e | |
parent | 4fdc32ffe13fee65d2e0fe1ac697197089e09bad (diff) | |
download | qutebrowser-3d96fc2656b372474c4f302617333bf2bb3e9cde.tar.gz qutebrowser-3d96fc2656b372474c4f302617333bf2bb3e9cde.zip |
Make qt.machinery.Unavailable inherit ModuleNotFoundError
With pytest 8.2, pytest.importorskip(...) now only considers ModuleNotFoundError
rather than all ImportErrors, and warns otherwise:
https://github.com/pytest-dev/pytest/pull/12220
While we could override this via
pytest.importorskip(..., exc_type=machinery.Unavailable)
this is a simpler solution, and it also makes more sense semantically:
We only raise Unavailable when an import is being done that would otherwise
result in a ModuleNotFoundError anyways (e.g. trying to import QtWebKit on Qt
6).
-rw-r--r-- | qutebrowser/qt/machinery.py | 2 | ||||
-rw-r--r-- | tests/unit/test_qt_machinery.py | 12 |
2 files changed, 7 insertions, 7 deletions
diff --git a/qutebrowser/qt/machinery.py b/qutebrowser/qt/machinery.py index 9f45dd6ce..45a1f6598 100644 --- a/qutebrowser/qt/machinery.py +++ b/qutebrowser/qt/machinery.py @@ -48,7 +48,7 @@ class Error(Exception): """Base class for all exceptions in this module.""" -class Unavailable(Error, ImportError): +class Unavailable(Error, ModuleNotFoundError): """Raised when a module is unavailable with the given wrapper.""" diff --git a/tests/unit/test_qt_machinery.py b/tests/unit/test_qt_machinery.py index 25fc83ffd..cf7990393 100644 --- a/tests/unit/test_qt_machinery.py +++ b/tests/unit/test_qt_machinery.py @@ -9,7 +9,7 @@ import sys import html import argparse import typing -from typing import Any, Optional, List, Dict, Union +from typing import Any, Optional, List, Dict, Union, Type import dataclasses import pytest @@ -45,14 +45,14 @@ def undo_init(monkeypatch: pytest.MonkeyPatch) -> None: @pytest.mark.parametrize( - "exception", + "exception, base", [ - machinery.Unavailable(), - machinery.NoWrapperAvailableError(machinery.SelectionInfo()), + (machinery.Unavailable(), ModuleNotFoundError), + (machinery.NoWrapperAvailableError(machinery.SelectionInfo()), ImportError), ], ) -def test_importerror_exceptions(exception: Exception): - with pytest.raises(ImportError): +def test_importerror_exceptions(exception: Exception, base: Type[Exception]): + with pytest.raises(base): raise exception |