[pytest]
log_level = NOTSET
addopts = --strict-markers --strict-config --instafail --benchmark-columns=Min,Max,Median
testpaths = tests
required_plugins =
    pytest-bdd
    pytest-benchmark
    pytest-instafail
    pytest-mock
    pytest-qt
    pytest-rerunfailures
markers =
    gui: Tests using the GUI (e.g. spawning widgets)
    posix: Tests which only can run on a POSIX OS.
    windows: Tests which only can run on Windows.
    linux: Tests which only can run on Linux.
    mac: Tests which only can run on macOS.
    not_mac: Tests which can not run on macOS.
    not_frozen: Tests which can't be run if sys.frozen is True.
    not_flatpak: Tests which can't be run if running with Flatpak.
    no_xvfb: Tests which can't be run with Xvfb.
    no_offscreen: Tests which can't be run with the offscreen platform plugin.
    frozen: Tests which can only be run if sys.frozen is True.
    integration: Tests which test a bigger portion of code
    end2end: End to end tests which run qutebrowser as subprocess
    xfail_norun: xfail the test with out running it
    ci: Tests which should only run on CI.
    no_ci: Tests which should not run on CI.
    qtwebengine_todo: Features still missing with QtWebEngine
    qtwebengine_skip: Tests not applicable with QtWebEngine
    qtwebkit_skip: Tests not applicable with QtWebKit
    qtwebengine_flaky: Tests which are flaky (and currently skipped) with QtWebEngine
    qtwebengine_mac_xfail: Tests which fail on macOS with QtWebEngine
    this: Used to mark tests during development
    no_invalid_lines: Don't fail on unparsable lines in end2end tests
    fake_os: Fake utils.is_* to a fake operating system
    unicode_locale: Tests which need a unicode locale to work
    qtwebkit_pdf_imageformat_skip: Broken on QtWebKit with PDF image format plugin installed
    qtwebkit_openssl3_skip: Broken due to cheroot bug with OpenSSL 3 on QtWebKit
    windows_skip: Tests which should be skipped on Windows
    qt5_only: Tests which should only run with Qt 5
    qt6_only: Tests which should only run with Qt 6
    qt5_xfail: Tests which fail with Qt 5
    qt6_xfail: Tests which fail with Qt 6
    qt69_ci_flaky: Tests which are flaky with Qt 6.9 on CI
    qt69_ci_skip: Tests which should be skipped with Qt 6.9 on CI
qt_log_level_fail = WARNING
qt_log_ignore =
    # GitHub Actions
    ^QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to .*
    # test_on_focus_changed_issue1484 on macOS
    ^The available OpenGL surface format was either not version 3\.2 or higher or not a Core Profile.*
    # tests/unit/mainwindow/test_messageview.py and
    # tests/unit/mainwindow/statusbar/test_textbase.py::test_resize
    # on Windows
    ^QWindowsWindow::setGeometry(Dp)?: Unable to set geometry .*
    # tests/unit/commands/test_userscripts.py::test_killed_command
    # on Windows
    ^QProcess: Destroyed while process .* is still running\.
    # Qt 6.5 debug build
    # WORKAROUND for https://www.riverbankcomputing.com/pipermail/pyqt/2023-March/045215.html
    ^QObject::connect: Connecting from COMPAT signal \(QSocketNotifier::activated\(int\)\)$
    # Randomly started showing up on Qt 5.15.2
    ^QBackingStore::endPaint\(\) called with active painter; did you forget to destroy it or call QPainter::end\(\) on it\?$
    # Qt 6.5 after system update, from qt-qt.accessibility.atspi
    Error in contacting registry: "org\.freedesktop\.DBus\.Error\.Disconnected" "Not connected to D-Bus server"
    # Seen in Qt 6.6.2 on CI, https://github.com/qutebrowser/qutebrowser/pull/8106#issuecomment-1952320663
    ^QDBusConnection: couldn't handle call to Notify, no slot matched
    ^QDBusConnection: couldn't handle call to CloseNotification, no slot matched
    # Qt 6.7
    ^Path override failed for key base::DIR_APP_DICTIONARIES and path '.*/qtwebengine_dictionaries'
    # Sometime the above message gets printed twice at the same time and the messages get interleaved.
    # The last part of the outer message gets bumped down to a line on its own, so hopefully this
    # catches that. And we don't see any other weird permutations of this.
    ^[^ ]*qtwebengine_dictionaries'$
    # Qt 5 on Archlinux
    ^QSslSocket: cannot resolve .*
    # Seems to happen after we try to complete immediately after clearing a
    # model, for example, when no completion function is available for the
    # current text pattern.
    QItemSelectionModel: Selecting when no model has been set will result in a no-op.
    ^QSaveFile::commit: File \(.*[/\\]test_failing_flush0[/\\]foo\) is not open$
    ^The following paths were searched for Qt WebEngine dictionaries:.*
    # Qt 6.9 with Xvfb
    ^Backend texture is not a Vulkan texture\.$
    ^Compositor returned null texture$
    # With offscreen platform plugin
    ^This plugin does not support (raise\(\)|propagateSizeHints\(\)|createPlatformVulkanInstance|grabbing the keyboard)$
    ^QRhiGles2: Failed to create (temporary )?context$
    ^QVulkanInstance: Failed to initialize Vulkan$
    ^Unable to detect GPU vendor\.$
xfail_strict = true
filterwarnings =
    error
    default:Test process .* failed to terminate!:UserWarning
    # https://github.com/cucumber/gherkin/commit/2f4830093149eae7ff7bd82f683b3d3bb7320d39
    # https://github.com/pytest-dev/pytest-bdd/issues/752
    ignore:'maxsplit' is passed as positional argument:DeprecationWarning:gherkin.gherkin_line
    # https://github.com/pytest-dev/pytest-mock/issues/468
    ignore:'asyncio\.iscoroutinefunction' is deprecated and slated for removal:DeprecationWarning:pytest_mock.plugin
    # https://github.com/ionelmc/pytest-benchmark/issues/283
    ignore:FileType is deprecated\. Simply open files after parsing arguments\.:PendingDeprecationWarning:pytest_benchmark.plugin
faulthandler_timeout = 90
xvfb_colordepth = 24
