Tests: Import latest WPT URL test data

This commit is contained in:
Shannon Booth 2026-06-07 14:02:32 +02:00 committed by Tim Ledbetter
parent 2a5f239d11
commit 3f8b28ad35
4 changed files with 307 additions and 6 deletions

View file

@ -1,8 +1,8 @@
Harness status: OK
Found 394 tests
Found 402 tests
394 Pass
402 Pass
Pass Loading data…
Pass Parsing origin: <http://example .
org> against <http://example.org/foo/bar>
@ -46,6 +46,8 @@ Pass Parsing origin: <::> against <http://example.org/foo/bar>
Pass Parsing origin: <::23> against <http://example.org/foo/bar>
Pass Parsing origin: <foo://> against <http://example.org/foo/bar>
Pass Parsing origin: <http://a:b@c:29/d> against <http://example.org/foo/bar>
Pass Parsing origin: <http://é@é> against <about:blank>
Pass Parsing origin: <http://é@example.com> against <about:blank>
Pass Parsing origin: <http::@c:29> against <http://example.org/foo/bar>
Pass Parsing origin: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar>
Pass Parsing origin: <http://::@c@d:2> against <http://example.org/foo/bar>
@ -72,6 +74,7 @@ Pass Parsing origin: <http://[::127.0.0.1]> against <http://example.org/foo/bar>
Pass Parsing origin: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar>
Pass Parsing origin: <http://[2001::1]:80> against <http://example.org/foo/bar>
Pass Parsing origin: <http:/example.com/> against <http://example.org/foo/bar>
Pass Parsing origin: <http:/> against <http://example.com/>
Pass Parsing origin: <ftp:/example.com/> against <http://example.org/foo/bar>
Pass Parsing origin: <https:/example.com/> against <http://example.org/foo/bar>
Pass Parsing origin: <madeupscheme:/example.com/> against <http://example.org/foo/bar>
@ -237,6 +240,8 @@ Pass Parsing origin: <http://./> against <about:blank>
Pass Parsing origin: <http://../> against <about:blank>
Pass Parsing origin: <h://.> against <about:blank>
Pass Parsing origin: <http://foo:💩@example.com/bar> against <http://other.com/>
Pass Parsing origin: <https://localhost?q=🔥> against <about:blank>
Pass Parsing origin: <https://localhost#🔥> against <about:blank>
Pass Parsing origin: <#> against <test:test>
Pass Parsing origin: <#x> against <mailto:x@x.com>
Pass Parsing origin: <#x> against <about:blank>
@ -315,6 +320,9 @@ Pass Parsing origin: <http://10000000000.com> against <http://other.com/>
Pass Parsing origin: <http://4294967295> against <http://other.com/>
Pass Parsing origin: <http://0xffffffff> against <http://other.com/>
Pass Parsing origin: <https://0x.0x.0> against <about:blank>
Pass Parsing origin: <https://0x.0x.0x.0x> against <about:blank>
Pass Parsing origin: <https://00.00.00.00> against <about:blank>
Pass Parsing origin: <https://0000000000000000000000000000000000000000177.0.0.1> against <about:blank>
Pass Parsing origin: <asdf://%43%7C/> against <about:blank>
Pass Parsing origin: <http://[1:0::]> against <http://example.net/>
Pass Parsing origin: <sc://ñ> against <about:blank>

View file

