deno.land / std@0.166.0 / node / _fs / _fs_close_test.ts

_fs_close_test.ts
نووسراو ببینە
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.import { assert, assertThrows, fail } from "../../testing/asserts.ts";import { assertCallbackErrorUncaught } from "../_test_utils.ts";import { close, closeSync } from "./_fs_close.ts";
Deno.test({ name: "ASYNC: File is closed", async fn() { const tempFile: string = await Deno.makeTempFile(); const file: Deno.FsFile = await Deno.open(tempFile);
assert(Deno.resources()[file.rid]); await new Promise<void>((resolve, reject) => { close(file.rid, (err) => { if (err !== null) reject(); else resolve(); }); }) .then(() => { assert(!Deno.resources()[file.rid]); }, () => { fail("No error expected"); }) .finally(async () => { await Deno.remove(tempFile); }); },});
Deno.test({ name: "ASYNC: Invalid fd", fn() { assertThrows(() => { close(-1, (_err) => {}); }, RangeError); },});
Deno.test({ name: "close callback should be asynchronous", async fn() { const tempFile: string = Deno.makeTempFileSync(); const file: Deno.FsFile = Deno.openSync(tempFile);
let foo: string; const promise = new Promise<void>((resolve) => { close(file.rid, () => { assert(foo === "bar"); resolve(); }); foo = "bar"; });
await promise; Deno.removeSync(tempFile); },});
Deno.test({ name: "SYNC: File is closed", fn() { const tempFile: string = Deno.makeTempFileSync(); const file: Deno.FsFile = Deno.openSync(tempFile);
assert(Deno.resources()[file.rid]); closeSync(file.rid); assert(!Deno.resources()[file.rid]); Deno.removeSync(tempFile); },});
Deno.test({ name: "SYNC: Invalid fd", fn() { assertThrows(() => closeSync(-1)); },});
Deno.test("[std/node/fs] close callback isn't called twice if error is thrown", async () => { const tempFile = await Deno.makeTempFile(); const importUrl = new URL("./_fs_close.ts", import.meta.url); await assertCallbackErrorUncaught({ prelude: ` import { close } from ${JSON.stringify(importUrl)};
const file = await Deno.open(${JSON.stringify(tempFile)}); `, invocation: "close(file.rid, ", async cleanup() { await Deno.remove(tempFile); }, });});
std

Version Info

Tagged at
a year ago