80 lines
2.1 KiB
JavaScript
80 lines
2.1 KiB
JavaScript
var assert = require('assert');
|
|
var find = require('../').find;
|
|
var findSync = require('../').findSync;
|
|
|
|
exports.foo = function () {
|
|
var to = setTimeout(function () {
|
|
assert.fail('Never caught "end"');
|
|
}, 5000);
|
|
|
|
var ps = {};
|
|
var finder = find(__dirname + '/foo', function (file, stat) {
|
|
ps[file] = stat.isDirectory();
|
|
});
|
|
|
|
var paths = []
|
|
finder.on('path', function (p) {
|
|
paths.push(p);
|
|
});
|
|
|
|
var dirs = []
|
|
finder.on('directory', function (dir) {
|
|
dirs.push(dir);
|
|
});
|
|
|
|
var files = []
|
|
finder.on('file', function (file) {
|
|
files.push(file);
|
|
});
|
|
|
|
finder.on('end', function () {
|
|
clearTimeout(to);
|
|
var ref = {
|
|
'a' : true,
|
|
'a/b' : true,
|
|
'a/b/c' : true,
|
|
'x' : false,
|
|
'a/y' : false,
|
|
'a/b/z' : false,
|
|
'a/b/c/w' : false,
|
|
};
|
|
|
|
assert.eql(Object.keys(ref).length, Object.keys(ps).length);
|
|
var count = { dirs : 0, files : 0, paths : 0 };
|
|
|
|
Object.keys(ref).forEach(function (key) {
|
|
var file = __dirname + '/foo/' + key;
|
|
assert.eql(ref[key], ps[file]);
|
|
if (ref[key]) {
|
|
assert.ok(dirs.indexOf(file) >= 0);
|
|
count.dirs ++;
|
|
}
|
|
else {
|
|
assert.ok(files.indexOf(file) >= 0);
|
|
count.files ++;
|
|
}
|
|
});
|
|
|
|
assert.eql(count.dirs, dirs.length);
|
|
assert.eql(count.files, files.length);
|
|
assert.eql(paths.sort(), Object.keys(ps).sort());
|
|
});
|
|
};
|
|
|
|
exports.fooSync = function () {
|
|
assert.eql(
|
|
findSync(__dirname + '/foo')
|
|
.reduce(function (files, file) {
|
|
files[file] = true;
|
|
return files;
|
|
}, {}),
|
|
[ 'a', 'a/b', 'a/b/c', 'x', 'a/y', 'a/b/z', 'a/b/c/w' ]
|
|
.reduce(function (files, file) {
|
|
files[__dirname + '/foo/' + file] = true;
|
|
return files;
|
|
}, {})
|
|
);
|
|
|
|
assert.eql(findSync(__dirname + '/foo/x'), [ __dirname + '/foo/x' ]);
|
|
};
|