fs.writeFile accepts Buffers
authorAaron Heckmann <aaron.heckmann@gmail.com>
Wed, 16 Jun 2010 04:52:15 +0000 (00:52 -0400)
committerRyan Dahl <ry@tinyclouds.org>
Wed, 16 Jun 2010 06:58:32 +0000 (23:58 -0700)
lib/fs.js
test/simple/test-fs-write-file.js

index dde6ac6..efc7ab1 100644 (file)
--- a/lib/fs.js
+++ b/lib/fs.js
@@ -384,7 +384,7 @@ fs.writeFile = function (path, data, encoding_, callback) {
     if (openErr) {
       if (callback) callback(openErr);
     } else {
-      var buffer = new Buffer(data, encoding);
+      var buffer = data instanceof Buffer ? data : new Buffer(data, encoding);
       writeAll(fd, buffer, callback);
     }
   });
index cc0fdfa..32ae961 100644 (file)
@@ -26,9 +26,30 @@ fs.writeFile(filename, s, function (e) {
   });
 });
 
+// test that writeFile accepts buffers
+filename2 = join(fixturesDir, 'test2.txt');
+buf = new Buffer(s, 'utf8');
+error('writing to ' + filename2);
+
+fs.writeFile(filename2, s, function (e) {
+  if (e) throw e;
+
+  ncallbacks++;
+  error('file2 written');
+
+  fs.readFile(filename2, function (e, buffer) {
+    if (e) throw e;
+    error('file2 read');
+    ncallbacks++;
+    assert.equal(buf.length, buffer.length);
+  });
+});
+
 
 process.addListener('exit', function () {
   error('done');
+  assert.equal(4, ncallbacks);
 
-  assert.equal(2, ncallbacks);
-});
\ No newline at end of file
+  fs.unlinkSync(filename);
+  fs.unlinkSync(filename2);
+});