@ -1,8 +1,8 @@
Harness status: OK
Found 871 tests
Found 890 tests
871 Pass
890 Pass
Pass Loading data…
Pass Parsing: <http://example .
org> against <http://example.org/foo/bar>
@ -53,6 +53,8 @@ Pass Parsing: <::> against <http://example.org/foo/bar>
Pass Parsing: <::23> against <http://example.org/foo/bar>
Pass Parsing: <foo://> against <http://example.org/foo/bar>
Pass Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar>
Pass Parsing: <http://é@é> without base
Pass Parsing: <http://é@example.com> without base
Pass Parsing: <http::@c:29> against <http://example.org/foo/bar>
Pass Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar>
Pass Parsing: <http://::@c@d:2> against <http://example.org/foo/bar>
@ -84,6 +86,7 @@ Pass Parsing: <http://[::127.0.0.1.]> against <http://example.org/foo/bar>
Pass Parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar>
Pass Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar>
Pass Parsing: <http:/example.com/> against <http://example.org/foo/bar>
Pass Parsing: <http:/> against <http://example.com/>
Pass Parsing: <ftp:/example.com/> against <http://example.org/foo/bar>
Pass Parsing: <https:/example.com/> against <http://example.org/foo/bar>
Pass Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar>
@ -335,6 +338,8 @@ Pass Parsing: <http://[::.1]> against <http://other.com/>
Pass Parsing: <http://[::%31]> against <http://other.com/>
Pass Parsing: <http://%5B::1]> against <http://other.com/>
Pass Parsing: <http://foo:💩@example.com/bar> against <http://other.com/>
Pass Parsing: <https://localhost?q=🔥> without base
Pass Parsing: <https://localhost#🔥> without base
Pass Parsing: <#> against <test:test>
Pass Parsing: <#x> against <mailto:x@x.com>
Pass Parsing: <#x> against <data:,>
@ -533,10 +538,15 @@ Pass Parsing: <http://10000000000> against <http://other.com/>
Pass Parsing: <http://10000000000.com> against <http://other.com/>
Pass Parsing: <http://4294967295> against <http://other.com/>
Pass Parsing: <http://4294967296> against <http://other.com/>
Pass Parsing: <http://18446744073709551616> against <http://other.com/>
Pass Parsing: <http://18446744075840258049> against <http://other.com/>
Pass Parsing: <http://0xffffffff> against <http://other.com/>
Pass Parsing: <http://0xffffffff1> against <http://other.com/>
Pass Parsing: <http://256.256.256.256> against <http://other.com/>
Pass Parsing: <https://0x.0x.0> without base
Pass Parsing: <https://0x.0x.0x.0x> without base
Pass Parsing: <https://00.00.00.00> without base
Pass Parsing: <https://0000000000000000000000000000000000000000177.0.0.1> without base
Pass Parsing: <https://0x100000000/test> without base
Pass Parsing: <https://256.0.0.1/test> without base
Pass Parsing: <file:///C%3A/> without base
@ -596,6 +606,8 @@ Pass Parsing: </c:/foo/bar> against <file:///c:/baz/qux>
Pass Parsing: </c|/foo/bar> against <file:///c:/baz/qux>
Pass Parsing: <file:\c:\foo\bar> against <file:///c:/baz/qux>
Pass Parsing: </c:/foo/bar> against <file://host/path>
Pass Parsing: <..> against <abc://x/y/z/C:/>
Pass Parsing: <..> against <file://x/C:/>
Pass Parsing: <file://example.net/C:/> without base
Pass Parsing: <file://1.2.3.4/C:/> without base
Pass Parsing: <file://[1::8]/C:/> without base
@ -885,4 +897,13 @@ Pass Parsing: <non-special:\/opaque> without base
Pass Parsing: <non-special:/\path> without base
Pass Parsing: <non-special://host\a> without base
Pass Parsing: <non-special://host/a\b> without base
Pass Parsing: <\a> against <foo://foo/a>
Pass Parsing: <\/a> against <foo://foo/a>
Pass Parsing: <\\a> against <foo://foo/a>
Pass Parsing: <data:text/plain,test#<foo> <bar>> without base
Pass Parsing: <about:blank#<foo> <bar>> without base
Pass Parsing: <data:text/plain,test#
 !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé> without base
Pass Parsing: <about:blank#
 !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~€Éé> without base
Pass Parsing: <http://example.com/U+d800<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U+dfff﷐﷏﷯ﷰ￾￿?U+d800<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U+dfff﷐﷏﷯ﷰ￾￿> without base

View file

