@codingame/monaco-vscode-testing-service-override 8.0.3 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/vscode/src/vs/workbench/contrib/debug/browser/callStackWidget.js +123 -43
- package/vscode/src/vs/workbench/contrib/debug/browser/media/callStackWidget.css.js +1 -1
- package/vscode/src/vs/workbench/contrib/testing/browser/codeCoverageDecorations.js +17 -17
- package/vscode/src/vs/workbench/contrib/testing/browser/codeCoverageDisplayUtils.js +5 -5
- package/vscode/src/vs/workbench/contrib/testing/browser/icons.js +32 -30
- package/vscode/src/vs/workbench/contrib/testing/browser/media/testing.css.js +1 -1
- package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageBars.js +3 -3
- package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageView.js +14 -14
- package/vscode/src/vs/workbench/contrib/testing/browser/testExplorerActions.js +118 -102
- package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testMessageStack.js +3 -0
- package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsOutput.js +13 -7
- package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsSubject.js +2 -1
- package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsTree.js +79 -46
- package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsViewContent.js +33 -10
- package/vscode/src/vs/workbench/contrib/testing/browser/testing.contribution.js +10 -9
- package/vscode/src/vs/workbench/contrib/testing/browser/testingConfigurationUi.js +17 -12
- package/vscode/src/vs/workbench/contrib/testing/browser/testingDecorations.js +103 -50
- package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerFilter.js +11 -11
- package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerView.js +14 -14
- package/vscode/src/vs/workbench/contrib/testing/browser/testingOutputPeek.js +60 -23
- package/vscode/src/vs/workbench/contrib/testing/browser/testingProgressUiService.js +5 -5
- package/vscode/src/vs/workbench/contrib/testing/browser/testingViewPaneContainer.js +1 -1
- package/vscode/src/vs/workbench/contrib/testing/browser/theme.js +31 -37
- package/vscode/src/vs/workbench/contrib/testing/common/configuration.js +34 -34
- package/vscode/src/vs/workbench/contrib/testing/common/testExclusions.js +2 -2
- package/vscode/src/vs/workbench/contrib/testing/common/testServiceImpl.js +9 -9
- package/vscode/src/vs/workbench/contrib/testing/common/testingContentProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/testing/common/testingContextKeys.js +33 -28
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-testing-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "CodinGame",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"vscode": "npm:@codingame/monaco-vscode-api@
|
|
30
|
-
"@codingame/monaco-vscode-terminal-service-override": "
|
|
29
|
+
"vscode": "npm:@codingame/monaco-vscode-api@9.0.0",
|
|
30
|
+
"@codingame/monaco-vscode-terminal-service-override": "9.0.0"
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
|
|
2
|
-
import { h, addDisposableListener
|
|
2
|
+
import { h, addDisposableListener } from 'vscode/vscode/vs/base/browser/dom';
|
|
3
3
|
import { Button } from 'vscode/vscode/vs/base/browser/ui/button/button';
|
|
4
4
|
import { assertNever } from 'vscode/vscode/vs/base/common/assert';
|
|
5
5
|
import { CancellationTokenSource } from 'vscode/vscode/vs/base/common/cancellation';
|
|
6
6
|
import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
|
|
7
7
|
import { Emitter } from 'vscode/vscode/vs/base/common/event';
|
|
8
8
|
import { Disposable, DisposableStore, toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
9
|
-
import { observableValue } from 'vscode/vscode/vs/base/common/observableInternal/base';
|
|
9
|
+
import { observableValue, transaction } from 'vscode/vscode/vs/base/common/observableInternal/base';
|
|
10
10
|
import { derived } from 'vscode/vscode/vs/base/common/observableInternal/derived';
|
|
11
11
|
import { autorun, autorunWithStore } from 'vscode/vscode/vs/base/common/observableInternal/autorun';
|
|
12
12
|
import 'vscode/vscode/vs/base/common/observableInternal/utils';
|
|
@@ -14,11 +14,13 @@ import 'vscode/vscode/vs/base/common/arrays';
|
|
|
14
14
|
import { Constants } from 'vscode/vscode/vs/base/common/uint';
|
|
15
15
|
import { generateUuid } from 'vscode/vscode/vs/base/common/uuid';
|
|
16
16
|
import './media/callStackWidget.css.js';
|
|
17
|
-
import {
|
|
17
|
+
import { EditorContributionInstantiation } from 'vscode/vscode/vs/editor/browser/editorExtensions';
|
|
18
18
|
import { CodeEditorWidget } from 'vscode/vscode/vs/editor/browser/widget/codeEditor/codeEditorWidget';
|
|
19
19
|
import { EmbeddedCodeEditorWidget } from 'vscode/vscode/vs/editor/browser/widget/codeEditor/embeddedCodeEditorWidget';
|
|
20
|
+
import { Position } from 'vscode/vscode/vs/editor/common/core/position';
|
|
20
21
|
import { Range } from 'vscode/vscode/vs/editor/common/core/range';
|
|
21
22
|
import { ITextModelService } from 'vscode/vscode/vs/editor/common/services/resolverService';
|
|
23
|
+
import { ClickLinkGesture } from 'vscode/vscode/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture';
|
|
22
24
|
import { localize, localize2 } from 'vscode/vscode/vs/nls';
|
|
23
25
|
import { createActionViewItem } from 'vscode/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
|
|
24
26
|
import { MenuWorkbenchToolBar } from 'vscode/vscode/vs/platform/actions/browser/toolbar';
|
|
@@ -31,9 +33,10 @@ import { INotificationService } from 'vscode/vscode/vs/platform/notification/com
|
|
|
31
33
|
import { defaultButtonStyles } from 'vscode/vscode/vs/platform/theme/browser/defaultStyles';
|
|
32
34
|
import { ResourceLabel } from 'vscode/vscode/vs/workbench/browser/labels';
|
|
33
35
|
import { makeStackFrameColumnDecoration, TOP_STACK_FRAME_DECORATION } from 'vscode/vscode/vs/workbench/contrib/debug/browser/callStackEditorContribution';
|
|
36
|
+
import { SIDE_GROUP } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
|
|
34
37
|
import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
35
38
|
|
|
36
|
-
var FrameCodeRenderer_1, SkippedRenderer_1;
|
|
39
|
+
var FrameCodeRenderer_1, MissingCodeRenderer_1, SkippedRenderer_1;
|
|
37
40
|
class CallStackFrame {
|
|
38
41
|
constructor(name, source, line = 1, column = 1) {
|
|
39
42
|
this.name = name;
|
|
@@ -56,7 +59,7 @@ class CustomStackFrame {
|
|
|
56
59
|
class WrappedCallStackFrame extends CallStackFrame {
|
|
57
60
|
constructor(original) {
|
|
58
61
|
super(original.name, original.source, original.line, original.column);
|
|
59
|
-
this.editorHeight = observableValue('WrappedCallStackFrame.height', 100);
|
|
62
|
+
this.editorHeight = observableValue('WrappedCallStackFrame.height', this.source ? 100 : 0);
|
|
60
63
|
this.collapsed = observableValue('WrappedCallStackFrame.collapsed', false);
|
|
61
64
|
this.height = derived(reader => {
|
|
62
65
|
return this.collapsed.read(reader) ? HEADER_HEIGHT : HEADER_HEIGHT + this.editorHeight.read(reader);
|
|
@@ -73,6 +76,7 @@ class WrappedCustomStackFrame {
|
|
|
73
76
|
});
|
|
74
77
|
}
|
|
75
78
|
}
|
|
79
|
+
const isFrameLike = (item) => item instanceof WrappedCallStackFrame || item instanceof WrappedCustomStackFrame;
|
|
76
80
|
const WIDGET_CLASS_NAME = 'multiCallStackWidget';
|
|
77
81
|
let CallStackWidget = class CallStackWidget extends Disposable {
|
|
78
82
|
constructor(container, containingEditor, instantiationService) {
|
|
@@ -90,6 +94,7 @@ let CallStackWidget = class CallStackWidget extends Disposable {
|
|
|
90
94
|
multipleSelectionSupport: false,
|
|
91
95
|
mouseSupport: false,
|
|
92
96
|
keyboardSupport: false,
|
|
97
|
+
setRowLineHeight: false,
|
|
93
98
|
accessibilityProvider: instantiationService.createInstance(StackAccessibilityProvider),
|
|
94
99
|
}));
|
|
95
100
|
}
|
|
@@ -103,6 +108,16 @@ let CallStackWidget = class CallStackWidget extends Disposable {
|
|
|
103
108
|
this.list.layout(height, width);
|
|
104
109
|
this.layoutEmitter.fire();
|
|
105
110
|
}
|
|
111
|
+
collapseAll() {
|
|
112
|
+
transaction(tx => {
|
|
113
|
+
for (let i = 0; i < this.list.length; i++) {
|
|
114
|
+
const frame = this.list.element(i);
|
|
115
|
+
if (isFrameLike(frame)) {
|
|
116
|
+
frame.collapsed.set(true, tx);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
106
121
|
async loadFrame(replacing) {
|
|
107
122
|
if (!this.cts) {
|
|
108
123
|
return;
|
|
@@ -152,7 +167,7 @@ let StackAccessibilityProvider = class StackAccessibilityProvider {
|
|
|
152
167
|
if (e instanceof CallStackFrame) {
|
|
153
168
|
if (e.source && e.line) {
|
|
154
169
|
return ( localize(
|
|
155
|
-
|
|
170
|
+
10658,
|
|
156
171
|
'{0}, line {1} in {2}',
|
|
157
172
|
e.name,
|
|
158
173
|
e.line,
|
|
@@ -164,7 +179,7 @@ let StackAccessibilityProvider = class StackAccessibilityProvider {
|
|
|
164
179
|
assertNever();
|
|
165
180
|
}
|
|
166
181
|
getWidgetAriaLabel() {
|
|
167
|
-
return ( localize(
|
|
182
|
+
return ( localize(10659, 'Stack Trace'));
|
|
168
183
|
}
|
|
169
184
|
};
|
|
170
185
|
StackAccessibilityProvider = ( (__decorate([
|
|
@@ -176,7 +191,7 @@ class StackDelegate {
|
|
|
176
191
|
return element.height.get();
|
|
177
192
|
}
|
|
178
193
|
if (element instanceof SkippedCallFrames) {
|
|
179
|
-
return
|
|
194
|
+
return HEADER_HEIGHT;
|
|
180
195
|
}
|
|
181
196
|
assertNever();
|
|
182
197
|
}
|
|
@@ -219,7 +234,7 @@ const makeFrameElements = () => h('div.multiCallStackFrame', [
|
|
|
219
234
|
h('div.editorContainer@editor'),
|
|
220
235
|
])
|
|
221
236
|
]);
|
|
222
|
-
const HEADER_HEIGHT =
|
|
237
|
+
const HEADER_HEIGHT = 24;
|
|
223
238
|
let AbstractFrameRenderer = class AbstractFrameRenderer {
|
|
224
239
|
constructor(instantiationService) {
|
|
225
240
|
this.instantiationService = instantiationService;
|
|
@@ -263,9 +278,9 @@ let AbstractFrameRenderer = class AbstractFrameRenderer {
|
|
|
263
278
|
collapse.element.ariaExpanded = String(!collapsed);
|
|
264
279
|
elements.root.classList.toggle('collapsed', collapsed);
|
|
265
280
|
}));
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
281
|
+
const toggleCollapse = () => item.collapsed.set(!item.collapsed.get(), undefined);
|
|
282
|
+
elementStore.add(collapse.onDidClick(toggleCollapse));
|
|
283
|
+
elementStore.add(addDisposableListener(elements.title, 'click', toggleCollapse));
|
|
269
284
|
}
|
|
270
285
|
disposeElement(element, index, templateData, height) {
|
|
271
286
|
templateData.elementStore.clear();
|
|
@@ -281,18 +296,22 @@ const CONTEXT_LINES = 2;
|
|
|
281
296
|
let FrameCodeRenderer = class FrameCodeRenderer extends AbstractFrameRenderer {
|
|
282
297
|
static { FrameCodeRenderer_1 = this; }
|
|
283
298
|
static { this.templateId = 'f'; }
|
|
284
|
-
constructor(containingEditor, onLayout, modelService,
|
|
299
|
+
constructor(containingEditor, onLayout, modelService, instantiationService) {
|
|
285
300
|
super(instantiationService);
|
|
286
301
|
this.containingEditor = containingEditor;
|
|
287
302
|
this.onLayout = onLayout;
|
|
288
303
|
this.modelService = modelService;
|
|
289
|
-
this.editorService = editorService;
|
|
290
304
|
this.templateId = FrameCodeRenderer_1.templateId;
|
|
291
305
|
}
|
|
292
306
|
finishRenderTemplate(data) {
|
|
307
|
+
const contributions = [{
|
|
308
|
+
id: ClickToLocationContribution.ID,
|
|
309
|
+
instantiation: EditorContributionInstantiation.BeforeFirstInteraction,
|
|
310
|
+
ctor: ClickToLocationContribution,
|
|
311
|
+
}];
|
|
293
312
|
const editor = this.containingEditor
|
|
294
|
-
? this.instantiationService.createInstance(EmbeddedCodeEditorWidget, data.elements.editor, editorOptions, { isSimpleWidget: true }, this.containingEditor)
|
|
295
|
-
: this.instantiationService.createInstance(CodeEditorWidget, data.elements.editor, editorOptions, { isSimpleWidget: true });
|
|
313
|
+
? this.instantiationService.createInstance(EmbeddedCodeEditorWidget, data.elements.editor, editorOptions, { isSimpleWidget: true, contributions }, this.containingEditor)
|
|
314
|
+
: this.instantiationService.createInstance(CodeEditorWidget, data.elements.editor, editorOptions, { isSimpleWidget: true, contributions });
|
|
296
315
|
data.templateStore.add(editor);
|
|
297
316
|
const toolbar = data.templateStore.add(this.instantiationService.createInstance(MenuWorkbenchToolBar, data.elements.actions, MenuId.DebugCallStackToolbar, {
|
|
298
317
|
menuOptions: { shouldForwardArgs: true },
|
|
@@ -306,19 +325,6 @@ let FrameCodeRenderer = class FrameCodeRenderer extends AbstractFrameRenderer {
|
|
|
306
325
|
const item = element;
|
|
307
326
|
const uri = item.source;
|
|
308
327
|
template.label.element.setFile(uri);
|
|
309
|
-
template.elements.title.role = 'link';
|
|
310
|
-
elementStore.add(addDisposableListener(template.elements.title, 'click', e => {
|
|
311
|
-
this.editorService.openCodeEditor({
|
|
312
|
-
resource: uri,
|
|
313
|
-
options: {
|
|
314
|
-
selection: Range.fromPositions({
|
|
315
|
-
column: item.column ?? 1,
|
|
316
|
-
lineNumber: item.line ?? 1,
|
|
317
|
-
}),
|
|
318
|
-
selectionRevealType: TextEditorSelectionRevealType.CenterIfOutsideViewport,
|
|
319
|
-
},
|
|
320
|
-
}, this.containingEditor || null, e.ctrlKey || e.metaKey);
|
|
321
|
-
}));
|
|
322
328
|
const cts = ( (new CancellationTokenSource()));
|
|
323
329
|
elementStore.add(toDisposable(() => cts.dispose(true)));
|
|
324
330
|
this.modelService.createModelReference(uri).then(reference => {
|
|
@@ -338,9 +344,12 @@ let FrameCodeRenderer = class FrameCodeRenderer extends AbstractFrameRenderer {
|
|
|
338
344
|
const next = editor.getContentHeight();
|
|
339
345
|
if (next !== prev) {
|
|
340
346
|
editor.layout({ width: container.clientWidth, height: next });
|
|
341
|
-
item.editorHeight.set(next, undefined);
|
|
342
347
|
}
|
|
348
|
+
item.editorHeight.set(next, undefined);
|
|
343
349
|
};
|
|
350
|
+
elementStore.add(editor.onDidChangeModelDecorations(layout));
|
|
351
|
+
elementStore.add(editor.onDidChangeModelContent(layout));
|
|
352
|
+
elementStore.add(editor.onDidChangeModelOptions(layout));
|
|
344
353
|
elementStore.add(this.onLayout(layout));
|
|
345
354
|
layout();
|
|
346
355
|
}
|
|
@@ -370,24 +379,40 @@ let FrameCodeRenderer = class FrameCodeRenderer extends AbstractFrameRenderer {
|
|
|
370
379
|
};
|
|
371
380
|
FrameCodeRenderer = FrameCodeRenderer_1 = ( (__decorate([
|
|
372
381
|
( (__param(2, ITextModelService))),
|
|
373
|
-
( (__param(3,
|
|
374
|
-
( (__param(4, IInstantiationService)))
|
|
382
|
+
( (__param(3, IInstantiationService)))
|
|
375
383
|
], FrameCodeRenderer)));
|
|
376
|
-
class MissingCodeRenderer {
|
|
377
|
-
|
|
378
|
-
this.templateId = MissingCodeRenderer.templateId;
|
|
379
|
-
}
|
|
384
|
+
let MissingCodeRenderer = class MissingCodeRenderer {
|
|
385
|
+
static { MissingCodeRenderer_1 = this; }
|
|
380
386
|
static { this.templateId = 'm'; }
|
|
387
|
+
constructor(instantiationService) {
|
|
388
|
+
this.instantiationService = instantiationService;
|
|
389
|
+
this.templateId = MissingCodeRenderer_1.templateId;
|
|
390
|
+
}
|
|
381
391
|
renderTemplate(container) {
|
|
382
|
-
|
|
392
|
+
const elements = makeFrameElements();
|
|
393
|
+
elements.root.classList.add('missing');
|
|
394
|
+
container.appendChild(elements.root);
|
|
395
|
+
const label = this.instantiationService.createInstance(ResourceLabel, elements.title, {});
|
|
396
|
+
return { elements, label };
|
|
383
397
|
}
|
|
384
|
-
renderElement(element,
|
|
385
|
-
|
|
398
|
+
renderElement(element, _index, templateData) {
|
|
399
|
+
const cast = element;
|
|
400
|
+
templateData.label.element.setResource({
|
|
401
|
+
name: cast.name,
|
|
402
|
+
description: ( localize(10660, 'Line {0} column {1}', cast.line, cast.column)),
|
|
403
|
+
range: { startLineNumber: cast.line, startColumn: cast.column, endColumn: cast.column, endLineNumber: cast.line },
|
|
404
|
+
}, {
|
|
405
|
+
icon: Codicon.fileBinary,
|
|
406
|
+
});
|
|
386
407
|
}
|
|
387
408
|
disposeTemplate(templateData) {
|
|
388
|
-
|
|
409
|
+
templateData.label.dispose();
|
|
410
|
+
templateData.elements.root.remove();
|
|
389
411
|
}
|
|
390
|
-
}
|
|
412
|
+
};
|
|
413
|
+
MissingCodeRenderer = MissingCodeRenderer_1 = ( (__decorate([
|
|
414
|
+
( (__param(0, IInstantiationService)))
|
|
415
|
+
], MissingCodeRenderer)));
|
|
391
416
|
class CustomRenderer extends AbstractFrameRenderer {
|
|
392
417
|
constructor() {
|
|
393
418
|
super(...arguments);
|
|
@@ -435,7 +460,7 @@ let SkippedRenderer = class SkippedRenderer {
|
|
|
435
460
|
}
|
|
436
461
|
button.enabled = false;
|
|
437
462
|
this.loadFrames(data.current).catch(e => {
|
|
438
|
-
this.notificationService.error(( localize(
|
|
463
|
+
this.notificationService.error(( localize(10661, 'Failed to load stack frames: {0}', e.message)));
|
|
439
464
|
});
|
|
440
465
|
}));
|
|
441
466
|
return data;
|
|
@@ -453,11 +478,66 @@ let SkippedRenderer = class SkippedRenderer {
|
|
|
453
478
|
SkippedRenderer = SkippedRenderer_1 = ( (__decorate([
|
|
454
479
|
( (__param(1, INotificationService)))
|
|
455
480
|
], SkippedRenderer)));
|
|
481
|
+
let ClickToLocationContribution = class ClickToLocationContribution extends Disposable {
|
|
482
|
+
static { this.ID = 'clickToLocation'; }
|
|
483
|
+
constructor(editor, editorService) {
|
|
484
|
+
super();
|
|
485
|
+
this.editor = editor;
|
|
486
|
+
this.linkDecorations = editor.createDecorationsCollection();
|
|
487
|
+
this._register(toDisposable(() => this.linkDecorations.clear()));
|
|
488
|
+
const clickLinkGesture = this._register(( (new ClickLinkGesture(editor))));
|
|
489
|
+
this._register(clickLinkGesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, keyboardEvent]) => {
|
|
490
|
+
this.onMove(mouseEvent);
|
|
491
|
+
}));
|
|
492
|
+
this._register(clickLinkGesture.onExecute((e) => {
|
|
493
|
+
const model = this.editor.getModel();
|
|
494
|
+
if (!this.current || !model) {
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
editorService.openEditor({
|
|
498
|
+
resource: model.uri,
|
|
499
|
+
options: {
|
|
500
|
+
selection: Range.fromPositions(( (new Position(this.current.line, this.current.word.startColumn)))),
|
|
501
|
+
selectionRevealType: TextEditorSelectionRevealType.CenterIfOutsideViewport,
|
|
502
|
+
},
|
|
503
|
+
}, e.hasSideBySideModifier ? SIDE_GROUP : undefined);
|
|
504
|
+
}));
|
|
505
|
+
}
|
|
506
|
+
onMove(mouseEvent) {
|
|
507
|
+
if (!mouseEvent.hasTriggerModifier) {
|
|
508
|
+
return this.clear();
|
|
509
|
+
}
|
|
510
|
+
const position = mouseEvent.target.position;
|
|
511
|
+
const word = position && this.editor.getModel()?.getWordAtPosition(position);
|
|
512
|
+
if (!word) {
|
|
513
|
+
return this.clear();
|
|
514
|
+
}
|
|
515
|
+
const prev = this.current?.word;
|
|
516
|
+
if (prev && prev.startColumn === word.startColumn && prev.endColumn === word.endColumn && prev.word === word.word) {
|
|
517
|
+
return;
|
|
518
|
+
}
|
|
519
|
+
this.current = { word, line: position.lineNumber };
|
|
520
|
+
this.linkDecorations.set([{
|
|
521
|
+
range: ( (new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn))),
|
|
522
|
+
options: {
|
|
523
|
+
description: 'call-stack-go-to-file-link',
|
|
524
|
+
inlineClassName: 'call-stack-go-to-file-link',
|
|
525
|
+
},
|
|
526
|
+
}]);
|
|
527
|
+
}
|
|
528
|
+
clear() {
|
|
529
|
+
this.linkDecorations.clear();
|
|
530
|
+
this.current = undefined;
|
|
531
|
+
}
|
|
532
|
+
};
|
|
533
|
+
ClickToLocationContribution = ( (__decorate([
|
|
534
|
+
( (__param(1, IEditorService)))
|
|
535
|
+
], ClickToLocationContribution)));
|
|
456
536
|
registerAction2(class extends Action2 {
|
|
457
537
|
constructor() {
|
|
458
538
|
super({
|
|
459
539
|
id: 'callStackWidget.goToFile',
|
|
460
|
-
title: ( localize2(
|
|
540
|
+
title: ( localize2(10662, 'Open File')),
|
|
461
541
|
icon: Codicon.goToFile,
|
|
462
542
|
menu: {
|
|
463
543
|
id: MenuId.DebugCallStackToolbar,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import n from 'vscode/external/rollup-plugin-styles/dist/runtime/inject-css.js';
|
|
2
2
|
|
|
3
|
-
var css = ".multiCallStackFrame{.header{align-items:center;background:var(--vscode-multiDiffEditor-headerBackground);border-top:1px solid var(--vscode-multiDiffEditor-border);color:var(--vscode-foreground);display:flex;height:
|
|
3
|
+
var css = ".multiCallStackFrame{.header{align-items:center;background:var(--vscode-multiDiffEditor-headerBackground);border-top:1px solid var(--vscode-multiDiffEditor-border);color:var(--vscode-foreground);display:flex;height:24px;padding:0 5px}.title{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;&[role=link]{cursor:pointer}.monaco-icon-label:before{height:auto}}&.collapsed{.header{border-bottom:1px solid var(--vscode-multiDiffEditor-border)}.editorParent{display:none}}.collapse-button{line-height:0;min-height:1px;width:16px;a{cursor:pointer}}.actions{align-items:center;display:flex;gap:8px;margin-right:12px}}.multiCallStackWidget{.multiCallStackFrameContainer{background:none!important}}.monaco-editor .call-stack-go-to-file-link{color:var(--vscode-editorLink-activeForeground)!important;cursor:pointer;text-decoration:underline}";
|
|
4
4
|
n(css,{});
|
|
5
5
|
|
|
6
6
|
export { css, css as default };
|
|
@@ -51,7 +51,7 @@ import { TestingContextKeys } from '../common/testingContextKeys.js';
|
|
|
51
51
|
|
|
52
52
|
const CLASS_HIT = 'coverage-deco-hit';
|
|
53
53
|
const CLASS_MISS = 'coverage-deco-miss';
|
|
54
|
-
const TOGGLE_INLINE_COMMAND_TEXT = ( localize(
|
|
54
|
+
const TOGGLE_INLINE_COMMAND_TEXT = ( localize(7722, 'Toggle Inline'));
|
|
55
55
|
const TOGGLE_INLINE_COMMAND_ID = 'testing.toggleInlineCoverage';
|
|
56
56
|
const BRANCH_MISS_INDICATOR_CHARS = 4;
|
|
57
57
|
let CodeCoverageDecorations = class CodeCoverageDecorations extends Disposable {
|
|
@@ -404,7 +404,7 @@ class CoverageDetailsModel {
|
|
|
404
404
|
if (detail.branches?.length) {
|
|
405
405
|
const covered = detail.branches.filter(b => !!b.count).length;
|
|
406
406
|
return ( (new MarkdownString())).appendMarkdown(( localize(
|
|
407
|
-
|
|
407
|
+
7723,
|
|
408
408
|
'{0} of {1} of branches in {2} were covered.',
|
|
409
409
|
covered,
|
|
410
410
|
detail.branches.length,
|
|
@@ -420,13 +420,13 @@ class CoverageDetailsModel {
|
|
|
420
420
|
const { count, label } = detail.detail.branches[detail.branch];
|
|
421
421
|
const label2 = label ? wrapInBackticks(label) : `#${detail.branch + 1}`;
|
|
422
422
|
if (!count) {
|
|
423
|
-
return ( (new MarkdownString())).appendMarkdown(( localize(
|
|
423
|
+
return ( (new MarkdownString())).appendMarkdown(( localize(7724, 'Branch {0} in {1} was not covered.', label2, text)));
|
|
424
424
|
}
|
|
425
425
|
else if (count === true) {
|
|
426
|
-
return ( (new MarkdownString())).appendMarkdown(( localize(
|
|
426
|
+
return ( (new MarkdownString())).appendMarkdown(( localize(7725, 'Branch {0} in {1} was executed.', label2, text)));
|
|
427
427
|
}
|
|
428
428
|
else {
|
|
429
|
-
return ( (new MarkdownString())).appendMarkdown(( localize(
|
|
429
|
+
return ( (new MarkdownString())).appendMarkdown(( localize(7726, 'Branch {0} in {1} was executed {2} time(s).', label2, text, count)));
|
|
430
430
|
}
|
|
431
431
|
}
|
|
432
432
|
assertNever();
|
|
@@ -434,10 +434,10 @@ class CoverageDetailsModel {
|
|
|
434
434
|
}
|
|
435
435
|
function namedDetailLabel(name, detail) {
|
|
436
436
|
return ( (new MarkdownString())).appendMarkdown(!detail.count
|
|
437
|
-
? ( localize(
|
|
437
|
+
? ( localize(7727, '`{0}` was not executed.', name))
|
|
438
438
|
: typeof detail.count === 'number'
|
|
439
|
-
? ( localize(
|
|
440
|
-
: ( localize(
|
|
439
|
+
? ( localize(7728, '`{0}` was executed {1} time(s).', name, detail.count))
|
|
440
|
+
: ( localize(7729, '`{0}` was executed.', name)));
|
|
441
441
|
}
|
|
442
442
|
function tidyLocation(location) {
|
|
443
443
|
if (location instanceof Position) {
|
|
@@ -534,8 +534,8 @@ let CoverageToolbarWidget = class CoverageToolbarWidget extends Disposable {
|
|
|
534
534
|
return;
|
|
535
535
|
}
|
|
536
536
|
const toggleAction = ( (new ActionWithIcon('toggleInline', this.coverage.showInline.get()
|
|
537
|
-
? ( localize(
|
|
538
|
-
: ( localize(
|
|
537
|
+
? ( localize(7730, 'Hide Inline Coverage'))
|
|
538
|
+
: ( localize(7731, 'Show Inline Coverage')), testingCoverageReport, undefined, () => this.coverage.showInline.set(!this.coverage.showInline.get(), undefined))));
|
|
539
539
|
const kb = this.keybindingService.lookupKeybinding(TOGGLE_INLINE_COMMAND_ID);
|
|
540
540
|
if (kb) {
|
|
541
541
|
toggleAction.tooltip = `${TOGGLE_INLINE_COMMAND_TEXT} (${kb.getLabel()})`;
|
|
@@ -554,12 +554,12 @@ let CoverageToolbarWidget = class CoverageToolbarWidget extends Disposable {
|
|
|
554
554
|
}
|
|
555
555
|
else if (current.coverage.perTestData?.size) {
|
|
556
556
|
this.actionBar.push(( (new ActionWithIcon('perTestFilter', ( localize(
|
|
557
|
-
|
|
557
|
+
7732,
|
|
558
558
|
"{0} test(s) ran code in this file",
|
|
559
559
|
current.coverage.perTestData.size
|
|
560
560
|
)), testingFilterIcon, undefined, () => this.commandService.executeCommand(TestCommandId.CoverageFilterToTestInEditor, this.current, this.editor)))));
|
|
561
561
|
}
|
|
562
|
-
this.actionBar.push(( (new ActionWithIcon('rerun', ( localize(
|
|
562
|
+
this.actionBar.push(( (new ActionWithIcon('rerun', ( localize(7733, 'Rerun')), testingRerunIcon, !this.isRunning, () => this.rerunTest()))));
|
|
563
563
|
}
|
|
564
564
|
show() {
|
|
565
565
|
if (this.registered) {
|
|
@@ -619,7 +619,7 @@ registerAction2(class ToggleInlineCoverage extends Action2 {
|
|
|
619
619
|
constructor() {
|
|
620
620
|
super({
|
|
621
621
|
id: TOGGLE_INLINE_COMMAND_ID,
|
|
622
|
-
title: ( localize2(
|
|
622
|
+
title: ( localize2(7734, "Toggle Inline Coverage")),
|
|
623
623
|
category: Categories.Test,
|
|
624
624
|
keybinding: {
|
|
625
625
|
weight: KeybindingWeight.WorkbenchContrib,
|
|
@@ -627,7 +627,7 @@ registerAction2(class ToggleInlineCoverage extends Action2 {
|
|
|
627
627
|
},
|
|
628
628
|
toggled: {
|
|
629
629
|
condition: TestingContextKeys.inlineCoverageEnabled,
|
|
630
|
-
title: ( localize(
|
|
630
|
+
title: ( localize(7735, "Hide Inline Coverage")),
|
|
631
631
|
},
|
|
632
632
|
icon: testingCoverageReport,
|
|
633
633
|
menu: [
|
|
@@ -648,9 +648,9 @@ registerAction2(class ToggleCoverageToolbar extends Action2 {
|
|
|
648
648
|
constructor() {
|
|
649
649
|
super({
|
|
650
650
|
id: TestCommandId.CoverageToggleToolbar,
|
|
651
|
-
title: ( localize2(
|
|
651
|
+
title: ( localize2(7736, "Test Coverage Toolbar")),
|
|
652
652
|
metadata: {
|
|
653
|
-
description: ( localize2(
|
|
653
|
+
description: ( localize2(7737, 'Toggle the sticky coverage bar in the editor.'))
|
|
654
654
|
},
|
|
655
655
|
category: Categories.Test,
|
|
656
656
|
toggled: {
|
|
@@ -673,7 +673,7 @@ registerAction2(class FilterCoverageToTestInEditor extends Action2 {
|
|
|
673
673
|
constructor() {
|
|
674
674
|
super({
|
|
675
675
|
id: TestCommandId.CoverageFilterToTestInEditor,
|
|
676
|
-
title: ( localize2(
|
|
676
|
+
title: ( localize2(7738, "Filter Coverage to Test")),
|
|
677
677
|
category: Categories.Test,
|
|
678
678
|
icon: Codicon.filter,
|
|
679
679
|
toggled: {
|
|
@@ -74,11 +74,11 @@ function getLabelForItem(result, testId, commonPrefixLen) {
|
|
|
74
74
|
}
|
|
75
75
|
var labels;
|
|
76
76
|
( ((function(labels) {
|
|
77
|
-
labels.showingFilterFor = (label) => ( localize(
|
|
78
|
-
labels.clickToChangeFiltering = ( localize(
|
|
79
|
-
labels.percentCoverage = (percent, precision) => ( localize(
|
|
80
|
-
labels.allTests = ( localize(
|
|
81
|
-
labels.pickShowCoverage = ( localize(
|
|
77
|
+
labels.showingFilterFor = (label) => ( localize(10683, "Showing \"{0}\"", label));
|
|
78
|
+
labels.clickToChangeFiltering = ( localize(10684, 'Click to view coverage for a single test'));
|
|
79
|
+
labels.percentCoverage = (percent, precision) => ( localize(10685, '{0} Coverage', displayPercent(percent, precision)));
|
|
80
|
+
labels.allTests = ( localize(10686, 'All tests'));
|
|
81
|
+
labels.pickShowCoverage = ( localize(10687, 'Pick a test to show coverage for'));
|
|
82
82
|
})(labels || (labels = {}))));
|
|
83
83
|
|
|
84
84
|
export { calculateDisplayedStat, displayPercent, getCoverageColor, getLabelForItem, labels, percent };
|
|
@@ -6,37 +6,37 @@ import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
|
|
|
6
6
|
import { testStatesToIconColors, testStatesToRetiredIconColors, testingColorRunAction } from './theme.js';
|
|
7
7
|
import { TestResultState } from 'vscode/vscode/vs/workbench/contrib/testing/common/testTypes';
|
|
8
8
|
|
|
9
|
-
const testingViewIcon = registerIcon('test-view-icon', Codicon.beaker, ( localize(
|
|
10
|
-
const testingResultsIcon = registerIcon('test-results-icon', Codicon.checklist, ( localize(
|
|
11
|
-
const testingRunIcon = registerIcon('testing-run-icon', Codicon.run, ( localize(
|
|
12
|
-
const testingRerunIcon = registerIcon('testing-rerun-icon', Codicon.refresh, ( localize(
|
|
13
|
-
const testingRunAllIcon = registerIcon('testing-run-all-icon', Codicon.runAll, ( localize(
|
|
14
|
-
const testingDebugAllIcon = registerIcon('testing-debug-all-icon', Codicon.debugAltSmall, ( localize(
|
|
15
|
-
const testingDebugIcon = registerIcon('testing-debug-icon', Codicon.debugAltSmall, ( localize(
|
|
16
|
-
const testingCoverageIcon = registerIcon('testing-coverage-icon', Codicon.runCoverage, ( localize(
|
|
17
|
-
const testingCoverageAllIcon = registerIcon('testing-coverage-all-icon', Codicon.runAllCoverage, ( localize(
|
|
18
|
-
const testingCancelIcon = registerIcon('testing-cancel-icon', Codicon.debugStop, ( localize(
|
|
19
|
-
const testingFilterIcon = registerIcon('testing-filter', Codicon.filter, ( localize(
|
|
20
|
-
const testingHiddenIcon = registerIcon('testing-hidden', Codicon.eyeClosed, ( localize(
|
|
21
|
-
registerIcon('testing-show-as-list-icon', Codicon.listTree, ( localize(
|
|
22
|
-
registerIcon('testing-show-as-list-icon', Codicon.listFlat, ( localize(
|
|
23
|
-
const testingUpdateProfiles = registerIcon('testing-update-profiles', Codicon.gear, ( localize(
|
|
24
|
-
const testingRefreshTests = registerIcon('testing-refresh-tests', Codicon.refresh, ( localize(
|
|
25
|
-
const testingTurnContinuousRunOn = registerIcon('testing-turn-continuous-run-on', Codicon.eye, ( localize(
|
|
26
|
-
const testingTurnContinuousRunOff = registerIcon('testing-turn-continuous-run-off', Codicon.eyeClosed, ( localize(
|
|
27
|
-
const testingContinuousIsOn = registerIcon('testing-continuous-is-on', Codicon.eye, ( localize(
|
|
28
|
-
const testingCancelRefreshTests = registerIcon('testing-cancel-refresh-tests', Codicon.stop, ( localize(
|
|
29
|
-
const testingCoverageReport = registerIcon('testing-coverage', Codicon.coverage, ( localize(
|
|
30
|
-
const testingWasCovered = registerIcon('testing-was-covered', Codicon.check, ( localize(
|
|
31
|
-
const testingCoverageMissingBranch = registerIcon('testing-missing-branch', Codicon.question, ( localize(
|
|
9
|
+
const testingViewIcon = registerIcon('test-view-icon', Codicon.beaker, ( localize(7661, 'View icon of the test view.')));
|
|
10
|
+
const testingResultsIcon = registerIcon('test-results-icon', Codicon.checklist, ( localize(7662, 'Icons for test results.')));
|
|
11
|
+
const testingRunIcon = registerIcon('testing-run-icon', Codicon.run, ( localize(7663, 'Icon of the "run test" action.')));
|
|
12
|
+
const testingRerunIcon = registerIcon('testing-rerun-icon', Codicon.refresh, ( localize(7664, 'Icon of the "rerun tests" action.')));
|
|
13
|
+
const testingRunAllIcon = registerIcon('testing-run-all-icon', Codicon.runAll, ( localize(7665, 'Icon of the "run all tests" action.')));
|
|
14
|
+
const testingDebugAllIcon = registerIcon('testing-debug-all-icon', Codicon.debugAltSmall, ( localize(7666, 'Icon of the "debug all tests" action.')));
|
|
15
|
+
const testingDebugIcon = registerIcon('testing-debug-icon', Codicon.debugAltSmall, ( localize(7667, 'Icon of the "debug test" action.')));
|
|
16
|
+
const testingCoverageIcon = registerIcon('testing-coverage-icon', Codicon.runCoverage, ( localize(7668, 'Icon of the "run test with coverage" action.')));
|
|
17
|
+
const testingCoverageAllIcon = registerIcon('testing-coverage-all-icon', Codicon.runAllCoverage, ( localize(7669, 'Icon of the "run all tests with coverage" action.')));
|
|
18
|
+
const testingCancelIcon = registerIcon('testing-cancel-icon', Codicon.debugStop, ( localize(7670, 'Icon to cancel ongoing test runs.')));
|
|
19
|
+
const testingFilterIcon = registerIcon('testing-filter', Codicon.filter, ( localize(7671, 'Icon for the \'Filter\' action in the testing view.')));
|
|
20
|
+
const testingHiddenIcon = registerIcon('testing-hidden', Codicon.eyeClosed, ( localize(7672, 'Icon shown beside hidden tests, when they\'ve been shown.')));
|
|
21
|
+
registerIcon('testing-show-as-list-icon', Codicon.listTree, ( localize(7673, 'Icon shown when the test explorer is disabled as a tree.')));
|
|
22
|
+
registerIcon('testing-show-as-list-icon', Codicon.listFlat, ( localize(7674, 'Icon shown when the test explorer is disabled as a list.')));
|
|
23
|
+
const testingUpdateProfiles = registerIcon('testing-update-profiles', Codicon.gear, ( localize(7675, 'Icon shown to update test profiles.')));
|
|
24
|
+
const testingRefreshTests = registerIcon('testing-refresh-tests', Codicon.refresh, ( localize(7676, 'Icon on the button to refresh tests.')));
|
|
25
|
+
const testingTurnContinuousRunOn = registerIcon('testing-turn-continuous-run-on', Codicon.eye, ( localize(7677, 'Icon to turn continuous test runs on.')));
|
|
26
|
+
const testingTurnContinuousRunOff = registerIcon('testing-turn-continuous-run-off', Codicon.eyeClosed, ( localize(7678, 'Icon to turn continuous test runs off.')));
|
|
27
|
+
const testingContinuousIsOn = registerIcon('testing-continuous-is-on', Codicon.eye, ( localize(7679, 'Icon when continuous run is on for a test ite,.')));
|
|
28
|
+
const testingCancelRefreshTests = registerIcon('testing-cancel-refresh-tests', Codicon.stop, ( localize(7680, 'Icon on the button to cancel refreshing tests.')));
|
|
29
|
+
const testingCoverageReport = registerIcon('testing-coverage', Codicon.coverage, ( localize(7681, 'Icon representing test coverage')));
|
|
30
|
+
const testingWasCovered = registerIcon('testing-was-covered', Codicon.check, ( localize(7682, 'Icon representing that an element was covered')));
|
|
31
|
+
const testingCoverageMissingBranch = registerIcon('testing-missing-branch', Codicon.question, ( localize(7683, 'Icon representing a uncovered block without a range')));
|
|
32
32
|
const testingStatesToIcons = ( (new Map([
|
|
33
|
-
[TestResultState.Errored, registerIcon('testing-error-icon', Codicon.issues, ( localize(
|
|
34
|
-
[TestResultState.Failed, registerIcon('testing-failed-icon', Codicon.error, ( localize(
|
|
35
|
-
[TestResultState.Passed, registerIcon('testing-passed-icon', Codicon.pass, ( localize(
|
|
36
|
-
[TestResultState.Queued, registerIcon('testing-queued-icon', Codicon.history, ( localize(
|
|
33
|
+
[TestResultState.Errored, registerIcon('testing-error-icon', Codicon.issues, ( localize(7684, 'Icon shown for tests that have an error.')))],
|
|
34
|
+
[TestResultState.Failed, registerIcon('testing-failed-icon', Codicon.error, ( localize(7685, 'Icon shown for tests that failed.')))],
|
|
35
|
+
[TestResultState.Passed, registerIcon('testing-passed-icon', Codicon.pass, ( localize(7686, 'Icon shown for tests that passed.')))],
|
|
36
|
+
[TestResultState.Queued, registerIcon('testing-queued-icon', Codicon.history, ( localize(7687, 'Icon shown for tests that are queued.')))],
|
|
37
37
|
[TestResultState.Running, spinningLoading],
|
|
38
|
-
[TestResultState.Skipped, registerIcon('testing-skipped-icon', Codicon.debugStepOver, ( localize(
|
|
39
|
-
[TestResultState.Unset, registerIcon('testing-unset-icon', Codicon.circleOutline, ( localize(
|
|
38
|
+
[TestResultState.Skipped, registerIcon('testing-skipped-icon', Codicon.debugStepOver, ( localize(7688, 'Icon shown for tests that are skipped.')))],
|
|
39
|
+
[TestResultState.Unset, registerIcon('testing-unset-icon', Codicon.circleOutline, ( localize(7689, 'Icon shown for tests that are in an unset state.')))],
|
|
40
40
|
])));
|
|
41
41
|
registerThemingParticipant((theme, collector) => {
|
|
42
42
|
for (const [state, icon] of testingStatesToIcons.entries()) {
|
|
@@ -60,7 +60,9 @@ registerThemingParticipant((theme, collector) => {
|
|
|
60
60
|
}
|
|
61
61
|
collector.addRule(`
|
|
62
62
|
.monaco-editor .glyph-margin-widgets ${ThemeIcon.asCSSSelector(testingRunIcon)},
|
|
63
|
-
.monaco-editor .glyph-margin-widgets ${ThemeIcon.asCSSSelector(testingRunAllIcon)}
|
|
63
|
+
.monaco-editor .glyph-margin-widgets ${ThemeIcon.asCSSSelector(testingRunAllIcon)},
|
|
64
|
+
.monaco-editor .glyph-margin-widgets ${ThemeIcon.asCSSSelector(testingDebugIcon)},
|
|
65
|
+
.monaco-editor .glyph-margin-widgets ${ThemeIcon.asCSSSelector(testingDebugAllIcon)} {
|
|
64
66
|
color: ${theme.getColor(testingColorRunAction)};
|
|
65
67
|
}
|
|
66
68
|
`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import n from 'vscode/external/rollup-plugin-styles/dist/runtime/inject-css.js';
|
|
2
2
|
|
|
3
|
-
var css = ".monaco-workbench{.codicon-testing-error-icon{color:var(--vscode-testing-iconErrored)}.codicon-testing-failed-icon{color:var(--vscode-testing-iconFailed)}.codicon-testing-passed-icon{color:var(--vscode-testing-iconPassed)}.codicon-testing-queued-icon{color:var(--vscode-testing-iconQueued)}.codicon-testing-skipped-icon{color:var(--vscode-testing-iconSkipped)}.codicon-testing-unset-icon{color:var(--vscode-testing-iconUnset)}}.test-explorer{display:flex;flex-direction:column}.test-explorer>.test-explorer-tree{flex-grow:1;height:0;position:relative}.test-coverage-list-item .name,.test-coverage-list-item-label,.test-explorer .test-item .label,.test-output-peek-tree .test-peek-item .name{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:0;.monaco-list.horizontal-scrolling &{overflow:visible;width:auto}}.test-explorer .test-item .label .codicon,.test-output-peek-tree .test-peek-item .name .codicon{font-size:1em;margin:0 .125em;transform:scale(1.25);vertical-align:middle}.test-explorer .test-item,.test-output-peek-tree .test-peek-item{align-items:center;display:flex}.test-output-peek-tree{border-left:1px solid var(--vscode-panelSection-border);color:var(--vscode-editor-foreground)}.test-explorer .monaco-list-row .codicon-testing-hidden,.test-explorer .monaco-list-row .monaco-action-bar,.test-output-peek-tree .monaco-list-row .monaco-action-bar{display:none;flex-shrink:0;margin-right:.8em}.test-explorer .monaco-list-row .monaco-action-bar .codicon-testing-continuous-is-on{background:var(--vscode-inputOption-activeBackground);border-color:var(--vscode-inputOption-activeBorder);border:1px solid var(--vscode-inputOption-activeBorder);border-radius:3px;color:var(--vscode-inputOption-activeForeground)}.test-explorer .monaco-list-row:not(.focused,:hover) .monaco-action-bar.testing-is-continuous-run .action-item{display:none}.test-explorer .monaco-list-row .monaco-action-bar.testing-is-continuous-run .action-item:last-child{display:block!important}.test-explorer .monaco-list-row .monaco-action-bar.testing-is-continuous-run,.test-explorer .monaco-list-row.focused .monaco-action-bar,.test-explorer .monaco-list-row:hover .monaco-action-bar,.test-output-peek-tree .monaco-list-row.focused .monaco-action-bar,.test-output-peek-tree .monaco-list-row:hover .monaco-action-bar{display:initial}.test-explorer .monaco-list-row .test-is-hidden .codicon-testing-hidden{display:block;margin-right:9px}.test-explorer .monaco-list-row.focused .codicon-testing-hidden,.test-explorer .monaco-list-row:hover .codicon-testing-hidden{display:none}.test-explorer .monaco-list-row .error{background:var(--vscode-inputValidation-errorBackground);border-radius:2px;font-size:12px;height:17px;line-height:17px;margin:3px 12px 3px 3px;outline:1px solid var(--vscode-inputValidation-errorBorder);overflow:hidden;padding:2px 4px}.test-explorer .monaco-list-row .error p{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.test-explorer .monaco-list-row .error a{color:var(--vscode-textLink-foreground)}.test-explorer .monaco-list-row .error a:hover{color:var(--vscode-textLink-activeForeground)}.test-explorer .computed-state,.test-output-peek-tree .computed-state{margin-right:.25em}.test-explorer .test-is-hidden{opacity:.8}.test-explorer .result-summary-container{box-sizing:border-box;font-variant-numeric:tabular-nums;height:27px;padding:0 12px 8px}.test-explorer .result-summary{align-items:center;display:flex;gap:2px}.test-explorer .result-summary>span{flex-grow:1}.monaco-workbench .test-explorer .monaco-action-bar .action-item>.action-label{margin-right:2px;padding:1px 2px}.monaco-workbench .part>.title>.title-actions .action-label.codicon-testing-autorun:after{border-radius:100%;content:\"\";display:none;height:.4em;left:50%;margin:.1em 0 0 .05em;position:absolute;top:50%;width:.4em}.monaco-workbench .part>.title>.title-actions .action-label.codicon-testing-autorun.checked:after{display:block}.codicon-testing-loading-icon:before{animation:codicon-spin 1.25s steps(30) infinite}.testing-no-test-placeholder{display:none;left:0;padding:0 20px;position:absolute;right:0;top:0;z-index:1}.testing-no-test-placeholder.visible{display:block}.monaco-editor .zone-widget.test-output-peek .zone-widget-container.peekview-widget{border-bottom-width:2px;border-top-width:2px}.monaco-editor .zone-widget.test-output-peek .type-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .zone-widget.test-output-peek .monaco-editor .inputarea.ime-input,.monaco-editor .zone-widget.test-output-peek .monaco-editor .monaco-editor-background,.monaco-editor .zone-widget.test-output-peek .test-output-peek-message-container{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .zone-widget.test-output-peek .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.test-output-peek-message-container{overflow:hidden}.test-output-peek-message-container .floating-click-widget{bottom:10px;position:absolute;right:20px}.test-output-peek-message-container,.test-output-peek-tree{height:100%}.test-output-peek-message-container .preview-text{line-height:normal;padding:8px 12px 8px 20px;white-space:normal}.test-output-peek-message-container .preview-text p:first-child{margin-top:0}.test-output-peek-message-container .preview-text p:last-child{margin-bottom:0}.test-output-peek-message-container .preview-text a{cursor:pointer}.testing-followup-action{align-items:center;display:flex;gap:14px;line-height:25px;overflow:hidden;pointer-events:none;&.animated{animation:fadeIn .15s ease-out}>a{align-items:center;cursor:pointer;display:flex;flex-shrink:0;gap:4px;pointer-events:auto;width:fit-content;&,.codicon{color:var(--vscode-textLink-foreground)}&:hover{color:var(--vscode-textLink-activeForeground)}&[aria-disabled=true]{color:inherit;cursor:default;.codicon{color:inherit}}}}.test-output-call-stack{height:100%}.monaco-action-bar.testing-filter-action-bar{flex-shrink:0;height:auto;margin:4px 12px}.testing-filter-action-item{align-items:center;display:flex!important;flex-grow:1;max-width:400px}.testing-filter-action-item>.monaco-action-bar .testing-filter-button.checked{background-color:var(--vscode-inputOption-activeBackground);border-color:var(--vscode-inputOption-activeBorder);color:var(--vscode-inputOption-activeForeground)}.testing-filter-action-bar .testing-filter-action-item{max-width:none}.testing-filter-action-item .testing-filter-wrapper{flex-grow:1}.testing-filter-action-item .testing-filter-wrapper input{padding-right:30px!important}.testing-filter-action-item .monaco-action-bar{align-items:center;bottom:0;display:flex;position:absolute;right:3px;top:0}.monaco-editor .testing-run-glyph{cursor:pointer}.testing-diff-title-widget{display:inline-block;font-size:12px;line-height:19px;overflow:hidden;padding-right:6px;text-overflow:ellipsis;white-space:nowrap}.test-message-inline-content{font-family:var(--testMessageDecorationFontFamily);font-size:var(--testMessageDecorationFontSize)}.test-message-inline-content-clickable{cursor:pointer}.test-label-description{font-size:.9em;margin-left:.5em;opacity:.7;white-space:pre}.testing-diff-lens-widget{color:var(--vscode-editorCodeLens-foreground)}.test-message-inline-content-s0{color:var(--vscode-testing-message-error-decorationForeground)!important}.test-message-inline-content-s1{color:var(--vscode-testing-message-info-decorationForeground)!important}.monaco-editor .testing-inline-message-severity-0{color:var(--vscode-testing-message-error-decorationForeground)!important}.monaco-editor .testing-inline-message-severity-1{color:var(--vscode-testing-message-info-decorationForeground)!important}.coverage-view-is-filtered>.pane-header>.actions{display:block!important}.test-coverage-bars,.test-coverage-list-item{align-items:center;display:flex}.test-coverage-bars{font-size:11px;gap:4px;margin-right:.8em}.test-coverage-bars .bar{border:1px solid;border-radius:2px;height:8px;overflow:hidden;position:relative}.test-coverage-bars .bar:before{background:currentColor;content:\"\";height:100%;opacity:.7;position:absolute;width:var(--test-bar-width)}.test-coverage-list-item .icon{margin-right:.2em}.test-coverage-list-item.not-covered .name{opacity:.7}.coverage-summary-widget{background:var(--vscode-editor-background);box-shadow:var(--vscode-editorStickyScroll-shadow) 0 3px 2px -2px;color:var(--vscode-editor-foreground);left:0;width:100%;z-index:1;>div{align-items:center;display:flex;height:25px;padding:0 22px}.btn{margin:0 4px;padding:0 4px;position:relative;&:first-child{margin-left:0}&:last-child{margin-right:0}}.action-label,.stat{margin:0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-label{align-items:center;display:flex;font-size:13px;padding:0 4px;.codicon{margin-right:4px}}}.test-coverage-tree-per-test-switcher{background-color:var(--vscode-dropdown-background);border:1px solid var(--vscode-dropdown-border);color:var(--vscode-dropdown-foreground);cursor:pointer;display:flex;line-height:20px;margin:3px 22px 3px 0;max-width:calc(100% - 44px);padding:0 6px;width:fit-content;span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}&:after{content:\"\";content:var(--vscode-icon-chevron-right-content);font-family:var(--vscode-icon-chevron-right-font-family);font-size:18px;padding-left:22px}}.explorer-item-with-test-coverage{display:flex}.explorer-item-with-test-coverage .explorer-item{flex-grow:1}.explorer-item-with-test-coverage .monaco-icon-label:after{margin-right:12px}.coverage-deco-gutter{z-index:0}.coverage-deco-gutter:before{content:\"\";inset:0;position:absolute;z-index:-1}.coverage-deco-gutter.coverage-deco-hit:before{background:var(--vscode-testing-coveredGutterBackground);border-color:var(--vscode-testing-coveredGutterBackground)}.coverage-deco-gutter.coverage-deco-miss:before{background:var(--vscode-testing-uncoveredGutterBackground);border-color:var(--vscode-testing-uncoveredGutterBackground)}.hc-black .coverage-deco-gutter:before,.hc-light .coverage-deco-gutter:before{background:none;border-style:solid;border-width:3px 0 3px 5px}.coverage-deco-gutter.coverage-deco-miss.coverage-deco-hit:before{background-color:transparent;background-image:linear-gradient(45deg,var(--vscode-testing-coveredGutterBackground) 25%,var(--vscode-testing-uncoveredGutterBackground) 25%,var(--vscode-testing-uncoveredGutterBackground) 50%,var(--vscode-testing-coveredGutterBackground) 50%,75%,var(--vscode-testing-uncoveredGutterBackground) 75%,var(--vscode-testing-uncoveredGutterBackground) 100%);background-size:6px 6px}.coverage-deco-inline{outline-offset:-1px}.monaco-editor{.coverage-deco-inline.coverage-deco-hit{background:var(--vscode-testing-coveredBackground);outline:1px solid var(--vscode-testing-coveredBorder)}.coverage-deco-inline.coverage-deco-miss{background:var(--vscode-testing-uncoveredBackground);outline:1px solid var(--vscode-testing-uncoveredBorder)}.hc-black .coverage-deco-inline.coverage-deco-hit,.hc-light .coverage-deco-inline.coverage-deco-hit{outline-style:dashed}.coverage-deco-branch-miss-indicator{display:inline-block;font:inherit!important;height:100%;position:relative;width:4ch}.coverage-deco-branch-miss-indicator:before{border:1px solid;border-radius:2px;font:normal normal normal calc(var(--vscode-testing-coverage-lineHeight)/2)/1 codicon;left:50%;padding:calc(var(--vscode-testing-coverage-lineHeight)/10);position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.coverage-deco-inline-count{background:var(--vscode-testing-coverCountBadgeBackground);border-bottom-left-radius:2px;border-top-left-radius:2px;color:var(--vscode-testing-coverCountBadgeForeground);font-size:.7em;margin:0 .7em 0 .4em;padding:.2em 0 .2em .2em;position:relative;&:after{background-image:linear-gradient(to bottom left,transparent 50%,var(--vscode-testing-coverCountBadgeBackground) 0),linear-gradient(to bottom right,var(--vscode-testing-coverCountBadgeBackground) 50%,transparent 0);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50%;bottom:0;content:\"\";display:block;left:100%;position:absolute;top:0;width:.5em}}}";
|
|
3
|
+
var css = ".monaco-workbench{.codicon-testing-error-icon{color:var(--vscode-testing-iconErrored)}.codicon-testing-failed-icon{color:var(--vscode-testing-iconFailed)}.codicon-testing-passed-icon{color:var(--vscode-testing-iconPassed)}.codicon-testing-queued-icon{color:var(--vscode-testing-iconQueued)}.codicon-testing-skipped-icon{color:var(--vscode-testing-iconSkipped)}.codicon-testing-unset-icon{color:var(--vscode-testing-iconUnset)}}.test-explorer{display:flex;flex-direction:column}.test-explorer>.test-explorer-tree{flex-grow:1;height:0;position:relative}.test-coverage-list-item .name,.test-coverage-list-item-label,.test-explorer .test-item .label,.test-output-peek-tree .test-peek-item .name{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:0;.monaco-list.horizontal-scrolling &{overflow:visible;width:auto}}.test-explorer .test-item .label .codicon,.test-output-peek-tree .test-peek-item .name .codicon{font-size:1em;margin:0 .125em;transform:scale(1.25);vertical-align:middle}.test-explorer .test-item,.test-output-peek-tree .test-peek-item{align-items:center;display:flex}.test-output-peek-tree{border-left:1px solid var(--vscode-panelSection-border);color:var(--vscode-editor-foreground)}.test-explorer .monaco-list-row .codicon-testing-hidden,.test-explorer .monaco-list-row .monaco-action-bar,.test-output-peek-tree .monaco-list-row .monaco-action-bar{display:none;flex-shrink:0;margin-right:.8em}.test-explorer .monaco-list-row .monaco-action-bar .codicon-testing-continuous-is-on{background:var(--vscode-inputOption-activeBackground);border-color:var(--vscode-inputOption-activeBorder);border:1px solid var(--vscode-inputOption-activeBorder);border-radius:3px;color:var(--vscode-inputOption-activeForeground)}.test-explorer .monaco-list-row:not(.focused,:hover) .monaco-action-bar.testing-is-continuous-run .action-item{display:none}.test-explorer .monaco-list-row .monaco-action-bar.testing-is-continuous-run .action-item:last-child{display:block!important}.test-explorer .monaco-list-row .monaco-action-bar.testing-is-continuous-run,.test-explorer .monaco-list-row.focused .monaco-action-bar,.test-explorer .monaco-list-row:hover .monaco-action-bar,.test-output-peek-tree .monaco-list-row.focused .monaco-action-bar,.test-output-peek-tree .monaco-list-row:hover .monaco-action-bar{display:initial}.test-explorer .monaco-list-row .test-is-hidden .codicon-testing-hidden{display:block;margin-right:9px}.test-explorer .monaco-list-row.focused .codicon-testing-hidden,.test-explorer .monaco-list-row:hover .codicon-testing-hidden{display:none}.test-explorer .monaco-list-row .error{background:var(--vscode-inputValidation-errorBackground);border-radius:2px;font-size:12px;height:17px;line-height:17px;margin:3px 12px 3px 3px;outline:1px solid var(--vscode-inputValidation-errorBorder);overflow:hidden;padding:2px 4px}.test-explorer .monaco-list-row .error p{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.test-explorer .monaco-list-row .error a{color:var(--vscode-textLink-foreground)}.test-explorer .monaco-list-row .error a:hover{color:var(--vscode-textLink-activeForeground)}.test-explorer .computed-state,.test-output-peek-tree .computed-state{margin-right:.25em}.test-explorer .test-is-hidden{opacity:.8}.test-explorer .result-summary-container{box-sizing:border-box;font-variant-numeric:tabular-nums;height:27px;padding:0 12px 8px}.test-explorer .result-summary{align-items:center;display:flex;gap:2px}.test-explorer .result-summary>span{flex-grow:1}.monaco-workbench .test-explorer .monaco-action-bar .action-item>.action-label{margin-right:2px;padding:1px 2px}.monaco-workbench .part>.title>.title-actions .action-label.codicon-testing-autorun:after{border-radius:100%;content:\"\";display:none;height:.4em;left:50%;margin:.1em 0 0 .05em;position:absolute;top:50%;width:.4em}.monaco-workbench .part>.title>.title-actions .action-label.codicon-testing-autorun.checked:after{display:block}.codicon-testing-loading-icon:before{animation:codicon-spin 1.25s steps(30) infinite}.testing-no-test-placeholder{display:none;left:0;padding:0 20px;position:absolute;right:0;top:0;z-index:1}.testing-no-test-placeholder.visible{display:block}.monaco-editor .zone-widget.test-output-peek .zone-widget-container.peekview-widget{border-bottom-width:2px;border-top-width:2px}.monaco-editor .zone-widget.test-output-peek .type-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .zone-widget.test-output-peek .monaco-editor .inputarea.ime-input,.monaco-editor .zone-widget.test-output-peek .monaco-editor .monaco-editor-background,.monaco-editor .zone-widget.test-output-peek .test-output-peek-message-container{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .zone-widget.test-output-peek .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.test-output-peek-message-container{overflow:hidden}.test-output-peek-message-container .floating-click-widget{bottom:10px;position:absolute;right:20px}.test-output-peek-message-container,.test-output-peek-tree{height:100%}.test-output-peek-message-container .preview-text{line-height:normal;padding:8px 12px 8px 20px;white-space:normal}.test-output-peek-message-container .preview-text p:first-child{margin-top:0}.test-output-peek-message-container .preview-text p:last-child{margin-bottom:0}.test-output-peek-message-container .preview-text a{cursor:pointer}.testing-followup-action{align-items:center;display:flex;gap:14px;line-height:25px;overflow:hidden;pointer-events:none;&.animated{animation:fadeIn .15s ease-out}>a{align-items:center;cursor:pointer;display:flex;flex-shrink:0;gap:4px;pointer-events:auto;width:fit-content;&,.codicon{color:var(--vscode-textLink-foreground)}&:hover{color:var(--vscode-textLink-activeForeground)}&[aria-disabled=true]{color:inherit;cursor:default;.codicon{color:inherit}}}}.test-output-call-stack{height:100%}.monaco-action-bar.testing-filter-action-bar{flex-shrink:0;height:auto;margin:4px 12px}.testing-filter-action-item{align-items:center;display:flex!important;flex-grow:1;max-width:400px}.testing-filter-action-item>.monaco-action-bar .testing-filter-button.checked{background-color:var(--vscode-inputOption-activeBackground);border-color:var(--vscode-inputOption-activeBorder);color:var(--vscode-inputOption-activeForeground)}.testing-filter-action-bar .testing-filter-action-item{max-width:none}.testing-filter-action-item .testing-filter-wrapper{flex-grow:1}.testing-filter-action-item .testing-filter-wrapper input{padding-right:30px!important}.testing-filter-action-item .monaco-action-bar{align-items:center;bottom:0;display:flex;position:absolute;right:3px;top:0}.monaco-editor .testing-run-glyph{cursor:pointer}.testing-diff-title-widget{display:inline-block;font-size:12px;line-height:19px;overflow:hidden;padding-right:6px;text-overflow:ellipsis;white-space:nowrap}.test-message-inline-content{font-family:var(--testMessageDecorationFontFamily);font-size:var(--testMessageDecorationFontSize)}.test-message-inline-content-clickable{cursor:pointer}.test-label-description{font-size:.9em;margin-left:.5em;opacity:.7;white-space:pre}.testing-diff-lens-widget{color:var(--vscode-editorCodeLens-foreground)}.test-message-inline-content-s0{color:var(--vscode-testing-message-error-decorationForeground)!important}.test-message-inline-content-s1{color:var(--vscode-testing-message-info-decorationForeground)!important}.monaco-editor .testing-inline-message-severity-0{background:var(--vscode-testing-message-error-lineBackground)!important}.monaco-editor .testing-inline-message-severity-1{background:var(--vscode-testing-message-info-lineBackground)!important}.coverage-view-is-filtered>.pane-header>.actions{display:block!important}.test-coverage-bars,.test-coverage-list-item{align-items:center;display:flex}.test-coverage-bars{font-size:11px;gap:4px;margin-right:.8em}.test-coverage-bars .bar{border:1px solid;border-radius:2px;height:8px;overflow:hidden;position:relative}.test-coverage-bars .bar:before{background:currentColor;content:\"\";height:100%;opacity:.7;position:absolute;width:var(--test-bar-width)}.test-coverage-list-item .icon{margin-right:.2em}.test-coverage-list-item.not-covered .name{opacity:.7}.coverage-summary-widget{background:var(--vscode-editor-background);box-shadow:var(--vscode-editorStickyScroll-shadow) 0 3px 2px -2px;color:var(--vscode-editor-foreground);left:0;width:100%;z-index:1;>div{align-items:center;display:flex;height:25px;padding:0 22px}.btn{margin:0 4px;padding:0 4px;position:relative;&:first-child{margin-left:0}&:last-child{margin-right:0}}.action-label,.stat{margin:0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-label{align-items:center;display:flex;font-size:13px;padding:0 4px;.codicon{margin-right:4px}}}.test-coverage-tree-per-test-switcher{background-color:var(--vscode-dropdown-background);border:1px solid var(--vscode-dropdown-border);color:var(--vscode-dropdown-foreground);cursor:pointer;display:flex;line-height:20px;margin:3px 22px 3px 0;max-width:calc(100% - 44px);padding:0 6px;width:fit-content;span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}&:after{content:\"\";content:var(--vscode-icon-chevron-right-content);font-family:var(--vscode-icon-chevron-right-font-family);font-size:18px;padding-left:22px}}.explorer-item-with-test-coverage{display:flex}.explorer-item-with-test-coverage .explorer-item{flex-grow:1}.explorer-item-with-test-coverage .monaco-icon-label:after{margin-right:12px}.coverage-deco-gutter{z-index:0}.coverage-deco-gutter:before{content:\"\";inset:0;position:absolute;z-index:-1}.coverage-deco-gutter.coverage-deco-hit:before{background:var(--vscode-testing-coveredGutterBackground);border-color:var(--vscode-testing-coveredGutterBackground)}.coverage-deco-gutter.coverage-deco-miss:before{background:var(--vscode-testing-uncoveredGutterBackground);border-color:var(--vscode-testing-uncoveredGutterBackground)}.hc-black .coverage-deco-gutter:before,.hc-light .coverage-deco-gutter:before{background:none;border-style:solid;border-width:3px 0 3px 5px}.coverage-deco-gutter.coverage-deco-miss.coverage-deco-hit:before{background-color:transparent;background-image:linear-gradient(45deg,var(--vscode-testing-coveredGutterBackground) 25%,var(--vscode-testing-uncoveredGutterBackground) 25%,var(--vscode-testing-uncoveredGutterBackground) 50%,var(--vscode-testing-coveredGutterBackground) 50%,75%,var(--vscode-testing-uncoveredGutterBackground) 75%,var(--vscode-testing-uncoveredGutterBackground) 100%);background-size:6px 6px}.coverage-deco-inline{outline-offset:-1px}.monaco-editor{.coverage-deco-inline.coverage-deco-hit{background:var(--vscode-testing-coveredBackground);outline:1px solid var(--vscode-testing-coveredBorder)}.coverage-deco-inline.coverage-deco-miss{background:var(--vscode-testing-uncoveredBackground);outline:1px solid var(--vscode-testing-uncoveredBorder)}.hc-black .coverage-deco-inline.coverage-deco-hit,.hc-light .coverage-deco-inline.coverage-deco-hit{outline-style:dashed}.coverage-deco-branch-miss-indicator{display:inline-block;font:inherit!important;height:100%;position:relative;width:4ch}.coverage-deco-branch-miss-indicator:before{border:1px solid;border-radius:2px;font:normal normal normal calc(var(--vscode-testing-coverage-lineHeight)/2)/1 codicon;left:50%;padding:calc(var(--vscode-testing-coverage-lineHeight)/10);position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.coverage-deco-inline-count{background:var(--vscode-testing-coverCountBadgeBackground);border-bottom-left-radius:2px;border-top-left-radius:2px;color:var(--vscode-testing-coverCountBadgeForeground);font-size:.7em;margin:0 .7em 0 .4em;padding:.2em 0 .2em .2em;position:relative;&:after{background-image:linear-gradient(to bottom left,transparent 50%,var(--vscode-testing-coverCountBadgeBackground) 0),linear-gradient(to bottom right,var(--vscode-testing-coverCountBadgeBackground) 50%,transparent 0);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50%;bottom:0;content:\"\";display:block;left:100%;position:absolute;top:0;width:.5em}}}";
|
|
4
4
|
n(css,{});
|
|
5
5
|
|
|
6
6
|
export { css, css as default };
|