| 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, '/')  })}
 |