summaryrefslogtreecommitdiff
path: root/node_modules/glob-to-regexp/test.js
diff options
context:
space:
mode:
authorakiyamn2023-09-24 23:22:21 +1000
committerakiyamn2023-09-24 23:22:21 +1000
commit4e87195739f2a5d9a05451b48773c8afdc680765 (patch)
tree9cba501844a4a11dcbdffc4050ed8189561c55ed /node_modules/glob-to-regexp/test.js
downloadprice-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.tar.gz
price-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.zip
Initial commit (by create-cloudflare CLI)
Diffstat (limited to 'node_modules/glob-to-regexp/test.js')
-rw-r--r--node_modules/glob-to-regexp/test.js235
1 files changed, 235 insertions, 0 deletions
diff --git a/node_modules/glob-to-regexp/test.js b/node_modules/glob-to-regexp/test.js
new file mode 100644
index 0000000..58ee622
--- /dev/null
+++ b/node_modules/glob-to-regexp/test.js
@@ -0,0 +1,235 @@
+var globToRegexp = require("./index.js");
+var assert = require("assert");
+
+function assertMatch(glob, str, opts) {
+ //console.log(glob, globToRegexp(glob, opts));
+ assert.ok(globToRegexp(glob, opts).test(str));
+}
+
+function assertNotMatch(glob, str, opts) {
+ //console.log(glob, globToRegexp(glob, opts));
+ assert.equal(false, globToRegexp(glob, opts).test(str));
+}
+
+function test(globstar) {
+ // Match everything
+ assertMatch("*", "foo");
+ assertMatch("*", "foo", { flags: 'g' });
+
+ // Match the end
+ assertMatch("f*", "foo");
+ assertMatch("f*", "foo", { flags: 'g' });
+
+ // Match the start
+ assertMatch("*o", "foo");
+ assertMatch("*o", "foo", { flags: 'g' });
+
+ // Match the middle
+ assertMatch("f*uck", "firetruck");
+ assertMatch("f*uck", "firetruck", { flags: 'g' });
+
+ // Don't match without Regexp 'g'
+ assertNotMatch("uc", "firetruck");
+ // Match anywhere with RegExp 'g'
+ assertMatch("uc", "firetruck", { flags: 'g' });
+
+ // Match zero characters
+ assertMatch("f*uck", "fuck");
+ assertMatch("f*uck", "fuck", { flags: 'g' });
+
+ // More complex matches
+ assertMatch("*.min.js", "http://example.com/jquery.min.js", {globstar: false});
+ assertMatch("*.min.*", "http://example.com/jquery.min.js", {globstar: false});
+ assertMatch("*/js/*.js", "http://example.com/js/jquery.min.js", {globstar: false});
+
+ // More complex matches with RegExp 'g' flag (complex regression)
+ assertMatch("*.min.*", "http://example.com/jquery.min.js", { flags: 'g' });
+ assertMatch("*.min.js", "http://example.com/jquery.min.js", { flags: 'g' });
+ assertMatch("*/js/*.js", "http://example.com/js/jquery.min.js", { flags: 'g' });
+
+ // Test string "\\\\/$^+?.()=!|{},[].*" represents <glob>\\/$^+?.()=!|{},[].*</glob>
+ // The equivalent regex is: /^\\\/\$\^\+\?\.\(\)\=\!\|\{\}\,\[\]\..*$/
+ // Both glob and regex match: \/$^+?.()=!|{},[].*
+ var testStr = "\\\\/$^+?.()=!|{},[].*";
+ var targetStr = "\\/$^+?.()=!|{},[].*";
+ assertMatch(testStr, targetStr);
+ assertMatch(testStr, targetStr, { flags: 'g' });
+
+ // Equivalent matches without/with using RegExp 'g'
+ assertNotMatch(".min.", "http://example.com/jquery.min.js");
+ assertMatch("*.min.*", "http://example.com/jquery.min.js");
+ assertMatch(".min.", "http://example.com/jquery.min.js", { flags: 'g' });
+
+ assertNotMatch("http:", "http://example.com/jquery.min.js");
+ assertMatch("http:*", "http://example.com/jquery.min.js");
+ assertMatch("http:", "http://example.com/jquery.min.js", { flags: 'g' });
+
+ assertNotMatch("min.js", "http://example.com/jquery.min.js");
+ assertMatch("*.min.js", "http://example.com/jquery.min.js");
+ assertMatch("min.js", "http://example.com/jquery.min.js", { flags: 'g' });
+
+ // Match anywhere (globally) using RegExp 'g'
+ assertMatch("min", "http://example.com/jquery.min.js", { flags: 'g' });
+ assertMatch("/js/", "http://example.com/js/jquery.min.js", { flags: 'g' });
+
+ assertNotMatch("/js*jq*.js", "http://example.com/js/jquery.min.js");
+ assertMatch("/js*jq*.js", "http://example.com/js/jquery.min.js", { flags: 'g' });
+
+ // Extended mode
+
+ // ?: Match one character, no more and no less
+ assertMatch("f?o", "foo", { extended: true });
+ assertNotMatch("f?o", "fooo", { extended: true });
+ assertNotMatch("f?oo", "foo", { extended: true });
+
+ // ?: Match one character with RegExp 'g'
+ assertMatch("f?o", "foo", { extended: true, globstar: globstar, flags: 'g' });
+ assertMatch("f?o", "fooo", { extended: true, globstar: globstar, flags: 'g' });
+ assertMatch("f?o?", "fooo", { extended: true, globstar: globstar, flags: 'g' });
+ assertNotMatch("?fo", "fooo", { extended: true, globstar: globstar, flags: 'g' });
+ assertNotMatch("f?oo", "foo", { extended: true, globstar: globstar, flags: 'g' });
+ assertNotMatch("foo?", "foo", { extended: true, globstar: globstar, flags: 'g' });
+
+ // []: Match a character range
+ assertMatch("fo[oz]", "foo", { extended: true });
+ assertMatch("fo[oz]", "foz", { extended: true });
+ assertNotMatch("fo[oz]", "fog", { extended: true });
+
+ // []: Match a character range and RegExp 'g' (regresion)
+ assertMatch("fo[oz]", "foo", { extended: true, globstar: globstar, flags: 'g' });
+ assertMatch("fo[oz]", "foz", { extended: true, globstar: globstar, flags: 'g' });
+ assertNotMatch("fo[oz]", "fog", { extended: true, globstar: globstar, flags: 'g' });
+
+ // {}: Match a choice of different substrings
+ assertMatch("foo{bar,baaz}", "foobaaz", { extended: true });
+ assertMatch("foo{bar,baaz}", "foobar", { extended: true });
+ assertNotMatch("foo{bar,baaz}", "foobuzz", { extended: true });
+ assertMatch("foo{bar,b*z}", "foobuzz", { extended: true });
+
+ // {}: Match a choice of different substrings and RegExp 'g' (regression)
+ assertMatch("foo{bar,baaz}", "foobaaz", { extended: true, globstar: globstar, flags: 'g' });
+ assertMatch("foo{bar,baaz}", "foobar", { extended: true, globstar: globstar, flags: 'g' });
+ assertNotMatch("foo{bar,baaz}", "foobuzz", { extended: true, globstar: globstar, flags: 'g' });
+ assertMatch("foo{bar,b*z}", "foobuzz", { extended: true, globstar: globstar, flags: 'g' });
+
+ // More complex extended matches
+ assertMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://foo.baaz.com/jquery.min.js",
+ { extended: true });
+ assertMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://moz.buzz.com/index.html",
+ { extended: true });
+ assertNotMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://moz.buzz.com/index.htm",
+ { extended: true });
+ assertNotMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://moz.bar.com/index.html",
+ { extended: true });
+ assertNotMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://flozz.buzz.com/index.html",
+ { extended: true });
+
+ // More complex extended matches and RegExp 'g' (regresion)
+ assertMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://foo.baaz.com/jquery.min.js",
+ { extended: true, globstar: globstar, flags: 'g' });
+ assertMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://moz.buzz.com/index.html",
+ { extended: true, globstar: globstar, flags: 'g' });
+ assertNotMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://moz.buzz.com/index.htm",
+ { extended: true, globstar: globstar, flags: 'g' });
+ assertNotMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://moz.bar.com/index.html",
+ { extended: true, globstar: globstar, flags: 'g' });
+ assertNotMatch("http://?o[oz].b*z.com/{*.js,*.html}",
+ "http://flozz.buzz.com/index.html",
+ { extended: true, globstar: globstar, flags: 'g' });
+
+ // globstar
+ assertMatch("http://foo.com/**/{*.js,*.html}",
+ "http://foo.com/bar/jquery.min.js",
+ { extended: true, globstar: globstar, flags: 'g' });
+ assertMatch("http://foo.com/**/{*.js,*.html}",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { extended: true, globstar: globstar, flags: 'g' });
+ assertMatch("http://foo.com/**",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { extended: true, globstar: globstar, flags: 'g' });
+
+ // Remaining special chars should still match themselves
+ // Test string "\\\\/$^+.()=!|,.*" represents <glob>\\/$^+.()=!|,.*</glob>
+ // The equivalent regex is: /^\\\/\$\^\+\.\(\)\=\!\|\,\..*$/
+ // Both glob and regex match: \/$^+.()=!|,.*
+ var testExtStr = "\\\\/$^+.()=!|,.*";
+ var targetExtStr = "\\/$^+.()=!|,.*";
+ assertMatch(testExtStr, targetExtStr, { extended: true });
+ assertMatch(testExtStr, targetExtStr, { extended: true, globstar: globstar, flags: 'g' });
+}
+
+// regression
+// globstar false
+test(false)
+// globstar true
+test(true);
+
+// globstar specific tests
+assertMatch("/foo/*", "/foo/bar.txt", {globstar: true });
+assertMatch("/foo/**", "/foo/baz.txt", {globstar: true });
+assertMatch("/foo/**", "/foo/bar/baz.txt", {globstar: true });
+assertMatch("/foo/*/*.txt", "/foo/bar/baz.txt", {globstar: true });
+assertMatch("/foo/**/*.txt", "/foo/bar/baz.txt", {globstar: true });
+assertMatch("/foo/**/*.txt", "/foo/bar/baz/qux.txt", {globstar: true });
+assertMatch("/foo/**/bar.txt", "/foo/bar.txt", {globstar: true });
+assertMatch("/foo/**/**/bar.txt", "/foo/bar.txt", {globstar: true });
+assertMatch("/foo/**/*/baz.txt", "/foo/bar/baz.txt", {globstar: true });
+assertMatch("/foo/**/*.txt", "/foo/bar.txt", {globstar: true });
+assertMatch("/foo/**/**/*.txt", "/foo/bar.txt", {globstar: true });
+assertMatch("/foo/**/*/*.txt", "/foo/bar/baz.txt", {globstar: true });
+assertMatch("**/*.txt", "/foo/bar/baz/qux.txt", {globstar: true });
+assertMatch("**/foo.txt", "foo.txt", {globstar: true });
+assertMatch("**/*.txt", "foo.txt", {globstar: true });
+
+assertNotMatch("/foo/*", "/foo/bar/baz.txt", {globstar: true });
+assertNotMatch("/foo/*.txt", "/foo/bar/baz.txt", {globstar: true });
+assertNotMatch("/foo/*/*.txt", "/foo/bar/baz/qux.txt", {globstar: true });
+assertNotMatch("/foo/*/bar.txt", "/foo/bar.txt", {globstar: true });
+assertNotMatch("/foo/*/*/baz.txt", "/foo/bar/baz.txt", {globstar: true });
+assertNotMatch("/foo/**.txt", "/foo/bar/baz/qux.txt", {globstar: true });
+assertNotMatch("/foo/bar**/*.txt", "/foo/bar/baz/qux.txt", {globstar: true });
+assertNotMatch("/foo/bar**", "/foo/bar/baz.txt", {globstar: true });
+assertNotMatch("**/.txt", "/foo/bar/baz/qux.txt", {globstar: true });
+assertNotMatch("*/*.txt", "/foo/bar/baz/qux.txt", {globstar: true });
+assertNotMatch("*/*.txt", "foo.txt", {globstar: true });
+
+assertNotMatch("http://foo.com/*",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { extended: true, globstar: true });
+assertNotMatch("http://foo.com/*",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { globstar: true });
+
+assertMatch("http://foo.com/*",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { globstar: false });
+assertMatch("http://foo.com/**",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { globstar: true });
+
+assertMatch("http://foo.com/*/*/jquery.min.js",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { globstar: true });
+assertMatch("http://foo.com/**/jquery.min.js",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { globstar: true });
+assertMatch("http://foo.com/*/*/jquery.min.js",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { globstar: false });
+assertMatch("http://foo.com/*/jquery.min.js",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { globstar: false });
+assertNotMatch("http://foo.com/*/jquery.min.js",
+ "http://foo.com/bar/baz/jquery.min.js",
+ { globstar: true });
+
+console.log("Ok!");