Add test for pastebin_version()

This commit is contained in:
George Edward Bulmer 2018-02-13 13:31:27 +00:00
parent eca1fb7d3b
commit 942dca3444
2 changed files with 70 additions and 3 deletions

View File

@ -453,7 +453,7 @@ def opengl_vendor(): # pragma: no cover
old_context.makeCurrent(old_surface)
def pastebin_version():
def pastebin_version(pbclient=None):
"""Pastebin the version and log the url to messages."""
def _yank_url(url):
utils.set_clipboard(url)
@ -478,8 +478,8 @@ def pastebin_version():
http_client = httpclient.HTTPClient()
misc_api = pastebin.PastebinClient.MISC_API_URL
pbclient = pastebin.PastebinClient(http_client, parent=app,
api_url=misc_api)
pbclient = pbclient or pastebin.PastebinClient(http_client, parent=app,
api_url=misc_api)
pbclient.success.connect(_on_paste_version_success)
pbclient.error.connect(_on_paste_version_err)

View File

@ -35,9 +35,11 @@ import datetime
import attr
import pkg_resources
import pytest
from PyQt5.QtCore import pyqtSignal, QUrl, QObject
import qutebrowser
from qutebrowser.utils import version, usertypes, utils
from qutebrowser.misc import pastebin
from qutebrowser.browser import pdfjs
@ -950,3 +952,68 @@ def test_opengl_vendor():
"""Simply call version.opengl_vendor() and see if it doesn't crash."""
pytest.importorskip("PyQt5.QtOpenGL")
return version.opengl_vendor()
class HTTPPostStub(QObject):
"""A stub class for HTTPClient.
Attributes:
url: the last url send by post()
data: the last data send by post()
"""
success = pyqtSignal(str)
error = pyqtSignal(str)
def __init__(self, parent=None):
super().__init__(parent)
self.url = None
self.data = None
def post(self, url, data=None):
self.url = url
self.data = data
@pytest.fixture
def pbclient():
http_stub = HTTPPostStub()
client = pastebin.PastebinClient(http_stub)
return client
def test_pastebin_version(pbclient, monkeypatch):
"""Test version.pastebin_version() twice."""
patches = {
'_path_info': lambda: {'PATH DESC': 'PATH NAME'},
'_uptime': lambda: datetime.timedelta(hours=1, minutes=23, seconds=45),
}
for name, val in patches.items():
monkeypatch.setattr('qutebrowser.utils.version.' + name, val)
version.pastebin_version(pbclient)
pbclient.success.emit("test")
assert version.pastebin_url == "test"
version.pastebin_version(pbclient)
assert version.pastebin_url == "test"
def test_pastebin_version_error(pbclient, monkeypatch):
"""Test version.pastebin_version() with errors."""
patches = {
'_path_info': lambda: {'PATH DESC': 'PATH NAME'},
'_uptime': lambda: datetime.timedelta(hours=1, minutes=23, seconds=45),
}
for name, val in patches.items():
monkeypatch.setattr('qutebrowser.utils.version.' + name, val)
version.pastebin_url = None
version.pastebin_version(pbclient)
try:
pbclient.error.emit("test")
except:
assert version.pastebin_url is None