2015-04-03 00:05:20 +02:00
|
|
|
# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
|
|
|
|
|
|
|
|
# Copyright 2014-2015 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
|
|
|
|
#
|
|
|
|
# This file is part of qutebrowser.
|
|
|
|
#
|
|
|
|
# qutebrowser is free software: you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
|
|
# (at your option) any later version.
|
|
|
|
#
|
|
|
|
# qutebrowser is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
"""The qutebrowser test suite contest file."""
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='session', autouse=True)
|
|
|
|
def app_and_logging(qapp):
|
2015-04-05 20:30:31 +02:00
|
|
|
"""Initialize a QApplication and logging.
|
|
|
|
|
|
|
|
This ensures that a QApplication is created and used by all tests.
|
2015-04-03 00:05:20 +02:00
|
|
|
"""
|
2015-04-03 21:49:01 +02:00
|
|
|
from log import init
|
2015-04-03 00:05:20 +02:00
|
|
|
init()
|
2015-04-03 23:12:49 +02:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='session')
|
|
|
|
def stubs():
|
2015-04-05 20:30:31 +02:00
|
|
|
"""Provide access to stub objects useful for testing."""
|
2015-04-03 23:12:49 +02:00
|
|
|
import stubs
|
|
|
|
return stubs
|
2015-04-04 16:24:48 +02:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='session')
|
|
|
|
def unicode_encode_err():
|
2015-04-05 20:30:31 +02:00
|
|
|
"""Provide a fake UnicodeEncodeError exception."""
|
2015-04-04 16:24:48 +02:00
|
|
|
return UnicodeEncodeError('ascii', # codec
|
|
|
|
'', # object
|
|
|
|
0, # start
|
|
|
|
2, # end
|
|
|
|
'fake exception') # reason
|
2015-04-04 16:43:14 +02:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def webpage():
|
|
|
|
"""Get a new QWebPage object."""
|
|
|
|
from PyQt5.QtWebKitWidgets import QWebPage
|
|
|
|
from PyQt5.QtNetwork import QNetworkAccessManager
|
|
|
|
|
|
|
|
page = QWebPage()
|
|
|
|
nam = page.networkAccessManager()
|
|
|
|
nam.setNetworkAccessible(QNetworkAccessManager.NotAccessible)
|
2015-04-04 17:29:17 +02:00
|
|
|
return page
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def fake_keyevent_factory():
|
2015-04-05 20:30:31 +02:00
|
|
|
"""Fixture that when called will return a mock instance of a QKeyEvent."""
|
2015-04-04 17:29:17 +02:00
|
|
|
from unittest import mock
|
|
|
|
from PyQt5.QtGui import QKeyEvent
|
|
|
|
|
|
|
|
def fake_keyevent(key, modifiers=0, text=''):
|
|
|
|
"""Generate a new fake QKeyPressEvent."""
|
|
|
|
evtmock = mock.create_autospec(QKeyEvent, instance=True)
|
|
|
|
evtmock.key.return_value = key
|
|
|
|
evtmock.modifiers.return_value = modifiers
|
|
|
|
evtmock.text.return_value = text
|
|
|
|
return evtmock
|
|
|
|
|
2015-04-05 20:30:31 +02:00
|
|
|
return fake_keyevent
|
2015-04-09 00:14:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
def pytest_collection_modifyitems(items):
|
2015-04-09 06:42:34 +02:00
|
|
|
"""Automatically add a 'gui' marker to all gui-related tests.
|
|
|
|
|
2015-04-09 00:14:06 +02:00
|
|
|
pytest hook called after collection has been performed, adds a marker
|
|
|
|
named "gui" which can be used to filter gui tests from the command line.
|
|
|
|
For example:
|
|
|
|
|
|
|
|
py.test -m "not gui" # run all tests except gui tests
|
|
|
|
py.test -m "gui" # run only gui tests
|
|
|
|
|
|
|
|
Args:
|
|
|
|
items: list of _pytest.main.Node items, where each item represents
|
2015-04-09 06:42:34 +02:00
|
|
|
a python test that will be executed.
|
2015-04-09 00:14:06 +02:00
|
|
|
|
|
|
|
Reference:
|
|
|
|
http://pytest.org/latest/plugins.html
|
|
|
|
"""
|
|
|
|
for item in items:
|
|
|
|
if 'qtbot' in item.fixturenames:
|
2015-04-09 00:16:45 +02:00
|
|
|
item.add_marker('gui')
|