123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- var assert = require('chai').assert,
- Path = require('path'),
- fs = require('fs'),
- findup = require('..');
- describe('find-up', function(){
- var fixtureDir = Path.join(__dirname, 'fixture', 'f', 'e', 'd', 'c', 'b', 'a'),
- fsExists = fs.exists ? fs.exists : Path.exists;
- it('accept a function', function(done){
- findup(fixtureDir, function(dir, cb){
- return fsExists(Path.join(dir, 'config.json'), cb);
- }, function(err, file){
- assert.ifError(err);
- assert.equal(file, Path.join(__dirname, 'fixture', 'f', 'e', 'd', 'c'));
- done();
- });
- });
- it('accept a string', function(done){
- findup(fixtureDir, 'config.json', function(err, file){
- assert.ifError(err);
- assert.equal(file, Path.join(__dirname, 'fixture', 'f', 'e', 'd', 'c'));
- done();
- });
- });
- it('is usable with the Object syntax', function(done) {
- new findup.FindUp(fixtureDir, 'config.json', function(err, file){
- assert.ifError(err);
- assert.equal(file, Path.join(__dirname, 'fixture', 'f', 'e', 'd', 'c'));
- done();
- });
- });
- it('find several files when using with the EventEmitter syntax', function(done){
- var ee = new findup.FindUp(fixtureDir, 'config.json');
- ee.once('found', function(file){
- assert.equal(file, Path.join(__dirname, 'fixture', 'f', 'e', 'd', 'c'));
- ee.once('found', function(file){
- assert.equal(file, Path.join(__dirname, 'fixture'));
- ee.once('end', function(){
- done();
- });
- });
- });
- });
- it('return files in top dir', function(done){
- findup(fixtureDir, 'top.json', function(err, file){
- assert.ifError(err);
- assert.equal(file, Path.join(__dirname, 'fixture', 'f', 'e', 'd', 'c', 'b', 'a'));
- done();
- });
- });
- it('return files in root dir', function(done){
- findup(fixtureDir, 'dev', function(err, file){
- assert.ifError(err);
- assert.equal(file, '/');
- done();
- });
- });
- it('return an error when looking for non existiong files', function(done){
- findup(fixtureDir, 'toto.json', function(err, file){
- assert.isNotNull(err);
- done();
- });
- });
- it('return an error when looking in a non existing directory', function(done){
- findup('dsqkjfnqsdkjghq', 'toto.json', function(err, file){
- assert.isNotNull(err);
- done();
- });
- });
- it('trigger an error event when looking in a non existing directory', function(done){
- findup('dsqkjfnqsdkjghq', 'toto.json').on('error', function(err, files){
- assert.isNotNull(err);
- done();
- });
- });
- describe('Sync API', function(){
- it('accept a string', function(){
- var file = findup.sync(fixtureDir, 'config.json');
- assert.equal(file, Path.join(__dirname, 'fixture', 'f', 'e', 'd', 'c'));
- });
- it('return a file in top dir', function(){
- var file = findup.sync(fixtureDir, 'top.json');
- assert.equal(file, Path.join(__dirname, 'fixture', 'f', 'e', 'd', 'c', 'b', 'a'));
- });
- it('throw error when looking for a non existing file', function(){
- assert.throw(function(){
- findup.sync(fixtureDir, 'toto.json');
- });
- });
- it('throw error when looking for in a non existing directory', function(){
- assert.throw(function(){
- findup.sync('uhjhbjkg,nfg', 'toto.json');
- });
- });
- });
- });
|