From 0f98522b3fe98bf10acd05bcd0b4275c6c3eef05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Pihlstr=C3=B6m?= Date: Fri, 11 Feb 2011 03:35:39 +0100 Subject: [PATCH] convert nonbuffer data to string in fs.writeFile/Sync --- lib/fs.js | 4 ++-- test/simple/test-fs-write-file.js | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/fs.js b/lib/fs.js index 18cf7f16c15..9e50376294d 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -439,7 +439,7 @@ fs.writeFile = function(path, data, encoding_, callback) { if (openErr) { if (callback) callback(openErr); } else { - var buffer = Buffer.isBuffer(data) ? data : new Buffer(data, encoding); + var buffer = Buffer.isBuffer(data) ? data : new Buffer('' + data, encoding); writeAll(fd, buffer, 0, buffer.length, callback); } }); @@ -448,7 +448,7 @@ fs.writeFile = function(path, data, encoding_, callback) { fs.writeFileSync = function(path, data, encoding) { var fd = fs.openSync(path, 'w'); if (!Buffer.isBuffer(data)) { - data = new Buffer(data, encoding || 'utf8'); + data = new Buffer('' + data, encoding || 'utf8'); } var written = 0; var length = data.length; diff --git a/test/simple/test-fs-write-file.js b/test/simple/test-fs-write-file.js index 9fe8bcd808f..255a02e0a72 100644 --- a/test/simple/test-fs-write-file.js +++ b/test/simple/test-fs-write-file.js @@ -7,6 +7,7 @@ var filename = join(common.fixturesDir, 'test.txt'); common.error('writing to ' + filename); +var n = 220; var s = '南越国是前203年至前111年存在于岭南地区的一个国家,国都位于番禺,疆域包括今天中国的广东、' + '广西两省区的大部份地区,福建省、湖南、贵州、云南的一小部份地区和越南的北部。' + '南越国是秦朝灭亡后,由南海郡尉赵佗于前203年起兵兼并桂林郡和象郡后建立。' + @@ -50,11 +51,30 @@ fs.writeFile(filename2, buf, function(e) { }); }); +// test that writeFile accepts numbers. +var filename3 = join(common.fixturesDir, 'test3.txt'); +common.error('writing to ' + filename3); + +fs.writeFile(filename3, n, function(e) { + if (e) throw e; + + ncallbacks++; + common.error('file3 written'); + + fs.readFile(filename3, function(e, buffer) { + if (e) throw e; + common.error('file3 read'); + ncallbacks++; + assert.equal(Buffer.byteLength('' + n), buffer.length); + }); +}); + process.addListener('exit', function() { common.error('done'); - assert.equal(4, ncallbacks); + assert.equal(6, ncallbacks); fs.unlinkSync(filename); fs.unlinkSync(filename2); + fs.unlinkSync(filename3); });