summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasashi Hirano <cherrydog07@gmail.com>2018-08-31 08:15:59 +0900
committerGeorge Adams <george.adams@uk.ibm.com>2018-09-04 17:58:32 +0100
commitfdf829eea48206d0a078dba3a0bf9f77c6acb619 (patch)
tree9496d934e5ce0b3a36e7d458a7277b8336ed22b8
parent4cea01a41027b5d011232da352a9f165221e74a7 (diff)
downloadandroid-node-v8-fdf829eea48206d0a078dba3a0bf9f77c6acb619.tar.gz
android-node-v8-fdf829eea48206d0a078dba3a0bf9f77c6acb619.tar.bz2
android-node-v8-fdf829eea48206d0a078dba3a0bf9f77c6acb619.zip
test: check parameter type of fs.mkdir()
Added tests to check parameter type of fs.mkdir(), fs.mkdirSync() and fsPromises.mkdir() to increase coverage. PR-URL: https://github.com/nodejs/node/pull/22616 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: George Adams <george.adams@uk.ibm.com>
-rw-r--r--test/parallel/test-fs-mkdir.js26
-rw-r--r--test/parallel/test-fs-promises.js34
2 files changed, 60 insertions, 0 deletions
diff --git a/test/parallel/test-fs-mkdir.js b/test/parallel/test-fs-mkdir.js
index f5fecbe157..d07aab5376 100644
--- a/test/parallel/test-fs-mkdir.js
+++ b/test/parallel/test-fs-mkdir.js
@@ -177,6 +177,32 @@ if (common.isMainThread && (common.isLinux || common.isOSX)) {
});
}
+// mkdirSync and mkdir require options.recursive to be a boolean.
+// Anything else generates an error.
+{
+ const pathname = path.join(tmpdir.path, nextdir());
+ ['', 1, {}, [], null, Symbol('test'), () => {}].forEach((recursive) => {
+ common.expectsError(
+ () => fs.mkdir(pathname, { recursive }, common.mustNotCall()),
+ {
+ code: 'ERR_INVALID_ARG_TYPE',
+ type: TypeError,
+ message: 'The "recursive" argument must be of type boolean. Received ' +
+ `type ${typeof recursive}`
+ }
+ );
+ common.expectsError(
+ () => fs.mkdirSync(pathname, { recursive }),
+ {
+ code: 'ERR_INVALID_ARG_TYPE',
+ type: TypeError,
+ message: 'The "recursive" argument must be of type boolean. Received ' +
+ `type ${typeof recursive}`
+ }
+ );
+ });
+}
+
// Keep the event loop alive so the async mkdir() requests
// have a chance to run (since they don't ref the event loop).
process.nextTick(() => {});
diff --git a/test/parallel/test-fs-promises.js b/test/parallel/test-fs-promises.js
index bcfaaf3890..714f1db05d 100644
--- a/test/parallel/test-fs-promises.js
+++ b/test/parallel/test-fs-promises.js
@@ -211,6 +211,22 @@ function verifyStatObject(stat) {
assert.deepStrictEqual(list, ['baz2.js', 'dir']);
await rmdir(newdir);
+ // mkdir when options is number.
+ {
+ const dir = path.join(tmpDir, nextdir());
+ await mkdir(dir, 777);
+ stats = await stat(dir);
+ assert(stats.isDirectory());
+ }
+
+ // mkdir when options is string.
+ {
+ const dir = path.join(tmpDir, nextdir());
+ await mkdir(dir, '777');
+ stats = await stat(dir);
+ assert(stats.isDirectory());
+ }
+
// mkdirp when folder does not yet exist.
{
const dir = path.join(tmpDir, nextdir(), nextdir());
@@ -250,6 +266,24 @@ function verifyStatObject(stat) {
assert(stats.isDirectory());
}
+ // mkdirp require recursive option to be a boolean.
+ // Anything else generates an error.
+ {
+ const dir = path.join(tmpDir, nextdir(), nextdir());
+ ['', 1, {}, [], null, Symbol('test'), () => {}].forEach((recursive) => {
+ assert.rejects(
+ // mkdir() expects to get a boolean value for options.recursive.
+ async () => mkdir(dir, { recursive }),
+ {
+ code: 'ERR_INVALID_ARG_TYPE',
+ name: 'TypeError [ERR_INVALID_ARG_TYPE]',
+ message: 'The "recursive" argument must be of type boolean. ' +
+ `Received type ${typeof recursive}`
+ }
+ );
+ });
+ }
+
await mkdtemp(path.resolve(tmpDir, 'FOO'));
assert.rejects(
// mkdtemp() expects to get a string prefix.