@ -1,8 +1,8 @@
Harness status: OK
Found 395 tests
Found 403 tests
395 Pass
403 Pass
Pass Loading data…
Pass Origin parsing: <http://example .
org> against <http://example.org/foo/bar>
@ -46,6 +46,8 @@ Pass Origin parsing: <::> against <http://example.org/foo/bar>
Pass Origin parsing: <::23> against <http://example.org/foo/bar>
Pass Origin parsing: <foo://> against <http://example.org/foo/bar>
Pass Origin parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar>
Pass Origin parsing: <http://é@é> without base
Pass Origin parsing: <http://é@example.com> without base
Pass Origin parsing: <http::@c:29> against <http://example.org/foo/bar>
Pass Origin parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar>
Pass Origin parsing: <http://::@c@d:2> against <http://example.org/foo/bar>
@ -72,6 +74,7 @@ Pass Origin parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar>
Pass Origin parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar>
Pass Origin parsing: <http://[2001::1]:80> against <http://example.org/foo/bar>
Pass Origin parsing: <http:/example.com/> against <http://example.org/foo/bar>
Pass Origin parsing: <http:/> against <http://example.com/>
Pass Origin parsing: <ftp:/example.com/> against <http://example.org/foo/bar>
Pass Origin parsing: <https:/example.com/> against <http://example.org/foo/bar>
Pass Origin parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar>
@ -237,6 +240,8 @@ Pass Origin parsing: <http://./> without base
Pass Origin parsing: <http://../> without base
Pass Origin parsing: <h://.> without base
Pass Origin parsing: <http://foo:💩@example.com/bar> against <http://other.com/>
Pass Origin parsing: <https://localhost?q=🔥> without base
Pass Origin parsing: <https://localhost#🔥> without base
Pass Origin parsing: <#> against <test:test>
Pass Origin parsing: <#x> against <mailto:x@x.com>
Pass Origin parsing: <#x> against <data:,>
@ -316,6 +321,9 @@ Pass Origin parsing: <http://10000000000.com> against <http://other.com/>
Pass Origin parsing: <http://4294967295> against <http://other.com/>
Pass Origin parsing: <http://0xffffffff> against <http://other.com/>
Pass Origin parsing: <https://0x.0x.0> without base
Pass Origin parsing: <https://0x.0x.0x.0x> without base
Pass Origin parsing: <https://00.00.00.00> without base
Pass Origin parsing: <https://0000000000000000000000000000000000000000177.0.0.1> without base
Pass Origin parsing: <asdf://%43%7C/> without base
Pass Origin parsing: <http://[1:0::]> against <http://example.net/>
Pass Origin parsing: <sc://ñ> without base

View file

