deno.land / std@0.173.0 / fs / ensure_link_test.ts

ensure_link_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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.// TODO(axetroy): Add test for Windows once symlink is implemented for Windows.import { assertEquals, assertRejects, assertThrows,} from "../testing/asserts.ts";import * as path from "../path/mod.ts";import { ensureLink, ensureLinkSync } from "./ensure_link.ts";
const moduleDir = path.dirname(path.fromFileUrl(import.meta.url));const testdataDir = path.resolve(moduleDir, "testdata");
Deno.test("ensureLinkIfItNotExist", async function () { const srcDir = path.join(testdataDir, "ensure_link_1"); const destDir = path.join(testdataDir, "ensure_link_1_2"); const testFile = path.join(srcDir, "test.txt"); const linkFile = path.join(destDir, "link.txt");
await assertRejects( async () => { await ensureLink(testFile, linkFile); }, );
await Deno.remove(destDir, { recursive: true });});
Deno.test("ensureLinkSyncIfItNotExist", function () { const testDir = path.join(testdataDir, "ensure_link_2"); const testFile = path.join(testDir, "test.txt"); const linkFile = path.join(testDir, "link.txt");
assertThrows(() => { ensureLinkSync(testFile, linkFile); });
Deno.removeSync(testDir, { recursive: true });});
Deno.test("ensureLinkIfItExist", async function () { const testDir = path.join(testdataDir, "ensure_link_3"); const testFile = path.join(testDir, "test.txt"); const linkFile = path.join(testDir, "link.txt");
await Deno.mkdir(testDir, { recursive: true }); await Deno.writeFile(testFile, new Uint8Array());
await ensureLink(testFile, linkFile);
const srcStat = await Deno.lstat(testFile); const linkStat = await Deno.lstat(linkFile);
assertEquals(srcStat.isFile, true); assertEquals(linkStat.isFile, true);
// har link success. try to change one of them. they should be change both.
// let's change origin file. await Deno.writeFile(testFile, new TextEncoder().encode("123"));
const testFileContent1 = new TextDecoder().decode( await Deno.readFile(testFile), ); const linkFileContent1 = new TextDecoder().decode( await Deno.readFile(testFile), );
assertEquals(testFileContent1, "123"); assertEquals(testFileContent1, linkFileContent1);
// let's change link file. await Deno.writeFile(testFile, new TextEncoder().encode("abc"));
const testFileContent2 = new TextDecoder().decode( await Deno.readFile(testFile), ); const linkFileContent2 = new TextDecoder().decode( await Deno.readFile(testFile), );
assertEquals(testFileContent2, "abc"); assertEquals(testFileContent2, linkFileContent2);
await Deno.remove(testDir, { recursive: true });});
Deno.test("ensureLinkSyncIfItExist", function () { const testDir = path.join(testdataDir, "ensure_link_4"); const testFile = path.join(testDir, "test.txt"); const linkFile = path.join(testDir, "link.txt");
Deno.mkdirSync(testDir, { recursive: true }); Deno.writeFileSync(testFile, new Uint8Array());
ensureLinkSync(testFile, linkFile);
const srcStat = Deno.lstatSync(testFile);
const linkStat = Deno.lstatSync(linkFile);
assertEquals(srcStat.isFile, true); assertEquals(linkStat.isFile, true);
// har link success. try to change one of them. they should be change both.
// let's change origin file. Deno.writeFileSync(testFile, new TextEncoder().encode("123"));
const testFileContent1 = new TextDecoder().decode( Deno.readFileSync(testFile), ); const linkFileContent1 = new TextDecoder().decode( Deno.readFileSync(testFile), );
assertEquals(testFileContent1, "123"); assertEquals(testFileContent1, linkFileContent1);
// let's change link file. Deno.writeFileSync(testFile, new TextEncoder().encode("abc"));
const testFileContent2 = new TextDecoder().decode( Deno.readFileSync(testFile), ); const linkFileContent2 = new TextDecoder().decode( Deno.readFileSync(testFile), );
assertEquals(testFileContent2, "abc"); assertEquals(testFileContent2, linkFileContent2);
Deno.removeSync(testDir, { recursive: true });});
Deno.test("ensureLinkDirectoryIfItExist", async function () { const testDir = path.join(testdataDir, "ensure_link_origin_3"); const linkDir = path.join(testdataDir, "ensure_link_link_3"); const testFile = path.join(testDir, "test.txt");
await Deno.mkdir(testDir, { recursive: true }); await Deno.writeFile(testFile, new Uint8Array());
await assertRejects( async () => { await ensureLink(testDir, linkDir); }, // "Operation not permitted (os error 1)" // throw an local matching test // "Access is denied. (os error 5)" // throw in CI );
Deno.removeSync(testDir, { recursive: true });});
Deno.test("ensureLinkSyncDirectoryIfItExist", function () { const testDir = path.join(testdataDir, "ensure_link_origin_3"); const linkDir = path.join(testdataDir, "ensure_link_link_3"); const testFile = path.join(testDir, "test.txt");
Deno.mkdirSync(testDir, { recursive: true }); Deno.writeFileSync(testFile, new Uint8Array());
assertThrows( () => { ensureLinkSync(testDir, linkDir); }, // "Operation not permitted (os error 1)" // throw an local matching test // "Access is denied. (os error 5)" // throw in CI );
Deno.removeSync(testDir, { recursive: true });});
std

Version Info

Tagged at
a year ago