forked from nodejs/node
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-fsreqcallback-cancel.js
More file actions
65 lines (54 loc) · 1.79 KB
/
Copy pathtest-fsreqcallback-cancel.js
File metadata and controls
65 lines (54 loc) · 1.79 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
'use strict';
// Flags: --no-warnings --expose-internals
const common = require('../common');
const assert = require('assert');
const { internalBinding } = require('internal/test/binding');
const path = require('path');
const { FSReqCallback, readdir } = internalBinding('fs');
{
// Return value of cancel() is undefined
const req = new FSReqCallback();
req.oncomplete = () => {};
assert.strictEqual(req.cancel(), undefined);
}
{
// Callback is called with AbortError if request is canceled
const req = new FSReqCallback();
req.oncomplete = common.mustCall((err, files) => {
assert.strictEqual(files, undefined);
assert.strictEqual(err.name, 'AbortError');
}, 1);
req.cancel();
readdir(path.toNamespacedPath('../'), 'utf8', false, req);
}
{
// Request is canceled if cancel() called before control returns to main loop
const req = new FSReqCallback();
req.oncomplete = common.mustCall((err, files) => {
assert.strictEqual(files, undefined);
assert.strictEqual(err.name, 'AbortError');
}, 1);
readdir(path.toNamespacedPath('../'), 'utf8', false, req);
req.cancel();
}
{
// Request is still canceled on next tick
const req = new FSReqCallback();
req.oncomplete = common.mustCall((err, files) => {
assert.strictEqual(files, undefined);
assert.strictEqual(err.name, 'AbortError');
}, 1);
readdir(path.toNamespacedPath('../'), 'utf8', false, req);
process.nextTick(common.mustCall(() => req.cancel()));
}
{
// Callback is not called a second time if request canceled after it has
// already completed
const req = new FSReqCallback();
req.oncomplete = common.mustCall((err, files) => {
assert.strictEqual(err, null);
assert.notStrictEqual(files, undefined);
req.cancel();
}, 1);
readdir(path.toNamespacedPath('../'), 'utf8', false, req);
}