diff options
Diffstat (limited to 'tests/unit/utils/test_urlutils.py')
-rw-r--r-- | tests/unit/utils/test_urlutils.py | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/tests/unit/utils/test_urlutils.py b/tests/unit/utils/test_urlutils.py index e5773e25e..a94ecef6a 100644 --- a/tests/unit/utils/test_urlutils.py +++ b/tests/unit/utils/test_urlutils.py @@ -24,15 +24,15 @@ import logging import dataclasses import urllib.parse -from PyQt5.QtCore import QUrl -from PyQt5.QtNetwork import QNetworkProxy +from qutebrowser.qt.core import QUrl +from qutebrowser.qt.network import QNetworkProxy import pytest import hypothesis import hypothesis.strategies from qutebrowser.api import cmdutils from qutebrowser.browser.network import pac -from qutebrowser.utils import utils, urlutils, usertypes +from qutebrowser.utils import utils, urlutils, usertypes, qtutils class FakeDNS: @@ -321,7 +321,7 @@ def test_get_search_url_for_path_search(config_stub, url, host, path, open_base_ config_stub.val.url.open_base_url = open_base_url url = urlutils._get_search_url(url) assert url.host() == host - assert url.path(options=QUrl.PrettyDecoded) == '/' + path + assert url.path(options=QUrl.ComponentFormattingOption.PrettyDecoded) == '/' + path @pytest.mark.parametrize('url, host', [ @@ -638,6 +638,7 @@ class TestInvalidUrlError: (False, 'http://example.org', 'https://example.org'), # different scheme (False, 'http://example.org:80', 'http://example.org:8080'), # different port ]) +@pytest.mark.qt5_only # https://bugreports.qt.io/browse/QTBUG-80308 def test_same_domain(are_same, url1, url2): """Test same_domain.""" assert urlutils.same_domain(QUrl(url1), QUrl(url2)) == are_same @@ -674,6 +675,18 @@ def test_data_url(): assert url == QUrl('data:text/plain;base64,Zm9v') +qurl_idna2003 = pytest.mark.skipif( + qtutils.version_check("6.3.0", compiled=False), + reason="Different result with Qt >= 6.3.0: " + "https://bugreports.qt.io/browse/QTBUG-85371" +) +qurl_uts46 = pytest.mark.xfail( + not qtutils.version_check("6.3.0", compiled=False), + reason="Different result with Qt < 6.3.0: " + "https://bugreports.qt.io/browse/QTBUG-85371" +) + + @pytest.mark.parametrize('url, expected', [ # No IDN (QUrl('http://www.example.com'), 'http://www.example.com'), @@ -687,8 +700,16 @@ 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'), - 'http://www.xn--80ak6aa92e.com'), + pytest.param( + QUrl('http://www.xn--80ak6aa92e.com'), + 'http://www.xn--80ak6aa92e.com', + marks=qurl_idna2003, + ), + pytest.param( + QUrl('http://www.xn--80ak6aa92e.com'), + '(www.xn--80ak6aa92e.com) http://www.аррӏе.com', + marks=qurl_uts46, + ), ]) def test_safe_display_string(url, expected): assert urlutils.safe_display_string(url) == expected @@ -703,20 +724,20 @@ class TestProxyFromUrl: @pytest.mark.parametrize('url, expected', [ ('socks://example.com/', - QNetworkProxy(QNetworkProxy.Socks5Proxy, 'example.com')), + QNetworkProxy(QNetworkProxy.ProxyType.Socks5Proxy, 'example.com')), ('socks5://example.com', - QNetworkProxy(QNetworkProxy.Socks5Proxy, 'example.com')), + QNetworkProxy(QNetworkProxy.ProxyType.Socks5Proxy, 'example.com')), ('socks5://example.com:2342', - QNetworkProxy(QNetworkProxy.Socks5Proxy, 'example.com', 2342)), + QNetworkProxy(QNetworkProxy.ProxyType.Socks5Proxy, 'example.com', 2342)), ('socks5://foo@example.com', - QNetworkProxy(QNetworkProxy.Socks5Proxy, 'example.com', 0, 'foo')), + QNetworkProxy(QNetworkProxy.ProxyType.Socks5Proxy, 'example.com', 0, 'foo')), ('socks5://foo:bar@example.com', - QNetworkProxy(QNetworkProxy.Socks5Proxy, 'example.com', 0, 'foo', + QNetworkProxy(QNetworkProxy.ProxyType.Socks5Proxy, 'example.com', 0, 'foo', 'bar')), ('socks5://foo:bar@example.com:2323', - QNetworkProxy(QNetworkProxy.Socks5Proxy, 'example.com', 2323, + QNetworkProxy(QNetworkProxy.ProxyType.Socks5Proxy, 'example.com', 2323, 'foo', 'bar')), - ('direct://', QNetworkProxy(QNetworkProxy.NoProxy)), + ('direct://', QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)), ]) def test_proxy_from_url_valid(self, url, expected): assert urlutils.proxy_from_url(QUrl(url)) == expected |