From fecad40f274e07532656b14a91f58656e0490ab5 Mon Sep 17 00:00:00 2001 From: Nitzan Uziely Date: Wed, 26 May 2021 18:44:53 +0300 Subject: [PATCH] test: fix writefile with fd fix writefile with fd so that it'll close the fds that is uses during the test. PR-URL: https://github.com/nodejs/node/pull/38820 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Darshan Sen --- test/parallel/test-fs-writefile-with-fd.js | 37 ++++++++++++++-------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/test/parallel/test-fs-writefile-with-fd.js b/test/parallel/test-fs-writefile-with-fd.js index 1effc519627b50..209a041c54a48f 100644 --- a/test/parallel/test-fs-writefile-with-fd.js +++ b/test/parallel/test-fs-writefile-with-fd.js @@ -18,27 +18,39 @@ tmpdir.refresh(); /* Open the file descriptor. */ const fd = fs.openSync(filename, 'w'); + try { + /* Write only five characters, so that the position moves to five. */ + assert.deepStrictEqual(fs.writeSync(fd, 'Hello'), 5); + assert.deepStrictEqual(fs.readFileSync(filename).toString(), 'Hello'); - /* Write only five characters, so that the position moves to five. */ - assert.deepStrictEqual(fs.writeSync(fd, 'Hello'), 5); - assert.deepStrictEqual(fs.readFileSync(filename).toString(), 'Hello'); - - /* Write some more with writeFileSync(). */ - fs.writeFileSync(fd, 'World'); - - /* New content should be written at position five, instead of zero. */ - assert.deepStrictEqual(fs.readFileSync(filename).toString(), 'HelloWorld'); + /* Write some more with writeFileSync(). */ + fs.writeFileSync(fd, 'World'); - /* Close the file descriptor. */ - fs.closeSync(fd); + /* New content should be written at position five, instead of zero. */ + assert.deepStrictEqual(fs.readFileSync(filename).toString(), 'HelloWorld'); + } finally { + fs.closeSync(fd); + } } +const fdsToCloseOnExit = []; +process.on('beforeExit', common.mustCall(() => { + for (const fd of fdsToCloseOnExit) { + try { + fs.closeSync(fd); + } catch { + // Failed to close, ignore + } + } +})); + { /* writeFile() test. */ const file = join(tmpdir.path, 'test1.txt'); /* Open the file descriptor. */ fs.open(file, 'w', common.mustSucceed((fd) => { + fdsToCloseOnExit.push(fd); /* Write only five characters, so that the position moves to five. */ fs.write(fd, 'Hello', common.mustSucceed((bytes) => { assert.strictEqual(bytes, 5); @@ -48,9 +60,6 @@ tmpdir.refresh(); fs.writeFile(fd, 'World', common.mustSucceed(() => { /* New content should be written at position five, instead of zero. */ assert.deepStrictEqual(fs.readFileSync(file).toString(), 'HelloWorld'); - - /* Close the file descriptor. */ - fs.closeSync(fd); })); })); }));