Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/output/test/browser/outputLinkProvider.test.ts
4780 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import assert from 'assert';
7
import { URI } from '../../../../../base/common/uri.js';
8
import { isMacintosh, isLinux, isWindows } from '../../../../../base/common/platform.js';
9
import { OutputLinkComputer } from '../../common/outputLinkComputer.js';
10
import { TestContextService } from '../../../../test/common/workbenchTestServices.js';
11
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
12
13
suite('OutputLinkProvider', () => {
14
15
function toOSPath(p: string): string {
16
if (isMacintosh || isLinux) {
17
return p.replace(/\\/g, '/');
18
}
19
20
return p;
21
}
22
23
test('OutputLinkProvider - Link detection', function () {
24
const rootFolder = isWindows ? URI.file('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala') :
25
URI.file('C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala');
26
27
const patterns = OutputLinkComputer.createPatterns(rootFolder);
28
29
const contextService = new TestContextService();
30
31
let line = toOSPath('Foo bar');
32
let result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
33
assert.strictEqual(result.length, 0);
34
35
// Example: at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts
36
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts in');
37
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
38
assert.strictEqual(result.length, 1);
39
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString());
40
assert.strictEqual(result[0].range.startColumn, 5);
41
assert.strictEqual(result[0].range.endColumn, 84);
42
43
// Example: at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts:336
44
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts:336 in');
45
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
46
assert.strictEqual(result.length, 1);
47
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#336');
48
assert.strictEqual(result[0].range.startColumn, 5);
49
assert.strictEqual(result[0].range.endColumn, 88);
50
51
// Example: at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts:336:9
52
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts:336:9 in');
53
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
54
assert.strictEqual(result.length, 1);
55
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#336,9');
56
assert.strictEqual(result[0].range.startColumn, 5);
57
assert.strictEqual(result[0].range.endColumn, 90);
58
59
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts:336:9 in');
60
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
61
assert.strictEqual(result.length, 1);
62
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#336,9');
63
assert.strictEqual(result[0].range.startColumn, 5);
64
assert.strictEqual(result[0].range.endColumn, 90);
65
66
// Example: at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts>dir
67
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts>dir in');
68
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
69
assert.strictEqual(result.length, 1);
70
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString());
71
assert.strictEqual(result[0].range.startColumn, 5);
72
assert.strictEqual(result[0].range.endColumn, 84);
73
74
// Example: at [C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts:336:9]
75
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts:336:9] in');
76
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
77
assert.strictEqual(result.length, 1);
78
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#336,9');
79
assert.strictEqual(result[0].range.startColumn, 5);
80
assert.strictEqual(result[0].range.endColumn, 90);
81
82
// Example: at [C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts]
83
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts] in');
84
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
85
assert.strictEqual(result.length, 1);
86
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts]').toString());
87
88
// Example: C:\Users\someone\AppData\Local\Temp\_monacodata_9888\workspaces\express\server.js on line 8
89
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts on line 8');
90
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
91
assert.strictEqual(result.length, 1);
92
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#8');
93
assert.strictEqual(result[0].range.startColumn, 1);
94
assert.strictEqual(result[0].range.endColumn, 90);
95
96
// Example: C:\Users\someone\AppData\Local\Temp\_monacodata_9888\workspaces\express\server.js on line 8, column 13
97
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts on line 8, column 13');
98
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
99
assert.strictEqual(result.length, 1);
100
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#8,13');
101
assert.strictEqual(result[0].range.startColumn, 1);
102
assert.strictEqual(result[0].range.endColumn, 101);
103
104
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts on LINE 8, COLUMN 13');
105
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
106
assert.strictEqual(result.length, 1);
107
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#8,13');
108
assert.strictEqual(result[0].range.startColumn, 1);
109
assert.strictEqual(result[0].range.endColumn, 101);
110
111
// Example: C:\Users\someone\AppData\Local\Temp\_monacodata_9888\workspaces\express\server.js:line 8
112
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts:line 8');
113
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
114
assert.strictEqual(result.length, 1);
115
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#8');
116
assert.strictEqual(result[0].range.startColumn, 1);
117
assert.strictEqual(result[0].range.endColumn, 87);
118
119
// Example: at File.put (C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Game.ts)
120
line = toOSPath(' at File.put (C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Game.ts)');
121
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
122
assert.strictEqual(result.length, 1);
123
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString());
124
assert.strictEqual(result[0].range.startColumn, 15);
125
assert.strictEqual(result[0].range.endColumn, 94);
126
127
// Example: at File.put (C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Game.ts:278)
128
line = toOSPath(' at File.put (C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Game.ts:278)');
129
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
130
assert.strictEqual(result.length, 1);
131
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#278');
132
assert.strictEqual(result[0].range.startColumn, 15);
133
assert.strictEqual(result[0].range.endColumn, 98);
134
135
// Example: at File.put (C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Game.ts:278:34)
136
line = toOSPath(' at File.put (C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Game.ts:278:34)');
137
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
138
assert.strictEqual(result.length, 1);
139
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#278,34');
140
assert.strictEqual(result[0].range.startColumn, 15);
141
assert.strictEqual(result[0].range.endColumn, 101);
142
143
line = toOSPath(' at File.put (C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Game.ts:278:34)');
144
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
145
assert.strictEqual(result.length, 1);
146
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString() + '#278,34');
147
assert.strictEqual(result[0].range.startColumn, 15);
148
assert.strictEqual(result[0].range.endColumn, 101);
149
150
// Example: C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Features.ts(45): error
151
line = toOSPath('C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/lib/something/Features.ts(45): error');
152
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
153
assert.strictEqual(result.length, 1);
154
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45');
155
assert.strictEqual(result[0].range.startColumn, 1);
156
assert.strictEqual(result[0].range.endColumn, 102);
157
158
// Example: C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Features.ts (45,18): error
159
line = toOSPath('C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/lib/something/Features.ts (45): error');
160
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
161
assert.strictEqual(result.length, 1);
162
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45');
163
assert.strictEqual(result[0].range.startColumn, 1);
164
assert.strictEqual(result[0].range.endColumn, 103);
165
166
// Example: C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Features.ts(45,18): error
167
line = toOSPath('C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/lib/something/Features.ts(45,18): error');
168
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
169
assert.strictEqual(result.length, 1);
170
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45,18');
171
assert.strictEqual(result[0].range.startColumn, 1);
172
assert.strictEqual(result[0].range.endColumn, 105);
173
174
line = toOSPath('C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/lib/something/Features.ts(45,18): error');
175
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
176
assert.strictEqual(result.length, 1);
177
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45,18');
178
assert.strictEqual(result[0].range.startColumn, 1);
179
assert.strictEqual(result[0].range.endColumn, 105);
180
181
// Example: C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Features.ts (45,18): error
182
line = toOSPath('C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/lib/something/Features.ts (45,18): error');
183
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
184
assert.strictEqual(result.length, 1);
185
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45,18');
186
assert.strictEqual(result[0].range.startColumn, 1);
187
assert.strictEqual(result[0].range.endColumn, 106);
188
189
line = toOSPath('C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/lib/something/Features.ts (45,18): error');
190
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
191
assert.strictEqual(result.length, 1);
192
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45,18');
193
assert.strictEqual(result[0].range.startColumn, 1);
194
assert.strictEqual(result[0].range.endColumn, 106);
195
196
// Example: C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Features.ts(45): error
197
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features.ts(45): error');
198
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
199
assert.strictEqual(result.length, 1);
200
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45');
201
assert.strictEqual(result[0].range.startColumn, 1);
202
assert.strictEqual(result[0].range.endColumn, 102);
203
204
// Example: C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Features.ts (45,18): error
205
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features.ts (45): error');
206
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
207
assert.strictEqual(result.length, 1);
208
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45');
209
assert.strictEqual(result[0].range.startColumn, 1);
210
assert.strictEqual(result[0].range.endColumn, 103);
211
212
// Example: C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Features.ts(45,18): error
213
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features.ts(45,18): error');
214
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
215
assert.strictEqual(result.length, 1);
216
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45,18');
217
assert.strictEqual(result[0].range.startColumn, 1);
218
assert.strictEqual(result[0].range.endColumn, 105);
219
220
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features.ts(45,18): error');
221
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
222
assert.strictEqual(result.length, 1);
223
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45,18');
224
assert.strictEqual(result[0].range.startColumn, 1);
225
assert.strictEqual(result[0].range.endColumn, 105);
226
227
// Example: C:/Users/someone/AppData/Local/Temp/_monacodata_9888/workspaces/mankala/Features.ts (45,18): error
228
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features.ts (45,18): error');
229
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
230
assert.strictEqual(result.length, 1);
231
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45,18');
232
assert.strictEqual(result[0].range.startColumn, 1);
233
assert.strictEqual(result[0].range.endColumn, 106);
234
235
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features.ts (45,18): error');
236
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
237
assert.strictEqual(result.length, 1);
238
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features.ts').toString() + '#45,18');
239
assert.strictEqual(result[0].range.startColumn, 1);
240
assert.strictEqual(result[0].range.endColumn, 106);
241
242
// Example: C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features Special.ts (45,18): error.
243
line = toOSPath('C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\lib\\something\\Features Special.ts (45,18): error');
244
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
245
assert.strictEqual(result.length, 1);
246
assert.strictEqual(result[0].url, contextService.toResource('/lib/something/Features Special.ts').toString() + '#45,18');
247
assert.strictEqual(result[0].range.startColumn, 1);
248
assert.strictEqual(result[0].range.endColumn, 114);
249
250
// Example: at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts.
251
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts. in');
252
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
253
assert.strictEqual(result.length, 1);
254
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString());
255
assert.strictEqual(result[0].range.startColumn, 5);
256
assert.strictEqual(result[0].range.endColumn, 84);
257
258
// Example: at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game
259
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game in');
260
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
261
assert.strictEqual(result.length, 1);
262
263
// Example: at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game\\
264
line = toOSPath(' at C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game\\ in');
265
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
266
assert.strictEqual(result.length, 1);
267
268
// Example: at "C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts"
269
line = toOSPath(' at "C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts" in');
270
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
271
assert.strictEqual(result.length, 1);
272
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString());
273
assert.strictEqual(result[0].range.startColumn, 6);
274
assert.strictEqual(result[0].range.endColumn, 85);
275
276
// Example: at 'C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts'
277
line = toOSPath(' at \'C:\\Users\\someone\\AppData\\Local\\Temp\\_monacodata_9888\\workspaces\\mankala\\Game.ts\' in');
278
result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
279
assert.strictEqual(result.length, 1);
280
assert.strictEqual(result[0].url, contextService.toResource('/Game.ts').toString());
281
assert.strictEqual(result[0].range.startColumn, 6);
282
assert.strictEqual(result[0].range.endColumn, 85);
283
});
284
285
test('OutputLinkProvider - #106847', function () {
286
const rootFolder = isWindows ? URI.file('C:\\Users\\username\\Desktop\\test-ts') :
287
URI.file('C:/Users/username/Desktop');
288
289
const patterns = OutputLinkComputer.createPatterns(rootFolder);
290
291
const contextService = new TestContextService();
292
293
const line = toOSPath('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa C:\\Users\\username\\Desktop\\test-ts\\prj.conf C:\\Users\\username\\Desktop\\test-ts\\prj.conf C:\\Users\\username\\Desktop\\test-ts\\prj.conf');
294
const result = OutputLinkComputer.detectLinks(line, 1, patterns, contextService);
295
assert.strictEqual(result.length, 3);
296
297
for (const res of result) {
298
assert.ok(res.range.startColumn > 0 && res.range.endColumn > 0);
299
}
300
});
301
302
ensureNoDisposablesAreLeakedInTestSuite();
303
});
304
305