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()
- })
- })
|