mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-27 02:05:07 +02:00
We were not properly handling the case that prefix code point was the empty string (which we represent as an OptionalNone). While this still resulted in the correct pattern string being generated, an incorrect regular expression was being generated causing matching to fail.
360 lines
28 KiB
Plaintext
360 lines
28 KiB
Plaintext
Harness status: OK
|
||
|
||
Found 354 tests
|
||
|
||
353 Pass
|
||
1 Fail
|
||
Pass Loading data...
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"/foo/ba"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"/foo/bar/"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: ["https://example.com/foo/bar"]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: ["https://example.com/foo/bar/baz"]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"hostname":"example.com","pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"hostname":"example.com","pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"/foo/bar","baseURL":"https://example.com"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"/foo/bar/baz","baseURL":"https://example.com"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: [{"hostname":"example.com","pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: [{"protocol":"https","hostname":"example.com","pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com"}] Inputs: [{"protocol":"https","hostname":"example.com","pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com"}] Inputs: [{"protocol":"https","hostname":"example.com","pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: [{"protocol":"https","hostname":"example.com","pathname":"/foo/bar","search":"otherquery","hash":"otherhash"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com"}] Inputs: [{"protocol":"https","hostname":"example.com","pathname":"/foo/bar","search":"otherquery","hash":"otherhash"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?otherquery#otherhash"}] Inputs: [{"protocol":"https","hostname":"example.com","pathname":"/foo/bar","search":"otherquery","hash":"otherhash"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: ["https://example.com/foo/bar"]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: ["https://example.com/foo/bar?otherquery#otherhash"]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: ["https://example.com/foo/bar?query#hash"]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: ["https://example.com/foo/bar/baz"]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: ["https://other.com/foo/bar"]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: ["http://other.com/foo/bar"]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: [{"pathname":"/foo/bar","baseURL":"https://example.com"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: [{"pathname":"/foo/bar/baz","baseURL":"https://example.com"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: [{"pathname":"/foo/bar","baseURL":"https://other.com"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"}] Inputs: [{"pathname":"/foo/bar","baseURL":"http://example.com"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/([^\\/]+?)"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar"}] Inputs: [{"pathname":"/foo/index.html"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar"}] Inputs: [{"pathname":"/foo/bar/"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/*"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/*"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/*"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/*"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar(.*)"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar(.*)"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar(.*)"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar(.*)"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar?"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar?"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar?"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar?"}] Inputs: [{"pathname":"/foobar"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar?"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar+"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar+"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar+"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar+"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar+"}] Inputs: [{"pathname":"/foobar"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar*"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar*"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar*"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar*"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/:bar*"}] Inputs: [{"pathname":"/foobar"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)?"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/*?"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)?"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/*?"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)?"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/*?"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)?"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/*?"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)?"}] Inputs: [{"pathname":"/foobar"}]
|
||
Pass Pattern: [{"pathname":"/foo/*?"}] Inputs: [{"pathname":"/foobar"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)?"}] Inputs: [{"pathname":"/fo"}]
|
||
Pass Pattern: [{"pathname":"/foo/*?"}] Inputs: [{"pathname":"/fo"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)+"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/*+"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)+"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/*+"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)+"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/*+"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)+"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/*+"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)+"}] Inputs: [{"pathname":"/foobar"}]
|
||
Pass Pattern: [{"pathname":"/foo/*+"}] Inputs: [{"pathname":"/foobar"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)+"}] Inputs: [{"pathname":"/fo"}]
|
||
Pass Pattern: [{"pathname":"/foo/*+"}] Inputs: [{"pathname":"/fo"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)*"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/**"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)*"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/**"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)*"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/**"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)*"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/**"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)*"}] Inputs: [{"pathname":"/foobar"}]
|
||
Pass Pattern: [{"pathname":"/foo/**"}] Inputs: [{"pathname":"/foobar"}]
|
||
Pass Pattern: [{"pathname":"/foo/(.*)*"}] Inputs: [{"pathname":"/fo"}]
|
||
Pass Pattern: [{"pathname":"/foo/**"}] Inputs: [{"pathname":"/fo"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}?"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}?"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}?"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}?"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}+"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}+"}] Inputs: [{"pathname":"/foo/bar/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}+"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}+"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}+"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}*"}] Inputs: [{"pathname":"/foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}*"}] Inputs: [{"pathname":"/foo/bar/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}*"}] Inputs: [{"pathname":"/foo/bar/baz"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}*"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"pathname":"/foo{/bar}*"}] Inputs: [{"pathname":"/foo/"}]
|
||
Pass Pattern: [{"protocol":"(café)"}] Inputs: undefined
|
||
Pass Pattern: [{"username":"(café)"}] Inputs: undefined
|
||
Pass Pattern: [{"password":"(café)"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"(café)"}] Inputs: undefined
|
||
Pass Pattern: [{"pathname":"(café)"}] Inputs: undefined
|
||
Pass Pattern: [{"search":"(café)"}] Inputs: undefined
|
||
Pass Pattern: [{"hash":"(café)"}] Inputs: undefined
|
||
Pass Pattern: [{"protocol":":café"}] Inputs: [{"protocol":"foo"}]
|
||
Pass Pattern: [{"username":":café"}] Inputs: [{"username":"foo"}]
|
||
Pass Pattern: [{"password":":café"}] Inputs: [{"password":"foo"}]
|
||
Pass Pattern: [{"hostname":":café"}] Inputs: [{"hostname":"foo"}]
|
||
Pass Pattern: [{"pathname":"/:café"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"search":":café"}] Inputs: [{"search":"foo"}]
|
||
Pass Pattern: [{"hash":":café"}] Inputs: [{"hash":"foo"}]
|
||
Pass Pattern: [{"protocol":":℘"}] Inputs: [{"protocol":"foo"}]
|
||
Pass Pattern: [{"username":":℘"}] Inputs: [{"username":"foo"}]
|
||
Pass Pattern: [{"password":":℘"}] Inputs: [{"password":"foo"}]
|
||
Pass Pattern: [{"hostname":":℘"}] Inputs: [{"hostname":"foo"}]
|
||
Pass Pattern: [{"pathname":"/:℘"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"search":":℘"}] Inputs: [{"search":"foo"}]
|
||
Pass Pattern: [{"hash":":℘"}] Inputs: [{"hash":"foo"}]
|
||
Pass Pattern: [{"protocol":":㐀"}] Inputs: [{"protocol":"foo"}]
|
||
Pass Pattern: [{"username":":㐀"}] Inputs: [{"username":"foo"}]
|
||
Pass Pattern: [{"password":":㐀"}] Inputs: [{"password":"foo"}]
|
||
Pass Pattern: [{"hostname":":㐀"}] Inputs: [{"hostname":"foo"}]
|
||
Pass Pattern: [{"pathname":"/:㐀"}] Inputs: [{"pathname":"/foo"}]
|
||
Pass Pattern: [{"search":":㐀"}] Inputs: [{"search":"foo"}]
|
||
Pass Pattern: [{"hash":":㐀"}] Inputs: [{"hash":"foo"}]
|
||
Pass Pattern: [{"protocol":"(.*)"}] Inputs: [{"protocol":"café"}]
|
||
Pass Pattern: [{"protocol":"(.*)"}] Inputs: [{"protocol":"cafe"}]
|
||
Pass Pattern: [{"protocol":"foo-bar"}] Inputs: [{"protocol":"foo-bar"}]
|
||
Pass Pattern: [{"username":"caf%C3%A9"}] Inputs: [{"username":"café"}]
|
||
Pass Pattern: [{"username":"café"}] Inputs: [{"username":"café"}]
|
||
Pass Pattern: [{"username":"caf%c3%a9"}] Inputs: [{"username":"café"}]
|
||
Pass Pattern: [{"password":"caf%C3%A9"}] Inputs: [{"password":"café"}]
|
||
Pass Pattern: [{"password":"café"}] Inputs: [{"password":"café"}]
|
||
Pass Pattern: [{"password":"caf%c3%a9"}] Inputs: [{"password":"café"}]
|
||
Pass Pattern: [{"hostname":"xn--caf-dma.com"}] Inputs: [{"hostname":"café.com"}]
|
||
Pass Pattern: [{"hostname":"café.com"}] Inputs: [{"hostname":"café.com"}]
|
||
Pass Pattern: ["http://<2F><><EFBFBD>U+deb2.com/"] Inputs: ["http://<2F><><EFBFBD>U+deb2.com/"]
|
||
Pass Pattern: ["http://\ud83d \udeb2"] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"\ud83d \udeb2"}] Inputs: undefined
|
||
Pass Pattern: [{"pathname":"\ud83d \udeb2"}] Inputs: []
|
||
Pass Pattern: [{"pathname":":\ud83d \udeb2"}] Inputs: undefined
|
||
Pass Pattern: [{"pathname":":a<><61><EFBFBD>U+dd00b"}] Inputs: []
|
||
Pass Pattern: [{"pathname":"test/:a<><61><EFBFBD>U+dc50b"}] Inputs: [{"pathname":"test/foo"}]
|
||
Pass Pattern: [{"pathname":":<3A><><EFBFBD>U+deb2"}] Inputs: undefined
|
||
Pass Pattern: [{"port":""}] Inputs: [{"protocol":"http","port":"80"}]
|
||
Pass Pattern: [{"protocol":"http","port":"80"}] Inputs: [{"protocol":"http","port":"80"}]
|
||
Pass Pattern: [{"protocol":"http","port":"80{20}?"}] Inputs: [{"protocol":"http","port":"80"}]
|
||
Pass Pattern: [{"protocol":"http","port":"80 "}] Inputs: [{"protocol":"http","port":"80"}]
|
||
Pass Pattern: [{"protocol":"http","port":"100000"}] Inputs: [{"protocol":"http","port":"100000"}]
|
||
Pass Pattern: [{"port":"80"}] Inputs: [{"protocol":"http","port":"80"}]
|
||
Pass Pattern: [{"protocol":"http{s}?","port":"80"}] Inputs: [{"protocol":"http","port":"80"}]
|
||
Pass Pattern: [{"port":"80"}] Inputs: [{"port":"80"}]
|
||
Pass Pattern: [{"port":"80"}] Inputs: [{"port":"8\t0"}]
|
||
Pass Pattern: [{"port":"80"}] Inputs: [{"port":"80x"}]
|
||
Pass Pattern: [{"port":"80"}] Inputs: [{"port":"80?x"}]
|
||
Pass Pattern: [{"port":"80"}] Inputs: [{"port":"80\\x"}]
|
||
Pass Pattern: [{"port":"(.*)"}] Inputs: [{"port":"invalid80"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"/foo/./bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/baz"}] Inputs: [{"pathname":"/foo/bar/../baz"}]
|
||
Pass Pattern: [{"pathname":"/caf%C3%A9"}] Inputs: [{"pathname":"/café"}]
|
||
Pass Pattern: [{"pathname":"/café"}] Inputs: [{"pathname":"/café"}]
|
||
Pass Pattern: [{"pathname":"/caf%c3%a9"}] Inputs: [{"pathname":"/café"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"foo/bar","baseURL":"https://example.com"}]
|
||
Pass Pattern: [{"pathname":"/foo/../bar"}] Inputs: [{"pathname":"/bar"}]
|
||
Pass Pattern: [{"pathname":"./foo/bar","baseURL":"https://example.com"}] Inputs: [{"pathname":"foo/bar","baseURL":"https://example.com"}]
|
||
Pass Pattern: [{"pathname":"","baseURL":"https://example.com"}] Inputs: [{"pathname":"/","baseURL":"https://example.com"}]
|
||
Pass Pattern: [{"pathname":"{/bar}","baseURL":"https://example.com/foo/"}] Inputs: [{"pathname":"./bar","baseURL":"https://example.com/foo/"}]
|
||
Pass Pattern: [{"pathname":"\\/bar","baseURL":"https://example.com/foo/"}] Inputs: [{"pathname":"./bar","baseURL":"https://example.com/foo/"}]
|
||
Pass Pattern: [{"pathname":"b","baseURL":"https://example.com/foo/"}] Inputs: [{"pathname":"./b","baseURL":"https://example.com/foo/"}]
|
||
Pass Pattern: [{"pathname":"foo/bar"}] Inputs: ["https://example.com/foo/bar"]
|
||
Pass Pattern: [{"pathname":"foo/bar","baseURL":"https://example.com"}] Inputs: ["https://example.com/foo/bar"]
|
||
Pass Pattern: [{"pathname":":name.html","baseURL":"https://example.com"}] Inputs: ["https://example.com/foo.html"]
|
||
Pass Pattern: [{"search":"q=caf%C3%A9"}] Inputs: [{"search":"q=café"}]
|
||
Pass Pattern: [{"search":"q=café"}] Inputs: [{"search":"q=café"}]
|
||
Pass Pattern: [{"search":"q=caf%c3%a9"}] Inputs: [{"search":"q=café"}]
|
||
Pass Pattern: [{"hash":"caf%C3%A9"}] Inputs: [{"hash":"café"}]
|
||
Pass Pattern: [{"hash":"café"}] Inputs: [{"hash":"café"}]
|
||
Pass Pattern: [{"hash":"caf%c3%a9"}] Inputs: [{"hash":"café"}]
|
||
Pass Pattern: [{"protocol":"about","pathname":"(blank|sourcedoc)"}] Inputs: ["about:blank"]
|
||
Pass Pattern: [{"protocol":"data","pathname":":number([0-9]+)"}] Inputs: ["data:8675309"]
|
||
Pass Pattern: [{"pathname":"/(\\m)"}] Inputs: undefined
|
||
Pass Pattern: [{"pathname":"/foo!"}] Inputs: [{"pathname":"/foo!"}]
|
||
Pass Pattern: [{"pathname":"/foo\\:"}] Inputs: [{"pathname":"/foo:"}]
|
||
Pass Pattern: [{"pathname":"/foo\\{"}] Inputs: [{"pathname":"/foo{"}]
|
||
Pass Pattern: [{"pathname":"/foo\\("}] Inputs: [{"pathname":"/foo("}]
|
||
Pass Pattern: [{"protocol":"javascript","pathname":"var x = 1;"}] Inputs: [{"protocol":"javascript","pathname":"var x = 1;"}]
|
||
Pass Pattern: [{"pathname":"var x = 1;"}] Inputs: [{"protocol":"javascript","pathname":"var x = 1;"}]
|
||
Pass Pattern: [{"protocol":"javascript","pathname":"var x = 1;"}] Inputs: [{"baseURL":"javascript:var x = 1;"}]
|
||
Pass Pattern: [{"protocol":"(data|javascript)","pathname":"var x = 1;"}] Inputs: [{"protocol":"javascript","pathname":"var x = 1;"}]
|
||
Pass Pattern: [{"protocol":"(https|javascript)","pathname":"var x = 1;"}] Inputs: [{"protocol":"javascript","pathname":"var x = 1;"}]
|
||
Pass Pattern: [{"pathname":"var x = 1;"}] Inputs: [{"pathname":"var x = 1;"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: ["./foo/bar","https://example.com"]
|
||
Pass Pattern: [{"pathname":"/foo/bar"}] Inputs: [{"pathname":"/foo/bar"},"https://example.com"]
|
||
Pass Pattern: ["https://example.com:8080/foo?bar#baz"] Inputs: [{"pathname":"/foo","search":"bar","hash":"baz","baseURL":"https://example.com:8080"}]
|
||
Pass Pattern: ["/foo?bar#baz","https://example.com:8080"] Inputs: [{"pathname":"/foo","search":"bar","hash":"baz","baseURL":"https://example.com:8080"}]
|
||
Pass Pattern: ["/foo"] Inputs: undefined
|
||
Pass Pattern: ["example.com/foo"] Inputs: undefined
|
||
Pass Pattern: ["http{s}?://{*.}?example.com/:product/:endpoint"] Inputs: ["https://sub.example.com/foo/bar"]
|
||
Pass Pattern: ["https://example.com?foo"] Inputs: ["https://example.com/?foo"]
|
||
Pass Pattern: ["https://example.com#foo"] Inputs: ["https://example.com/#foo"]
|
||
Pass Pattern: ["https://example.com:8080?foo"] Inputs: ["https://example.com:8080/?foo"]
|
||
Pass Pattern: ["https://example.com:8080#foo"] Inputs: ["https://example.com:8080/#foo"]
|
||
Pass Pattern: ["https://example.com/?foo"] Inputs: ["https://example.com/?foo"]
|
||
Pass Pattern: ["https://example.com/#foo"] Inputs: ["https://example.com/#foo"]
|
||
Pass Pattern: ["https://example.com/*?foo"] Inputs: ["https://example.com/?foo"]
|
||
Pass Pattern: ["https://example.com/*\\?foo"] Inputs: ["https://example.com/?foo"]
|
||
Pass Pattern: ["https://example.com/:name?foo"] Inputs: ["https://example.com/bar?foo"]
|
||
Pass Pattern: ["https://example.com/:name\\?foo"] Inputs: ["https://example.com/bar?foo"]
|
||
Pass Pattern: ["https://example.com/(bar)?foo"] Inputs: ["https://example.com/bar?foo"]
|
||
Pass Pattern: ["https://example.com/(bar)\\?foo"] Inputs: ["https://example.com/bar?foo"]
|
||
Pass Pattern: ["https://example.com/{bar}?foo"] Inputs: ["https://example.com/bar?foo"]
|
||
Pass Pattern: ["https://example.com/{bar}\\?foo"] Inputs: ["https://example.com/bar?foo"]
|
||
Pass Pattern: ["https://example.com/"] Inputs: ["https://example.com:8080/"]
|
||
Pass Pattern: ["data:foobar"] Inputs: ["data:foobar"]
|
||
Pass Pattern: ["data\\:foobar"] Inputs: ["data:foobar"]
|
||
Pass Pattern: ["https://{sub.}?example.com/foo"] Inputs: ["https://example.com/foo"]
|
||
Pass Pattern: ["https://{sub.}?example{.com/}foo"] Inputs: ["https://example.com/foo"]
|
||
Pass Pattern: ["{https://}example.com/foo"] Inputs: ["https://example.com/foo"]
|
||
Pass Pattern: ["https://(sub.)?example.com/foo"] Inputs: ["https://example.com/foo"]
|
||
Pass Pattern: ["https://(sub.)?example(.com/)foo"] Inputs: ["https://example.com/foo"]
|
||
Pass Pattern: ["(https://)example.com/foo"] Inputs: ["https://example.com/foo"]
|
||
Pass Pattern: ["https://{sub{.}}example.com/foo"] Inputs: ["https://example.com/foo"]
|
||
Pass Pattern: ["https://(sub(?:.))?example.com/foo"] Inputs: ["https://example.com/foo"]
|
||
Pass Pattern: ["file:///foo/bar"] Inputs: ["file:///foo/bar"]
|
||
Pass Pattern: ["data:"] Inputs: ["data:"]
|
||
Pass Pattern: ["foo://bar"] Inputs: ["foo://bad_url_browser_interop"]
|
||
Pass Pattern: ["(café)://foo"] Inputs: undefined
|
||
Pass Pattern: ["https://example.com/foo?bar#baz"] Inputs: [{"protocol":"https:","search":"?bar","hash":"#baz","baseURL":"http://example.com/foo"}]
|
||
Pass Pattern: [{"protocol":"http{s}?:","search":"?bar","hash":"#baz"}] Inputs: ["http://example.com/foo?bar#baz"]
|
||
Pass Pattern: ["?bar#baz","https://example.com/foo"] Inputs: ["?bar#baz","https://example.com/foo"]
|
||
Pass Pattern: ["?bar","https://example.com/foo#baz"] Inputs: ["?bar","https://example.com/foo#snafu"]
|
||
Pass Pattern: ["#baz","https://example.com/foo?bar"] Inputs: ["#baz","https://example.com/foo?bar"]
|
||
Pass Pattern: ["#baz","https://example.com/foo"] Inputs: ["#baz","https://example.com/foo"]
|
||
Pass Pattern: [{"pathname":"*"}] Inputs: ["foo","data:data-urls-cannot-be-base-urls"]
|
||
Pass Pattern: [{"pathname":"*"}] Inputs: ["foo","not|a|valid|url"]
|
||
Pass Pattern: ["https://foo\\:bar@example.com"] Inputs: ["https://foo:bar@example.com"]
|
||
Pass Pattern: ["https://foo@example.com"] Inputs: ["https://foo@example.com"]
|
||
Pass Pattern: ["https://\\:bar@example.com"] Inputs: ["https://:bar@example.com"]
|
||
Pass Pattern: ["https://:user::pass@example.com"] Inputs: ["https://foo:bar@example.com"]
|
||
Pass Pattern: ["https\\:foo\\:bar@example.com"] Inputs: ["https:foo:bar@example.com"]
|
||
Pass Pattern: ["data\\:foo\\:bar@example.com"] Inputs: ["data:foo:bar@example.com"]
|
||
Pass Pattern: ["https://foo{\\:}bar@example.com"] Inputs: ["https://foo:bar@example.com"]
|
||
Pass Pattern: ["data{\\:}channel.html","https://example.com"] Inputs: ["https://example.com/data:channel.html"]
|
||
Pass Pattern: ["http://[\\:\\:1]/"] Inputs: ["http://[::1]/"]
|
||
Pass Pattern: ["http://[\\:\\:1]:8080/"] Inputs: ["http://[::1]:8080/"]
|
||
Pass Pattern: ["http://[\\:\\:a]/"] Inputs: ["http://[::a]/"]
|
||
Pass Pattern: ["http://[:address]/"] Inputs: ["http://[::1]/"]
|
||
Pass Pattern: ["http://[\\:\\:AB\\::num]/"] Inputs: ["http://[::ab:1]/"]
|
||
Pass Pattern: [{"hostname":"[\\:\\:AB\\::num]"}] Inputs: [{"hostname":"[::ab:1]"}]
|
||
Pass Pattern: [{"hostname":"[\\:\\:xY\\::num]"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"{[\\:\\:ab\\::num]}"}] Inputs: [{"hostname":"[::ab:1]"}]
|
||
Pass Pattern: [{"hostname":"{[\\:\\:fé\\::num]}"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"{[\\:\\::num\\:1]}"}] Inputs: [{"hostname":"[::ab:1]"}]
|
||
Pass Pattern: [{"hostname":"{[\\:\\::num\\:fé]}"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"[*\\:1]"}] Inputs: [{"hostname":"[::ab:1]"}]
|
||
Pass Pattern: [{"hostname":"*\\:1]"}] Inputs: undefined
|
||
Pass Pattern: ["https://foo{{@}}example.com"] Inputs: ["https://foo@example.com"]
|
||
Pass Pattern: ["https://foo{@example.com"] Inputs: ["https://foo@example.com"]
|
||
Pass Pattern: ["data\\:text/javascript,let x = 100/:tens?5;"] Inputs: ["data:text/javascript,let x = 100/5;"]
|
||
Pass Pattern: [{"pathname":"/:id/:id"}] Inputs: undefined
|
||
Pass Pattern: [{"pathname":"/foo","baseURL":""}] Inputs: undefined
|
||
Pass Pattern: ["/foo",""] Inputs: undefined
|
||
Pass Pattern: [{"pathname":"/foo"},"https://example.com"] Inputs: undefined
|
||
Pass Pattern: [{"pathname":":name*"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"pathname":":name+"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"pathname":":name"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"protocol":":name*"}] Inputs: [{"protocol":"foobar"}]
|
||
Pass Pattern: [{"protocol":":name+"}] Inputs: [{"protocol":"foobar"}]
|
||
Pass Pattern: [{"protocol":":name"}] Inputs: [{"protocol":"foobar"}]
|
||
Pass Pattern: [{"hostname":"bad hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad#hostname"}] Inputs: [{"hostname":"bad"}]
|
||
Pass Pattern: [{"hostname":"bad%hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad/hostname"}] Inputs: [{"hostname":"bad"}]
|
||
Pass Pattern: [{"hostname":"bad\\:hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad<hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad>hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad?hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad@hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad[hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad]hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad\\\\hostname"}] Inputs: [{"hostname":"badhostname"}]
|
||
Pass Pattern: [{"hostname":"bad^hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad|hostname"}] Inputs: undefined
|
||
Pass Pattern: [{"hostname":"bad\nhostname"}] Inputs: [{"hostname":"badhostname"}]
|
||
Pass Pattern: [{"hostname":"bad\rhostname"}] Inputs: [{"hostname":"badhostname"}]
|
||
Pass Pattern: [{"hostname":"bad\thostname"}] Inputs: [{"hostname":"badhostname"}]
|
||
Pass Pattern: [{}] Inputs: ["https://example.com/"]
|
||
Pass Pattern: [] Inputs: ["https://example.com/"]
|
||
Pass Pattern: [] Inputs: [{}]
|
||
Pass Pattern: [] Inputs: []
|
||
Pass Pattern: [{"pathname":"(foo)(.*)"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"{(foo)bar}(.*)"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"(foo)?(.*)"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"{:foo}(.*)"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"{:foo}(barbaz)"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"{:foo}{(.*)}"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"{:foo}{(.*)bar}"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"{:foo}{bar(.*)}"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"{:foo}:bar(.*)"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"{:foo}?(.*)"}] Inputs: [{"pathname":"foobarbaz"}]
|
||
Pass Pattern: [{"pathname":"{:foo\\bar}"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"pathname":"{:foo\\.bar}"}] Inputs: [{"pathname":"foo.bar"}]
|
||
Pass Pattern: [{"pathname":"{:foo(foo)bar}"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"pathname":"{:foo}bar"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"pathname":":foo\\bar"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"pathname":":foo{}(.*)"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"pathname":":foo{}bar"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"pathname":":foo{}?bar"}] Inputs: [{"pathname":"foobar"}]
|
||
Fail Pattern: [{"pathname":"*{}**?"}] Inputs: [{"pathname":"foobar"}]
|
||
Pass Pattern: [{"pathname":":foo(baz)(.*)"}] Inputs: [{"pathname":"bazbar"}]
|
||
Pass Pattern: [{"pathname":":foo(baz)bar"}] Inputs: [{"pathname":"bazbar"}]
|
||
Pass Pattern: [{"pathname":"*/*"}] Inputs: [{"pathname":"foo/bar"}]
|
||
Pass Pattern: [{"pathname":"*\\/*"}] Inputs: [{"pathname":"foo/bar"}]
|
||
Pass Pattern: [{"pathname":"*/{*}"}] Inputs: [{"pathname":"foo/bar"}]
|
||
Pass Pattern: [{"pathname":"*//*"}] Inputs: [{"pathname":"foo/bar"}]
|
||
Pass Pattern: [{"pathname":"/:foo."}] Inputs: [{"pathname":"/bar."}]
|
||
Pass Pattern: [{"pathname":"/:foo.."}] Inputs: [{"pathname":"/bar.."}]
|
||
Pass Pattern: [{"pathname":"./foo"}] Inputs: [{"pathname":"./foo"}]
|
||
Pass Pattern: [{"pathname":"../foo"}] Inputs: [{"pathname":"../foo"}]
|
||
Pass Pattern: [{"pathname":":foo./"}] Inputs: [{"pathname":"bar./"}]
|
||
Pass Pattern: [{"pathname":":foo../"}] Inputs: [{"pathname":"bar../"}]
|
||
Pass Pattern: [{"pathname":"/:foo\\bar"}] Inputs: [{"pathname":"/bazbar"}]
|
||
Pass Pattern: [{"pathname":"/foo/bar"},{"ignoreCase":true}] Inputs: [{"pathname":"/FOO/BAR"}]
|
||
Pass Pattern: [{"ignoreCase":true}] Inputs: [{"pathname":"/FOO/BAR"}]
|
||
Pass Pattern: ["https://example.com:8080/foo?bar#baz",{"ignoreCase":true}] Inputs: [{"pathname":"/FOO","search":"BAR","hash":"BAZ","baseURL":"https://example.com:8080"}]
|
||
Pass Pattern: ["/foo?bar#baz","https://example.com:8080",{"ignoreCase":true}] Inputs: [{"pathname":"/FOO","search":"BAR","hash":"BAZ","baseURL":"https://example.com:8080"}]
|
||
Pass Pattern: ["/foo?bar#baz",{"ignoreCase":true},"https://example.com:8080"] Inputs: [{"pathname":"/FOO","search":"BAR","hash":"BAZ","baseURL":"https://example.com:8080"}]
|
||
Pass Pattern: [{"search":"foo","baseURL":"https://example.com/a/+/b"}] Inputs: [{"search":"foo","baseURL":"https://example.com/a/+/b"}]
|
||
Pass Pattern: [{"hash":"foo","baseURL":"https://example.com/?q=*&v=?&hmm={}&umm=()"}] Inputs: [{"hash":"foo","baseURL":"https://example.com/?q=*&v=?&hmm={}&umm=()"}]
|
||
Pass Pattern: ["#foo","https://example.com/?q=*&v=?&hmm={}&umm=()"] Inputs: ["https://example.com/?q=*&v=?&hmm={}&umm=()#foo"]
|
||
Pass Pattern: [{"pathname":"/([[a-z]--a])"}] Inputs: [{"pathname":"/a"}]
|
||
Pass Pattern: [{"pathname":"/([[a-z]--a])"}] Inputs: [{"pathname":"/z"}]
|
||
Pass Pattern: [{"pathname":"/([\\d&&[0-1]])"}] Inputs: [{"pathname":"/0"}]
|
||
Pass Pattern: [{"pathname":"/([\\d&&[0-1]])"}] Inputs: [{"pathname":"/3"}] |