diff --git a/test/parallel/test-fs-promises-file-handle-truncate.js b/test/parallel/test-fs-promises-file-handle-truncate.js new file mode 100644 index 00000000000000..44d919a042e276 --- /dev/null +++ b/test/parallel/test-fs-promises-file-handle-truncate.js @@ -0,0 +1,26 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const path = require('path'); +const { open, readFile } = require('fs').promises; +const tmpdir = require('../common/tmpdir'); + +tmpdir.refresh(); +common.crashOnUnhandledRejection(); + +async function validateTruncate() { + const text = 'Hello world'; + const filename = path.resolve(tmpdir.path, 'truncate-file.txt'); + const fileHandle = await open(filename, 'w+'); + + const buffer = Buffer.from(text, 'utf8'); + await fileHandle.write(buffer, 0, buffer.length); + + assert.deepStrictEqual((await readFile(filename)).toString(), text); + + await fileHandle.truncate(5); + assert.deepStrictEqual((await readFile(filename)).toString(), 'Hello'); +} + +validateTruncate().then(common.mustCall()); diff --git a/test/parallel/test-fs-promises.js b/test/parallel/test-fs-promises.js index d2e82243458ffe..32439ce0c48cac 100644 --- a/test/parallel/test-fs-promises.js +++ b/test/parallel/test-fs-promises.js @@ -17,6 +17,7 @@ const { mkdir, mkdtemp, open, + readFile, readdir, readlink, realpath, @@ -24,6 +25,7 @@ const { rmdir, stat, symlink, + truncate, unlink, utimes } = fsPromises; @@ -99,6 +101,8 @@ function verifyStatObject(stat) { const ret2 = await handle.read(Buffer.alloc(buf2Len), 0, buf2Len, 0); assert.strictEqual(ret2.bytesRead, buf2Len); assert.deepStrictEqual(ret2.buffer, buf2); + await truncate(dest, 5); + assert.deepStrictEqual((await readFile(dest)).toString(), 'hello'); await chmod(dest, 0o666); await handle.chmod(0o666);