You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							1.2 KiB
						
					
					
				| /* globals describe, it */
 | |
| var chai = require('chai')
 | |
| chai.should()
 | |
| var expect = chai.expect
 | |
| var moquire = require('moquire')
 | |
| 
 | |
| var MODULE = '../'
 | |
| 
 | |
| describe('find-root', function () {
 | |
|   it('recursively looks for package.json', function () {
 | |
|     var checked = []
 | |
|     var fs = {
 | |
|       existsSync: function (path) {
 | |
|         checked.push(path)
 | |
|         return path === '/foo/package.json'
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     var findRoot = moquire(MODULE, {fs: fs})
 | |
| 
 | |
|     findRoot('/foo/bar/baz')
 | |
|       .should.equal('/foo')
 | |
| 
 | |
|     checked.should.deep.equal([
 | |
|       '/foo/bar/baz/package.json',
 | |
|       '/foo/bar/package.json',
 | |
|       '/foo/package.json'
 | |
|     ])
 | |
|   })
 | |
| 
 | |
|   it('can take a custom check argument', function () {
 | |
|     var checked = []
 | |
| 
 | |
|     var findRoot = require(MODULE)
 | |
| 
 | |
|     findRoot('/foo/bar/baz', function (dir) {
 | |
|       checked.push(dir)
 | |
|       return dir === '/foo/bar'
 | |
|     })
 | |
|     .should.equal('/foo/bar')
 | |
| 
 | |
|     checked.should.deep.equal([
 | |
|       '/foo/bar/baz',
 | |
|       '/foo/bar'
 | |
|     ])
 | |
|   })
 | |
| 
 | |
|   it('throws if not found', function () {
 | |
|     var fs = {
 | |
|       statSync: function (path) {
 | |
|         throw new Error()
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     var findRoot = moquire(MODULE, {fs: fs})
 | |
| 
 | |
|     expect(function () {
 | |
|       findRoot('/foo/bar/baz/')
 | |
|     }).to.throw('not found')
 | |
|   })
 | |
| })
 |