From fcc46ee5a9ea9fdc66934cbba6a5e7b1486bb1aa Mon Sep 17 00:00:00 2001 From: David Humphrey Date: Wed, 4 Apr 2018 16:29:18 -0400 Subject: [PATCH] test: increase test coverage for fs/promises.js PR-URL: https://github.com/nodejs/node/pull/19811 Reviewed-By: Ruben Bridgewater Reviewed-By: Tiancheng "Timothy" Gu Reviewed-By: James M Snell Reviewed-By: Michael Dawson --- test/parallel/test-fs-promises.js | 55 ++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/test/parallel/test-fs-promises.js b/test/parallel/test-fs-promises.js index 8f1d646bb0e01e..992f30afec233e 100644 --- a/test/parallel/test-fs-promises.js +++ b/test/parallel/test-fs-promises.js @@ -87,24 +87,60 @@ function verifyStatObject(stat) { stats = await stat(dest); verifyStatObject(stats); + stats = await handle.stat(); + verifyStatObject(stats); + await fdatasync(handle); + await handle.datasync(); await fsync(handle); + await handle.sync(); - const buf = Buffer.from('hello world'); - + const buf = Buffer.from('hello fsPromises'); + const bufLen = buf.length; await write(handle, buf); - - const ret = await read(handle, Buffer.alloc(11), 0, 11, 0); - assert.strictEqual(ret.bytesRead, 11); + const ret = await read(handle, Buffer.alloc(bufLen), 0, bufLen, 0); + assert.strictEqual(ret.bytesRead, bufLen); assert.deepStrictEqual(ret.buffer, buf); + const buf2 = Buffer.from('hello FileHandle'); + const buf2Len = buf2.length; + await handle.write(buf2, 0, buf2Len, 0); + const ret2 = await handle.read(Buffer.alloc(buf2Len), 0, buf2Len, 0); + assert.strictEqual(ret2.bytesRead, buf2Len); + assert.deepStrictEqual(ret2.buffer, buf2); + await chmod(dest, 0o666); await fchmod(handle, 0o666); + await handle.chmod(0o666); + + // `mode` can't be > 0o777 + assert.rejects( + async () => chmod(handle, (0o777 + 1)), + { + code: 'ERR_INVALID_ARG_TYPE', + name: 'TypeError [ERR_INVALID_ARG_TYPE]' + } + ); + assert.rejects( + async () => fchmod(handle, (0o777 + 1)), + { + code: 'ERR_OUT_OF_RANGE', + name: 'RangeError [ERR_OUT_OF_RANGE]' + } + ); + assert.rejects( + async () => handle.chmod(handle, (0o777 + 1)), + { + code: 'ERR_INVALID_ARG_TYPE', + name: 'TypeError [ERR_INVALID_ARG_TYPE]' + } + ); await utimes(dest, new Date(), new Date()); try { await futimes(handle, new Date(), new Date()); + await handle.utimes(new Date(), new Date()); } catch (err) { // Some systems do not have futimes. If there is an error, // expect it to be ENOSYS @@ -152,6 +188,15 @@ function verifyStatObject(stat) { await rmdir(newdir); await mkdtemp(path.resolve(tmpDir, 'FOO')); + assert.rejects( + // mkdtemp() expects to get a string prefix. + async () => mkdtemp(1), + { + code: 'ERR_INVALID_ARG_TYPE', + name: 'TypeError [ERR_INVALID_ARG_TYPE]' + } + ); + } doTest().then(common.mustCall());