Fix fs.WriteStream.end(data, [encoding]) throws TypeError

This commit is contained in:
koichik 2011-03-02 00:35:32 +09:00 committed by Ryan Dahl
parent 4ab5476e89
commit 4e7c37b87c
2 changed files with 34 additions and 1 deletions

View File

@ -1052,7 +1052,15 @@ WriteStream.prototype.write = function(data) {
return false;
};
WriteStream.prototype.end = function(cb) {
WriteStream.prototype.end = function(data, encoding, cb) {
if (typeof(data) === 'function') {
cb = data;
} else if (typeof(encoding) === 'function') {
cb = encoding;
this.write(data);
} else if (arguments.length > 0) {
this.write(data, encoding);
}
this.writable = false;
this._queue.push([fs.close, cb]);
this.flush();

View File

@ -0,0 +1,25 @@
var common = require('../common');
var assert = require('assert');
var path = require('path'),
fs = require('fs');
var writeEndOk = false;
(function() {
debugger;
var file = path.join(common.tmpDir, 'write-end-test.txt');
var stream = fs.createWriteStream(file);
stream.end('a\n', 'utf8', function() {
var content = fs.readFileSync(file, 'utf8');
assert.equal(content, 'a\n');
writeEndOk = true;
});
})();
process.on('exit', function() {
assert.ok(writeEndOk);
});