add test for fs.open with wx flag for existing file (#745)

* add test for fs.open with wx flag for existing file

* update implementation and open spec to throw EEXIST
This commit is contained in:
Charles M Drani 2019-02-27 09:56:11 -07:00 committed by David Humphrey
parent 914ba8b473
commit ee56794601
2 changed files with 18 additions and 1 deletions

View File

@ -620,7 +620,7 @@ function open_file(context, path, flags, mode, callback) {
directoryData = result; directoryData = result;
if(directoryData.hasOwnProperty(name)) { if(directoryData.hasOwnProperty(name)) {
if(flags.includes(O_EXCLUSIVE)) { if(flags.includes(O_EXCLUSIVE)) {
callback(new Errors.ENOENT('O_CREATE and O_EXCLUSIVE are set, and the named file exists', path)); callback(new Errors.EEXIST('O_CREATE and O_EXCLUSIVE are set, and the named file exists', path));
} else { } else {
directoryEntry = directoryData[name]; directoryEntry = directoryData[name];
if(directoryEntry.type === NODE_TYPE_DIRECTORY && flags.includes(O_WRITE)) { if(directoryEntry.type === NODE_TYPE_DIRECTORY && flags.includes(O_WRITE)) {

View File

@ -47,6 +47,23 @@ describe('fs.open', function() {
}); });
}); });
it('should return an error when flagged for write and the path exists', function(done) {
var fs = util.fs();
fs.mkdir('/tmp', function(error) {
if(error) throw error;
fs.writeFile('/tmp/file', 'data', function(error) {
if(error) throw error;
fs.open('/tmp/file', 'wx', function(error, result) {
expect(error).to.exist;
expect(error.code).to.equal('EEXIST');
expect(result).not.to.exist;
done();
});
});
});
});
it('should return an error when flagged for append and the path is a directory', function(done) { it('should return an error when flagged for append and the path is a directory', function(done) {
var fs = util.fs(); var fs = util.fs();