blob: 0d851164f2f2ca437a0f24a61b95d9422be4ba9f [file] [log] [blame]
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()
})
})