From 61998266a681a29624a69c2954af7a49ff6b40ab Mon Sep 17 00:00:00 2001 From: Eldar Gabdullin Date: Thu, 13 Sep 2012 14:15:58 +0400 Subject: [PATCH] update README --- README.md | 71 +++++++++++++++++++++++++++++++++++++++++-------- test/fake-fs.js | 4 +-- 2 files changed, 62 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 7f86df4..758c128 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,31 @@ # fake-fs -Fake node.js file system for testing. Supports `stat`, `readdir`, `readFile`, -`exists` and their sync counterparts. Perhaps more methods will be added in -future. +Fake node.js file system for testing. Supports `stat`, `exists`, `readdir`, +`readFile`, `writeFile`, `mkdir` and their sync counterparts. Perhaps a bit +more will be added in future. ## Usage ``` javascript -var fs = require('fake-fs') +var Fs = require('fake-fs') +var fs = new Fs ``` Define a dir ``` javascript -// note that it works like mkdir -p fs.dir('a/b/c') - -fs.existsSync('a').should.be.true fs.existsSync('a/b/c').should.be.true +fs.existsSync('a').should.be.true // note that it works like mkdir -p +fs.existsSync('.').should.be.true // in fact you defined an item at absolute path +fs.existsSync(process.cwd()).should.be.true ``` Dir with some meta ``` javascript fs.dir('bin', { - mtime: 100, + mtime: 100, // by default it will be set to (new Date) atime: 300, ctime: 50 }) @@ -35,7 +36,6 @@ Define an empty file ``` javascript fs.file('foo/bar.txt') - fs.readFileSync('foo/bar.txt', 'utf8').should.equal('') fs.statSync('foo').isDirectory().should.be.true // foo automatically created ``` @@ -68,10 +68,59 @@ returns a proxy which prefixes everything you defined with `path`. fs.at('public/assets') .file('style.css') .file('icons.png') - fs.existsSync('public/assets/icons.png').should.be.true ``` +It also has convenience methods for patching-unpatching of global `fs` object. + +``` javascript +fs.patch() +fs.dir('foo') +require('fs').existsSync('foo').should.be.true +fs.unpatch() +require('fs').existsSync('foo').should.be.false +``` + +## Supported features + +``` +.stat() + ✓ Should return stats + ✓ Should throw ENOENT on non-existent path + ✓ Should support absolute paths +.readdir() + ✓ Should list a dir contents + ✓ Should throw ENOENT on non-existent path + ✓ Should throw ENOTDIR on non-dir +.exists() + ✓ Should return true on existent path + ✓ Should return false for non-existent path +.mkdir() + ✓ Should create dir + ✓ Should ignore mode + ✓ Should throw EEXIST on existing item + ✓ Should throw ENOENT on non-existent parent + ✓ Should throw ENOTDIR on non-dir parent + ✓ Should update parent times +.readFile() + ✓ Should read file contents + ✓ Should decode file contents + ✓ Should throw ENOENT on non-existent file + ✓ Should throw EISDIR on directory +.writeFile() + ✓ Should write file + ✓ Should respect encoding + ✓ Should allow to write buffers + ✓ Should throw ENOTDIR when parent is not a dir + ✓ Should throw ENOENT whent parent dir does not exist + ✓ Should update dir times on file creation + ✓ Should not update dir times on file update +``` + +## Notes + +If you decide to use this library please depend on strict versions. + ## Installation Via npm @@ -80,7 +129,7 @@ Via npm npm install fake-fs ``` -To run tests install dev dependencies and execute `npm test` command. +To run tests install dev dependencies and run `npm test` command. ``` npm install -d diff --git a/test/fake-fs.js b/test/fake-fs.js index 0099f6a..30996d4 100644 --- a/test/fake-fs.js +++ b/test/fake-fs.js @@ -260,12 +260,12 @@ describe('Fake FS', function () { fs.readFileSync('a')[0].should.equal(10) }) - it('Should throw ENOTDIR when parent is not dir', function () { + it('Should throw ENOTDIR when parent is not a dir', function () { fs.file('a').writeFile('a/b', '', cb) cb.error('ENOTDIR') }) - it('Should throw ENOENT whent parent dir is not exist', function () { + it('Should throw ENOENT whent parent dir does not exist', function () { fs.writeFile('a', '', cb) cb.error('ENOENT') })