UNPKG

motion

Version:

motion - moving development forward

82 lines (72 loc) 2.04 kB
var IgnoreFile = require("../") , fs = require('fs') // set the ignores just for this test var c = require("./common.js") c.ignores({ ".gitignore": ["a/b/c/abc"] }) c.ignores({ ".ignore": ["*", "!a/b/c/abc"] }) // the only files we expect to see var expected = [ "/a" , "/a/b" , "/a/b/c" , "/a/b/c/abc" ] var originalReadFile = fs.readFile , parallelCount = 0 , firstCall // Overwrite fs.readFile so that when .gitignore and .ignore are read in // parallel, .ignore will always be read first. fs.readFile = function (filename, options, callback) { if (typeof options === 'function') { callback = options options = false } parallelCount++ process.nextTick(function () { if (parallelCount > 1) { if (!firstCall) { return firstCall = function (cb) { originalReadFile(filename, options, function (err, data) { callback(err, data) if (cb) cb() }) } } if (filename.indexOf('.gitignore') !== -1) { firstCall(function () { originalReadFile(filename, options, callback) }) } else { originalReadFile(filename, options, function (err, data) { callback(err, data) firstCall() }) } } else { originalReadFile(filename, options, callback) parallelCount = 0 } }) } require("tap").test("read file order", function (t) { t.pass("start") IgnoreFile({ path: __dirname + "/fixtures" , ignoreFiles: [".gitignore", ".ignore"] }) .on("ignoreFile", function (e) { console.error("ignore file!", e) }) .on("child", function (e) { var p = e.path.substr(e.root.path.length) var i = expected.indexOf(p) if (i === -1) { t.fail("unexpected file found", {f: p}) } else { t.pass(p) expected.splice(i, 1) } }) .on("close", function () { fs.readFile = originalReadFile t.notOk(expected.length, "all expected files should be seen") t.end() }) })