Fix URL/renderer crash tests with Qt 5.9

The behavior in Qt changed there (in a good way), so we need to adjust the tests
accordingly.

Fixes #2514
This commit is contained in:
Florian Bruhin 2017-05-19 08:10:17 +02:00
parent f67cf17055
commit c4fb2bc609
6 changed files with 41 additions and 20 deletions

View File

@ -685,6 +685,7 @@ class TabbedBrowser(tabwidget.TabWidget):
'error.html', title="Error loading {}".format(url_string),
url=url_string, error=msg, icon='')
QTimer.singleShot(0, lambda: tab.set_html(error_page))
log.webview.error(msg)
else:
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-58698
message.error(msg)

View File

@ -674,16 +674,29 @@ Feature: Various utility commands.
## Renderer crashes
# Skipped on Windows as "... has stopped working" hangs.
@qtwebkit_skip @no_invalid_lines @posix
@qtwebkit_skip @no_invalid_lines @posix @qt<5.9
Scenario: Renderer crash
When I run :open -t chrome://crash
Then the error "Renderer process crashed" should be shown
@qtwebkit_skip @no_invalid_lines
@qtwebkit_skip @no_invalid_lines @qt<5.9
Scenario: Renderer kill
When I run :open -t chrome://kill
Then the error "Renderer process was killed" should be shown
# Skipped on Windows as "... has stopped working" hangs.
@qtwebkit_skip @no_invalid_lines @posix @qt>=5.9
Scenario: Renderer crash (5.9)
When I run :open -t chrome://crash
Then "Renderer process crashed" should be logged
And "* 'Error loading chrome://crash/'" should be logged
@qtwebkit_skip @no_invalid_lines @qt>=5.9
Scenario: Renderer kill (5.9)
When I run :open -t chrome://kill
Then "Renderer process was killed" should be logged
And "* 'Error loading chrome://kill/'" should be logged
# https://github.com/qutebrowser/qutebrowser/issues/2290
@qtwebkit_skip @no_invalid_lines
Scenario: Navigating to URL after renderer process is gone
@ -694,5 +707,3 @@ Feature: Various utility commands.
And I wait for "Renderer process was killed" in the log
And I open data/numbers/3.txt
Then no crash should happen
And the following tabs should be open:
- data/numbers/3.txt (active)

View File

@ -26,6 +26,14 @@ import os.path
import pytest
from qutebrowser.utils import qtutils
qt58 = pytest.mark.skipif(
qtutils.version_check('5.9'), reason="Needs Qt 5.8 or earlier")
qt59 = pytest.mark.skipif(
not qtutils.version_check('5.9'), reason="Needs Qt 5.9 or newer")
class PartialCompareOutcome:

View File

@ -24,12 +24,7 @@ import pytest
pytest.importorskip('PyQt5.QtWebEngineWidgets')
from qutebrowser.browser.webengine import webenginedownloads
from qutebrowser.utils import qtutils
qt58 = pytest.mark.skipif(
qtutils.version_check('5.9'), reason="Needs Qt 5.8 or earlier")
qt59 = pytest.mark.skipif(
not qtutils.version_check('5.9'), reason="Needs Qt 5.9 or newer")
from helpers import utils
@pytest.mark.parametrize('path, expected', [
@ -37,10 +32,10 @@ qt59 = pytest.mark.skipif(
('foo(1)', 'foo'),
('foo(a)', 'foo(a)'),
('foo1', 'foo1'),
qt58(('foo%20bar', 'foo bar')),
qt58(('foo%2Fbar', 'bar')),
qt59(('foo%20bar', 'foo%20bar')),
qt59(('foo%2Fbar', 'foo%2Fbar')),
utils.qt58(('foo%20bar', 'foo bar')),
utils.qt58(('foo%2Fbar', 'bar')),
utils.qt59(('foo%20bar', 'foo%20bar')),
utils.qt59(('foo%2Fbar', 'foo%2Fbar')),
])
def test_get_suggested_filename(path, expected):
assert webenginedownloads._get_suggested_filename(path) == expected

View File

@ -22,10 +22,11 @@
import pytest
from PyQt5.QtCore import QUrl
from qutebrowser.utils import usertypes, urlutils
from qutebrowser.mainwindow.statusbar import url
from PyQt5.QtCore import QUrl
from helpers import utils
@pytest.fixture
@ -60,8 +61,10 @@ def url_widget(qtbot, monkeypatch, config_stub):
('http://username:secret%20password@test.com', 'http://username@test.com'),
('http://example.com%5b/', '(invalid URL!) http://example.com%5b/'),
# https://bugreports.qt.io/browse/QTBUG-60364
('http://www.xn--80ak6aa92e.com',
'(unparseable URL!) http://www.аррӏе.com'),
utils.qt58(('http://www.xn--80ak6aa92e.com',
'(unparseable URL!) http://www.аррӏе.com')),
utils.qt59(('http://www.xn--80ak6aa92e.com',
'http://www.xn--80ak6aa92e.com')),
# IDN URL
('http://www.ä.com', '(www.xn--4ca.com) http://www.ä.com'),
(None, ''),

View File

@ -30,6 +30,7 @@ import pytest
from qutebrowser.commands import cmdexc
from qutebrowser.browser.network import pac
from qutebrowser.utils import utils, urlutils, qtutils, usertypes
from helpers import utils
class FakeDNS:
@ -755,8 +756,10 @@ def test_data_url():
(QUrl('http://www.example.xn--p1ai'),
'(www.example.xn--p1ai) http://www.example.рф'),
# https://bugreports.qt.io/browse/QTBUG-60364
(QUrl('http://www.xn--80ak6aa92e.com'),
'(unparseable URL!) http://www.аррӏе.com'),
utils.qt58((QUrl('http://www.xn--80ak6aa92e.com'),
'(unparseable URL!) http://www.аррӏе.com')),
utils.qt59((QUrl('http://www.xn--80ak6aa92e.com'),
'http://www.xn--80ak6aa92e.com')),
])
def test_safe_display_string(url, expected):
assert urlutils.safe_display_string(url) == expected