0.5.1 • Published 9 years ago

sinon-doublist-fs v0.5.1

Weekly downloads
4
License
MIT
Repository
github
Last release
9 years ago

sinon-doublist-fs

node.js fs mixins for sinon-doublist: stubFile(), stubTree()

Build Status

Examples

All sinon sandboxes except fake timers will be created by the both mixin approaches below. (sinon docs)

Mixin with auto-sandboxing (recommended)

sinonDoublist(sinon, 'mocha');
sinonDoublistFs('mocha');

describe('myFunction', function() {
  it('should do something', function() {
    // this.stubFile()
    // this.stubTree()
  });
});

Mixin w/ manual sandboxing

describe('myFunction', function() {
  beforeEach(function() {
    sinonDoublist(sinon, this);
    sinonDoublistFs(this);
  });

  afterEach(function() {
    this.sandbox.restore();
  });

  it('should do something', function() {
    // this.spyFile()
    // this.stubTree()
  });
});

Fake a large file

describe('#validate()', function() {
 it('should detect file that is too large', function() {
    var filename = '/path/to/file';
    this.stubFile(filename).stat('size', 1024 * 1024 * 1024).make();
    var myLib = new MyLib(filename);
    myLib.validate().should.equal(false);
  });
});

Fake a file tree with leaf attributes

/**
 * /root/a
 * /root/a/b
 * /root/a/b2
 * /root/a2
 * /root/a3
 * /root/a3/b4
 * /root/a3/b4/c
 */
this.stubFile('/root').readdir([
  this.stubFile('/root/a').readdir([
    this.stubFile('/root/a/b').size(100),
    this.stubFile('/root/a/b2').size(50)
  ]),
  this.stubFile('/root/a2').size(10),
  this.stubFile('/root/a3').readdir([
    this.stubFile('/root/a3/b4').readdir([
      this.stubFile('/root/a3/b4/c').size(20)
    ])
  ])
]).make();

Fake a file tree from a sparse path list

Creates the same hierarchy as the stubFile() example above. However, ancestor directories are stubbed automatically.

this.stubTree([
  '/root/a/b2',
  '/root/a2',
  '/root/a3/b4/c'
]);

fs coverage

File stubs created by stubFile() / stubTree(), and configured via .stat() and others, will be reflected/modifiable by:

  • fs.writeFile*
  • fs.readFile*
  • fs.exists*
  • fs.readdir*
  • fs.stat* / fs.lstat*
    • Including isFile() / isDirectory() responses
  • fs.unlink*
  • fs.renameSync

If a file stub does not exist for a given path, we fallback to the real fs method. To override this behavior:

  • sinonDoublistFs.realFsFallback = 0
    • Do nothing (async methods will hang).
  • sinonDoublistFs.realFsFallback = 2
    • Throw an Error, ex. existsSync, no such file stub '/path/to/file'

co-fs compatibility

co-fs wrappers just need to be added after sinon-doublist-fs stubbing. See test/lib/co-fs.js.

Installation

NPM

npm install sinon-doublist-fs

API

Documentation

License

MIT

Tests

npm test
0.6.0

9 years ago

0.5.1

10 years ago

0.5.0

10 years ago

0.4.7

10 years ago

0.4.6

11 years ago

0.4.5

11 years ago

0.4.4

11 years ago

0.4.3

11 years ago

0.4.2

11 years ago

0.4.1

11 years ago

0.4.0

11 years ago

0.3.1

11 years ago

0.2.3

11 years ago

0.2.2

11 years ago

0.2.1

11 years ago

0.2.0

11 years ago