Skip to content

Commit

Permalink
test: add tests for options.fs in fs streams
Browse files Browse the repository at this point in the history
PR-URL: #33185
Reviewed-By: Adrian Estrada <[email protected]>
Reviewed-By: Juan José Arboleda <[email protected]>
  • Loading branch information
julianduque authored and juanarbol committed May 4, 2020
1 parent c81e5f6 commit 39ff647
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions test/parallel/test-fs-stream-fs-options.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
'use strict';

require('../common');
const fixtures = require('../common/fixtures');
const path = require('path');
const fs = require('fs');
const assert = require('assert');

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();

const streamOpts = ['open', 'close'];
const writeStreamOptions = [...streamOpts, 'write'];
const readStreamOptions = [...streamOpts, 'read'];
const originalFs = { fs };

{
const file = path.join(tmpdir.path, 'write-end-test0.txt');

writeStreamOptions.forEach((fn) => {
const overrideFs = Object.assign({}, originalFs.fs, { [fn]: null });
if (fn === 'write') overrideFs.writev = null;

const opts = {
fs: overrideFs
};
assert.throws(
() => fs.createWriteStream(file, opts), {
code: 'ERR_INVALID_ARG_TYPE',
name: 'TypeError',
message: `The "options.fs.${fn}" property must be of type function. ` +
'Received null'
},
`createWriteStream options.fs.${fn} should throw if isn't a function`
);
});
}

{
const file = path.join(tmpdir.path, 'write-end-test0.txt');
const overrideFs = Object.assign({}, originalFs.fs, { writev: 'not a fn' });
const opts = {
fs: overrideFs
};
assert.throws(
() => fs.createWriteStream(file, opts), {
code: 'ERR_INVALID_ARG_TYPE',
name: 'TypeError',
message: 'The "options.fs.writev" property must be of type function. ' +
'Received type string (\'not a fn\')'
},
'createWriteStream options.fs.writev should throw if isn\'t a function'
);
}

{
const file = fixtures.path('x.txt');
readStreamOptions.forEach((fn) => {
const overrideFs = Object.assign({}, originalFs.fs, { [fn]: null });
const opts = {
fs: overrideFs
};
assert.throws(
() => fs.createReadStream(file, opts), {
code: 'ERR_INVALID_ARG_TYPE',
name: 'TypeError',
message: `The "options.fs.${fn}" property must be of type function. ` +
'Received null'
},
`createReadStream options.fs.${fn} should throw if isn't a function`
);
});
}

0 comments on commit 39ff647

Please sign in to comment.