From d2179bd6f104911e9ead0121d7423b0f3b3a6536 Mon Sep 17 00:00:00 2001 From: Sakthipriyan Vairamani Date: Sat, 27 Aug 2016 15:51:52 +0530 Subject: [PATCH] test: make sure over truncation of file zero fills If the file is over truncated, then the rest of the file should be filled with null bytes. These tests ensure the same. PR-URL: https://github.com/nodejs/node/pull/7648 Reviewed-By: Anna Henningsen Reviewed-By: James M Snell --- test/parallel/test-fs-truncate.js | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/parallel/test-fs-truncate.js b/test/parallel/test-fs-truncate.js index ab0148a2461f70..442038eeb50a51 100644 --- a/test/parallel/test-fs-truncate.js +++ b/test/parallel/test-fs-truncate.js @@ -106,3 +106,43 @@ function testFtruncate(cb) { }); }); } + + +// Make sure if the size of the file is smaller than the length then it is +// filled with zeroes. + +{ + const file1 = path.resolve(tmp, 'truncate-file-1.txt'); + fs.writeFileSync(file1, 'Hi'); + fs.truncateSync(file1, 4); + assert(fs.readFileSync(file1).equals(Buffer.from('Hi\u0000\u0000'))); +} + +{ + const file2 = path.resolve(tmp, 'truncate-file-2.txt'); + fs.writeFileSync(file2, 'Hi'); + const fd = fs.openSync(file2, 'r+'); + process.on('exit', () => fs.closeSync(fd)); + fs.ftruncateSync(fd, 4); + assert(fs.readFileSync(file2).equals(Buffer.from('Hi\u0000\u0000'))); +} + +{ + const file3 = path.resolve(tmp, 'truncate-file-3.txt'); + fs.writeFileSync(file3, 'Hi'); + fs.truncate(file3, 4, common.mustCall(function(err) { + assert.ifError(err); + assert(fs.readFileSync(file3).equals(Buffer.from('Hi\u0000\u0000'))); + })); +} + +{ + const file4 = path.resolve(tmp, 'truncate-file-4.txt'); + fs.writeFileSync(file4, 'Hi'); + const fd = fs.openSync(file4, 'r+'); + process.on('exit', () => fs.closeSync(fd)); + fs.ftruncate(fd, 4, common.mustCall(function(err) { + assert.ifError(err); + assert(fs.readFileSync(file4).equals(Buffer.from('Hi\u0000\u0000'))); + })); +}