@ -629,6 +629,36 @@
"search": "",
"hash": ""
},
{
"input": "http://é@é",
"base": null,
"href": "http://%C3%A9@xn--9ca/",
"origin": "http://xn--9ca",
"protocol": "http:",
"username": "%C3%A9",
"password": "",
"host": "xn--9ca",
"hostname": "xn--9ca",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
{
"input": "http://é@example.com",
"base": null,
"href": "http://%C3%A9@example.com/",
"origin": "http://example.com",
"protocol": "http:",
"username": "%C3%A9",
"password": "",
"host": "example.com",
"hostname": "example.com",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
{
"input": "http::@c:29",
"base": "http://example.org/foo/bar",
@ -1044,6 +1074,21 @@
"search": "",
"hash": ""
},
{
"input": "http:/",
"base": "http://example.com/",
"href": "http://example.com/",
"origin": "http://example.com",
"protocol": "http:",
"username": "",
"password": "",
"host": "example.com",
"hostname": "example.com",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
{
"input": "ftp:/example.com/",
"base": "http://example.org/foo/bar",
@ -4268,6 +4313,36 @@
"search": "",
"hash": ""
},
{
"input": "https://localhost?q=🔥",
"base": null,
"href": "https://localhost/?q=%F0%9F%94%A5",
"origin": "https://localhost",
"protocol": "https:",
"username": "",
"password": "",
"host": "localhost",
"hostname": "localhost",
"port": "",
"pathname": "/",
"search": "?q=%F0%9F%94%A5",
"hash": ""
},
{
"input": "https://localhost#🔥",
"base": null,
"href": "https://localhost/#%F0%9F%94%A5",
"origin": "https://localhost",
"protocol": "https:",
"username": "",
"password": "",
"host": "localhost",
"hostname": "localhost",
"port": "",
"pathname": "/",
"search": "",
"hash": "#%F0%9F%94%A5"
},
"# resolving a fragment against any scheme succeeds",
{
"input": "#",
@ -6025,6 +6100,16 @@
"base": "http://other.com/",
"failure": true
},
{
"input": "http://18446744073709551616",
"base": "http://other.com/",
"failure": true
},
{
"input": "http://18446744075840258049",
"base": "http://other.com/",
"failure": true
},
{
"input": "http://0xffffffff",
"base": "http://other.com/",
@ -6065,6 +6150,51 @@
"search": "",
"hash": ""
},
{
"input": "https://0x.0x.0x.0x",
"base": null,
"href": "https://0.0.0.0/",
"origin": "https://0.0.0.0",
"protocol": "https:",
"username": "",
"password": "",
"host": "0.0.0.0",
"hostname": "0.0.0.0",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
{
"input": "https://00.00.00.00",
"base": null,
"href": "https://0.0.0.0/",
"origin": "https://0.0.0.0",
"protocol": "https:",
"username": "",
"password": "",
"host": "0.0.0.0",
"hostname": "0.0.0.0",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
{
"input": "https://0000000000000000000000000000000000000000177.0.0.1",
"base": null,
"href": "https://127.0.0.1/",
"origin": "https://127.0.0.1",
"protocol": "https:",
"username": "",
"password": "",
"host": "127.0.0.1",
"hostname": "127.0.0.1",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
"More IPv4 parsing (via https://github.com/jsdom/whatwg-url/issues/92)",
{
"input": "https://0x100000000/test",
@ -6805,6 +6935,34 @@
"search": "",
"hash": ""
},
{
"input": "..",
"base": "abc://x/y/z/C:/",
"href": "abc://x/y/z/",
"protocol": "abc:",
"username": "",
"password": "",
"hostname": "x",
"port": "",
"host": "x",
"pathname": "/y/z/",
"search": "",
"hash": ""
},
{
"input": "..",
"base": "file://x/C:/",
"href": "file://x/C:/",
"protocol": "file:",
"username": "",
"password": "",
"hostname": "x",
"port": "",
"host": "x",
"pathname": "/C:/",
"search": "",
"hash": ""
},
"# Do not drop the host in the presence of a drive letter",
{
"input": "file://example.net/C:/",
@ -10238,5 +10396,111 @@
"pathname": "/a\\b",
"search": "",
"hash": ""
},
"# Non-special relative URL and backslashes",
{
"comment": "Non-special relative: \\ should not enter RelativeSlash state",
"input": "\\a",
"base": "foo://foo/a",
"href": "foo://foo/\\a",
"protocol": "foo:",
"username": "",
"password": "",
"host": "foo",
"hostname": "foo",
"port": "",
"pathname": "/\\a",
"search": "",
"hash": ""
},
{
"comment": "Non-special relative: \\ should not enter RelativeSlash, so / is a path separator",
"input": "\\/a",
"base": "foo://foo/a",
"href": "foo://foo/\\/a",
"protocol": "foo:",
"username": "",
"password": "",
"host": "foo",
"hostname": "foo",
"port": "",
"pathname": "/\\/a",
"search": "",
"hash": ""
},
{
"comment": "Non-special relative: \\\\ should not trigger authority parsing",
"input": "\\\\a",
"base": "foo://foo/a",
"href": "foo://foo/\\\\a",
"protocol": "foo:",
"username": "",
"password": "",
"host": "foo",
"hostname": "foo",
"port": "",
"pathname": "/\\\\a",
"search": "",
"hash": ""
},
{
"comment": "Fragment with <> on data: URI",
"input": "data:text/plain,test#<foo> <bar>",
"base": null,
"href": "data:text/plain,test#%3Cfoo%3E%20%3Cbar%3E",
"protocol": "data:",
"username": "",
"password": "",
"host": "",
"hostname": "",
"port": "",
"pathname": "text/plain,test",
"search": "",
"hash": "#%3Cfoo%3E%20%3Cbar%3E"
},
{
"comment": "Fragment with <> on about:blank",
"input": "about:blank#<foo> <bar>",
"base": null,
"href": "about:blank#%3Cfoo%3E%20%3Cbar%3E",
"protocol": "about:",
"username": "",
"password": "",
"host": "",
"hostname": "",
"port": "",
"pathname": "blank",
"search": "",
"hash": "#%3Cfoo%3E%20%3Cbar%3E"
},
{
"comment": "Fragment percent-encode set on data: URI; tabs and newlines are removed",
"input":"data:text/plain,test#\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
"base": null,
"href": "data:text/plain,test#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9",
"protocol": "data:",
"username": "",
"password": "",
"host": "",
"hostname": "",
"port": "",
"pathname": "text/plain,test",
"search": "",
"hash": "#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
},
{
"comment": "Fragment percent-encode set on about:blank; tabs and newlines are removed",
"input": "about:blank#\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
"base": null,
"href": "about:blank#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9",
"protocol": "about:",
"username": "",
"password": "",
"host": "",
"hostname": "",
"port": "",
"pathname": "blank",
"search": "",
"hash": "#%00%01%1F%20!%22#$%&'()*+,-./09:;%3C=%3E?@AZ[\\]^_%60az{|}~%7F%C2%80%C2%81%C3%89%C3%A9"
}
]