@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.
Files changed (29) hide show
  1. package/package.json +3 -3
  2. package/vscode/src/vs/workbench/contrib/debug/browser/callStackWidget.js +123 -43
  3. package/vscode/src/vs/workbench/contrib/debug/browser/media/callStackWidget.css.js +1 -1
  4. package/vscode/src/vs/workbench/contrib/testing/browser/codeCoverageDecorations.js +17 -17
  5. package/vscode/src/vs/workbench/contrib/testing/browser/codeCoverageDisplayUtils.js +5 -5
  6. package/vscode/src/vs/workbench/contrib/testing/browser/icons.js +32 -30
  7. package/vscode/src/vs/workbench/contrib/testing/browser/media/testing.css.js +1 -1
  8. package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageBars.js +3 -3
  9. package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageView.js +14 -14
  10. package/vscode/src/vs/workbench/contrib/testing/browser/testExplorerActions.js +118 -102
  11. package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testMessageStack.js +3 -0
  12. package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsOutput.js +13 -7
  13. package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsSubject.js +2 -1
  14. package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsTree.js +79 -46
  15. package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsViewContent.js +33 -10
  16. package/vscode/src/vs/workbench/contrib/testing/browser/testing.contribution.js +10 -9
  17. package/vscode/src/vs/workbench/contrib/testing/browser/testingConfigurationUi.js +17 -12
  18. package/vscode/src/vs/workbench/contrib/testing/browser/testingDecorations.js +103 -50
  19. package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerFilter.js +11 -11
  20. package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerView.js +14 -14
  21. package/vscode/src/vs/workbench/contrib/testing/browser/testingOutputPeek.js +60 -23
  22. package/vscode/src/vs/workbench/contrib/testing/browser/testingProgressUiService.js +5 -5
  23. package/vscode/src/vs/workbench/contrib/testing/browser/testingViewPaneContainer.js +1 -1
  24. package/vscode/src/vs/workbench/contrib/testing/browser/theme.js +31 -37
  25. package/vscode/src/vs/workbench/contrib/testing/common/configuration.js +34 -34
  26. package/vscode/src/vs/workbench/contrib/testing/common/testExclusions.js +2 -2
  27. package/vscode/src/vs/workbench/contrib/testing/common/testServiceImpl.js +9 -9
  28. package/vscode/src/vs/workbench/contrib/testing/common/testingContentProvider.js +1 -1
  29. 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": "8.0.3",
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@8.0.3",
30
- "@codingame/monaco-vscode-terminal-service-override": "8.0.3"
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, clearNode } from 'vscode/vscode/vs/base/browser/dom';
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 { ICodeEditorService } from 'vscode/vscode/vs/editor/browser/services/codeEditorService';
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
- 10726,
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(10727, 'Stack Trace'));
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 50;
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 = 32;
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
- elementStore.add(collapse.onDidClick(() => {
267
- item.collapsed.set(!item.collapsed.get(), undefined);
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, editorService, instantiationService) {
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, ICodeEditorService))),
374
- ( (__param(4, IInstantiationService)))
382
+ ( (__param(3, IInstantiationService)))
375
383
  ], FrameCodeRenderer)));
376
- class MissingCodeRenderer {
377
- constructor() {
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
- return { container };
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, index, templateData, height) {
385
- templateData.container.innerText = element.name;
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
- clearNode(templateData.container);
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(10728, 'Failed to load stack frames: {0}', e.message)));
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(10729, 'Open File')),
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:32px;padding:0 5px}.title{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;&[role=link]{cursor:pointer}}&.collapsed{.header{border-bottom:1px solid var(--vscode-multiDiffEditor-border)}.editorParent{display:none}}.collapse-button{cursor:pointer}.actions{align-items:center;display:flex;gap:8px;margin-right:12px}}.multiCallStackWidget{.multiCallStackFrameContainer{background:none!important}}";
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(8162, 'Toggle Inline'));
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
- 8163,
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(8164, 'Branch {0} in {1} was not covered.', label2, text)));
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(8165, 'Branch {0} in {1} was executed.', label2, text)));
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(8166, 'Branch {0} in {1} was executed {2} time(s).', label2, text, count)));
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(8167, '`{0}` was not executed.', name))
437
+ ? ( localize(7727, '`{0}` was not executed.', name))
438
438
  : typeof detail.count === 'number'
