mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-10 13:18:45 +02:00
MozReview-Commit-ID: CK39lpGglKA --HG-- extra : transplant_source : m%0C%D4%E0W%00%0F%00%D05%1E%8D%D8%91%C2%218nFB
58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
Components.utils.import("resource://gre/modules/MatchPattern.jsm");
|
|
Components.utils.import("resource://gre/modules/Services.jsm");
|
|
|
|
function test(url, pattern) {
|
|
let uri = Services.io.newURI(url, null, null);
|
|
let m = new MatchGlobs(pattern);
|
|
return m.matches(uri.spec);
|
|
}
|
|
|
|
function pass({url, pattern}) {
|
|
ok(test(url, pattern), `Expected match: ${JSON.stringify(pattern)}, ${url}`);
|
|
}
|
|
|
|
function fail({url, pattern}) {
|
|
ok(!test(url, pattern), `Expected no match: ${JSON.stringify(pattern)}, ${url}`);
|
|
}
|
|
|
|
function run_test() {
|
|
let moz = "http://mozilla.org";
|
|
|
|
pass({url: moz, pattern: ["*"]});
|
|
pass({url: moz, pattern: ["http://*"]}),
|
|
pass({url: moz, pattern: ["*mozilla*"]});
|
|
pass({url: moz, pattern: ["*example*", "*mozilla*"]});
|
|
|
|
pass({url: moz, pattern: ["*://*"]});
|
|
pass({url: "https://mozilla.org", pattern: ["*://*"]});
|
|
|
|
// Documentation example
|
|
pass({url: "http://www.example.com/foo/bar", pattern: ["http://???.example.com/foo/*"]});
|
|
pass({url: "http://the.example.com/foo/", pattern: ["http://???.example.com/foo/*"]});
|
|
fail({url: "http://my.example.com/foo/bar", pattern: ["http://???.example.com/foo/*"]});
|
|
fail({url: "http://example.com/foo/", pattern: ["http://???.example.com/foo/*"]});
|
|
fail({url: "http://www.example.com/foo", pattern: ["http://???.example.com/foo/*"]});
|
|
|
|
// Matches path
|
|
let path = moz + "/abc/def";
|
|
pass({url: path, pattern: ["*def"]});
|
|
pass({url: path, pattern: ["*c/d*"]});
|
|
pass({url: path, pattern: ["*org/abc*"]});
|
|
fail({url: path + "/", pattern: ["*def"]});
|
|
|
|
// Trailing slash
|
|
pass({url: moz, pattern: ["*.org/"]});
|
|
fail({url: moz, pattern: ["*.org"]});
|
|
|
|
// Wrong TLD
|
|
fail({url: moz, pattern: ["www*.m*.com/"]});
|
|
// Case sensitive
|
|
fail({url: moz, pattern: ["*.ORG/"]});
|
|
|
|
fail({url: moz, pattern: []});
|
|
}
|