mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 06:08:33 +00:00 
			
		
		
		
	update
This commit is contained in:
		
							
								
								
									
										280
									
								
								node_modules/find/test/test.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										280
									
								
								node_modules/find/test/test.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,280 @@ | ||||
| var fs = require('fs'); | ||||
| var assert = require('assert'); | ||||
| var path = require('path'); | ||||
| var tmp = require('tmp'); | ||||
| var find = require('..'); | ||||
|  | ||||
| tmp.setGracefulCleanup(); | ||||
|  | ||||
| function createBy(type) { | ||||
|   return function(dir, num, ext) { | ||||
|     var targets = []; | ||||
|     num = num || 1; | ||||
|     if (Array.isArray(dir)) dir = dir[0]; | ||||
|     var opts = { template: path.join(dir, '/tmp-XXXXXX' + (ext || '')) }; | ||||
|     for (var i = 0; i < num; ++i) { | ||||
|       targets.push(tmp[type + 'Sync'](opts).name); | ||||
|     } | ||||
|     return targets; | ||||
|   } | ||||
| } | ||||
|  | ||||
| function assertEqual(a, b) { | ||||
|   assert.deepEqual(a.sort(), b.sort()); | ||||
| } | ||||
|  | ||||
|  | ||||
| var createFilesUnder = createBy('file'); | ||||
| var createDirUnder = createBy('dir'); | ||||
|  | ||||
| function createNestedDirs(testdir) { | ||||
|   var level1 = createDirUnder(testdir)[0]; | ||||
|   var level2 = createDirUnder(level1)[0]; | ||||
|   var level22 = createDirUnder(level1)[0]; | ||||
|   var level3 = createDirUnder(level2)[0]; | ||||
|   return [level1, level2, level22, level3]; | ||||
| } | ||||
|  | ||||
| describe('API test', function() { | ||||
|   var testdir; | ||||
|  | ||||
|   beforeEach(function(done) { | ||||
|     tmp.dir({unsafeCleanup: true}, function(err, dir) { | ||||
|       if (err) return done(err); | ||||
|       testdir = dir; | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.file()` should find all files and returns as an array in callback', function(done) { | ||||
|     var expect = createFilesUnder(testdir, 3); | ||||
|     find.file(testdir, function(found) { | ||||
|       assertEqual(expect, found); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.file()` should find recursively', function(done) { | ||||
|     var expect = createFilesUnder(testdir, 3); | ||||
|     var level1 = createDirUnder(testdir); | ||||
|     expect = expect.concat(createFilesUnder(testdir, 2)); | ||||
|  | ||||
|     find.file(testdir, function(found) { | ||||
|       assertEqual(expect, found); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.dir()` should find all dirs just like find.file()', function(done) { | ||||
|     var expect = createNestedDirs(testdir); | ||||
|     find.dir(testdir, function(found) { | ||||
|       assertEqual(expect, found); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.eachfile()` should find all files and process one by one', function(done) { | ||||
|     var expect = createFilesUnder(testdir, 3); | ||||
|     count = 0; | ||||
|     find.eachfile(testdir, function(thisfile) { | ||||
|       assert(expect.indexOf(thisfile) > -1); | ||||
|       count++; | ||||
|     }).end(function() { | ||||
|       assert(count == expect.length); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.eachdir()` should find all dirs just like find.eachfile()', function(done) { | ||||
|     var expect = createNestedDirs(testdir); | ||||
|     var count = 0; | ||||
|     find.eachdir(testdir, function(thisdir) { | ||||
|       assert(expect.indexOf(thisdir) > -1); | ||||
|       count++; | ||||
|     }).end(function() { | ||||
|       assert(count == expect.length); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.fileSync()` should find all files synchronously', function() { | ||||
|     var expect = createFilesUnder(testdir, 3); | ||||
|     var found = find.fileSync(testdir); | ||||
|     assertEqual(expect, found); | ||||
|   }); | ||||
|  | ||||
|   it('`find.dirSync()` should find all dirs synchronously', function() { | ||||
|     var expect = createNestedDirs(testdir, 3); | ||||
|     var found = find.dirSync(testdir); | ||||
|     assertEqual(expect, found); | ||||
|   }); | ||||
|  | ||||
|   it('`find.*` should find by name', function(done) { | ||||
|     var expect = createFilesUnder(testdir, 3); | ||||
|     var first = expect[0]; | ||||
|     find.file(path.basename(first), testdir, function(found) { | ||||
|       assert.equal(first, found[0]); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.*` should find by regular expression', function() { | ||||
|     var html = createFilesUnder(testdir, 1, '.html'); | ||||
|     var js = createFilesUnder(testdir, 2, '.js'); | ||||
|  | ||||
|     htmlAll = find.fileSync(/\.html$/, testdir); | ||||
|     assert.equal( html.join(''), htmlAll.join('')); | ||||
|  | ||||
|     jsAll = find.fileSync(/\.js$/, testdir); | ||||
|     assertEqual(js, jsAll); | ||||
|   }); | ||||
|  | ||||
|   it('`find.*` should follow file symbolic links', function(done) { | ||||
|     var files = createFilesUnder(testdir, 2); | ||||
|     var srcfile = files[0]; | ||||
|     var linkfile = srcfile + '-link'; | ||||
|     files.push(linkfile); | ||||
|     fs.symlinkSync(srcfile, linkfile, 'file'); | ||||
|  | ||||
|     var allfile = find.fileSync(testdir); | ||||
|     assertEqual(files, allfile); | ||||
|  | ||||
|     find.file(testdir, function(found) { | ||||
|       assertEqual(files, found); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.find(Sync)` should return the symbolic links directly which does not exist', function(done) { | ||||
|     var files = createFilesUnder(testdir, 2); | ||||
|     var srcfile = files[0]; | ||||
|     var linkfile = srcfile + '-link'; | ||||
|     fs.symlinkSync(srcfile, linkfile, 'file'); | ||||
|     fs.unlinkSync(srcfile); | ||||
|  | ||||
|     var expected = [files[1], linkfile]; | ||||
|     var found = find.fileSync(testdir); | ||||
|     assertEqual(found, expected); | ||||
|  | ||||
|     find.file(testdir, function(found) { | ||||
|       assertEqual(expected, found); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.*` should follow direcotry symbolic links', function(done) { | ||||
|     createFilesUnder(testdir, 2); | ||||
|     var dir = createDirUnder(testdir)[0]; | ||||
|     var srcdir = createDirUnder(testdir)[0]; | ||||
|     var linkdir = srcdir + '-link'; | ||||
|     var dirs = [dir, srcdir, linkdir]; | ||||
|  | ||||
|     fs.symlinkSync(srcdir, linkdir, 'dir'); | ||||
|  | ||||
|     var alldir = find.dirSync(testdir); | ||||
|     assertEqual(dirs, alldir); | ||||
|  | ||||
|     find.dir(testdir, function(found) { | ||||
|       assertEqual(dirs, found); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.dir(Sync)` should ignore circular symbolic links', function(done) { | ||||
|     var dirs = createDirUnder(testdir, 2); | ||||
|     var src = dirs[0]; | ||||
|     var remaining = dirs.slice(1); | ||||
|     var a = src + '-link-a'; | ||||
|     var b = src + '-link-b'; | ||||
|     var c = src + '-link-c'; | ||||
|  | ||||
|     fs.symlinkSync(src, a, 'dir'); | ||||
|     fs.symlinkSync(a, b, 'dir'); | ||||
|     fs.symlinkSync(b, c, 'dir'); | ||||
|     fs.rmdirSync(src); | ||||
|     fs.symlinkSync(c, src, 'dir'); | ||||
|  | ||||
|     var found = find.dirSync(testdir); | ||||
|     assertEqual(remaining, found); | ||||
|  | ||||
|     find.dir(testdir, function(found) { | ||||
|       assertEqual(remaining, found); | ||||
|       done(); | ||||
|     }) | ||||
|   }); | ||||
|  | ||||
|   it('`find.*` should find for a symbolic directory', function(done) { | ||||
|     var expect = createFilesUnder(testdir, 2); | ||||
|     var linkdir = testdir + '-link'; | ||||
|  | ||||
|     fs.symlinkSync(testdir, linkdir, 'dir'); | ||||
|  | ||||
|     var allfiles = find.fileSync(linkdir); | ||||
|     assertEqual( | ||||
|       expect.map(function(n) { return fs.realpathSync(n) }), | ||||
|       allfiles.map(function(n) { return fs.realpathSync(n) }) | ||||
|     ); | ||||
|  | ||||
|     find.file(linkdir, function(found) { | ||||
|       assertEqual( | ||||
|         expect.map(function(n) { return fs.realpathSync(n) }), | ||||
|         found.map(function(n) { return fs.realpathSync(n) }) | ||||
|       ); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`find.*` should follow relative symbolic links', function(done) { | ||||
|     var count = 2; | ||||
|     var dir = createNestedDirs(testdir)[0]; | ||||
|     createFilesUnder(dir, count); | ||||
|  | ||||
|     var linkdir = dir + '-link'; | ||||
|  | ||||
|     // create relative symbolic link | ||||
|     process.chdir(path.dirname(dir)); | ||||
|     fs.symlinkSync(path.basename(dir), linkdir, 'dir'); | ||||
|  | ||||
|     // move to somewhere else | ||||
|     process.chdir(__dirname); | ||||
|     var found = find.fileSync(linkdir); | ||||
|  | ||||
|     assert.equal(found.length, count); | ||||
|  | ||||
|     find.file(testdir, function(found) { | ||||
|       assert.equal(found.length, count); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('`.error()`should catch exceptions', function(done) { | ||||
|     var catched; | ||||
|     try { | ||||
|       find | ||||
|         .file('__not_exist', function(f) { }) | ||||
|         .error(function(err) { | ||||
|           catched = true; | ||||
|         }); | ||||
|     } catch(e) { | ||||
|       catched = false; | ||||
|     } | ||||
|     setTimeout(function() { | ||||
|       assert(catched); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   it('should throw exception at root which does not exist', function(done) { | ||||
|     var catched = false; | ||||
|     try { | ||||
|       find.fileSync('__not_exist'); | ||||
|     } catch(e) { | ||||
|       catched = true; | ||||
|     } | ||||
|     setTimeout(function() { | ||||
|       assert(catched); | ||||
|       done(); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user
	 tatianamac
					tatianamac