-
-
Notifications
You must be signed in to change notification settings - Fork 35.5k
Expand file tree
/
Copy pathtest-fs-stat-abort-test.js
More file actions
39 lines (34 loc) · 1.2 KB
/
test-fs-stat-abort-test.js
File metadata and controls
39 lines (34 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'use strict';
require('../common');
const test = require('node:test');
const assert = require('node:assert');
const fs = require('node:fs');
const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
const filePath = tmpdir.resolve('temp.txt');
fs.writeFileSync(filePath, 'Test');
test('fs.stat aborts when signal is already aborted', async () => {
const signal = AbortSignal.abort();
const { promise, resolve, reject } = Promise.withResolvers();
fs.stat(filePath, { signal }, (err, stats) => {
if (err) return reject(err);
resolve(stats);
});
await assert.rejects(promise, { name: 'AbortError' });
});
test('fs.stat aborts in-flight when signal aborts after the call', async () => {
const controller = new AbortController();
const { promise, resolve, reject } = Promise.withResolvers();
fs.stat(filePath, { signal: controller.signal }, (err, stats) => {
if (err) return reject(err);
resolve(stats);
});
controller.abort();
await assert.rejects(promise, { name: 'AbortError' });
});
test('fs.stat throws ERR_INVALID_ARG_TYPE for invalid signal', () => {
assert.throws(
() => fs.stat(filePath, { signal: 'not-a-signal' }, () => {}),
{ code: 'ERR_INVALID_ARG_TYPE' },
);
});