Skip to content

Commit

Permalink
fs: set encoding if option argument is string
Browse files Browse the repository at this point in the history
  • Loading branch information
yosuke-furukawa committed Apr 13, 2015
1 parent 4969579 commit 2f418b6
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -1815,6 +1815,10 @@ function WriteStream(path, options) {
this.pos = this.start;
}

if (options.encoding) {
this.setDefaultEncoding(options.encoding);
}

if (typeof this.fd !== 'number')
this.open();

Expand Down
17 changes: 17 additions & 0 deletions test/parallel/test-fs-read-stream-encoding.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const fs = require('fs');
const path = require('path');
const stream = require('stream');
const encoding = 'base64';

const example = path.join(common.fixturesDir, 'x.txt');
const assertStream = new stream.Writable({
write: function(chunk, enc, next) {
const expected = new Buffer('xyz');
assert(chunk.equals(expected));
}
});
assertStream.setDefaultEncoding(encoding);
fs.createReadStream(example, encoding).pipe(assertStream);
1 change: 1 addition & 0 deletions test/parallel/test-fs-read-stream-throw-type-error.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const fs = require('fs');
Expand Down
23 changes: 23 additions & 0 deletions test/parallel/test-fs-write-stream-encoding.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const fs = require('fs');
const path = require('path');
const stream = require('stream');
const firstEncoding = 'base64';
const secondEncoding = 'binary';

const example = path.join(common.fixturesDir, 'x.txt');
const dummy = path.join(common.tmpDir, '/x.txt');
const exampleReadStream = fs.createReadStream(example, firstEncoding);
const dummyWriteStream = fs.createWriteStream(dummy, firstEncoding);
exampleReadStream.pipe(dummyWriteStream).on('finish', function(){
const assertWriteStream = new stream.Writable({
write: function(chunk, enc, next) {
const expected = new Buffer('xyz\n');
assert(chunk.equals(expected));
}
});
assertWriteStream.setDefaultEncoding(secondEncoding);
fs.createReadStream(dummy, secondEncoding).pipe(assertWriteStream);
});
1 change: 1 addition & 0 deletions test/parallel/test-fs-write-stream-throw-type-error.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const fs = require('fs');
Expand Down

0 comments on commit 2f418b6

Please sign in to comment.