Backports for tests broken by python-3.11.4.
https://bugs.gentoo.org/910742

IPv6 tests are notably related to https://bugs.gentoo.org/909747

https://github.com/qutebrowser/qutebrowser/commit/e1d0b3c543fc470a0459a18be3dee5a151ed79ed
https://github.com/qutebrowser/qutebrowser/commit/5d890f14d093689e53fcbdec3d739daf04a8aae4
...was for 3.12 but change was backported to 3.11.4 which led to:
https://github.com/qutebrowser/qutebrowser/commit/8b058389b7db591fb52b99fe9f7afbacfeabd901
--- a/tests/unit/config/test_configfiles.py
+++ b/tests/unit/config/test_configfiles.py
@@ -1102,7 +1102,14 @@
         error = excinfo.value.errors[0]
-        assert isinstance(error.exception, ValueError)
-        assert error.text == "Error while compiling"
+
+        if sys.version_info >= (3, 11, 4):
+            assert isinstance(error.exception, SyntaxError)
+            assert error.text == "Unhandled exception"
+            assert error.traceback is not None  # tested in more detail by test below
+        else:
+            assert isinstance(error.exception, ValueError)
+            assert error.text == "Error while compiling"
+            assert error.traceback is None
+
         exception_text = 'source code string cannot contain null bytes'
         assert str(error.exception) == exception_text
-        assert error.traceback is None
 
--- a/tests/unit/utils/test_urlmatch.py
+++ b/tests/unit/utils/test_urlmatch.py
@@ -42,2 +42,8 @@
 
+_INVALID_IP_MESSAGE = (
+    r'Invalid IPv6 address; source was ".*"; host = ""|'
+    r"'.*' does not appear to be an IPv4 or IPv6 address"  # Python 3.11.4+
+)
+
+
 @pytest.mark.parametrize('pattern, error', [
@@ -62,3 +68,7 @@
     ## TEST(ExtensionURLPatternTest, IPv6Patterns)
-    pytest.param("http://[]:8888/*", "Pattern without host", id='host-ipv6'),
+    pytest.param(
+        "http://[]:8888/*",
+        "Pattern without host|'' does not appear to be an IPv4 or IPv6 address",
+        id='host-ipv6',
+    ),
 
@@ -89,3 +99,6 @@
         "http://[[2607:f8b0:4005:805::200e]/*",
-        r"""Expected '\]' to match '\[' in hostname; source was "\[2607:f8b0:4005:805::200e"; host = """"",
+        (
+            r'''Expected '\]' to match '\[' in hostname; source was "\[2607:f8b0:4005:805::200e"; host = ""|'''
+            r"'\[2607:f8b0:4005:805::200e' does not appear to be an IPv4 or IPv6 address"
+        ),
         id='host-ipv6-two-open',
@@ -95,3 +108,3 @@
         "http://[2607:f8b0:4005:805:200e]/*",
-        'Invalid IPv6 address; source was "2607:f8b0:4005:805:200e"; host = ""',
+        _INVALID_IP_MESSAGE,
         id='host-ipv6-colons',
@@ -101,3 +114,3 @@
         "http://[2607:f8b0:4005:805:200e:12:bogus]/*",
-        'Invalid IPv6 address; source was "2607:f8b0:4005:805:200e:12:bogus"; host = ""',
+        _INVALID_IP_MESSAGE,
         id='host-ipv6-non-hex',
@@ -155,3 +168,3 @@
         "http://[fc2e::bb88::edac]",
-        'Invalid IPv6 address; source was "fc2e::bb88::edac"; host = ""',
+        _INVALID_IP_MESSAGE,
         id='ipv6-double-double',
@@ -160,3 +173,3 @@
         "http://[fc2e:0e35:bb88::edac:fc2e:0e35:bb88:edac]",
-        'Invalid IPv6 address; source was "fc2e:0e35:bb88::edac:fc2e:0e35:bb88:edac"; host = ""',
+        _INVALID_IP_MESSAGE,
         id='ipv6-long-double',
@@ -165,3 +178,3 @@
         "http://[fc2e:0e35:bb88:af:edac:fc2e:0e35:bb88:edac]",
-        'Invalid IPv6 address; source was "fc2e:0e35:bb88:af:edac:fc2e:0e35:bb88:edac"; host = ""',
+        _INVALID_IP_MESSAGE,
         id='ipv6-long',
@@ -170,3 +183,3 @@
         "http://[127.0.0.1:fc2e::bb88:edac]",
-        r'Invalid IPv6 address; source was "127\.0\.0\.1:fc2e::bb88:edac',
+        _INVALID_IP_MESSAGE,
         id='ipv6-ipv4',
@@ -176,3 +189,3 @@
         "http://[fc2e:bb88:edac]",
-        'Invalid IPv6 address; source was "fc2e:bb88:edac"; host = ""',
+        _INVALID_IP_MESSAGE,
         id='ipv6-short',
@@ -181,3 +194,3 @@
         "http://[fc2e:bb88:edac::z]",
-        'Invalid IPv6 address; source was "fc2e:bb88:edac::z"; host = ""',
+        _INVALID_IP_MESSAGE,
         id='ipv6-z',
@@ -192,3 +205,3 @@
 def test_invalid_patterns(pattern, error):
-    with pytest.raises(urlmatch.ParseError, match=error):
+    with pytest.raises(urlmatch.ParseError, match=f"^{error}$"):
         urlmatch.UrlPattern(pattern)
