| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | // show that no match events happen while paused.var tap = require("tap"), child_process = require("child_process")// just some gnarly pattern with lots of matches, pattern = "test/a/!(symlink)/**", bashResults = require("./bash-results.json"), patterns = Object.keys(bashResults), glob = require("../"), Glob = glob.Glob, 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}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, '/')  })}var globResults = []tap.test("use a Glob object, and pause/resume it", function (t) {  var g = new Glob(pattern)  , paused = false  , res = []  , expect = bashResults[pattern]  g.on("pause", function () {    console.error("pause")  })  g.on("resume", function () {    console.error("resume")  })  g.on("match", function (m) {    t.notOk(g.paused, "must not be paused")    globResults.push(m)    g.pause()    t.ok(g.paused, "must be paused")    setTimeout(g.resume.bind(g), 10)  })  g.on("end", function (matches) {    t.pass("reached glob end")    globResults = cleanResults(globResults)    matches = cleanResults(matches)    t.deepEqual(matches, globResults,      "end event matches should be the same as match events")    t.deepEqual(matches, expect,      "glob matches should be the same as bash results")    t.end()  })})
 |