test.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /* globals describe, it */
  2. var chai = require('chai')
  3. chai.should()
  4. var expect = chai.expect
  5. var moquire = require('moquire')
  6. var MODULE = '../'
  7. describe('find-root', function () {
  8. it('recursively looks for package.json', function () {
  9. var checked = []
  10. var fs = {
  11. existsSync: function (path) {
  12. checked.push(path)
  13. return path === '/foo/package.json'
  14. }
  15. }
  16. var findRoot = moquire(MODULE, {fs: fs})
  17. findRoot('/foo/bar/baz')
  18. .should.equal('/foo')
  19. checked.should.deep.equal([
  20. '/foo/bar/baz/package.json',
  21. '/foo/bar/package.json',
  22. '/foo/package.json'
  23. ])
  24. })
  25. it('can take a custom check argument', function () {
  26. var checked = []
  27. var findRoot = require(MODULE)
  28. findRoot('/foo/bar/baz', function (dir) {
  29. checked.push(dir)
  30. return dir === '/foo/bar'
  31. })
  32. .should.equal('/foo/bar')
  33. checked.should.deep.equal([
  34. '/foo/bar/baz',
  35. '/foo/bar'
  36. ])
  37. })
  38. it('throws if not found', function () {
  39. var fs = {
  40. statSync: function (path) {
  41. throw new Error()
  42. }
  43. }
  44. var findRoot = moquire(MODULE, {fs: fs})
  45. expect(function () {
  46. findRoot('/foo/bar/baz/')
  47. }).to.throw('not found')
  48. })
  49. })