diff options
Diffstat (limited to 'node_modules/walkdir/test')
29 files changed, 576 insertions, 0 deletions
diff --git a/node_modules/walkdir/test/async.js b/node_modules/walkdir/test/async.js new file mode 100644 index 000000000..ef02ab487 --- /dev/null +++ b/node_modules/walkdir/test/async.js @@ -0,0 +1,66 @@ +var test = require('tape'), +walkdir = require('../walkdir.js'); + +var expectedPaths = { +'dir/foo/x':'file', +'dir/foo/a':'dir', +'dir/foo/a/y':'file', +'dir/foo/a/b':'dir', +'dir/foo/a/b/z':'file', +'dir/foo/a/b/c':'dir', +'dir/foo/a/b/c/w':'file' +}; + +test('async events',function(t){ + var paths = [], + files = [], + dirs = []; + + + var emitter = walkdir(__dirname+'/dir/foo',function(path){ + //console.log('path: ',path); + paths.push(path.replace(__dirname+'/','')); + }); + + emitter.on('directory',function(path,stat){ + dirs.push(path.replace(__dirname+'/','')); + }); + + emitter.on('file',function(path,stat){ + //console.log('file: ',path); + files.push(path.replace(__dirname+'/','')); + }); + + emitter.on('end',function(){ + + files.forEach(function(v,k){ + t.equals(expectedPaths[v],'file','path from file event should be file'); + }); + + var expected = Object.keys(expectedPaths); + + t.ok(expected.length == paths.length, 'expected and emitted paths should have the same length'); + + expected.forEach(function(v,k){ + if(expectedPaths[v] == 'file') { + t.ok(files.indexOf(v) > -1,'should have file in files array'); + } + }); + + dirs.forEach(function(v,k){ + t.equals(expectedPaths[v],'dir','path from dir event should be dir '+v); + }); + + expected.forEach(function(v,k){ + if(expectedPaths[v] == 'dir') { + t.ok(dirs.indexOf(v) > -1,'should have dir in dirs array'); + } + }); + + expected.forEach(function(v,k){ + t.ok(paths.indexOf(v) !== -1,'should have found all expected paths '+v); + }); + + t.end(); + }); +}); diff --git a/node_modules/walkdir/test/comparison/find.js b/node_modules/walkdir/test/comparison/find.js new file mode 100644 index 000000000..98e852d13 --- /dev/null +++ b/node_modules/walkdir/test/comparison/find.js @@ -0,0 +1,33 @@ +var spawn = require('child_process').spawn; + +var find = spawn('find',[process.argv[2]||'./']); + +var fs = require('fs'); + +var buf = '',count = 0; + +handleBuf = function(data){ + + buf += data; + + if(buf.length >= 1024) { + var lines = buf.split("\n"); + buf = lines.pop();//last line my not be complete + count += lines.length; + process.stdout.write(lines.join("\n")+"\n"); + } +}; + +find.stdout.on('data',function(data){ + //buf += data.toString(); + handleBuf(data) + //process.stdout.write(data.toString()); +}); + +find.on('end',function(){ + handleBuf("\n"); + console.log('found '+count+' files'); + console.log('ended'); +}); + +find.stdin.end(); diff --git a/node_modules/walkdir/test/comparison/find.py b/node_modules/walkdir/test/comparison/find.py new file mode 100644 index 000000000..526d6941f --- /dev/null +++ b/node_modules/walkdir/test/comparison/find.py @@ -0,0 +1,26 @@ +import os +import sys + +rootdir = sys.argv[1] +ino = {} +buf = [] +for root, subFolders, files in os.walk(rootdir): + + for filename in files: + filePath = os.path.join(root, filename) + try: + stat = os.lstat(filePath) + except OSError: + pass + + inostr = stat.st_ino + + if inostr not in ino: + ino[stat.st_ino] = 1 + buf.append(filePath); + buf.append("\n"); + if len(buf) >= 1024: + sys.stdout.write(''.join(buf)) + buf = [] + +sys.stdout.write(''.join(buf)); diff --git a/node_modules/walkdir/test/comparison/finditsynctest.js b/node_modules/walkdir/test/comparison/finditsynctest.js new file mode 100644 index 000000000..b3af43e92 --- /dev/null +++ b/node_modules/walkdir/test/comparison/finditsynctest.js @@ -0,0 +1,15 @@ +var findit = require('findit'); + +var files = findit.findSync(process.argv[2]||'./'); + +var count = files.length; + +console.log(files); + +files = files.join("\n"); + +process.stdout.write(files+"\n"); + +console.log('found '+count+' files'); + + diff --git a/node_modules/walkdir/test/comparison/findittest.js b/node_modules/walkdir/test/comparison/findittest.js new file mode 100644 index 000000000..d018bf27b --- /dev/null +++ b/node_modules/walkdir/test/comparison/findittest.js @@ -0,0 +1,14 @@ +var findit = require('findit'); + +var find = findit.find(process.argv[2]||'./'); + +var count = 0; + +find.on('file',function(path,stat){ + count++; + process.stdout.write(path+"\n"); +}); + +find.on('end',function(){ + console.log('found '+count+' regular files'); +}); diff --git a/node_modules/walkdir/test/comparison/fstream.js b/node_modules/walkdir/test/comparison/fstream.js new file mode 100644 index 000000000..1451b4caf --- /dev/null +++ b/node_modules/walkdir/test/comparison/fstream.js @@ -0,0 +1,24 @@ +var fstream = require('fstream'); + +var pipe = fstream.Reader(process.argv[2]||"../"); + +var count = 0,errorHandler; + +pipe.on('entry',function fn(entry){ + if(entry.type == "Directory"){ + entry.on('entry',fn); + } else if(entry.type == "File") { + count++; + } + entry.on('error',errorHandler); +}); + +pipe.on('error',(errorHandler = function(error){ + console.log('error event ',error); +})); + +pipe.on('end',function(){ + console.log('end! '+count); +}); + +//this is pretty slow diff --git a/node_modules/walkdir/test/comparison/install_test_deps.sh b/node_modules/walkdir/test/comparison/install_test_deps.sh new file mode 100755 index 000000000..5fdd18ffd --- /dev/null +++ b/node_modules/walkdir/test/comparison/install_test_deps.sh @@ -0,0 +1 @@ +npm install diff --git a/node_modules/walkdir/test/comparison/lsr.js b/node_modules/walkdir/test/comparison/lsr.js new file mode 100644 index 000000000..590f9d1be --- /dev/null +++ b/node_modules/walkdir/test/comparison/lsr.js @@ -0,0 +1,18 @@ +var lsr = require('ls-r'); + +lsr(process.argv[2]||'./',{maxDepth:500000,recursive:true},function(err,origPath,args){ + if(err) { + console.log('eww an error! ',err); + return; + } +//console.log('hit'); + var c = 0; + args.forEach(function(stat){ + if(stat.isFile()){ + console.log(stat.path); + c++; + } + }); + + console.log('found '+args.length+" regular files"); +}); diff --git a/node_modules/walkdir/test/comparison/package.json b/node_modules/walkdir/test/comparison/package.json new file mode 100644 index 000000000..1faeff31e --- /dev/null +++ b/node_modules/walkdir/test/comparison/package.json @@ -0,0 +1,10 @@ +{ + "name":"recursedir-comparisons", + "version": "0.0.0", + "author": "Ryan Day <soldair@gmail.com>", + "devDependencies": { + "findit": "*", + "ls-r":"*", + "fstream":"*" + } +} diff --git a/node_modules/walkdir/test/custom_fs.js b/node_modules/walkdir/test/custom_fs.js new file mode 100644 index 000000000..3de07b98e --- /dev/null +++ b/node_modules/walkdir/test/custom_fs.js @@ -0,0 +1,34 @@ +var test = require('tape'), +_fs = require('fs'), +walkdir = require('../walkdir.js'); + +var expectedPaths = {}; + +test('fs option',function(t){ + var paths = []; + + var emitter = walkdir(__dirname+'/dir/foo',{fs: + { + readdir: function () { + var cb = arguments[arguments.length - 1]; + cb(null, []); + }, + lstat: function (file) { + var cb = arguments[arguments.length - 1]; + return _fs.lstat(__dirname, cb); + } + } + },function(path,stat,depth){ + t.fail('there should be no files emitted'); + }); + + emitter.on('end',function(){ + var expected = Object.keys(expectedPaths); + t.ok(expected.length == paths.length, 'expected and emitted paths should have the same length'); + paths.forEach(function(v){ + t.ok(expected.indexOf(v) > -1,'all expected files should be in paths'); + }); + + t.end(); + }); +}); diff --git a/node_modules/walkdir/test/dir/foo/a/b/c/w b/node_modules/walkdir/test/dir/foo/a/b/c/w new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/node_modules/walkdir/test/dir/foo/a/b/c/w diff --git a/node_modules/walkdir/test/dir/foo/a/b/z b/node_modules/walkdir/test/dir/foo/a/b/z new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/node_modules/walkdir/test/dir/foo/a/b/z diff --git a/node_modules/walkdir/test/dir/foo/a/y b/node_modules/walkdir/test/dir/foo/a/y new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/node_modules/walkdir/test/dir/foo/a/y diff --git a/node_modules/walkdir/test/dir/foo/x b/node_modules/walkdir/test/dir/foo/x new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/node_modules/walkdir/test/dir/foo/x diff --git a/node_modules/walkdir/test/dir/nested-symlink/found-me b/node_modules/walkdir/test/dir/nested-symlink/found-me new file mode 100644 index 000000000..54be0f5e4 --- /dev/null +++ b/node_modules/walkdir/test/dir/nested-symlink/found-me @@ -0,0 +1 @@ +found me! diff --git a/node_modules/walkdir/test/dir/symlinks/dir1/file1 b/node_modules/walkdir/test/dir/symlinks/dir1/file1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/node_modules/walkdir/test/dir/symlinks/dir1/file1 diff --git a/node_modules/walkdir/test/dir/symlinks/dir2/file2 b/node_modules/walkdir/test/dir/symlinks/dir2/file2 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/node_modules/walkdir/test/dir/symlinks/dir2/file2 diff --git a/node_modules/walkdir/test/dir/symlinks/file b/node_modules/walkdir/test/dir/symlinks/file new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/node_modules/walkdir/test/dir/symlinks/file diff --git a/node_modules/walkdir/test/endearly.js b/node_modules/walkdir/test/endearly.js new file mode 100644 index 000000000..a44aedf16 --- /dev/null +++ b/node_modules/walkdir/test/endearly.js @@ -0,0 +1,19 @@ +var test = require('tape'), +walk = require('../walkdir.js'); + +test('should be able to end walk after first path',function(t){ + + var paths = []; + + var em = walk('../',function(path){ + paths.push(path); + this.end(); + }); + + em.on('end',function(){ + t.equals(paths.length,1,'should have only found one path'); + t.end(); + }); + +}); + diff --git a/node_modules/walkdir/test/ignore-during.js b/node_modules/walkdir/test/ignore-during.js new file mode 100644 index 000000000..549eb4ac5 --- /dev/null +++ b/node_modules/walkdir/test/ignore-during.js @@ -0,0 +1,19 @@ +var test = require('tape') +var walkdir = require('../') + +test('async events',function(t){ + var paths = [], + files = [], + dirs = []; + + var emitter = walkdir(__dirname+'/dir/foo',function(path){ + paths.push(path.replace(__dirname+'/','')); + if(path === __dirname+'/dir/foo/a') this.ignore(__dirname+'/dir/foo/a'); + }) + + emitter.on('end',function(){ + t.equals(paths.sort().join('|'),'dir/foo/a|dir/foo/x','should have ignored under a'); + t.end(); + }) + +}) diff --git a/node_modules/walkdir/test/ignore-first.js b/node_modules/walkdir/test/ignore-first.js new file mode 100644 index 000000000..7db03828d --- /dev/null +++ b/node_modules/walkdir/test/ignore-first.js @@ -0,0 +1,18 @@ +var test = require('tape') +var walkdir = require('../') + +test('async events',function(t){ + var paths = [], + files = [], + dirs = []; + + var emitter = walkdir(__dirname+'/dir/foo',function(path){ + paths.push(path.replace(__dirname+'/','')); + }).ignore(__dirname+'/dir/foo'); + + emitter.on('end',function(){ + t.equals(paths.length,0,'should have no paths') + t.end(); + }) + +}) diff --git a/node_modules/walkdir/test/ignore.js b/node_modules/walkdir/test/ignore.js new file mode 100644 index 000000000..ddf68702d --- /dev/null +++ b/node_modules/walkdir/test/ignore.js @@ -0,0 +1,18 @@ +var test = require('tape') +var walkdir = require('../') + +test('async events',function(t){ + var paths = [], + files = [], + dirs = []; + + var emitter = walkdir(__dirname+'/dir/foo',function(path){ + paths.push(path.replace(__dirname+'/','')); + }).ignore(__dirname+'/dir/foo/a'); + + emitter.on('end',function(){ + t.equals(paths.sort().join('|'),'dir/foo/a|dir/foo/x','should have ignored under a'); + t.end(); + }) + +}) diff --git a/node_modules/walkdir/test/max_depth.js b/node_modules/walkdir/test/max_depth.js new file mode 100644 index 000000000..76e83dec8 --- /dev/null +++ b/node_modules/walkdir/test/max_depth.js @@ -0,0 +1,30 @@ +var test = require('tape'), +walkdir = require('../walkdir.js'); + +var expectedPaths = { +'dir/foo/x':'file', +'dir/foo/a':'dir', +'dir/foo/a/y':'file', +'dir/foo/a/b':'dir' +}; + +test('no_recurse option',function(t){ + var paths = []; + + var emitter = walkdir(__dirname+'/dir/foo',{max_depth:2},function(path,stat,depth){ + paths.push(path.replace(__dirname+'/','')); + t.ok(depth < 3,' all paths emitted should have a depth less than 3'); + }); + + emitter.on('end',function(){ + var expected = Object.keys(expectedPaths); + + t.ok(expected.length == paths.length, 'expected and emitted paths should have the same length'); + + paths.forEach(function(v){ + t.ok(expected.indexOf(v) > -1,'paths should not have any unexpected files'); + }); + + t.end(); + }); +}); diff --git a/node_modules/walkdir/test/nested-symlink.js b/node_modules/walkdir/test/nested-symlink.js new file mode 100644 index 000000000..01fee099c --- /dev/null +++ b/node_modules/walkdir/test/nested-symlink.js @@ -0,0 +1,43 @@ +var test = require('tape') +var walkdir = require('../walkdir.js') +var basename = require('path').basename + +test('follow symlinks',function(t){ + + var links = [],paths = [],failures = [],errors = [], files = []; + + var emitter = walkdir(__dirname+'/dir/nested-symlink',{follow_symlinks:true}); + + emitter.on('path',function(path,stat){ + paths.push(path); + }); + + emitter.on('file',function(path,stat){ + files.push(path); + }); + + emitter.on('link',function(path,stat){ + links.push(path); + }); + + emitter.on('error',function(path,err){ + console.log('error!!', arguments); + errors.push(arguments); + }); + + emitter.on('fail',function(path,err){ + failures.push(path); + }); + + emitter.on('end',function(){ + + t.equal(files.length,1) + t.equal(basename(files[0]),'found-me','found the nested symlink') + t.equal(paths.length,3,'should find 3 things') + + t.ok(!failures.length,'no failures') + + t.end(); + + }); +}) diff --git a/node_modules/walkdir/test/no_recurse.js b/node_modules/walkdir/test/no_recurse.js new file mode 100644 index 000000000..8a9fcc183 --- /dev/null +++ b/node_modules/walkdir/test/no_recurse.js @@ -0,0 +1,28 @@ +var test = require('tape'), +walkdir = require('../walkdir.js'); + +var expectedPaths = { +'dir/foo/x':'file', +'dir/foo/a':'dir' +}; + +test('no_recurse option',function(t){ + var paths = []; + + var emitter = walkdir(__dirname+'/dir/foo',{no_recurse:true},function(path,stat,depth){ + paths.push(path.replace(__dirname+'/','')); + t.ok(depth === 1,' all paths emitted should have a depth of 1'); + }); + + emitter.on('end',function(){ + var expected = Object.keys(expectedPaths); + + t.ok(expected.length == paths.length, 'expected and emitted paths should have the same length'); + + paths.forEach(function(v){ + t.ok(expected.indexOf(v) > -1,'all expected files should be in paths'); + }); + + t.end(); + }); +}); diff --git a/node_modules/walkdir/test/nofailemptydir.js b/node_modules/walkdir/test/nofailemptydir.js new file mode 100644 index 000000000..9a9215a26 --- /dev/null +++ b/node_modules/walkdir/test/nofailemptydir.js @@ -0,0 +1,34 @@ +var test = require('tape'), +fs = require('fs'), +path = require('path'), +walk = require('../walkdir.js'); + +test('should not emit fail events for empty dirs',function(t){ + fs.mkdir('./empty',function(err,data){ + if(err) { + t.equals(err.code,'EEXIST','if error code on mkdir for fixture it should only be because it exists already'); + } + + var paths = []; + var dirs = []; + var emptys = []; + var fails = []; + + var em = walk('./'); + + em.on('fail',function(path,err){ + fails.push(path); + }); + + em.on('empty',function(path,err){ + emptys.push(path); + }); + + em.on('end',function(){ + t.equals(fails.length,0,'should not have any fails'); + t.equals(path.basename(emptys[0]),'empty','should find empty dir'); + t.end(); + }); + }); +}); + diff --git a/node_modules/walkdir/test/pauseresume.js b/node_modules/walkdir/test/pauseresume.js new file mode 100644 index 000000000..29d3d606d --- /dev/null +++ b/node_modules/walkdir/test/pauseresume.js @@ -0,0 +1,36 @@ +var test = require('tape'), +walk = require('../walkdir.js'); + +test('should be able to pause walk',function(t){ + + var paths = []; + var paused = false; + var em = walk('./',function(path){ + if(!paused){ + em.pause(); + paused = 1; + setTimeout(function(){ + t.equals(paths.length,1,'while paused should not emit any more paths'); + em.resume(); + },300); + } else if(paused == 1){ + em.pause(); + paused = 2; + setTimeout(function(){ + t.equals(paths.length,2,'while paused should not emit any more paths'); + em.resume(); + },300); + } + + paths.push(path); + + }); + + em.on('end',function(){ + console.log('end, and i found ',paths.length,'paths'); + t.ok(paths.length > 1,'should have more paths before end'); + t.end(); + }); + +}); + diff --git a/node_modules/walkdir/test/symlink.js b/node_modules/walkdir/test/symlink.js new file mode 100644 index 000000000..162f5bf4d --- /dev/null +++ b/node_modules/walkdir/test/symlink.js @@ -0,0 +1,37 @@ +var test = require('tape'), +walkdir = require('../walkdir.js'); + + +test('follow symlinks',function(t){ + + var links = [],paths = [],failures = [],errors = []; + + var emitter = walkdir(__dirname+'/dir/symlinks/dir2',{follow_symlinks:true}); + + emitter.on('path',function(path,stat){ + paths.push(path); + }); + + emitter.on('link',function(path,stat){ + links.push(path); + }); + + emitter.on('error',function(path,err){ + console.log('error!!', arguments); + errors.push(arguments); + }); + + emitter.on('fail',function(path,err){ + failures.push(path); + }); + + emitter.on('end',function(){ + + t.equal(errors.length,0,'should have no errors'); + t.equal(failures.length,1,'should have a failure'); + t.ok(paths.indexOf(__dirname+'/dir/symlinks/dir1/file1') !== -1,'if follow symlinks works i would have found dir1 file1'); + t.equal(require('path').basename(failures[0]),'does-not-exist','should have fail resolviong does-not-exist which dangling-symlink points to'); + t.end(); + + }); +}); diff --git a/node_modules/walkdir/test/sync.js b/node_modules/walkdir/test/sync.js new file mode 100644 index 000000000..db2d07219 --- /dev/null +++ b/node_modules/walkdir/test/sync.js @@ -0,0 +1,52 @@ +var test = require('tape'), +walkdir = require('../walkdir.js'); + +var expectedPaths = { +'dir/foo/x':'file', +'dir/foo/a':'dir', +'dir/foo/a/y':'file', +'dir/foo/a/b':'dir', +'dir/foo/a/b/z':'file', +'dir/foo/a/b/c':'dir', +'dir/foo/a/b/c/w':'file' +}; + +test('sync',function(t){ + var paths = [], + files = [], + dirs = []; + + var pathResult = walkdir.sync(__dirname+'/dir/foo',function(path){ + console.log('path: ',path); + paths.push(path); + }); + + t.ok(pathResult instanceof Array,'if return object is not specified should be an array'); + + t.equals(Object.keys(expectedPaths).length,paths.length,'should have found the same number of paths as expected'); + + + Object.keys(expectedPaths).forEach(function(v,k){ + + t.ok(paths.indexOf(__dirname+'/'+v) > -1,v+' should be found'); + }); + + t.deepEquals(paths,pathResult,'paths should be equal to pathResult'); + + t.end(); +}); + +test('sync return object',function(t){ + + var pathResult = walkdir.sync(__dirname+'/dir/foo',{return_object:true}); + + t.ok(!(pathResult instanceof Array),'if return object is not specified should be an array'); + + t.equals(Object.keys(expectedPaths).length,Object.keys(pathResult).length,'should find the same number of paths as expected'); + + Object.keys(expectedPaths).forEach(function(v,k){ + t.ok(pathResult[__dirname+'/'+v],'should find path in result object'); + }); + + t.end(); +}); |