114 lines
2.3 KiB
JavaScript
114 lines
2.3 KiB
JavaScript
var fs = require('fs');
|
|
var test = require('tap').test;
|
|
var glob = require('../');
|
|
|
|
test('mock fs', function(t) {
|
|
var stat = fs.stat
|
|
var statSync = fs.statSync
|
|
var readdir = fs.readdir
|
|
var readdirSync = fs.readdirSync
|
|
|
|
function fakeStat(path) {
|
|
var ret
|
|
switch (path.toLowerCase()) {
|
|
case '/tmp': case '/tmp/':
|
|
ret = { isDirectory: function() { return true } }
|
|
break
|
|
case '/tmp/a':
|
|
ret = { isDirectory: function() { return false } }
|
|
break
|
|
}
|
|
return ret
|
|
}
|
|
|
|
fs.stat = function(path, cb) {
|
|
var f = fakeStat(path);
|
|
if (f) {
|
|
process.nextTick(function() {
|
|
cb(null, f)
|
|
})
|
|
} else {
|
|
stat.call(fs, path, cb)
|
|
}
|
|
}
|
|
|
|
fs.statSync = function(path) {
|
|
return fakeStat(path) || statSync.call(fs, path)
|
|
}
|
|
|
|
function fakeReaddir(path) {
|
|
var ret
|
|
switch (path.toLowerCase()) {
|
|
case '/tmp': case '/tmp/':
|
|
ret = [ 'a', 'A' ]
|
|
break
|
|
case '/':
|
|
ret = ['tmp', 'tMp', 'tMP', 'TMP']
|
|
}
|
|
return ret
|
|
}
|
|
|
|
fs.readdir = function(path, cb) {
|
|
var f = fakeReaddir(path)
|
|
if (f)
|
|
process.nextTick(function() {
|
|
cb(null, f)
|
|
})
|
|
else
|
|
readdir.call(fs, path, cb)
|
|
}
|
|
|
|
fs.readdirSync = function(path) {
|
|
return fakeReaddir(path) || readdirSync.call(fs, path)
|
|
}
|
|
|
|
t.pass('mocked')
|
|
t.end()
|
|
})
|
|
|
|
test('nocase, nomagic', function(t) {
|
|
var n = 2
|
|
var want = [ '/TMP/A',
|
|
'/TMP/a',
|
|
'/tMP/A',
|
|
'/tMP/a',
|
|
'/tMp/A',
|
|
'/tMp/a',
|
|
'/tmp/A',
|
|
'/tmp/a' ]
|
|
glob('/tmp/a', { nocase: true }, function(er, res) {
|
|
if (er)
|
|
throw er
|
|
t.same(res.sort(), want)
|
|
if (--n === 0) t.end()
|
|
})
|
|
glob('/tmp/A', { nocase: true }, function(er, res) {
|
|
if (er)
|
|
throw er
|
|
t.same(res.sort(), want)
|
|
if (--n === 0) t.end()
|
|
})
|
|
})
|
|
|
|
test('nocase, with some magic', function(t) {
|
|
t.plan(2)
|
|
var want = [ '/TMP/A',
|
|
'/TMP/a',
|
|
'/tMP/A',
|
|
'/tMP/a',
|
|
'/tMp/A',
|
|
'/tMp/a',
|
|
'/tmp/A',
|
|
'/tmp/a' ]
|
|
glob('/tmp/*', { nocase: true }, function(er, res) {
|
|
if (er)
|
|
throw er
|
|
t.same(res.sort(), want)
|
|
})
|
|
glob('/tmp/*', { nocase: true }, function(er, res) {
|
|
if (er)
|
|
throw er
|
|
t.same(res.sort(), want)
|
|
})
|
|
})
|