minimatch
Advanced tools
Comparing version 0.2.11 to 0.2.12
@@ -807,3 +807,3 @@ ;(function (require, exports, module, platform) { | ||
// ending in a * or ** will make it less strict. | ||
re = "^" + re + "$" | ||
re = "^(?:" + re + ")$" | ||
@@ -810,0 +810,0 @@ // can match anything, as long as it's not this. |
@@ -5,3 +5,3 @@ { | ||
"description": "a glob matcher in javascript", | ||
"version": "0.2.11", | ||
"version": "0.2.12", | ||
"repository": { | ||
@@ -8,0 +8,0 @@ "type": "git", |
@@ -16,271 +16,373 @@ // http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test | ||
tap.test("basic tests", function (t) { | ||
var start = Date.now() | ||
// [ pattern, [matches], MM opts, files, TAP opts] | ||
; [ "http://www.bashcookbook.com/bashinfo" + | ||
"/source/bash-1.14.7/tests/glob-test" | ||
, ["a*", ["a", "abc", "abd", "abe"]] | ||
, ["X*", ["X*"], {nonull: true}] | ||
var patterns = | ||
[ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test" | ||
, ["a*", ["a", "abc", "abd", "abe"]] | ||
, ["X*", ["X*"], {nonull: true}] | ||
// allow null glob expansion | ||
, ["X*", []] | ||
// allow null glob expansion | ||
, ["X*", []] | ||
// isaacs: Slightly different than bash/sh/ksh | ||
// \\* is not un-escaped to literal "*" in a failed match, | ||
// but it does make it get treated as a literal star | ||
, ["\\*", ["\\*"], {nonull: true}] | ||
, ["\\**", ["\\**"], {nonull: true}] | ||
, ["\\*\\*", ["\\*\\*"], {nonull: true}] | ||
// isaacs: Slightly different than bash/sh/ksh | ||
// \\* is not un-escaped to literal "*" in a failed match, | ||
// but it does make it get treated as a literal star | ||
, ["\\*", ["\\*"], {nonull: true}] | ||
, ["\\**", ["\\**"], {nonull: true}] | ||
, ["\\*\\*", ["\\*\\*"], {nonull: true}] | ||
, ["b*/", ["bdir/"]] | ||
, ["c*", ["c", "ca", "cb"]] | ||
, ["**", files] | ||
, ["b*/", ["bdir/"]] | ||
, ["c*", ["c", "ca", "cb"]] | ||
, ["**", files] | ||
, ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] | ||
, ["s/\\..*//", ["s/\\..*//"], {nonull: true}] | ||
, ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] | ||
, ["s/\\..*//", ["s/\\..*//"], {nonull: true}] | ||
, "legendary larry crashes bashes" | ||
, ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" | ||
, ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] | ||
, ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" | ||
, ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] | ||
, "legendary larry crashes bashes" | ||
, ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" | ||
, ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] | ||
, ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" | ||
, ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] | ||
, "character classes" | ||
, ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] | ||
, ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", | ||
"bdir/", "ca", "cb", "dd", "de"]] | ||
, ["a*[^c]", ["abd", "abe"]] | ||
, function () { files.push("a-b", "aXb") } | ||
, ["a[X-]b", ["a-b", "aXb"]] | ||
, function () { files.push(".x", ".y") } | ||
, ["[^a-c]*", ["d", "dd", "de"]] | ||
, function () { files.push("a*b/", "a*b/ooo") } | ||
, ["a\\*b/*", ["a*b/ooo"]] | ||
, ["a\\*?/*", ["a*b/ooo"]] | ||
, ["*\\\\!*", [], {null: true}, ["echo !7"]] | ||
, ["*\\!*", ["echo !7"], null, ["echo !7"]] | ||
, ["*.\\*", ["r.*"], null, ["r.*"]] | ||
, ["a[b]c", ["abc"]] | ||
, ["a[\\b]c", ["abc"]] | ||
, ["a?c", ["abc"]] | ||
, ["a\\*c", [], {null: true}, ["abc"]] | ||
, ["", [""], { null: true }, [""]] | ||
, "character classes" | ||
, ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] | ||
, ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", | ||
"bdir/", "ca", "cb", "dd", "de"]] | ||
, ["a*[^c]", ["abd", "abe"]] | ||
, function () { files.push("a-b", "aXb") } | ||
, ["a[X-]b", ["a-b", "aXb"]] | ||
, function () { files.push(".x", ".y") } | ||
, ["[^a-c]*", ["d", "dd", "de"]] | ||
, function () { files.push("a*b/", "a*b/ooo") } | ||
, ["a\\*b/*", ["a*b/ooo"]] | ||
, ["a\\*?/*", ["a*b/ooo"]] | ||
, ["*\\\\!*", [], {null: true}, ["echo !7"]] | ||
, ["*\\!*", ["echo !7"], null, ["echo !7"]] | ||
, ["*.\\*", ["r.*"], null, ["r.*"]] | ||
, ["a[b]c", ["abc"]] | ||
, ["a[\\b]c", ["abc"]] | ||
, ["a?c", ["abc"]] | ||
, ["a\\*c", [], {null: true}, ["abc"]] | ||
, ["", [""], { null: true }, [""]] | ||
, "http://www.opensource.apple.com/source/bash/bash-23/" + | ||
"bash/tests/glob-test" | ||
, function () { files.push("man/", "man/man1/", "man/man1/bash.1") } | ||
, ["*/man*/bash.*", ["man/man1/bash.1"]] | ||
, ["man/man1/bash.1", ["man/man1/bash.1"]] | ||
, ["a***c", ["abc"], null, ["abc"]] | ||
, ["a*****?c", ["abc"], null, ["abc"]] | ||
, ["?*****??", ["abc"], null, ["abc"]] | ||
, ["*****??", ["abc"], null, ["abc"]] | ||
, ["?*****?c", ["abc"], null, ["abc"]] | ||
, ["?***?****c", ["abc"], null, ["abc"]] | ||
, ["?***?****?", ["abc"], null, ["abc"]] | ||
, ["?***?****", ["abc"], null, ["abc"]] | ||
, ["*******c", ["abc"], null, ["abc"]] | ||
, ["*******?", ["abc"], null, ["abc"]] | ||
, ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["[-abc]", ["-"], null, ["-"]] | ||
, ["[abc-]", ["-"], null, ["-"]] | ||
, ["\\", ["\\"], null, ["\\"]] | ||
, ["[\\\\]", ["\\"], null, ["\\"]] | ||
, ["[[]", ["["], null, ["["]] | ||
, ["[", ["["], null, ["["]] | ||
, ["[*", ["[abc"], null, ["[abc"]] | ||
, "a right bracket shall lose its special meaning and\n" + | ||
"represent itself in a bracket expression if it occurs\n" + | ||
"first in the list. -- POSIX.2 2.8.3.2" | ||
, ["[]]", ["]"], null, ["]"]] | ||
, ["[]-]", ["]"], null, ["]"]] | ||
, ["[a-\z]", ["p"], null, ["p"]] | ||
, ["??**********?****?", [], { null: true }, ["abc"]] | ||
, ["??**********?****c", [], { null: true }, ["abc"]] | ||
, ["?************c****?****", [], { null: true }, ["abc"]] | ||
, ["*c*?**", [], { null: true }, ["abc"]] | ||
, ["a*****c*?**", [], { null: true }, ["abc"]] | ||
, ["a********???*******", [], { null: true }, ["abc"]] | ||
, ["[]", [], { null: true }, ["a"]] | ||
, ["[abc", [], { null: true }, ["["]] | ||
, "http://www.opensource.apple.com/source/bash/bash-23/" + | ||
"bash/tests/glob-test" | ||
, function () { files.push("man/", "man/man1/", "man/man1/bash.1") } | ||
, ["*/man*/bash.*", ["man/man1/bash.1"]] | ||
, ["man/man1/bash.1", ["man/man1/bash.1"]] | ||
, ["a***c", ["abc"], null, ["abc"]] | ||
, ["a*****?c", ["abc"], null, ["abc"]] | ||
, ["?*****??", ["abc"], null, ["abc"]] | ||
, ["*****??", ["abc"], null, ["abc"]] | ||
, ["?*****?c", ["abc"], null, ["abc"]] | ||
, ["?***?****c", ["abc"], null, ["abc"]] | ||
, ["?***?****?", ["abc"], null, ["abc"]] | ||
, ["?***?****", ["abc"], null, ["abc"]] | ||
, ["*******c", ["abc"], null, ["abc"]] | ||
, ["*******?", ["abc"], null, ["abc"]] | ||
, ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] | ||
, ["[-abc]", ["-"], null, ["-"]] | ||
, ["[abc-]", ["-"], null, ["-"]] | ||
, ["\\", ["\\"], null, ["\\"]] | ||
, ["[\\\\]", ["\\"], null, ["\\"]] | ||
, ["[[]", ["["], null, ["["]] | ||
, ["[", ["["], null, ["["]] | ||
, ["[*", ["[abc"], null, ["[abc"]] | ||
, "a right bracket shall lose its special meaning and\n" + | ||
"represent itself in a bracket expression if it occurs\n" + | ||
"first in the list. -- POSIX.2 2.8.3.2" | ||
, ["[]]", ["]"], null, ["]"]] | ||
, ["[]-]", ["]"], null, ["]"]] | ||
, ["[a-\z]", ["p"], null, ["p"]] | ||
, ["??**********?****?", [], { null: true }, ["abc"]] | ||
, ["??**********?****c", [], { null: true }, ["abc"]] | ||
, ["?************c****?****", [], { null: true }, ["abc"]] | ||
, ["*c*?**", [], { null: true }, ["abc"]] | ||
, ["a*****c*?**", [], { null: true }, ["abc"]] | ||
, ["a********???*******", [], { null: true }, ["abc"]] | ||
, ["[]", [], { null: true }, ["a"]] | ||
, ["[abc", [], { null: true }, ["["]] | ||
, "nocase tests" | ||
, ["XYZ", ["xYz"], { nocase: true, null: true } | ||
, ["xYz", "ABC", "IjK"]] | ||
, ["ab*", ["ABC"], { nocase: true, null: true } | ||
, ["xYz", "ABC", "IjK"]] | ||
, ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } | ||
, ["xYz", "ABC", "IjK"]] | ||
, "nocase tests" | ||
, ["XYZ", ["xYz"], { nocase: true, null: true } | ||
, ["xYz", "ABC", "IjK"]] | ||
, ["ab*", ["ABC"], { nocase: true, null: true } | ||
, ["xYz", "ABC", "IjK"]] | ||
, ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } | ||
, ["xYz", "ABC", "IjK"]] | ||
// [ pattern, [matches], MM opts, files, TAP opts] | ||
, "onestar/twostar" | ||
, ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] | ||
, ["{/?,*}", ["/a", "bb"], {null: true} | ||
, ["/a", "/b/b", "/a/b/c", "bb"]] | ||
// [ pattern, [matches], MM opts, files, TAP opts] | ||
, "onestar/twostar" | ||
, ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] | ||
, ["{/?,*}", ["/a", "bb"], {null: true} | ||
, ["/a", "/b/b", "/a/b/c", "bb"]] | ||
, "dots should not match unless requested" | ||
, ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] | ||
, "dots should not match unless requested" | ||
, ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] | ||
// .. and . can only match patterns starting with ., | ||
// even when options.dot is set. | ||
, function () { | ||
files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] | ||
} | ||
, ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] | ||
, ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] | ||
, ["a/*/b", ["a/c/b"], {dot:false}] | ||
, ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] | ||
// .. and . can only match patterns starting with ., | ||
// even when options.dot is set. | ||
, function () { | ||
files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] | ||
} | ||
, ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] | ||
, ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] | ||
, ["a/*/b", ["a/c/b"], {dot:false}] | ||
, ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] | ||
// this also tests that changing the options needs | ||
// to change the cache key, even if the pattern is | ||
// the same! | ||
, ["**", ["a/b","a/.d",".a/.d"], { dot: true } | ||
, [ ".a/.d", "a/.d", "a/b"]] | ||
// this also tests that changing the options needs | ||
// to change the cache key, even if the pattern is | ||
// the same! | ||
, ["**", ["a/b","a/.d",".a/.d"], { dot: true } | ||
, [ ".a/.d", "a/.d", "a/b"]] | ||
, "paren sets cannot contain slashes" | ||
, ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] | ||
, "paren sets cannot contain slashes" | ||
, ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] | ||
// brace sets trump all else. | ||
// | ||
// invalid glob pattern. fails on bash4 and bsdglob. | ||
// however, in this implementation, it's easier just | ||
// to do the intuitive thing, and let brace-expansion | ||
// actually come before parsing any extglob patterns, | ||
// like the documentation seems to say. | ||
// | ||
// XXX: if anyone complains about this, either fix it | ||
// or tell them to grow up and stop complaining. | ||
// | ||
// bash/bsdglob says this: | ||
// , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] | ||
// but we do this instead: | ||
, ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] | ||
// brace sets trump all else. | ||
// | ||
// invalid glob pattern. fails on bash4 and bsdglob. | ||
// however, in this implementation, it's easier just | ||
// to do the intuitive thing, and let brace-expansion | ||
// actually come before parsing any extglob patterns, | ||
// like the documentation seems to say. | ||
// | ||
// XXX: if anyone complains about this, either fix it | ||
// or tell them to grow up and stop complaining. | ||
// | ||
// bash/bsdglob says this: | ||
// , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] | ||
// but we do this instead: | ||
, ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] | ||
// test partial parsing in the presence of comment/negation chars | ||
, ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] | ||
, ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] | ||
// test partial parsing in the presence of comment/negation chars | ||
, ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] | ||
, ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] | ||
// like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. | ||
, ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" | ||
, ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] | ||
, {} | ||
, ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] | ||
// like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. | ||
, ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" | ||
, ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] | ||
, {} | ||
, ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] | ||
// crazy nested {,,} and *(||) tests. | ||
, function () { | ||
files = [ "a", "b", "c", "d" | ||
, "ab", "ac", "ad" | ||
, "bc", "cb" | ||
, "bc,d", "c,db", "c,d" | ||
, "d)", "(b|c", "*(b|c" | ||
, "b|c", "b|cc", "cb|c" | ||
, "x(a|b|c)", "x(a|c)" | ||
, "(a|b|c)", "(a|c)"] | ||
} | ||
, ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] | ||
, ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] | ||
// a | ||
// *(b|c) | ||
// *(b|d) | ||
, ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] | ||
, ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] | ||
// crazy nested {,,} and *(||) tests. | ||
, function () { | ||
files = [ "a", "b", "c", "d" | ||
, "ab", "ac", "ad" | ||
, "bc", "cb" | ||
, "bc,d", "c,db", "c,d" | ||
, "d)", "(b|c", "*(b|c" | ||
, "b|c", "b|cc", "cb|c" | ||
, "x(a|b|c)", "x(a|c)" | ||
, "(a|b|c)", "(a|c)"] | ||
} | ||
, ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] | ||
, ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] | ||
// a | ||
// *(b|c) | ||
// *(b|d) | ||
, ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] | ||
, ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] | ||
// test various flag settings. | ||
, [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] | ||
, { noext: true } ] | ||
, ["a?b", ["x/y/acb", "acb/"], {matchBase: true} | ||
, ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] | ||
, ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] | ||
// test various flag settings. | ||
, [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] | ||
, { noext: true } ] | ||
, ["a?b", ["x/y/acb", "acb/"], {matchBase: true} | ||
, ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] | ||
, ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] | ||
// begin channelling Boole and deMorgan... | ||
, "negation tests" | ||
, function () { | ||
files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] | ||
} | ||
// begin channelling Boole and deMorgan... | ||
, "negation tests" | ||
, function () { | ||
files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] | ||
} | ||
// anything that is NOT a* matches. | ||
, ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] | ||
// anything that is NOT a* matches. | ||
, ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] | ||
// anything that IS !a* matches. | ||
, ["!a*", ["!ab", "!abc"], {nonegate: true}] | ||
// anything that IS !a* matches. | ||
, ["!a*", ["!ab", "!abc"], {nonegate: true}] | ||
// anything that IS a* matches | ||
, ["!!a*", ["a!b"]] | ||
// anything that IS a* matches | ||
, ["!!a*", ["a!b"]] | ||
// anything that is NOT !a* matches | ||
, ["!\\!a*", ["a!b", "d", "e", "\\!a"]] | ||
// anything that is NOT !a* matches | ||
, ["!\\!a*", ["a!b", "d", "e", "\\!a"]] | ||
// negation nestled within a pattern | ||
, function () { | ||
files = [ "foo.js" | ||
, "foo.bar" | ||
// can't match this one without negative lookbehind. | ||
, "foo.js.js" | ||
, "blar.js" | ||
, "foo." | ||
, "boo.js.boo" ] | ||
} | ||
, ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] | ||
// https://github.com/isaacs/minimatch/issues/5 | ||
, function () { | ||
files = [ 'a/b/.x/c' | ||
, 'a/b/.x/c/d' | ||
, 'a/b/.x/c/d/e' | ||
, 'a/b/.x' | ||
, 'a/b/.x/' | ||
, 'a/.x/b' | ||
, '.x' | ||
, '.x/' | ||
, '.x/a' | ||
, '.x/a/b' | ||
, 'a/.x/b/.x/c' | ||
, '.x/.x' ] | ||
// negation nestled within a pattern | ||
, function () { | ||
files = [ "foo.js" | ||
, "foo.bar" | ||
// can't match this one without negative lookbehind. | ||
, "foo.js.js" | ||
, "blar.js" | ||
, "foo." | ||
, "boo.js.boo" ] | ||
} | ||
, ["**/.x/**", [ '.x/' | ||
, '.x/a' | ||
, '.x/a/b' | ||
, 'a/.x/b' | ||
, 'a/b/.x/' | ||
, 'a/b/.x/c' | ||
, 'a/b/.x/c/d' | ||
, 'a/b/.x/c/d/e' ] ] | ||
, ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] | ||
].forEach(function (c) { | ||
if (typeof c === "function") return c() | ||
if (typeof c === "string") return t.comment(c) | ||
// https://github.com/isaacs/minimatch/issues/5 | ||
, function () { | ||
files = [ 'a/b/.x/c' | ||
, 'a/b/.x/c/d' | ||
, 'a/b/.x/c/d/e' | ||
, 'a/b/.x' | ||
, 'a/b/.x/' | ||
, 'a/.x/b' | ||
, '.x' | ||
, '.x/' | ||
, '.x/a' | ||
, '.x/a/b' | ||
, 'a/.x/b/.x/c' | ||
, '.x/.x' ] | ||
} | ||
, ["**/.x/**", [ '.x/' | ||
, '.x/a' | ||
, '.x/a/b' | ||
, 'a/.x/b' | ||
, 'a/b/.x/' | ||
, 'a/b/.x/c' | ||
, 'a/b/.x/c/d' | ||
, 'a/b/.x/c/d/e' ] ] | ||
var pattern = c[0] | ||
, expect = c[1].sort(alpha) | ||
, options = c[2] || {} | ||
, f = c[3] || files | ||
, tapOpts = c[4] || {} | ||
] | ||
// options.debug = true | ||
var m = new mm.Minimatch(pattern, options) | ||
var r = m.makeRe() | ||
tapOpts.re = String(r) || JSON.stringify(r) | ||
tapOpts.files = JSON.stringify(f) | ||
tapOpts.pattern = pattern | ||
tapOpts.set = m.set | ||
tapOpts.negated = m.negate | ||
var regexps = | ||
[ '/^(?:(?=.)a[^/]*?)$/', | ||
'/^(?:(?=.)X[^/]*?)$/', | ||
'/^(?:(?=.)X[^/]*?)$/', | ||
'/^(?:\\*)$/', | ||
'/^(?:(?=.)\\*[^/]*?)$/', | ||
'/^(?:\\*\\*)$/', | ||
'/^(?:(?=.)b[^/]*?\\/)$/', | ||
'/^(?:(?=.)c[^/]*?)$/', | ||
'/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', | ||
'/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/', | ||
'/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/', | ||
'/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/', | ||
'/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/', | ||
'/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/', | ||
'/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/', | ||
'/^(?:(?=.)a[^/]*?[^c])$/', | ||
'/^(?:(?=.)a[X-]b)$/', | ||
'/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/', | ||
'/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/', | ||
'/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/', | ||
'/^(?:(?=.)a[b]c)$/', | ||
'/^(?:(?=.)a[b]c)$/', | ||
'/^(?:(?=.)a[^/]c)$/', | ||
'/^(?:a\\*c)$/', | ||
'false', | ||
'/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/', | ||
'/^(?:man\\/man1\\/bash\\.1)$/', | ||
'/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/', | ||
'/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', | ||
'/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', | ||
'/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', | ||
'/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', | ||
'/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', | ||
'/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', | ||
'/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', | ||
'/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', | ||
'/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/', | ||
'/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/', | ||
'/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/', | ||
'/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', | ||
'/^(?:(?!\\.)(?=.)[-abc])$/', | ||
'/^(?:(?!\\.)(?=.)[abc-])$/', | ||
'/^(?:\\\\)$/', | ||
'/^(?:(?!\\.)(?=.)[\\\\])$/', | ||
'/^(?:(?!\\.)(?=.)[\\[])$/', | ||
'/^(?:\\[)$/', | ||
'/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/', | ||
'/^(?:(?!\\.)(?=.)[\\]])$/', | ||
'/^(?:(?!\\.)(?=.)[\\]-])$/', | ||
'/^(?:(?!\\.)(?=.)[a-z])$/', | ||
'/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', | ||
'/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', | ||
'/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', | ||
'/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', | ||
'/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', | ||
'/^(?:\\[\\])$/', | ||
'/^(?:\\[abc)$/', | ||
'/^(?:(?=.)XYZ)$/i', | ||
'/^(?:(?=.)ab[^/]*?)$/i', | ||
'/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i', | ||
'/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/', | ||
'/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/', | ||
'/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', | ||
'/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/', | ||
'/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', | ||
'/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/', | ||
'/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', | ||
'/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/', | ||
'/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', | ||
'/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/', | ||
'/^(?:(?=.)\\[(?=.)#a[^/]*?)$/', | ||
'/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/', | ||
'/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', | ||
'/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/', | ||
'/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/', | ||
'/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/', | ||
'/^(?:(?=.)a[^/]b)$/', | ||
'/^(?:(?=.)#[^/]*?)$/', | ||
'/^(?!^(?:(?=.)a[^/]*?)$).*$/', | ||
'/^(?:(?=.)\\!a[^/]*?)$/', | ||
'/^(?:(?=.)a[^/]*?)$/', | ||
'/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/', | ||
'/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/', | ||
'/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ] | ||
var re = 0; | ||
var actual = mm.match(f, pattern, options) | ||
actual.sort(alpha) | ||
tap.test("basic tests", function (t) { | ||
var start = Date.now() | ||
t.equivalent( actual, expect | ||
, JSON.stringify(pattern) + " " + JSON.stringify(expect) | ||
, tapOpts ) | ||
}) | ||
// [ pattern, [matches], MM opts, files, TAP opts] | ||
patterns.forEach(function (c) { | ||
if (typeof c === "function") return c() | ||
if (typeof c === "string") return t.comment(c) | ||
var pattern = c[0] | ||
, expect = c[1].sort(alpha) | ||
, options = c[2] || {} | ||
, f = c[3] || files | ||
, tapOpts = c[4] || {} | ||
// options.debug = true | ||
var m = new mm.Minimatch(pattern, options) | ||
var r = m.makeRe() | ||
var expectRe = regexps[re++] | ||
tapOpts.re = String(r) || JSON.stringify(r) | ||
tapOpts.files = JSON.stringify(f) | ||
tapOpts.pattern = pattern | ||
tapOpts.set = m.set | ||
tapOpts.negated = m.negate | ||
var actual = mm.match(f, pattern, options) | ||
actual.sort(alpha) | ||
t.equivalent( actual, expect | ||
, JSON.stringify(pattern) + " " + JSON.stringify(expect) | ||
, tapOpts ) | ||
t.equal(tapOpts.re, expectRe, tapOpts) | ||
}) | ||
t.comment("time=" + (Date.now() - start) + "ms") | ||
@@ -287,0 +389,0 @@ t.end() |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
62974
1552
8