From 5c617b861c2a517168c694519379982db666e971 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 16 Feb 2016 20:36:23 +0100 Subject: [PATCH] Switch to pytest-xvfb. Fixes #1309. --- pytest.ini | 2 +- tests/conftest.py | 38 ++++----------------- tests/integration/features/keyinput.feature | 2 +- tests/integration/features/misc.feature | 6 ++-- tox.ini | 2 +- 5 files changed, 12 insertions(+), 38 deletions(-) diff --git a/pytest.ini b/pytest.ini index b754af883..04ebb49c0 100644 --- a/pytest.ini +++ b/pytest.ini @@ -9,7 +9,7 @@ markers = osx: Tests which only can run on OS X. not_osx: Tests which can not run on OS X. not_frozen: Tests which can't be run if sys.frozen is True. - not_xvfb: Tests which can't be run with Xvfb. + no_xvfb: Tests which can't be run with Xvfb. frozen: Tests which can only be run if sys.frozen is True. integration: Tests which test a bigger portion of code, run without coverage. skip: Always skipped test. diff --git a/tests/conftest.py b/tests/conftest.py index ed617b854..1a38d0825 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -34,7 +34,6 @@ from helpers.messagemock import message_mock from helpers.fixtures import * # pylint: disable=wildcard-import from PyQt5.QtCore import PYQT_VERSION -import xvfbwrapper # Set hypothesis settings @@ -55,8 +54,6 @@ def _apply_platform_markers(item): "Can't be run when frozen"), ('frozen', not getattr(sys, 'frozen', False), "Can only run when frozen"), - ('not_xvfb', item.config.xvfb_display is not None, - "Can't be run with Xvfb."), ('skip', True, "Always skipped."), ('pyqt531_or_newer', PYQT_VERSION < 0x050301, "Needs PyQt 5.3.1 or newer"), @@ -147,41 +144,18 @@ def fail_tests_on_warnings(): def pytest_addoption(parser): - parser.addoption('--no-xvfb', action='store_true', default=False, - help='Disable xvfb in tests.') parser.addoption('--qute-delay', action='store', default=0, type=int, help="Delay between qutebrowser commands.") parser.addoption('--qute-profile-subprocs', action='store_true', default=False, help="Run cProfile for subprocesses.") -def pytest_configure(config): - """Start Xvfb if we're on Linux, not on a CI and Xvfb is available. - - This is a lot nicer than having windows popping up. - """ - config.xvfb_display = None - if os.environ.get('DISPLAY', None) == '': - # xvfbwrapper doesn't handle DISPLAY="" correctly - del os.environ['DISPLAY'] - - if (sys.platform.startswith('linux') and - not config.getoption('--no-xvfb') and - 'QUTE_NO_DISPLAY' not in os.environ): - assert 'QUTE_BUILDBOT' not in os.environ - try: - disp = xvfbwrapper.Xvfb(width=800, height=600, colordepth=16) - disp.start() - except EnvironmentError: - # We run without Xvfb if it's unavailable. - pass - else: - config.xvfb_display = disp - - -def pytest_unconfigure(config): - if config.xvfb_display is not None: - config.xvfb_display.stop() +@pytest.fixture(scope='session', autouse=True) +def prevent_xvfb_on_buildbot(request): + if (not request.config.getoption('--no-xvfb') and + 'QUTE_BUILDBOT' in os.environ and + request.config.xvfb is not None): + raise Exception("Xvfb is running on buildbot!") @pytest.hookimpl(tryfirst=True, hookwrapper=True) diff --git a/tests/integration/features/keyinput.feature b/tests/integration/features/keyinput.feature index eae967874..1d930da24 100644 --- a/tests/integration/features/keyinput.feature +++ b/tests/integration/features/keyinput.feature @@ -113,7 +113,7 @@ Feature: Keyboard input Then the javascript message "key press: 88" should be logged And the javascript message "key release: 88" should be logged - @not_xvfb @posix + @no_xvfb @posix Scenario: :fake-key sending key to the website with other window focused When I open data/keyinput/log.html And I set general -> developer-extras to true diff --git a/tests/integration/features/misc.feature b/tests/integration/features/misc.feature index 38a77d6e6..7a0f9ae2f 100644 --- a/tests/integration/features/misc.feature +++ b/tests/integration/features/misc.feature @@ -108,7 +108,7 @@ Feature: Various utility commands. And I run :inspector Then the error "Please enable developer-extras before using the webinspector!" should be shown - @not_xvfb @posix + @no_xvfb @posix Scenario: Inspector smoke test When I set general -> developer-extras to true And I run :inspector @@ -124,7 +124,7 @@ Feature: Various utility commands. Then the error "Please enable developer-extras before using the webinspector!" should be shown # Different code path as an inspector got created now - @not_xvfb @posix + @no_xvfb @posix Scenario: Inspector smoke test 2 When I set general -> developer-extras to true And I run :inspector @@ -202,7 +202,7 @@ Feature: Various utility commands. # :debug-console - @not_xvfb + @no_xvfb Scenario: :debug-console smoke test When I run :debug-console And I wait for "Focus object changed: " in the log diff --git a/tox.ini b/tox.ini index b64bc9815..465c393fd 100644 --- a/tox.ini +++ b/tox.ini @@ -38,12 +38,12 @@ deps = pytest-travis-fold==1.2.0 pytest-repeat==0.2 pytest-rerunfailures==1.0.1 + pytest-xvfb==0.1.0 six==1.10.0 termcolor==1.1.0 vulture==0.8.1 Werkzeug==0.11.4 wheel==0.29.0 - xvfbwrapper==0.2.8 cherrypy==5.0.1 commands = {envpython} scripts/link_pyqt.py --tox {envdir}