aboutsummaryrefslogtreecommitdiff
path: root/test/parallel
diff options
context:
space:
mode:
authorJoão Reis <reis@janeasystems.com>2019-07-30 07:50:21 +0100
committerRich Trott <rtrott@gmail.com>2019-08-10 19:22:11 -0700
commit8ef68e66d0465441a79a5dae22e480bf0d83ed25 (patch)
tree903d3a6fb4172e179717d8bc478729f621201577 /test/parallel
parent0376b5b7baf627b112915183edf9e1ea2d3856b7 (diff)
downloadandroid-node-v8-8ef68e66d0465441a79a5dae22e480bf0d83ed25.tar.gz
android-node-v8-8ef68e66d0465441a79a5dae22e480bf0d83ed25.tar.bz2
android-node-v8-8ef68e66d0465441a79a5dae22e480bf0d83ed25.zip
test: clean tmpdir on process exit
PR-URL: https://github.com/nodejs/node/pull/28858 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'test/parallel')
-rw-r--r--test/parallel/test-child-process-server-close.js21
-rw-r--r--test/parallel/test-fs-append-file-sync.js10
-rw-r--r--test/parallel/test-fs-buffertype-writesync.js1
-rw-r--r--test/parallel/test-fs-fsync.js1
-rw-r--r--test/parallel/test-fs-long-path.js4
-rw-r--r--test/parallel/test-fs-open-flags.js5
-rw-r--r--test/parallel/test-fs-options-immutable.js4
-rw-r--r--test/parallel/test-fs-promises-file-handle-append-file.js4
-rw-r--r--test/parallel/test-fs-promises-file-handle-chmod.js2
-rw-r--r--test/parallel/test-fs-promises-file-handle-read.js4
-rw-r--r--test/parallel/test-fs-promises-file-handle-readFile.js2
-rw-r--r--test/parallel/test-fs-promises-file-handle-stat.js1
-rw-r--r--test/parallel/test-fs-promises-file-handle-sync.js1
-rw-r--r--test/parallel/test-fs-promises-file-handle-truncate.js2
-rw-r--r--test/parallel/test-fs-promises-file-handle-write.js8
-rw-r--r--test/parallel/test-fs-promises-file-handle-writeFile.js2
-rw-r--r--test/parallel/test-fs-promises-readfile-with-fd.js2
-rw-r--r--test/parallel/test-fs-promises-writefile-with-fd.js2
-rw-r--r--test/parallel/test-fs-promises.js7
-rw-r--r--test/parallel/test-fs-readdir-types.js1
-rw-r--r--test/parallel/test-fs-readfile-fd.js4
-rw-r--r--test/parallel/test-fs-readfile-pipe-large.js4
-rw-r--r--test/parallel/test-fs-readfilesync-pipe-large.js4
-rw-r--r--test/parallel/test-fs-ready-event-stream.js1
-rw-r--r--test/parallel/test-fs-truncate-fd.js2
-rw-r--r--test/parallel/test-fs-truncate.js8
-rw-r--r--test/parallel/test-fs-write-file.js7
-rw-r--r--test/parallel/test-fs-write-stream-change-open.js1
-rw-r--r--test/parallel/test-fs-write-stream-err.js1
-rw-r--r--test/parallel/test-fs-write-stream-throw-type-error.js8
-rw-r--r--test/parallel/test-fs-write-stream.js1
-rw-r--r--test/parallel/test-fs-writefile-with-fd.js6
-rw-r--r--test/parallel/test-http2-respond-file-error-pipe-offset.js2
-rw-r--r--test/parallel/test-http2-respond-file-with-pipe.js2
-rw-r--r--test/parallel/test-internal-fs-syncwritestream.js2
-rw-r--r--test/parallel/test-pipe-unref.js19
-rw-r--r--test/parallel/test-readline-async-iterators-destroy.js6
-rw-r--r--test/parallel/test-repl-history-perm.js5
-rw-r--r--test/parallel/test-tls-wrap-econnreset-pipe.js19
39 files changed, 136 insertions, 50 deletions
diff --git a/test/parallel/test-child-process-server-close.js b/test/parallel/test-child-process-server-close.js
index d70926f2e8..8ad32b4bbf 100644
--- a/test/parallel/test-child-process-server-close.js
+++ b/test/parallel/test-child-process-server-close.js
@@ -1,12 +1,29 @@
'use strict';
const common = require('../common');
-const { spawn } = require('child_process');
+const assert = require('assert');
+const { fork, spawn } = require('child_process');
const net = require('net');
const tmpdir = require('../common/tmpdir');
-tmpdir.refresh();
+// Run in a child process because the PIPE file descriptor stays open until
+// Node.js completes, blocking the tmpdir and preventing cleanup.
+
+if (process.argv[2] !== 'child') {
+ // Parent
+ tmpdir.refresh();
+
+ // Run test
+ const child = fork(__filename, ['child'], { stdio: 'inherit' });
+ child.on('exit', common.mustCall(function(code) {
+ assert.strictEqual(code, 0);
+ }));
+
+ return;
+}
+
+// Child
const server = net.createServer((conn) => {
spawn(process.execPath, ['-v'], {
stdio: ['ignore', conn, 'ignore']
diff --git a/test/parallel/test-fs-append-file-sync.js b/test/parallel/test-fs-append-file-sync.js
index 190381234a..521776d779 100644
--- a/test/parallel/test-fs-append-file-sync.js
+++ b/test/parallel/test-fs-append-file-sync.js
@@ -99,13 +99,3 @@ const fileData5 = fs.readFileSync(filename5);
assert.strictEqual(Buffer.byteLength(data) + currentFileData.length,
fileData5.length);
-
-// Exit logic for cleanup.
-
-process.on('exit', function() {
- fs.unlinkSync(filename);
- fs.unlinkSync(filename2);
- fs.unlinkSync(filename3);
- fs.unlinkSync(filename4);
- fs.unlinkSync(filename5);
-});
diff --git a/test/parallel/test-fs-buffertype-writesync.js b/test/parallel/test-fs-buffertype-writesync.js
index d5257d214b..042552a46f 100644
--- a/test/parallel/test-fs-buffertype-writesync.js
+++ b/test/parallel/test-fs-buffertype-writesync.js
@@ -19,4 +19,5 @@ v.forEach((value) => {
const fd = fs.openSync(filePath, 'w');
fs.writeSync(fd, value);
assert.strictEqual(fs.readFileSync(filePath).toString(), String(value));
+ fs.closeSync(fd);
});
diff --git a/test/parallel/test-fs-fsync.js b/test/parallel/test-fs-fsync.js
index cf80f46bd0..28a513d10f 100644
--- a/test/parallel/test-fs-fsync.js
+++ b/test/parallel/test-fs-fsync.js
@@ -46,6 +46,7 @@ fs.open(fileTemp, 'a', 0o777, common.mustCall(function(err, fd) {
assert.ifError(err);
fs.fsync(fd, common.mustCall(function(err) {
assert.ifError(err);
+ fs.closeSync(fd);
}));
}));
}));
diff --git a/test/parallel/test-fs-long-path.js b/test/parallel/test-fs-long-path.js
index 11ec4d56fc..3e61c9a769 100644
--- a/test/parallel/test-fs-long-path.js
+++ b/test/parallel/test-fs-long-path.js
@@ -49,7 +49,3 @@ fs.writeFile(fullPath, 'ok', common.mustCall(function(err) {
assert.ifError(err);
}));
}));
-
-process.on('exit', function() {
- fs.unlinkSync(fullPath);
-});
diff --git a/test/parallel/test-fs-open-flags.js b/test/parallel/test-fs-open-flags.js
index d1fee24de6..62866cfb1b 100644
--- a/test/parallel/test-fs-open-flags.js
+++ b/test/parallel/test-fs-open-flags.js
@@ -94,5 +94,8 @@ if (common.isLinux || common.isOSX) {
tmpdir.refresh();
const file = path.join(tmpdir.path, 'a.js');
fs.copyFileSync(fixtures.path('a.js'), file);
- fs.open(file, O_DSYNC, common.mustCall(assert.ifError));
+ fs.open(file, O_DSYNC, common.mustCall((err, fd) => {
+ assert.ifError(err);
+ fs.closeSync(fd);
+ }));
}
diff --git a/test/parallel/test-fs-options-immutable.js b/test/parallel/test-fs-options-immutable.js
index 3555c82f19..5c95213872 100644
--- a/test/parallel/test-fs-options-immutable.js
+++ b/test/parallel/test-fs-options-immutable.js
@@ -70,6 +70,6 @@ if (common.canCreateSymLink()) {
{
const fileName = path.resolve(tmpdir.path, 'streams');
fs.WriteStream(fileName, options).once('open', common.mustCall(() => {
- fs.ReadStream(fileName, options);
- }));
+ fs.ReadStream(fileName, options).destroy();
+ })).end();
}
diff --git a/test/parallel/test-fs-promises-file-handle-append-file.js b/test/parallel/test-fs-promises-file-handle-append-file.js
index f9abef359e..90bb6e3925 100644
--- a/test/parallel/test-fs-promises-file-handle-append-file.js
+++ b/test/parallel/test-fs-promises-file-handle-append-file.js
@@ -22,6 +22,8 @@ async function validateAppendBuffer() {
await fileHandle.appendFile(buffer);
const appendedFileData = fs.readFileSync(filePath);
assert.deepStrictEqual(appendedFileData, buffer);
+
+ await fileHandle.close();
}
async function validateAppendString() {
@@ -33,6 +35,8 @@ async function validateAppendString() {
const stringAsBuffer = Buffer.from(string, 'utf8');
const appendedFileData = fs.readFileSync(filePath);
assert.deepStrictEqual(appendedFileData, stringAsBuffer);
+
+ await fileHandle.close();
}
validateAppendBuffer()
diff --git a/test/parallel/test-fs-promises-file-handle-chmod.js b/test/parallel/test-fs-promises-file-handle-chmod.js
index 2a05218969..5a5f84be80 100644
--- a/test/parallel/test-fs-promises-file-handle-chmod.js
+++ b/test/parallel/test-fs-promises-file-handle-chmod.js
@@ -38,6 +38,8 @@ async function validateFilePermission() {
await fileHandle.chmod(newPermissions);
const statsAfterMod = fs.statSync(filePath);
assert.deepStrictEqual(statsAfterMod.mode & expectedAccess, expectedAccess);
+
+ await fileHandle.close();
}
validateFilePermission().then(common.mustCall());
diff --git a/test/parallel/test-fs-promises-file-handle-read.js b/test/parallel/test-fs-promises-file-handle-read.js
index 13f8c27778..5ba7fc63e3 100644
--- a/test/parallel/test-fs-promises-file-handle-read.js
+++ b/test/parallel/test-fs-promises-file-handle-read.js
@@ -26,6 +26,8 @@ async function validateRead() {
const readAsyncHandle = await fileHandle.read(Buffer.alloc(11), 0, 11, 0);
assert.deepStrictEqual(buffer.length, readAsyncHandle.bytesRead);
assert.deepStrictEqual(buffer, readAsyncHandle.buffer);
+
+ await fileHandle.close();
}
async function validateEmptyRead() {
@@ -38,6 +40,8 @@ async function validateEmptyRead() {
fs.closeSync(fd);
const readAsyncHandle = await fileHandle.read(Buffer.alloc(11), 0, 11, 0);
assert.deepStrictEqual(buffer.length, readAsyncHandle.bytesRead);
+
+ await fileHandle.close();
}
async function validateLargeRead() {
diff --git a/test/parallel/test-fs-promises-file-handle-readFile.js b/test/parallel/test-fs-promises-file-handle-readFile.js
index c31e175019..4416744bf5 100644
--- a/test/parallel/test-fs-promises-file-handle-readFile.js
+++ b/test/parallel/test-fs-promises-file-handle-readFile.js
@@ -25,6 +25,8 @@ async function validateReadFile() {
const readFileData = await fileHandle.readFile();
assert.deepStrictEqual(buffer, readFileData);
+
+ await fileHandle.close();
}
async function validateReadFileProc() {
diff --git a/test/parallel/test-fs-promises-file-handle-stat.js b/test/parallel/test-fs-promises-file-handle-stat.js
index 19ee365213..278d3700ed 100644
--- a/test/parallel/test-fs-promises-file-handle-stat.js
+++ b/test/parallel/test-fs-promises-file-handle-stat.js
@@ -17,6 +17,7 @@ async function validateStat() {
const fileHandle = await open(filePath, 'w+');
const stats = await fileHandle.stat();
assert.ok(stats.mtime instanceof Date);
+ await fileHandle.close();
}
validateStat()
diff --git a/test/parallel/test-fs-promises-file-handle-sync.js b/test/parallel/test-fs-promises-file-handle-sync.js
index fc6d00c0b8..2c0eca13a7 100644
--- a/test/parallel/test-fs-promises-file-handle-sync.js
+++ b/test/parallel/test-fs-promises-file-handle-sync.js
@@ -20,6 +20,7 @@ async function validateSync() {
const ret = await handle.read(Buffer.alloc(11), 0, 11, 0);
assert.strictEqual(ret.bytesRead, 11);
assert.deepStrictEqual(ret.buffer, buf);
+ await handle.close();
}
validateSync();
diff --git a/test/parallel/test-fs-promises-file-handle-truncate.js b/test/parallel/test-fs-promises-file-handle-truncate.js
index 65f998db74..ca83755f19 100644
--- a/test/parallel/test-fs-promises-file-handle-truncate.js
+++ b/test/parallel/test-fs-promises-file-handle-truncate.js
@@ -20,6 +20,8 @@ async function validateTruncate() {
await fileHandle.truncate(5);
assert.deepStrictEqual((await readFile(filename)).toString(), 'Hello');
+
+ await fileHandle.close();
}
validateTruncate().then(common.mustCall());
diff --git a/test/parallel/test-fs-promises-file-handle-write.js b/test/parallel/test-fs-promises-file-handle-write.js
index da8cfc0a4b..60840e1e53 100644
--- a/test/parallel/test-fs-promises-file-handle-write.js
+++ b/test/parallel/test-fs-promises-file-handle-write.js
@@ -22,6 +22,8 @@ async function validateWrite() {
await fileHandle.write(buffer, 0, buffer.length);
const readFileData = fs.readFileSync(filePathForHandle);
assert.deepStrictEqual(buffer, readFileData);
+
+ await fileHandle.close();
}
async function validateEmptyWrite() {
@@ -32,6 +34,8 @@ async function validateEmptyWrite() {
await fileHandle.write(buffer, 0, buffer.length);
const readFileData = fs.readFileSync(filePathForHandle);
assert.deepStrictEqual(buffer, readFileData);
+
+ await fileHandle.close();
}
async function validateNonUint8ArrayWrite() {
@@ -42,6 +46,8 @@ async function validateNonUint8ArrayWrite() {
await fileHandle.write(buffer, 0, buffer.length);
const readFileData = fs.readFileSync(filePathForHandle);
assert.deepStrictEqual(Buffer.from(buffer, 'utf8'), readFileData);
+
+ await fileHandle.close();
}
async function validateNonStringValuesWrite() {
@@ -55,6 +61,8 @@ async function validateNonStringValuesWrite() {
const readFileData = fs.readFileSync(filePathForHandle);
const expected = ['123', '[object Object]', '[object Map]'].join('');
assert.deepStrictEqual(Buffer.from(expected, 'utf8'), readFileData);
+
+ await fileHandle.close();
}
Promise.all([
diff --git a/test/parallel/test-fs-promises-file-handle-writeFile.js b/test/parallel/test-fs-promises-file-handle-writeFile.js
index e39c59f5ca..25b767a0ab 100644
--- a/test/parallel/test-fs-promises-file-handle-writeFile.js
+++ b/test/parallel/test-fs-promises-file-handle-writeFile.js
@@ -22,6 +22,8 @@ async function validateWriteFile() {
await fileHandle.writeFile(buffer);
const readFileData = fs.readFileSync(filePathForHandle);
assert.deepStrictEqual(buffer, readFileData);
+
+ await fileHandle.close();
}
validateWriteFile()
diff --git a/test/parallel/test-fs-promises-readfile-with-fd.js b/test/parallel/test-fs-promises-readfile-with-fd.js
index 9bf4c18536..85e4c3fae2 100644
--- a/test/parallel/test-fs-promises-readfile-with-fd.js
+++ b/test/parallel/test-fs-promises-readfile-with-fd.js
@@ -28,6 +28,8 @@ async function readFileTest() {
/* readFile() should read from position five, instead of zero. */
assert.deepStrictEqual((await handle.readFile()).toString(), ' World');
+
+ await handle.close();
}
diff --git a/test/parallel/test-fs-promises-writefile-with-fd.js b/test/parallel/test-fs-promises-writefile-with-fd.js
index a4cc31df7f..446f9b6d8a 100644
--- a/test/parallel/test-fs-promises-writefile-with-fd.js
+++ b/test/parallel/test-fs-promises-writefile-with-fd.js
@@ -29,6 +29,8 @@ async function writeFileTest() {
/* New content should be written at position five, instead of zero. */
assert.deepStrictEqual(readFileSync(fn).toString(), 'HelloWorld');
+
+ await handle.close();
}
diff --git a/test/parallel/test-fs-promises.js b/test/parallel/test-fs-promises.js
index 4c3d7346ff..3c7903c98f 100644
--- a/test/parallel/test-fs-promises.js
+++ b/test/parallel/test-fs-promises.js
@@ -83,6 +83,7 @@ async function getHandle(dest) {
{
const handle = await getHandle(dest);
assert.strictEqual(typeof handle, 'object');
+ await handle.close();
}
// file stats
@@ -106,6 +107,7 @@ async function getHandle(dest) {
await handle.datasync();
await handle.sync();
+ await handle.close();
}
// Test fs.read promises when length to read is zero bytes
@@ -119,6 +121,7 @@ async function getHandle(dest) {
assert.strictEqual(ret.bytesRead, 0);
await unlink(dest);
+ await handle.close();
}
// Bytes written to file match buffer
@@ -130,6 +133,7 @@ async function getHandle(dest) {
const ret = await handle.read(Buffer.alloc(bufLen), 0, bufLen, 0);
assert.strictEqual(ret.bytesRead, bufLen);
assert.deepStrictEqual(ret.buffer, buf);
+ await handle.close();
}
// Truncate file to specified length
@@ -143,6 +147,7 @@ async function getHandle(dest) {
assert.deepStrictEqual(ret.buffer, buf);
await truncate(dest, 5);
assert.deepStrictEqual((await readFile(dest)).toString(), 'hello');
+ await handle.close();
}
// Invalid change of ownership
@@ -181,6 +186,8 @@ async function getHandle(dest) {
message: 'The value of "gid" is out of range. ' +
'It must be >= 0 && < 4294967296. Received -1'
});
+
+ await handle.close();
}
// Set modification times
diff --git a/test/parallel/test-fs-readdir-types.js b/test/parallel/test-fs-readdir-types.js
index 78f1b0d4e1..19e2dba99b 100644
--- a/test/parallel/test-fs-readdir-types.js
+++ b/test/parallel/test-fs-readdir-types.js
@@ -82,6 +82,7 @@ fs.readdir(readdirDir, {
// Check for correct types when the binding returns unknowns
const UNKNOWN = constants.UV_DIRENT_UNKNOWN;
const oldReaddir = binding.readdir;
+process.on('beforeExit', () => { binding.readdir = oldReaddir; });
binding.readdir = common.mustCall((path, encoding, types, req, ctx) => {
if (req) {
const oldCb = req.oncomplete;
diff --git a/test/parallel/test-fs-readfile-fd.js b/test/parallel/test-fs-readfile-fd.js
index df0f428bf1..10714a9189 100644
--- a/test/parallel/test-fs-readfile-fd.js
+++ b/test/parallel/test-fs-readfile-fd.js
@@ -71,6 +71,8 @@ function tempFdSync(callback) {
/* readFileSync() should read from position five, instead of zero. */
assert.deepStrictEqual(fs.readFileSync(fd).toString(), ' World');
+
+ fs.closeSync(fd);
}
{
@@ -89,6 +91,8 @@ function tempFdSync(callback) {
assert.ifError(err);
/* readFile() should read from position five, instead of zero. */
assert.deepStrictEqual(data.toString(), ' World');
+
+ fs.closeSync(fd);
}));
}));
}));
diff --git a/test/parallel/test-fs-readfile-pipe-large.js b/test/parallel/test-fs-readfile-pipe-large.js
index 78c5feedb7..a32e798334 100644
--- a/test/parallel/test-fs-readfile-pipe-large.js
+++ b/test/parallel/test-fs-readfile-pipe-large.js
@@ -43,7 +43,3 @@ exec(cmd, { maxBuffer: 1000000 }, common.mustCall((err, stdout, stderr) => {
);
console.log('ok');
}));
-
-process.on('exit', function() {
- fs.unlinkSync(filename);
-});
diff --git a/test/parallel/test-fs-readfilesync-pipe-large.js b/test/parallel/test-fs-readfilesync-pipe-large.js
index 0f180f0f86..c8ea474ea7 100644
--- a/test/parallel/test-fs-readfilesync-pipe-large.js
+++ b/test/parallel/test-fs-readfilesync-pipe-large.js
@@ -36,7 +36,3 @@ exec(
console.log('ok');
})
);
-
-process.on('exit', function() {
- fs.unlinkSync(filename);
-});
diff --git a/test/parallel/test-fs-ready-event-stream.js b/test/parallel/test-fs-ready-event-stream.js
index f6b380cf26..68e8fb76b7 100644
--- a/test/parallel/test-fs-ready-event-stream.js
+++ b/test/parallel/test-fs-ready-event-stream.js
@@ -17,4 +17,5 @@ const writeStream = fs.createWriteStream(writeFile, { autoClose: true });
assert.strictEqual(writeStream.pending, true);
writeStream.on('ready', common.mustCall(() => {
assert.strictEqual(writeStream.pending, false);
+ writeStream.end();
}));
diff --git a/test/parallel/test-fs-truncate-fd.js b/test/parallel/test-fs-truncate-fd.js
index f71d511f5d..fbddbb32d5 100644
--- a/test/parallel/test-fs-truncate-fd.js
+++ b/test/parallel/test-fs-truncate-fd.js
@@ -21,7 +21,7 @@ fs.truncate(fd, 5, common.mustCall((err) => {
assert.strictEqual(fs.readFileSync(filename, 'utf8'), 'hello');
}));
-process.on('exit', () => {
+process.once('beforeExit', () => {
fs.closeSync(fd);
fs.unlinkSync(filename);
console.log('ok');
diff --git a/test/parallel/test-fs-truncate.js b/test/parallel/test-fs-truncate.js
index 95036dc9f5..044ff622bd 100644
--- a/test/parallel/test-fs-truncate.js
+++ b/test/parallel/test-fs-truncate.js
@@ -147,7 +147,7 @@ function testFtruncate(cb) {
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));
+ process.on('beforeExit', () => fs.closeSync(fd));
fs.ftruncateSync(fd, 4);
assert(fs.readFileSync(file2).equals(Buffer.from('Hi\u0000\u0000')));
}
@@ -165,7 +165,7 @@ function testFtruncate(cb) {
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));
+ process.on('beforeExit', () => fs.closeSync(fd));
fs.ftruncate(fd, 4, common.mustCall(function(err) {
assert.ifError(err);
assert(fs.readFileSync(file4).equals(Buffer.from('Hi\u0000\u0000')));
@@ -176,7 +176,7 @@ function testFtruncate(cb) {
const file5 = path.resolve(tmp, 'truncate-file-5.txt');
fs.writeFileSync(file5, 'Hi');
const fd = fs.openSync(file5, 'r+');
- process.on('exit', () => fs.closeSync(fd));
+ process.on('beforeExit', () => fs.closeSync(fd));
['', false, null, {}, []].forEach((input) => {
assert.throws(
@@ -232,7 +232,7 @@ function testFtruncate(cb) {
const file6 = path.resolve(tmp, 'truncate-file-6.txt');
fs.writeFileSync(file6, 'Hi');
const fd = fs.openSync(file6, 'r+');
- process.on('exit', () => fs.closeSync(fd));
+ process.on('beforeExit', () => fs.closeSync(fd));
fs.ftruncate(fd, -1, common.mustCall(function(err) {
assert.ifError(err);
assert(fs.readFileSync(file6).equals(Buffer.from('')));
diff --git a/test/parallel/test-fs-write-file.js b/test/parallel/test-fs-write-file.js
index b9536bea4c..97f29c081b 100644
--- a/test/parallel/test-fs-write-file.js
+++ b/test/parallel/test-fs-write-file.js
@@ -102,10 +102,3 @@ fs.open(filename4, 'w+', common.mustCall(function(e, fd) {
}));
}));
}));
-
-process.on('exit', function() {
- fs.unlinkSync(filename);
- fs.unlinkSync(filename2);
- fs.unlinkSync(filename3);
- fs.unlinkSync(filename4);
-});
diff --git a/test/parallel/test-fs-write-stream-change-open.js b/test/parallel/test-fs-write-stream-change-open.js
index 56dbafd656..2fc06cf901 100644
--- a/test/parallel/test-fs-write-stream-change-open.js
+++ b/test/parallel/test-fs-write-stream-change-open.js
@@ -46,6 +46,7 @@ fs.close = function(fd) {
assert.ok(fd, 'fs.close must not be called with an undefined fd.');
fs.close = _fs_close;
fs.open = _fs_open;
+ fs.closeSync(fd);
};
stream.write('foo');
diff --git a/test/parallel/test-fs-write-stream-err.js b/test/parallel/test-fs-write-stream-err.js
index 0db517da2a..6d6f25b21f 100644
--- a/test/parallel/test-fs-write-stream-err.js
+++ b/test/parallel/test-fs-write-stream-err.js
@@ -56,6 +56,7 @@ fs.write = function() {
fs.close = common.mustCall(function(fd_, cb) {
console.error('fs.close', fd_, stream.fd);
assert.strictEqual(fd_, stream.fd);
+ fs.closeSync(fd_);
process.nextTick(cb);
});
diff --git a/test/parallel/test-fs-write-stream-throw-type-error.js b/test/parallel/test-fs-write-stream-throw-type-error.js
index c80f647b3d..9a3d1cf16d 100644
--- a/test/parallel/test-fs-write-stream-throw-type-error.js
+++ b/test/parallel/test-fs-write-stream-throw-type-error.js
@@ -9,10 +9,10 @@ const example = path.join(tmpdir.path, 'dummy');
tmpdir.refresh();
// Should not throw.
-fs.createWriteStream(example, undefined);
-fs.createWriteStream(example, null);
-fs.createWriteStream(example, 'utf8');
-fs.createWriteStream(example, { encoding: 'utf8' });
+fs.createWriteStream(example, undefined).end();
+fs.createWriteStream(example, null).end();
+fs.createWriteStream(example, 'utf8').end();
+fs.createWriteStream(example, { encoding: 'utf8' }).end();
const createWriteStreamErr = (path, opt) => {
common.expectsError(
diff --git a/test/parallel/test-fs-write-stream.js b/test/parallel/test-fs-write-stream.js
index e93f65e604..5e75f4a0b3 100644
--- a/test/parallel/test-fs-write-stream.js
+++ b/test/parallel/test-fs-write-stream.js
@@ -38,6 +38,7 @@ tmpdir.refresh();
fs.close = function(fd) {
assert.ok(fd, 'fs.close must not be called without an undefined fd.');
fs.close = _fs_close;
+ fs.closeSync(fd);
};
stream.destroy();
}
diff --git a/test/parallel/test-fs-writefile-with-fd.js b/test/parallel/test-fs-writefile-with-fd.js
index 6851518d4d..a3436006b4 100644
--- a/test/parallel/test-fs-writefile-with-fd.js
+++ b/test/parallel/test-fs-writefile-with-fd.js
@@ -30,6 +30,9 @@ tmpdir.refresh();
/* New content should be written at position five, instead of zero. */
assert.deepStrictEqual(fs.readFileSync(filename).toString(), 'HelloWorld');
+
+ /* Close the file descriptor. */
+ fs.closeSync(fd);
}
{
@@ -52,6 +55,9 @@ tmpdir.refresh();
/* 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);
}));
}));
}));
diff --git a/test/parallel/test-http2-respond-file-error-pipe-offset.js b/test/parallel/test-http2-respond-file-error-pipe-offset.js
index eb782e2dea..1f3b7163f2 100644
--- a/test/parallel/test-http2-respond-file-error-pipe-offset.js
+++ b/test/parallel/test-http2-respond-file-error-pipe-offset.js
@@ -21,8 +21,6 @@ if (mkfifo.error && mkfifo.error.code === 'ENOENT') {
common.skip('missing mkfifo');
}
-process.on('exit', () => fs.unlinkSync(pipeName));
-
const server = http2.createServer();
server.on('stream', (stream) => {
stream.respondWithFile(pipeName, {
diff --git a/test/parallel/test-http2-respond-file-with-pipe.js b/test/parallel/test-http2-respond-file-with-pipe.js
index 2b7ca3fc9a..d0557c2fd0 100644
--- a/test/parallel/test-http2-respond-file-with-pipe.js
+++ b/test/parallel/test-http2-respond-file-with-pipe.js
@@ -21,8 +21,6 @@ if (mkfifo.error && mkfifo.error.code === 'ENOENT') {
common.skip('missing mkfifo');
}
-process.on('exit', () => fs.unlinkSync(pipeName));
-
const server = http2.createServer();
server.on('stream', (stream) => {
stream.respondWithFile(pipeName, {
diff --git a/test/parallel/test-internal-fs-syncwritestream.js b/test/parallel/test-internal-fs-syncwritestream.js
index bf4776550b..383b70512c 100644
--- a/test/parallel/test-internal-fs-syncwritestream.js
+++ b/test/parallel/test-internal-fs-syncwritestream.js
@@ -38,6 +38,8 @@ const filename = path.join(tmpdir.path, 'sync-write-stream.txt');
assert.strictEqual(stream._write(chunk, null, common.mustCall(1)), true);
assert.strictEqual(fs.readFileSync(filename).equals(chunk), true);
+
+ fs.closeSync(fd);
}
// Verify that the stream will unset the fd after destroy().
diff --git a/test/parallel/test-pipe-unref.js b/test/parallel/test-pipe-unref.js
index 1e0245b544..78419a1d77 100644
--- a/test/parallel/test-pipe-unref.js
+++ b/test/parallel/test-pipe-unref.js
@@ -1,12 +1,29 @@
'use strict';
const common = require('../common');
const net = require('net');
+const assert = require('assert');
+const { fork } = require('child_process');
// This test should end immediately after `unref` is called
+// The pipe will stay open as Node.js completes, thus run in a child process
+// so that tmpdir can be cleaned up.
const tmpdir = require('../common/tmpdir');
-tmpdir.refresh();
+if (process.argv[2] !== 'child') {
+ // Parent
+ tmpdir.refresh();
+
+ // Run test
+ const child = fork(__filename, ['child'], { stdio: 'inherit' });
+ child.on('exit', common.mustCall(function(code) {
+ assert.strictEqual(code, 0);
+ }));
+
+ return;
+}
+
+// Child
const s = net.Server();
s.listen(common.PIPE);
s.unref();
diff --git a/test/parallel/test-readline-async-iterators-destroy.js b/test/parallel/test-readline-async-iterators-destroy.js
index 746981a1ae..ea174d5172 100644
--- a/test/parallel/test-readline-async-iterators-destroy.js
+++ b/test/parallel/test-readline-async-iterators-destroy.js
@@ -42,6 +42,9 @@ async function testSimpleDestroy() {
expectedLines.splice(1);
assert.deepStrictEqual(iteratedLines, expectedLines);
+
+ rli.close();
+ readable.destroy();
}
}
@@ -72,6 +75,9 @@ async function testMutualDestroy() {
}
assert.deepStrictEqual(iteratedLines, expectedLines);
+
+ rli.close();
+ readable.destroy();
}
}
diff --git a/test/parallel/test-repl-history-perm.js b/test/parallel/test-repl-history-perm.js
index 03ce1435d9..3db2a009eb 100644
--- a/test/parallel/test-repl-history-perm.js
+++ b/test/parallel/test-repl-history-perm.js
@@ -38,12 +38,15 @@ const replHistoryPath = path.join(tmpdir.path, '.node_repl_history');
const checkResults = common.mustCall(function(err, r) {
assert.ifError(err);
- r.input.end();
const stat = fs.statSync(replHistoryPath);
const fileMode = stat.mode & 0o777;
assert.strictEqual(
fileMode, 0o600,
`REPL history file should be mode 0600 but was 0${fileMode.toString(8)}`);
+
+ // Close the REPL
+ r.input.emit('keypress', '', { ctrl: true, name: 'd' });
+ r.input.end();
});
repl.createInternalRepl(
diff --git a/test/parallel/test-tls-wrap-econnreset-pipe.js b/test/parallel/test-tls-wrap-econnreset-pipe.js
index b400e35d41..a5cba7e47b 100644
--- a/test/parallel/test-tls-wrap-econnreset-pipe.js
+++ b/test/parallel/test-tls-wrap-econnreset-pipe.js
@@ -7,10 +7,27 @@ if (!common.hasCrypto)
const assert = require('assert');
const tls = require('tls');
const net = require('net');
+const { fork } = require('child_process');
const tmpdir = require('../common/tmpdir');
-tmpdir.refresh();
+// Run in a child process because the PIPE file descriptor stays open until
+// Node.js completes, blocking the tmpdir and preventing cleanup.
+
+if (process.argv[2] !== 'child') {
+ // Parent
+ tmpdir.refresh();
+
+ // Run test
+ const child = fork(__filename, ['child'], { stdio: 'inherit' });
+ child.on('exit', common.mustCall(function(code) {
+ assert.strictEqual(code, 0);
+ }));
+
+ return;
+}
+
+// Child
const server = net.createServer((c) => {
c.end();
}).listen(common.PIPE, common.mustCall(() => {