439
- ? ( localize(8168, '`{0}` was executed {1} time(s).', name, detail.count))
440
- : ( localize(8169, '`{0}` was executed.', name)));
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(8170, 'Hide Inline Coverage'))
538
- : ( localize(8171, 'Show Inline Coverage')), testingCoverageReport, undefined, () => this.coverage.showInline.set(!this.coverage.showInline.get(), undefined))));
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
- 8172,
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(8173, 'Rerun')), testingRerunIcon, !this.isRunning, () => this.rerunTest()))));
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(8174, "Toggle Inline Coverage")),
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(8175, "Hide Inline Coverage")),
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(8176, "Test Coverage Toolbar")),
651
+ title: ( localize2(7736, "Test Coverage Toolbar")),
652
652
  metadata: {
653
- description: ( localize2(8177, 'Toggle the sticky coverage bar in the editor.'))
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(8178, "Filter Coverage to Test")),
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(10749, "Showing \"{0}\"", label));
78
- labels.clickToChangeFiltering = ( localize(10750, 'Click to view coverage for a single test'));
79
- labels.percentCoverage = (percent, precision) => ( localize(10751, '{0} Coverage', displayPercent(percent, precision)));
80
- labels.allTests = ( localize(10752, 'All tests'));
81
- labels.pickShowCoverage = ( localize(10753, 'Pick a test to show coverage for'));
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(8101, 'View icon of the test view.')));
10
- const testingResultsIcon = registerIcon('test-results-icon', Codicon.checklist, ( localize(8102, 'Icons for test results.')));
11
- const testingRunIcon = registerIcon('testing-run-icon', Codicon.run, ( localize(8103, 'Icon of the "run test" action.')));
12
- const testingRerunIcon = registerIcon('testing-rerun-icon', Codicon.refresh, ( localize(8104, 'Icon of the "rerun tests" action.')));
13
- const testingRunAllIcon = registerIcon('testing-run-all-icon', Codicon.runAll, ( localize(8105, 'Icon of the "run all tests" action.')));
14
- const testingDebugAllIcon = registerIcon('testing-debug-all-icon', Codicon.debugAltSmall, ( localize(8106, 'Icon of the "debug all tests" action.')));
15
- const testingDebugIcon = registerIcon('testing-debug-icon', Codicon.debugAltSmall, ( localize(8107, 'Icon of the "debug test" action.')));
16
- const testingCoverageIcon = registerIcon('testing-coverage-icon', Codicon.runCoverage, ( localize(8108, 'Icon of the "run test with coverage" action.')));
17
- const testingCoverageAllIcon = registerIcon('testing-coverage-all-icon', Codicon.runAllCoverage, ( localize(8109, 'Icon of the "run all tests with coverage" action.')));
18
- const testingCancelIcon = registerIcon('testing-cancel-icon', Codicon.debugStop, ( localize(8110, 'Icon to cancel ongoing test runs.')));
19
- const testingFilterIcon = registerIcon('testing-filter', Codicon.filter, ( localize(8111, 'Icon for the \'Filter\' action in the testing view.')));
20
- const testingHiddenIcon = registerIcon('testing-hidden', Codicon.eyeClosed, ( localize(8112, 'Icon shown beside hidden tests, when they\'ve been shown.')));
21
- registerIcon('testing-show-as-list-icon', Codicon.listTree, ( localize(8113, 'Icon shown when the test explorer is disabled as a tree.')));
22
- registerIcon('testing-show-as-list-icon', Codicon.listFlat, ( localize(8114, 'Icon shown when the test explorer is disabled as a list.')));
23
- const testingUpdateProfiles = registerIcon('testing-update-profiles', Codicon.gear, ( localize(8115, 'Icon shown to update test profiles.')));
24
- const testingRefreshTests = registerIcon('testing-refresh-tests', Codicon.refresh, ( localize(8116, 'Icon on the button to refresh tests.')));
25
- const testingTurnContinuousRunOn = registerIcon('testing-turn-continuous-run-on', Codicon.eye, ( localize(8117, 'Icon to turn continuous test runs on.')));
26
- const testingTurnContinuousRunOff = registerIcon('testing-turn-continuous-run-off', Codicon.eyeClosed, ( localize(8118, 'Icon to turn continuous test runs off.')));
27
- const testingContinuousIsOn = registerIcon('testing-continuous-is-on', Codicon.eye, ( localize(8119, 'Icon when continuous run is on for a test ite,.')));
28
- const testingCancelRefreshTests = registerIcon('testing-cancel-refresh-tests', Codicon.stop, ( localize(8120, 'Icon on the button to cancel refreshing tests.')));
29
- const testingCoverageReport = registerIcon('testing-coverage', Codicon.coverage, ( localize(8121, 'Icon representing test coverage')));
30
- const testingWasCovered = registerIcon('testing-was-covered', Codicon.check, ( localize(8122, 'Icon representing that an element was covered')));
31
- const testingCoverageMissingBranch = registerIcon('testing-missing-branch', Codicon.question, ( localize(8123, 'Icon representing a uncovered block without a range')));
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(8124, 'Icon shown for tests that have an error.')))],
34
- [TestResultState.Failed, registerIcon('testing-failed-icon', Codicon.error, ( localize(8125, 'Icon shown for tests that failed.')))],
35
- [TestResultState.Passed, registerIcon('testing-passed-icon', Codicon.pass, ( localize(8126, 'Icon shown for tests that passed.')))],
36
- [TestResultState.Queued, registerIcon('testing-queued-icon', Codicon.history, ( localize(8127, 'Icon shown for tests that are queued.')))],
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(8128, 'Icon shown for tests that are skipped.')))],
39
- [TestResultState.Unset, registerIcon('testing-unset-icon', Codicon.circleOutline, ( localize(8129, 'Icon shown for tests that are in an unset state.')))],
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 };