123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // basic test
- // show that it does the same thing by default as the shell.
- var tap = require("tap")
- , child_process = require("child_process")
- , bashResults = require("./bash-results.json")
- , globs = Object.keys(bashResults)
- , glob = require("../")
- , path = require("path")
- // run from the root of the project
- // this is usually where you're at anyway, but be sure.
- process.chdir(path.resolve(__dirname, ".."))
- function alphasort (a, b) {
- a = a.toLowerCase()
- b = b.toLowerCase()
- return a > b ? 1 : a < b ? -1 : 0
- }
- globs.forEach(function (pattern) {
- var expect = bashResults[pattern]
- // anything regarding the symlink thing will fail on windows, so just skip it
- if (process.platform === "win32" &&
- expect.some(function (m) {
- return /\/symlink\//.test(m)
- }))
- return
- tap.test(pattern, function (t) {
- glob(pattern, function (er, matches) {
- if (er)
- throw er
- // sort and unmark, just to match the shell results
- matches = cleanResults(matches)
- t.deepEqual(matches, expect, pattern)
- t.end()
- })
- })
- tap.test(pattern + " sync", function (t) {
- var matches = cleanResults(glob.sync(pattern))
- t.deepEqual(matches, expect, "should match shell")
- t.end()
- })
- })
- function cleanResults (m) {
- // normalize discrepancies in ordering, duplication,
- // and ending slashes.
- return m.map(function (m) {
- return m.replace(/\/+/g, "/").replace(/\/$/, "")
- }).sort(alphasort).reduce(function (set, f) {
- if (f !== set[set.length - 1]) set.push(f)
- return set
- }, []).sort(alphasort).map(function (f) {
- // de-windows
- return (process.platform !== 'win32') ? f
- : f.replace(/^[a-zA-Z]:[\/\\]+/, '/').replace(/[\\\/]+/g, '/')
- })
- }
|