Fixed Stats prototypes, created full Mocha test suite
This commit is contained in:
parent
0fb099d6c8
commit
7c14af9668
14
README.md
14
README.md
|
@ -328,7 +328,7 @@ fs.open('/myfile', 'w', function(err, fd) {
|
|||
#### fs.stat(path, callback)<a name="stat"></a>
|
||||
|
||||
Obtain file status about the file at `path`. Asynchronous [stat(2)](http://pubs.opengroup.org/onlinepubs/009695399/functions/stat.html).
|
||||
Callback gets `(error, stats)`, where `stats` is an object with the following properties:
|
||||
Callback gets `(error, stats)`, where `stats` is an object with the following properties...
|
||||
|
||||
```
|
||||
{
|
||||
|
@ -343,7 +343,17 @@ Callback gets `(error, stats)`, where `stats` is an object with the following pr
|
|||
}
|
||||
```
|
||||
|
||||
If the file at `path` is a symbolik link, the file to which it links will be used instead.
|
||||
...and the following methods:
|
||||
|
||||
isFile(): Returns true if the node is a file.
|
||||
isDirectory(): Returns true if the node is a directory.
|
||||
isBlockDevice(): Not implemented, returns false.
|
||||
isCharacterDevice(): Not implemented, returns false.
|
||||
isSymbolicLink(): Returns true if the node is a symbolic link.
|
||||
isFIFO(): Not implemented, returns false.
|
||||
isSocket(): Not implemented, returns false.
|
||||
|
||||
If the file at `path` is a symbolic link, the file to which it links will be used instead.
|
||||
To get the status of a symbolic link file, use [fs.lstat()](#lstat) instead.
|
||||
|
||||
Examples:
|
||||
|
|
|
@ -129,11 +129,11 @@ define(function(require) {
|
|||
}
|
||||
|
||||
Stats.prototype.isFile = function() {
|
||||
return this.type === constants.MODE_FILE;
|
||||
return this.type === MODE_FILE;
|
||||
};
|
||||
|
||||
Stats.prototype.isDirectory = function() {
|
||||
return this.type === constants.MODE_DIRECTORY;
|
||||
return this.type === MODE_DIRECTORY;
|
||||
};
|
||||
|
||||
Stats.prototype.isBlockDevice = function() {
|
||||
|
@ -145,7 +145,7 @@ define(function(require) {
|
|||
};
|
||||
|
||||
Stats.prototype.isSymbolicLink = function() {
|
||||
return this.type === constants.MODE_SYMBOLIC_LINK;
|
||||
return this.type === MODE_SYMBOLIC_LINK;
|
||||
};
|
||||
|
||||
Stats.prototype.isFIFO = function() {
|
||||
|
|
|
@ -6,53 +6,103 @@ define(["Filer", "util"], function(Filer, util) {
|
|||
afterEach(util.cleanup);
|
||||
|
||||
it('should be a function', function() {
|
||||
var fs = util.fs();
|
||||
expect(fs.stat.isFile).to.be.a('function');
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(typeof stats.isFile).to.equal('function');
|
||||
});
|
||||
});
|
||||
|
||||
it('should return true if stats are for file', function(done) {
|
||||
var fs = util.fs();
|
||||
var contents = "This is a file.";
|
||||
|
||||
fs.writeFile('/myFile', contents, function(error) {
|
||||
fs.open('/myfile', 'w+', function(error, fd) {
|
||||
if(error) throw error;
|
||||
fs.stat('/myFile').isFile(function (error, data) {
|
||||
expect(error).not.to.exist;
|
||||
expect(data).toEqual(true);
|
||||
done()
|
||||
fs.fstat(fd, function(error, stats) {
|
||||
expect(stats.isFile()).to.equal(true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should return false if stats are for directory', function(done) {
|
||||
var fs = util.fs();
|
||||
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(stats.isFile()).to.equal(false);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should return false if stats are for symbolic link', function(done) {
|
||||
var fs = util.fs();
|
||||
|
||||
fs.open('/myfile', 'w+', function(error, fd) {
|
||||
if(error) throw error;
|
||||
fs.close(fd, function(error, stats) {
|
||||
if(error) throw error;
|
||||
fs.symlink('/myfile', '/myfilelink', function(error) {
|
||||
if(error) throw error;
|
||||
fs.lstat('/myfilelink', function(error, stats) {
|
||||
expect(stats.isFile()).to.equal(false);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
/* describe('#isDirectory()', function() {
|
||||
describe('#isDirectory()', function() {
|
||||
beforeEach(util.setup);
|
||||
afterEach(util.cleanup);
|
||||
|
||||
it('should be a function', function() {
|
||||
var testStat = this.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(typeof stats.isDirectory).to.equal('function');
|
||||
});
|
||||
expect(typeof this.testStat.isDirectory).toEqual('function');
|
||||
});
|
||||
|
||||
it('should only return true if stats are for directory', function() {
|
||||
var complete = false;
|
||||
var _result;
|
||||
var that = this;
|
||||
it('should return false if stats are for file', function(done) {
|
||||
var fs = util.fs();
|
||||
|
||||
_result = that.fs.stat('/myFile', function(error) {
|
||||
fs.open('/myfile', 'w+', function(error, fd) {
|
||||
if(error) throw error;
|
||||
}).isFile();
|
||||
complete = true;
|
||||
fs.fstat(fd, function(error, stats) {
|
||||
expect(stats.isDirectory()).to.equal(false);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
waitsFor(function() {
|
||||
return complete;
|
||||
}, 'test to complete', DEFAULT_TIMEOUT);
|
||||
it('should return true if stats are for directory', function(done) {
|
||||
var fs = util.fs();
|
||||
|
||||
runs(function() {
|
||||
expect(_error).toEqual(null);
|
||||
expect(_result).toEqual(true);
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(stats.isDirectory()).to.equal(true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should return false if stats are for symbolic link', function(done) {
|
||||
var fs = util.fs();
|
||||
|
||||
fs.open('/myfile', 'w+', function(error, fd) {
|
||||
if(error) throw error;
|
||||
fs.close(fd, function(error, stats) {
|
||||
if(error) throw error;
|
||||
fs.symlink('/myfile', '/myfilelink', function(error) {
|
||||
if(error) throw error;
|
||||
fs.lstat('/myfilelink', function(error, stats) {
|
||||
expect(stats.isDirectory()).to.equal(false);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -62,29 +112,18 @@ define(["Filer", "util"], function(Filer, util) {
|
|||
afterEach(util.cleanup);
|
||||
|
||||
it('should be a function', function() {
|
||||
var testStat = this.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(typeof stats.isBlockDevice).to.equal('function');
|
||||
});
|
||||
expect(typeof this.testStat.isBlockDevice).toEqual('function');
|
||||
});
|
||||
|
||||
it('should return false', function() {
|
||||
var complete = false;
|
||||
var _result;
|
||||
var that = this;
|
||||
|
||||
_result = that.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
}).isBlockDevice();
|
||||
complete = true;
|
||||
|
||||
waitsFor(function() {
|
||||
return complete;
|
||||
}, 'test to complete', DEFAULT_TIMEOUT);
|
||||
|
||||
runs(function() {
|
||||
expect(_error).toEqual(null);
|
||||
expect(_result).toEqual(false);
|
||||
expect(stats.isBlockDevice()).to.equal(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -94,29 +133,18 @@ define(["Filer", "util"], function(Filer, util) {
|
|||
afterEach(util.cleanup);
|
||||
|
||||
it('should be a function', function() {
|
||||
var testStat = this.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(typeof stats.isCharacterDevice).to.equal('function');
|
||||
});
|
||||
expect(typeof this.testStat.isCharacterDevice).toEqual('function');
|
||||
});
|
||||
|
||||
it('should return false', function() {
|
||||
var complete = false;
|
||||
var _result;
|
||||
var that = this;
|
||||
|
||||
_result = that.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
}).isCharacterDevice();
|
||||
complete = true;
|
||||
|
||||
waitsFor(function() {
|
||||
return complete;
|
||||
}, 'test to complete', DEFAULT_TIMEOUT);
|
||||
|
||||
runs(function() {
|
||||
expect(_error).toEqual(null);
|
||||
expect(_result).toEqual(false);
|
||||
expect(stats.isCharacterDevice()).to.equal(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -126,35 +154,50 @@ define(["Filer", "util"], function(Filer, util) {
|
|||
afterEach(util.cleanup);
|
||||
|
||||
it('should be a function', function() {
|
||||
var testStat = this.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(typeof stats.isSymbolicLink).to.equal('function');
|
||||
});
|
||||
expect(typeof this.testStat.isSymbolicLink).toEqual('function');
|
||||
});
|
||||
|
||||
it('should return true if stats are for symbolic link', function() {
|
||||
var complete = false;
|
||||
var _error, _result;
|
||||
var that = this;
|
||||
it('should return false if stats are for file', function(done) {
|
||||
var fs = util.fs();
|
||||
|
||||
that.fs.writeFile('/myfile', '', { encoding: 'utf8' }, function(error) {
|
||||
fs.open('/myfile', 'w+', function(error, fd) {
|
||||
if(error) throw error;
|
||||
that.fs.symlink('/myfile', '/myFileLink', function (error) {
|
||||
if (error) throw error;
|
||||
_result = that.fs.lstat('/myfile', function(error) {
|
||||
if(error) throw error;
|
||||
}).isSymbolicLink();
|
||||
complete = true;
|
||||
fs.fstat(fd, function(error, stats) {
|
||||
expect(stats.isSymbolicLink()).to.equal(false);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
waitsFor(function() {
|
||||
return complete;
|
||||
}, 'test to complete', DEFAULT_TIMEOUT);
|
||||
});
|
||||
|
||||
runs(function() {
|
||||
expect(_error).toEqual(null);
|
||||
expect(_result).toEqual(true);
|
||||
it('should return false if stats are for directory', function(done) {
|
||||
var fs = util.fs();
|
||||
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(stats.isSymbolicLink()).to.equal(false);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should return true if stats are for symbolic link', function(done) {
|
||||
var fs = util.fs();
|
||||
|
||||
fs.open('/myfile', 'w+', function(error, fd) {
|
||||
if(error) throw error;
|
||||
fs.close(fd, function(error, stats) {
|
||||
if(error) throw error;
|
||||
fs.symlink('/myfile', '/myfilelink', function(error) {
|
||||
if(error) throw error;
|
||||
fs.lstat('/myfilelink', function(error, stats) {
|
||||
expect(stats.isSymbolicLink()).to.equal(true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -164,29 +207,18 @@ define(["Filer", "util"], function(Filer, util) {
|
|||
afterEach(util.cleanup);
|
||||
|
||||
it('should be a function', function() {
|
||||
var testStat = this.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(typeof stats.isFIFO).to.equal('function');
|
||||
});
|
||||
expect(typeof this.testStat.isFIFO).toEqual('function');
|
||||
});
|
||||
|
||||
it('should return false', function() {
|
||||
var complete = false;
|
||||
var _result;
|
||||
var that = this;
|
||||
|
||||
_result = that.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
}).isFIFO();
|
||||
complete = true;
|
||||
|
||||
waitsFor(function() {
|
||||
return complete;
|
||||
}, 'test to complete', DEFAULT_TIMEOUT);
|
||||
|
||||
runs(function() {
|
||||
expect(_error).toEqual(null);
|
||||
expect(_result).toEqual(false);
|
||||
expect(stats.isFIFO()).to.equal(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -196,31 +228,20 @@ define(["Filer", "util"], function(Filer, util) {
|
|||
afterEach(util.cleanup);
|
||||
|
||||
it('should be a function', function() {
|
||||
var testStat = this.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
expect(typeof stats.isSocket).to.equal('function');
|
||||
});
|
||||
expect(typeof this.testStat.isSocket).toEqual('function');
|
||||
});
|
||||
|
||||
it('should return false', function() {
|
||||
var complete = false;
|
||||
var _result;
|
||||
var that = this;
|
||||
|
||||
_result = that.fs.stat('/', function(error) {
|
||||
var fs = util.fs();
|
||||
fs.stat('/', function(error, stats) {
|
||||
if(error) throw error;
|
||||
}).isSocket();
|
||||
complete = true;
|
||||
|
||||
waitsFor(function() {
|
||||
return complete;
|
||||
}, 'test to complete', DEFAULT_TIMEOUT);
|
||||
|
||||
runs(function() {
|
||||
expect(_error).toEqual(null);
|
||||
expect(_result).toEqual(false);
|
||||
expect(stats.isSocket()).to.equal(false);
|
||||
});
|
||||
});
|
||||
});*/
|
||||
});
|
||||
});
|
||||
)
|
||||
});
|
Loading…
Reference in New Issue