mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-25 17:25:08 +02:00
Add `ECMAScriptRegex`, LibRegex's C++ facade for ECMAScript regexes. The facade owns compilation, execution, captures, named groups, and error translation for the Rust backend, which lets callers stop depending on the legacy parser and matcher types directly. Use it in the remaining non-LibJS callers: URLPattern, HTML input pattern handling, and the places in LibHTTP that only needed token validation. Where a full regex engine was unnecessary, replace those call sites with direct character checks. Also update focused LibURL, LibHTTP, and WPT coverage for the migrated callers and corrected surrogate handling.
888 lines
46 KiB
Plaintext
888 lines
46 KiB
Plaintext
Harness status: OK
|
||
|
||
Found 871 tests
|
||
|
||
871 Pass
|
||
Pass Loading data…
|
||
Pass Parsing: <http://example .
|
||
org> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <https://test:@test> without base
|
||
Pass Parsing: <https://:@test> without base
|
||
Pass Parsing: <non-special://test:@test/x> without base
|
||
Pass Parsing: <non-special://:@test/x> without base
|
||
Pass Parsing: <http:foo.com> against <http://example.org/foo/bar>
|
||
Pass Parsing: < :foo.com
|
||
> against <http://example.org/foo/bar>
|
||
Pass Parsing: < foo.com > against <http://example.org/foo/bar>
|
||
Pass Parsing: <a: foo.com> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar>
|
||
Pass Parsing: <lolscheme:x x#x x> without base
|
||
Pass Parsing: <http://f:/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f:0/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f:b/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f: /c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f:
|
||
/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f:999999/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <non-special://f:999999/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar>
|
||
Pass Parsing: <> against <http://example.org/foo/bar>
|
||
Pass Parsing: < > against <http://example.org/foo/bar>
|
||
Pass Parsing: <:foo.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <:foo.com\> against <http://example.org/foo/bar>
|
||
Pass Parsing: <:> against <http://example.org/foo/bar>
|
||
Pass Parsing: <:a> against <http://example.org/foo/bar>
|
||
Pass Parsing: <:/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <:\> against <http://example.org/foo/bar>
|
||
Pass Parsing: <:#> against <http://example.org/foo/bar>
|
||
Pass Parsing: <#> against <http://example.org/foo/bar>
|
||
Pass Parsing: <#/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <#\> against <http://example.org/foo/bar>
|
||
Pass Parsing: <#;?> against <http://example.org/foo/bar>
|
||
Pass Parsing: <?> against <http://example.org/foo/bar>
|
||
Pass Parsing: </> against <http://example.org/foo/bar>
|
||
Pass Parsing: <:23> against <http://example.org/foo/bar>
|
||
Pass Parsing: </:23> against <http://example.org/foo/bar>
|
||
Pass Parsing: <\x> against <http://example.org/foo/bar>
|
||
Pass Parsing: <\\x\hello> against <http://example.org/foo/bar>
|
||
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::@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>
|
||
Pass Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://foo.com/\@> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http:\\foo.com\> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://a:b@c\> without base
|
||
Pass Parsing: <ws://a@b\c> without base
|
||
Pass Parsing: <foo:/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <foo:/bar.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <foo://///////> against <http://example.org/foo/bar>
|
||
Pass Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <foo:////://///> against <http://example.org/foo/bar>
|
||
Pass Parsing: <c:/foo> against <http://example.org/foo/bar>
|
||
Pass Parsing: <//foo/bar> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar>
|
||
Pass Parsing: <[61:24:74]:98> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://[1::2]:3:4> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://2001::1> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://2001::1]> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://2001::1]:80> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://[2001::1]> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar>
|
||
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: <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>
|
||
Pass Parsing: <file:/example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <file://example:1/> without base
|
||
Pass Parsing: <file://example:test/> without base
|
||
Pass Parsing: <file://example%/> without base
|
||
Pass Parsing: <file://[example]/> without base
|
||
Pass Parsing: <ftps:/example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <gopher:/example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <ws:/example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <wss:/example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <data:/example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <javascript:/example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <mailto:/example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <http:example.com/> against <http://example.org/foo/bar>
|
||
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>
|
||
Pass Parsing: <ftps:example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <gopher:example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <ws:example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <wss:example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <data:example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <javascript:example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: <mailto:example.com/> against <http://example.org/foo/bar>
|
||
Pass Parsing: </a/b/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: </a/ /c> against <http://example.org/foo/bar>
|
||
Pass Parsing: </a%2fc> against <http://example.org/foo/bar>
|
||
Pass Parsing: </a/%2f/c> against <http://example.org/foo/bar>
|
||
Pass Parsing: <#β> against <http://example.org/foo/bar>
|
||
Pass Parsing: <data:text/html,test#test> against <http://example.org/foo/bar>
|
||
Pass Parsing: <tel:1234567890> against <http://example.org/foo/bar>
|
||
Pass Parsing: <ssh://example.com/foo/bar.git> against <http://example.org/>
|
||
Pass Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path>
|
||
Pass Parsing: < File:c|////foo\bar.html> against <file:///tmp/mock/path>
|
||
Pass Parsing: <C|/foo/bar> against <file:///tmp/mock/path>
|
||
Pass Parsing: </C|\foo\bar> against <file:///tmp/mock/path>
|
||
Pass Parsing: <//C|/foo/bar> against <file:///tmp/mock/path>
|
||
Pass Parsing: <//server/file> against <file:///tmp/mock/path>
|
||
Pass Parsing: <\\server\file> against <file:///tmp/mock/path>
|
||
Pass Parsing: </\server/file> against <file:///tmp/mock/path>
|
||
Pass Parsing: <file:///foo/bar.txt> against <file:///tmp/mock/path>
|
||
Pass Parsing: <file:///home/me> against <file:///tmp/mock/path>
|
||
Pass Parsing: <//> against <file:///tmp/mock/path>
|
||
Pass Parsing: <///> against <file:///tmp/mock/path>
|
||
Pass Parsing: <///test> against <file:///tmp/mock/path>
|
||
Pass Parsing: <file://test> against <file:///tmp/mock/path>
|
||
Pass Parsing: <file://localhost> against <file:///tmp/mock/path>
|
||
Pass Parsing: <file://localhost/> against <file:///tmp/mock/path>
|
||
Pass Parsing: <file://localhost/test> against <file:///tmp/mock/path>
|
||
Pass Parsing: <test> against <file:///tmp/mock/path>
|
||
Pass Parsing: <file:test> against <file:///tmp/mock/path>
|
||
Pass Parsing: <file:///w|m> without base
|
||
Pass Parsing: <file:///w||m> without base
|
||
Pass Parsing: <file:///w|/m> without base
|
||
Pass Parsing: <file:C|/m/> without base
|
||
Pass Parsing: <file:C||/m/> without base
|
||
Pass Parsing: <http://example.com/././foo> without base
|
||
Pass Parsing: <http://example.com/./.foo> without base
|
||
Pass Parsing: <http://example.com/foo/.> without base
|
||
Pass Parsing: <http://example.com/foo/./> without base
|
||
Pass Parsing: <http://example.com/foo/bar/..> without base
|
||
Pass Parsing: <http://example.com/foo/bar/../> without base
|
||
Pass Parsing: <http://example.com/foo/..bar> without base
|
||
Pass Parsing: <http://example.com/foo/bar/../ton> without base
|
||
Pass Parsing: <http://example.com/foo/bar/../ton/../../a> without base
|
||
Pass Parsing: <http://example.com/foo/../../..> without base
|
||
Pass Parsing: <http://example.com/foo/../../../ton> without base
|
||
Pass Parsing: <http://example.com/foo/%2e> without base
|
||
Pass Parsing: <http://example.com/foo/%2e%2> without base
|
||
Pass Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> without base
|
||
Pass Parsing: <http://example.com////../..> without base
|
||
Pass Parsing: <http://example.com/foo/bar//../..> without base
|
||
Pass Parsing: <http://example.com/foo/bar//..> without base
|
||
Pass Parsing: <http://example.com/foo> without base
|
||
Pass Parsing: <http://example.com/%20foo> without base
|
||
Pass Parsing: <http://example.com/foo%> without base
|
||
Pass Parsing: <http://example.com/foo%2> without base
|
||
Pass Parsing: <http://example.com/foo%2zbar> without base
|
||
Pass Parsing: <http://example.com/foo%2©zbar> without base
|
||
Pass Parsing: <http://example.com/foo%41%7a> without base
|
||
Pass Parsing: <http://example.com/foo %91> without base
|
||
Pass Parsing: <http://example.com/foo%00%51> without base
|
||
Pass Parsing: <http://example.com/(%28:%3A%29)> without base
|
||
Pass Parsing: <http://example.com/%3A%3a%3C%3c> without base
|
||
Pass Parsing: <http://example.com/foo bar> without base
|
||
Pass Parsing: <http://example.com\\foo\\bar> without base
|
||
Pass Parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> without base
|
||
Pass Parsing: <http://example.com/@asdf%40> without base
|
||
Pass Parsing: <http://example.com/你好你好> without base
|
||
Pass Parsing: <http://example.com/‥/foo> without base
|
||
Pass Parsing: <http://example.com//foo> without base
|
||
Pass Parsing: <http://example.com//foo//bar> without base
|
||
Pass Parsing: <http://www.google.com/foo?bar=baz#> without base
|
||
Pass Parsing: <http://www.google.com/foo?bar=baz# »> without base
|
||
Pass Parsing: <data:test# »> without base
|
||
Pass Parsing: <http://www.google.com> without base
|
||
Pass Parsing: <http://192.0x00A80001> without base
|
||
Pass Parsing: <http://www/foo%2Ehtml> without base
|
||
Pass Parsing: <http://www/foo/%2E/html> without base
|
||
Pass Parsing: <http://user:pass@/> without base
|
||
Pass Parsing: <http://%25DOMAIN:foobar@foodomain.com/> without base
|
||
Pass Parsing: <http:\\www.google.com\foo> without base
|
||
Pass Parsing: <http://foo:80/> without base
|
||
Pass Parsing: <http://foo:81/> without base
|
||
Pass Parsing: <httpa://foo:80/> without base
|
||
Pass Parsing: <http://foo:-80/> without base
|
||
Pass Parsing: <https://foo:443/> without base
|
||
Pass Parsing: <https://foo:80/> without base
|
||
Pass Parsing: <ftp://foo:21/> without base
|
||
Pass Parsing: <ftp://foo:80/> without base
|
||
Pass Parsing: <gopher://foo:70/> without base
|
||
Pass Parsing: <gopher://foo:443/> without base
|
||
Pass Parsing: <ws://foo:80/> without base
|
||
Pass Parsing: <ws://foo:81/> without base
|
||
Pass Parsing: <ws://foo:443/> without base
|
||
Pass Parsing: <ws://foo:815/> without base
|
||
Pass Parsing: <wss://foo:80/> without base
|
||
Pass Parsing: <wss://foo:81/> without base
|
||
Pass Parsing: <wss://foo:443/> without base
|
||
Pass Parsing: <wss://foo:815/> without base
|
||
Pass Parsing: <http:/example.com/> without base
|
||
Pass Parsing: <ftp:/example.com/> without base
|
||
Pass Parsing: <https:/example.com/> without base
|
||
Pass Parsing: <madeupscheme:/example.com/> without base
|
||
Pass Parsing: <file:/example.com/> without base
|
||
Pass Parsing: <ftps:/example.com/> without base
|
||
Pass Parsing: <gopher:/example.com/> without base
|
||
Pass Parsing: <ws:/example.com/> without base
|
||
Pass Parsing: <wss:/example.com/> without base
|
||
Pass Parsing: <data:/example.com/> without base
|
||
Pass Parsing: <javascript:/example.com/> without base
|
||
Pass Parsing: <mailto:/example.com/> without base
|
||
Pass Parsing: <http:example.com/> without base
|
||
Pass Parsing: <ftp:example.com/> without base
|
||
Pass Parsing: <https:example.com/> without base
|
||
Pass Parsing: <madeupscheme:example.com/> without base
|
||
Pass Parsing: <ftps:example.com/> without base
|
||
Pass Parsing: <gopher:example.com/> without base
|
||
Pass Parsing: <ws:example.com/> without base
|
||
Pass Parsing: <wss:example.com/> without base
|
||
Pass Parsing: <data:example.com/> without base
|
||
Pass Parsing: <javascript:example.com/> without base
|
||
Pass Parsing: <mailto:example.com/> without base
|
||
Pass Parsing: <https://example.com/aaa/bbb/%2e%2e?query> without base
|
||
Pass Parsing: <http:@www.example.com> without base
|
||
Pass Parsing: <http:/@www.example.com> without base
|
||
Pass Parsing: <http://@www.example.com> without base
|
||
Pass Parsing: <http:a:b@www.example.com> without base
|
||
Pass Parsing: <http:/a:b@www.example.com> without base
|
||
Pass Parsing: <http://a:b@www.example.com> without base
|
||
Pass Parsing: <http://@pple.com> without base
|
||
Pass Parsing: <http::b@www.example.com> without base
|
||
Pass Parsing: <http:/:b@www.example.com> without base
|
||
Pass Parsing: <http://:b@www.example.com> without base
|
||
Pass Parsing: <http:/:@/www.example.com> without base
|
||
Pass Parsing: <http://user@/www.example.com> without base
|
||
Pass Parsing: <http:@/www.example.com> without base
|
||
Pass Parsing: <http:/@/www.example.com> without base
|
||
Pass Parsing: <http://@/www.example.com> without base
|
||
Pass Parsing: <https:@/www.example.com> without base
|
||
Pass Parsing: <http:a:b@/www.example.com> without base
|
||
Pass Parsing: <http:/a:b@/www.example.com> without base
|
||
Pass Parsing: <http://a:b@/www.example.com> without base
|
||
Pass Parsing: <http::@/www.example.com> without base
|
||
Pass Parsing: <http:a:@www.example.com> without base
|
||
Pass Parsing: <http:/a:@www.example.com> without base
|
||
Pass Parsing: <http://a:@www.example.com> without base
|
||
Pass Parsing: <http://www.@pple.com> without base
|
||
Pass Parsing: <http:@:www.example.com> without base
|
||
Pass Parsing: <http:/@:www.example.com> without base
|
||
Pass Parsing: <http://@:www.example.com> without base
|
||
Pass Parsing: <http://:@www.example.com> without base
|
||
Pass Parsing: </> against <http://www.example.com/test>
|
||
Pass Parsing: </test.txt> against <http://www.example.com/test>
|
||
Pass Parsing: <.> against <http://www.example.com/test>
|
||
Pass Parsing: <..> against <http://www.example.com/test>
|
||
Pass Parsing: <test.txt> against <http://www.example.com/test>
|
||
Pass Parsing: <./test.txt> against <http://www.example.com/test>
|
||
Pass Parsing: <../test.txt> against <http://www.example.com/test>
|
||
Pass Parsing: <../aaa/test.txt> against <http://www.example.com/test>
|
||
Pass Parsing: <../../test.txt> against <http://www.example.com/test>
|
||
Pass Parsing: <中/test.txt> against <http://www.example.com/test>
|
||
Pass Parsing: <http://www.example2.com> against <http://www.example.com/test>
|
||
Pass Parsing: <//www.example2.com> against <http://www.example.com/test>
|
||
Pass Parsing: <file:...> against <http://www.example.com/test>
|
||
Pass Parsing: <file:..> against <http://www.example.com/test>
|
||
Pass Parsing: <file:a> against <http://www.example.com/test>
|
||
Pass Parsing: <file:.> without base
|
||
Pass Parsing: <file:.> against <http://www.example.com/test>
|
||
Pass Parsing: <http://ExAmPlE.CoM> against <http://other.com/>
|
||
Pass Parsing: <http://example example.com> against <http://other.com/>
|
||
Pass Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/>
|
||
Pass Parsing: <http://[]> against <http://other.com/>
|
||
Pass Parsing: <http://[:]> against <http://other.com/>
|
||
Pass Parsing: <http://GOO goo.com> against <http://other.com/>
|
||
Pass Parsing: <http://GOOgoo.com> against <http://other.com/>
|
||
Pass Parsing: < |