From 0a1dde4c4226a8335ff9e8b73349cffab73cff4b Mon Sep 17 00:00:00 2001 From: christian-bromann Date: Fri, 12 Oct 2018 11:54:37 -0700 Subject: [PATCH] test: add test coverage for fs.truncate Add test to check: - for `null` as len parameter - if error is propagated into callback if file doesn't exist - if an error is actually thrown if len is not a number PR-URL: https://github.com/nodejs/node/pull/23620 Reviewed-By: Refael Ackermann Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Reviewed-By: Trivikram Kamat Reviewed-By: Gireesh Punathil Reviewed-By: Sakthipriyan Vairamani Reviewed-By: Denys Otrishko --- test/parallel/test-fs-truncate.js | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/test/parallel/test-fs-truncate.js b/test/parallel/test-fs-truncate.js index 735385f61c5249..a491ba5b7eaa20 100644 --- a/test/parallel/test-fs-truncate.js +++ b/test/parallel/test-fs-truncate.js @@ -249,6 +249,41 @@ function testFtruncate(cb) { })); } +{ + const file7 = path.resolve(tmp, 'truncate-file-7.txt'); + fs.writeFileSync(file7, 'Hi'); + fs.truncate(file7, undefined, common.mustCall(function(err) { + assert.ifError(err); + assert(fs.readFileSync(file7).equals(Buffer.from(''))); + })); +} + +{ + const file8 = path.resolve(tmp, 'non-existent-truncate-file.txt'); + const validateError = (err) => { + assert.strictEqual(file8, err.path); + assert.strictEqual( + err.message, + `ENOENT: no such file or directory, open '${file8}'`); + assert.strictEqual(err.code, 'ENOENT'); + assert.strictEqual(err.syscall, 'open'); + return true; + }; + fs.truncate(file8, 0, common.mustCall(validateError)); +} + +['', false, null, {}, []].forEach((input) => { + assert.throws( + () => fs.truncate('/foo/bar', input), + { + code: 'ERR_INVALID_ARG_TYPE', + name: 'TypeError [ERR_INVALID_ARG_TYPE]', + message: 'The "len" argument must be of type number. ' + + `Received type ${typeof input}` + } + ); +}); + ['', false, null, undefined, {}, []].forEach((input) => { ['ftruncate', 'ftruncateSync'].forEach((fnName) => { assert.throws(