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