@codingame/monaco-vscode-testing-service-override 30.0.1 → 31.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 (31) hide show
  1. package/package.json +4 -4
  2. package/vscode/src/vs/workbench/contrib/debug/browser/callStackWidget.js +5 -5
  3. package/vscode/src/vs/workbench/contrib/testing/browser/codeCoverageDecorations.js +46 -27
  4. package/vscode/src/vs/workbench/contrib/testing/browser/codeCoverageDisplayUtils.d.ts +4 -1
  5. package/vscode/src/vs/workbench/contrib/testing/browser/codeCoverageDisplayUtils.js +15 -6
  6. package/vscode/src/vs/workbench/contrib/testing/browser/icons.js +29 -29
  7. package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageBars.js +3 -3
  8. package/vscode/src/vs/workbench/contrib/testing/browser/testCoverageView.js +16 -16
  9. package/vscode/src/vs/workbench/contrib/testing/browser/testExplorerActions.js +72 -72
  10. package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsOutput.js +5 -5
  11. package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsTree.d.ts +1 -0
  12. package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsTree.js +41 -24
  13. package/vscode/src/vs/workbench/contrib/testing/browser/testResultsView/testResultsViewContent.js +3 -3
  14. package/vscode/src/vs/workbench/contrib/testing/browser/testing.contribution.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/testing/browser/testingConfigurationUi.js +2 -2
  16. package/vscode/src/vs/workbench/contrib/testing/browser/testingDecorations.js +27 -22
  17. package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerFilter.js +11 -11
  18. package/vscode/src/vs/workbench/contrib/testing/browser/testingExplorerView.js +19 -17
  19. package/vscode/src/vs/workbench/contrib/testing/browser/testingOutputPeek.js +14 -11
  20. package/vscode/src/vs/workbench/contrib/testing/browser/testingViewPaneContainer.js +1 -1
  21. package/vscode/src/vs/workbench/contrib/testing/browser/theme.d.ts +2 -0
  22. package/vscode/src/vs/workbench/contrib/testing/browser/theme.js +45 -33
  23. package/vscode/src/vs/workbench/contrib/testing/common/configuration.d.ts +2 -0
  24. package/vscode/src/vs/workbench/contrib/testing/common/configuration.js +30 -24
  25. package/vscode/src/vs/workbench/contrib/testing/common/testExplorerFilterState.js +7 -1
  26. package/vscode/src/vs/workbench/contrib/testing/common/testServiceImpl.js +4 -4
  27. package/vscode/src/vs/workbench/contrib/testing/common/testingChatAgentTool.d.ts +11 -4
  28. package/vscode/src/vs/workbench/contrib/testing/common/testingChatAgentTool.js +75 -17
  29. package/vscode/src/vs/workbench/contrib/testing/common/testingContentProvider.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/testing/common/testingContextKeys.js +31 -31
  31. package/vscode/src/vs/workbench/contrib/testing/common/testingProgressMessages.js +5 -5
@@ -69,8 +69,8 @@ class TestResultElement {
69
69
  this.label = value.name;
70
70
  }
71
71
  }
72
- const openCoverageLabel = ( localize(14492, "View Test Coverage"));
73
- const closeCoverageLabel = ( localize(14493, "Close Test Coverage"));
72
+ const openCoverageLabel = ( localize(14645, "View Test Coverage"));
73
+ const closeCoverageLabel = ( localize(14646, "Close Test Coverage"));
74
74
  class CoverageElement {
75
75
  get label() {
76
76
  return this.isOpen ? closeCoverageLabel : openCoverageLabel;
@@ -94,7 +94,7 @@ class OlderResultsElement {
94
94
  this.n = n;
95
95
  this.type = "older";
96
96
  this.onDidChange = Event.None;
97
- this.label = n === 1 ? ( localize(14494, "1 older result")) : ( localize(14495, "{0} older results", n));
97
+ this.label = n === 1 ? ( localize(14647, "1 older result")) : ( localize(14648, "{0} older results", n));
98
98
  this.id = `older-${this.n}`;
99
99
  }
100
100
  }
@@ -210,7 +210,7 @@ class TestMessageElement {
210
210
  const lines = count(asPlaintext.trimEnd(), "\n");
211
211
  this.label = firstLine(asPlaintext);
212
212
  if (lines > 0) {
213
- this.description = lines > 1 ? ( localize(14496, "+ {0} more lines", lines)) : ( localize(14497, "+ 1 more line"));
213
+ this.description = lines > 1 ? ( localize(14649, "+ {0} more lines", lines)) : ( localize(14650, "+ 1 more line"));
214
214
  }
215
215
  }
216
216
  }
@@ -268,7 +268,7 @@ let OutputPeekTree = class OutputPeekTree extends Disposable {
268
268
  return element.ariaLabel || element.label;
269
269
  },
270
270
  getWidgetAriaLabel() {
271
- return localize(14498, "Test Result Messages");
271
+ return localize(14651, "Test Result Messages");
272
272
  }
273
273
  }
274
274
  })
@@ -531,14 +531,31 @@ let OutputPeekTree = class OutputPeekTree extends Disposable {
531
531
  if (!evt.element) {
532
532
  return;
533
533
  }
534
- const actions = this.treeActions.provideActionBar(evt.element);
534
+ const element = this.getRenderedElement(evt.element);
535
+ const actions = this.treeActions.provideActionBar(element);
535
536
  this.contextMenuService.showContextMenu({
536
537
  getAnchor: () => evt.anchor,
537
538
  getActions: () => actions.secondary.length ? [...actions.primary, ( new Separator()), ...actions.secondary] : actions.primary,
538
- getActionsContext: () => evt.element?.context,
539
+ getActionsContext: () => element.context,
539
540
  actionRunner: this.contextMenuActionRunner
540
541
  });
541
542
  }
543
+ getRenderedElement(element) {
544
+ if (!(element instanceof TaskElement) && !(element instanceof TestMessageElement)) {
545
+ return element;
546
+ }
547
+ try {
548
+ const compressed = this.tree.getCompressedTreeNode(element);
549
+ const chain = compressed.element?.elements;
550
+ if (chain && chain.length >= 2 && chain[chain.length - 1] === element) {
551
+ const parent = chain[chain.length - 2];
552
+ if (parent) {
553
+ return parent;
554
+ }
555
+ }
556
+ } catch {}
557
+ return element;
558
+ }
542
559
  dispose() {
543
560
  super.dispose();
544
561
  this.disposed = true;
@@ -660,34 +677,34 @@ let TreeActionsProvider = class TreeActionsProvider {
660
677
  const primary = [];
661
678
  const secondary = [];
662
679
  if (element instanceof TaskElement) {
663
- primary.push(( new Action("testing.outputPeek.showResultOutput", ( localize(14499, "Show Result Output")), ThemeIcon.asClassName(Codicon.terminal), undefined, () => this.requestReveal.fire(( new TaskSubject(element.results, element.index))))));
680
+ primary.push(( new Action("testing.outputPeek.showResultOutput", ( localize(14652, "Show Result Output")), ThemeIcon.asClassName(Codicon.terminal), undefined, () => this.requestReveal.fire(( new TaskSubject(element.results, element.index))))));
664
681
  if (element.task.running) {
665
- primary.push(( new Action("testing.outputPeek.cancel", ( localize(14500, "Cancel Test Run")), ThemeIcon.asClassName(testingCancelIcon), undefined, () => this.commandService.executeCommand(TestCommandId.CancelTestRunAction, element.results.id, element.task.id))));
682
+ primary.push(( new Action("testing.outputPeek.cancel", ( localize(14653, "Cancel Test Run")), ThemeIcon.asClassName(testingCancelIcon), undefined, () => this.commandService.executeCommand(TestCommandId.CancelTestRunAction, element.results.id, element.task.id))));
666
683
  } else {
667
- primary.push(( new Action("testing.outputPeek.rerun", ( localize(14501, "Rerun Last Run")), ThemeIcon.asClassName(testingRerunIcon), undefined, () => this.commandService.executeCommand(TestCommandId.ReRunLastRun, element.results.id))));
684
+ primary.push(( new Action("testing.outputPeek.rerun", ( localize(14654, "Rerun Last Run")), ThemeIcon.asClassName(testingRerunIcon), undefined, () => this.commandService.executeCommand(TestCommandId.ReRunLastRun, element.results.id))));
668
685
  const hasFailedTests = ( Iterable.some(element.results.tests, test => isFailedState(test.ownComputedState)));
669
686
  if (hasFailedTests) {
670
- primary.push(( new Action("testing.outputPeek.rerunFailed", ( localize(14502, "Rerun Failed Tests")), ThemeIcon.asClassName(testingRerunIcon), undefined, () => this.commandService.executeCommand(TestCommandId.ReRunFailedFromLastRun, element.results.id))));
687
+ primary.push(( new Action("testing.outputPeek.rerunFailed", ( localize(14655, "Rerun Failed Tests")), ThemeIcon.asClassName(testingRerunIcon), undefined, () => this.commandService.executeCommand(TestCommandId.ReRunFailedFromLastRun, element.results.id))));
671
688
  }
672
- primary.push(( new Action("testing.outputPeek.debug", ( localize(14503, "Debug Last Run")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand(TestCommandId.DebugLastRun, element.results.id))));
689
+ primary.push(( new Action("testing.outputPeek.debug", ( localize(14656, "Debug Last Run")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand(TestCommandId.DebugLastRun, element.results.id))));
673
690
  if (hasFailedTests) {
674
- primary.push(( new Action("testing.outputPeek.debugFailed", ( localize(14504, "Debug Failed Tests")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand(TestCommandId.DebugFailedFromLastRun, element.results.id))));
691
+ primary.push(( new Action("testing.outputPeek.debugFailed", ( localize(14657, "Debug Failed Tests")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand(TestCommandId.DebugFailedFromLastRun, element.results.id))));
675
692
  }
676
693
  }
677
694
  }
678
695
  if (element instanceof TestResultElement) {
679
696
  if (element.value.tasks.length === 1) {
680
- primary.push(( new Action("testing.outputPeek.showResultOutput", ( localize(14499, "Show Result Output")), ThemeIcon.asClassName(Codicon.terminal), undefined, () => this.requestReveal.fire(( new TaskSubject(element.value, 0))))));
697
+ primary.push(( new Action("testing.outputPeek.showResultOutput", ( localize(14652, "Show Result Output")), ThemeIcon.asClassName(Codicon.terminal), undefined, () => this.requestReveal.fire(( new TaskSubject(element.value, 0))))));
681
698
  }
682
- primary.push(( new Action("testing.outputPeek.reRunLastRun", ( localize(14505, "Rerun Test")), ThemeIcon.asClassName(testingRunIcon), undefined, () => this.commandService.executeCommand("testing.reRunLastRun", element.value.id))));
699
+ primary.push(( new Action("testing.outputPeek.reRunLastRun", ( localize(14658, "Rerun Test")), ThemeIcon.asClassName(testingRunIcon), undefined, () => this.commandService.executeCommand("testing.reRunLastRun", element.value.id))));
683
700
  const hasFailedTests = ( Iterable.some(element.value.tests, test => isFailedState(test.ownComputedState)));
684
701
  if (hasFailedTests) {
685
- primary.push(( new Action("testing.outputPeek.rerunFailedResult", ( localize(14502, "Rerun Failed Tests")), ThemeIcon.asClassName(testingRerunIcon), undefined, () => this.commandService.executeCommand(TestCommandId.ReRunFailedFromLastRun, element.value.id))));
702
+ primary.push(( new Action("testing.outputPeek.rerunFailedResult", ( localize(14655, "Rerun Failed Tests")), ThemeIcon.asClassName(testingRerunIcon), undefined, () => this.commandService.executeCommand(TestCommandId.ReRunFailedFromLastRun, element.value.id))));
686
703
  }
687
704
  if (capabilities & TestRunProfileBitset.Debug) {
688
- primary.push(( new Action("testing.outputPeek.debugLastRun", ( localize(14506, "Debug Test")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand("testing.debugLastRun", element.value.id))));
705
+ primary.push(( new Action("testing.outputPeek.debugLastRun", ( localize(14659, "Debug Test")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand("testing.debugLastRun", element.value.id))));
689
706
  if (hasFailedTests) {
690
- primary.push(( new Action("testing.outputPeek.debugFailedResult", ( localize(14504, "Debug Failed Tests")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand(TestCommandId.DebugFailedFromLastRun, element.value.id))));
707
+ primary.push(( new Action("testing.outputPeek.debugFailedResult", ( localize(14657, "Debug Failed Tests")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand(TestCommandId.DebugFailedFromLastRun, element.value.id))));
691
708
  }
692
709
  }
693
710
  }
@@ -701,24 +718,24 @@ let TreeActionsProvider = class TreeActionsProvider {
701
718
  uri
702
719
  } = element.test.item;
703
720
  if (uri) {
704
- primary.push(( new Action("testing.outputPeek.goToTest", ( localize(14507, "Go to Test")), ThemeIcon.asClassName(Codicon.goToFile), undefined, () => this.commandService.executeCommand("vscode.revealTest", extId))));
721
+ primary.push(( new Action("testing.outputPeek.goToTest", ( localize(14660, "Go to Test")), ThemeIcon.asClassName(Codicon.goToFile), undefined, () => this.commandService.executeCommand("vscode.revealTest", extId))));
705
722
  }
706
723
  if (( element.test.tasks[element.taskIndex].messages.some(m => m.type === TestMessageType.Output))) {
707
- primary.push(( new Action("testing.outputPeek.showResultOutput", ( localize(14499, "Show Result Output")), ThemeIcon.asClassName(Codicon.terminal), undefined, () => this.requestReveal.fire(element.outputSubject))));
724
+ primary.push(( new Action("testing.outputPeek.showResultOutput", ( localize(14652, "Show Result Output")), ThemeIcon.asClassName(Codicon.terminal), undefined, () => this.requestReveal.fire(element.outputSubject))));
708
725
  }
709
- secondary.push(( new Action("testing.outputPeek.revealInExplorer", ( localize(14508, "Reveal in Test Explorer")), ThemeIcon.asClassName(Codicon.listTree), undefined, () => this.commandService.executeCommand("_revealTestInExplorer", extId))));
726
+ secondary.push(( new Action("testing.outputPeek.revealInExplorer", ( localize(14661, "Reveal in Test Explorer")), ThemeIcon.asClassName(Codicon.listTree), undefined, () => this.commandService.executeCommand("_revealTestInExplorer", extId))));
710
727
  if (capabilities & TestRunProfileBitset.Run) {
711
- primary.push(( new Action("testing.outputPeek.runTest", ( localize(14509, "Run Test")), ThemeIcon.asClassName(testingRunIcon), undefined, () => this.commandService.executeCommand("vscode.runTestsById", TestRunProfileBitset.Run, extId))));
728
+ primary.push(( new Action("testing.outputPeek.runTest", ( localize(14662, "Run Test")), ThemeIcon.asClassName(testingRunIcon), undefined, () => this.commandService.executeCommand("vscode.runTestsById", TestRunProfileBitset.Run, extId))));
712
729
  }
713
730
  if (capabilities & TestRunProfileBitset.Debug) {
714
- primary.push(( new Action("testing.outputPeek.debugTest", ( localize(14510, "Debug Test")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand("vscode.runTestsById", TestRunProfileBitset.Debug, extId))));
731
+ primary.push(( new Action("testing.outputPeek.debugTest", ( localize(14663, "Debug Test")), ThemeIcon.asClassName(testingDebugIcon), undefined, () => this.commandService.executeCommand("vscode.runTestsById", TestRunProfileBitset.Debug, extId))));
715
732
  }
716
733
  }
717
734
  if (element instanceof TestMessageElement) {
718
735
  id = MenuId.TestMessageContext;
719
736
  contextKeys.push([TestingContextKeys.testMessageContext.key, element.contextValue]);
720
737
  if (this.showRevealLocationOnMessages && element.location) {
721
- primary.push(( new Action("testing.outputPeek.goToError", ( localize(14511, "Go to Error")), ThemeIcon.asClassName(Codicon.debugStackframe), undefined, () => this.editorService.openEditor({
738
+ primary.push(( new Action("testing.outputPeek.goToError", ( localize(14664, "Go to Error")), ThemeIcon.asClassName(Codicon.debugStackframe), undefined, () => this.editorService.openEditor({
722
739
  resource: element.location.uri,
723
740
  options: {
724
741
  selection: element.location.range,
@@ -119,7 +119,7 @@ registerAction2(class extends Action2 {
119
119
  constructor() {
120
120
  super({
121
121
  id: "testing.callStack.run",
122
- title: ( localize(14512, "Rerun Test")),
122
+ title: ( localize(14665, "Rerun Test")),
123
123
  icon: testingRunIcon,
124
124
  menu: {
125
125
  id: MenuId.TestCallStack,
@@ -136,7 +136,7 @@ registerAction2(class extends Action2 {
136
136
  constructor() {
137
137
  super({
138
138
  id: "testing.callStack.debug",
139
- title: ( localize(14513, "Debug Test")),
139
+ title: ( localize(14666, "Debug Test")),
140
140
  icon: testingDebugIcon,
141
141
  menu: {
142
142
  id: MenuId.TestCallStack,
@@ -472,7 +472,7 @@ let FollowupActionWidget = class FollowupActionWidget extends Disposable {
472
472
  followups[picked[0].index].execute();
473
473
  }
474
474
  }));
475
- link.innerText = ( localize(14514, "+{0} More...", followups.length - 1));
475
+ link.innerText = ( localize(14667, "+{0} More...", followups.length - 1));
476
476
  return link;
477
477
  }
478
478
  makeLink(onClick) {
@@ -51,21 +51,21 @@ import { TestingViewPaneContainer } from './testingViewPaneContainer.js';
51
51
 
52
52
  const viewContainer = ( Registry.as(Extensions.ViewContainersRegistry)).registerViewContainer({
53
53
  id: Testing.ViewletId,
54
- title: ( localize2(14515, "Testing")),
54
+ title: ( localize2(14668, "Testing")),
55
55
  ctorDescriptor: ( new SyncDescriptor(TestingViewPaneContainer)),
56
56
  icon: testingViewIcon,
57
57
  alwaysUseContainerInfo: true,
58
58
  order: 6,
59
59
  openCommandActionDescriptor: {
60
60
  id: Testing.ViewletId,
61
- mnemonicTitle: ( localize(14516, "T&&esting")),
61
+ mnemonicTitle: ( localize(14669, "T&&esting")),
62
62
  order: 4
63
63
  },
64
64
  hideIfEmpty: true
65
65
  }, ViewContainerLocation.Sidebar);
66
66
  const testResultsViewContainer = ( Registry.as(Extensions.ViewContainersRegistry)).registerViewContainer({
67
67
  id: Testing.ResultsPanelId,
68
- title: ( localize2(14517, "Test Results")),
68
+ title: ( localize2(14670, "Test Results")),
69
69
  icon: testingResultsIcon,
70
70
  ctorDescriptor: ( new SyncDescriptor(ViewPaneContainer, [Testing.ResultsPanelId, {
71
71
  mergeViewWithContainerWhenSingleView: true
@@ -78,7 +78,7 @@ const testResultsViewContainer = ( Registry.as(Extensions.ViewContainersRegistry
78
78
  const viewsRegistry = ( Registry.as(Extensions.ViewsRegistry));
79
79
  viewsRegistry.registerViews([{
80
80
  id: Testing.ResultsViewId,
81
- name: ( localize2(14517, "Test Results")),
81
+ name: ( localize2(14670, "Test Results")),
82
82
  containerIcon: testingResultsIcon,
83
83
  canToggleVisibility: false,
84
84
  canMoveView: true,
@@ -86,15 +86,15 @@ viewsRegistry.registerViews([{
86
86
  ctorDescriptor: ( new SyncDescriptor(TestResultsView))
87
87
  }], testResultsViewContainer);
88
88
  viewsRegistry.registerViewWelcomeContent(Testing.ExplorerViewId, {
89
- content: ( localize(14518, "No tests have been found in this workspace yet."))
89
+ content: ( localize(14671, "No tests have been found in this workspace yet."))
90
90
  });
91
91
  viewsRegistry.registerViewWelcomeContent(Testing.ExplorerViewId, {
92
- content: "[" + ( localize(14519, "Install Additional Test Extensions...")) + `](command:${TestCommandId.SearchForTestExtension})`,
92
+ content: "[" + ( localize(14672, "Install Additional Test Extensions...")) + `](command:${TestCommandId.SearchForTestExtension})`,
93
93
  order: 10
94
94
  });
95
95
  viewsRegistry.registerViews([{
96
96
  id: Testing.ExplorerViewId,
97
- name: ( localize2(14520, "Test Explorer")),
97
+ name: ( localize2(14673, "Test Explorer")),
98
98
  ctorDescriptor: ( new SyncDescriptor(TestingExplorerView)),
99
99
  canToggleVisibility: true,
100
100
  canMoveView: true,
@@ -104,7 +104,7 @@ viewsRegistry.registerViews([{
104
104
  when: ContextKeyExpr.greater(TestingContextKeys.providerCount.key, 0)
105
105
  }, {
106
106
  id: Testing.CoverageViewId,
107
- name: ( localize2(14521, "Test Coverage")),
107
+ name: ( localize2(14674, "Test Coverage")),
108
108
  ctorDescriptor: ( new SyncDescriptor(TestCoverageView)),
109
109
  canToggleVisibility: true,
110
110
  canMoveView: true,
@@ -18,7 +18,7 @@ function buildPicker(
18
18
  showConfigureButtons = true,
19
19
  onlyForTest,
20
20
  onlyConfigurable,
21
- placeholder = ( localize(14522, "Pick a test profile to use"))
21
+ placeholder = ( localize(14675, "Pick a test profile to use"))
22
22
  }
23
23
  ) {
24
24
  const profileService = accessor.get(ITestProfileService);
@@ -51,7 +51,7 @@ function buildPicker(
51
51
  alwaysShow: true,
52
52
  buttons: profile.hasConfigurationHandler && showConfigureButtons ? [{
53
53
  iconClass: ThemeIcon.asClassName(testingUpdateProfiles),
54
- tooltip: ( localize(14523, "Update Test Configuration"))
54
+ tooltip: ( localize(14676, "Update Test Configuration"))
55
55
  }] : []
56
56
  }));
57
57
  }
@@ -26,7 +26,7 @@ import { ICodeEditorService } from '@codingame/monaco-vscode-api/vscode/vs/edito
26
26
  import { EditorOption } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/config/editorOptions';
27
27
  import { overviewRulerError, overviewRulerInfo } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/editorColorRegistry';
28
28
  import { Position } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position';
29
- import { GlyphMarginLane, TrackedRangeStickiness, OverviewRulerLane } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model';
29
+ import { GlyphMarginLane, OverviewRulerLane, TrackedRangeStickiness } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model';
30
30
  import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
31
31
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
32
32
  import { getFlatContextMenuActions } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
@@ -669,7 +669,7 @@ const createRunTestDecoration = (tests, states, visible, defaultGutterAction) =>
669
669
  const building = hoverMessage = ( new MarkdownString("", true)).appendText(hoverMessageParts.join(", ") + ".");
670
670
  if (testIdWithMessages) {
671
671
  const args = encodeURIComponent(JSON.stringify([testIdWithMessages]));
672
- building.appendMarkdown(` [${( localize(14524, "Peek Test Output"))}](command:vscode.peekTestError?${args})`);
672
+ building.appendMarkdown(` [${( localize(14677, "Peek Test Output"))}](command:vscode.peekTestError?${args})`);
673
673
  }
674
674
  }
675
675
  return hoverMessage;
@@ -679,7 +679,11 @@ const createRunTestDecoration = (tests, states, visible, defaultGutterAction) =>
679
679
  },
680
680
  glyphMarginClassName: `${ThemeIcon.asClassName(primaryIcon)} ${glyphMarginClassName}`,
681
681
  stickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
682
- zIndex: 10000
682
+ zIndex: 10000,
683
+ overviewRuler: isFailedState(computedState) ? {
684
+ color: themeColorFromId(overviewRulerError),
685
+ position: OverviewRulerLane.Center
686
+ } : undefined
683
687
  };
684
688
  const alternateOptions = {
685
689
  ...defaultOptions,
@@ -771,7 +775,7 @@ class ExpectedLensContentWidget extends TitleLensContentWidget {
771
775
  return "expectedTestingLens";
772
776
  }
773
777
  getText() {
774
- return localize(14525, "Expected");
778
+ return localize(14678, "Expected");
775
779
  }
776
780
  }
777
781
  class ActualLensContentWidget extends TitleLensContentWidget {
@@ -779,7 +783,7 @@ class ActualLensContentWidget extends TitleLensContentWidget {
779
783
  return "actualTestingLens";
780
784
  }
781
785
  getText() {
782
- return localize(14526, "Actual");
786
+ return localize(14679, "Actual");
783
787
  }
784
788
  }
785
789
  let RunTestDecoration = class RunTestDecoration {
@@ -880,14 +884,14 @@ let RunTestDecoration = class RunTestDecoration {
880
884
  getGutterLabel() {
881
885
  switch (getTestingConfiguration(this.configurationService, TestingConfigKeys.DefaultGutterClickAction)) {
882
886
  case DefaultGutterClickAction.ContextMenu:
883
- return localize(14527, "Click for test options");
887
+ return localize(14680, "Click for test options");
884
888
  case DefaultGutterClickAction.Debug:
885
- return localize(14528, "Click to debug tests, right click for more options");
889
+ return localize(14681, "Click to debug tests, right click for more options");
886
890
  case DefaultGutterClickAction.Coverage:
887
- return localize(14529, "Click to run tests with coverage, right click for more options");
891
+ return localize(14682, "Click to run tests with coverage, right click for more options");
888
892
  case DefaultGutterClickAction.Run:
889
893
  default:
890
- return localize(14530, "Click to run tests, right click for more options");
894
+ return localize(14683, "Click to run tests, right click for more options");
891
895
  }
892
896
  }
893
897
  getTestContextMenuActions(test, resultItem) {
@@ -895,13 +899,13 @@ let RunTestDecoration = class RunTestDecoration {
895
899
  const capabilities = this.testProfileService.capabilitiesForTest(test.item);
896
900
  [{
897
901
  bitset: TestRunProfileBitset.Run,
898
- label: ( localize(14531, "Run Test"))
902
+ label: ( localize(14684, "Run Test"))
899
903
  }, {
900
904
  bitset: TestRunProfileBitset.Debug,
901
- label: ( localize(14532, "Debug Test"))
905
+ label: ( localize(14685, "Debug Test"))
902
906
  }, {
903
907
  bitset: TestRunProfileBitset.Coverage,
904
- label: ( localize(14533, "Run with Coverage"))
908
+ label: ( localize(14686, "Run with Coverage"))
905
909
  }].forEach((
906
910
  {
907
911
  bitset,
@@ -922,7 +926,7 @@ let RunTestDecoration = class RunTestDecoration {
922
926
  }
923
927
  });
924
928
  if (capabilities & TestRunProfileBitset.HasNonDefaultProfile) {
925
- testActions.push(( new Action("testing.runUsing", ( localize(14534, "Execute Using Profile...")), undefined, undefined, async () => {
929
+ testActions.push(( new Action("testing.runUsing", ( localize(14687, "Execute Using Profile...")), undefined, undefined, async () => {
926
930
  const profile = await this.commandService.executeCommand("vscode.pickTestProfile", {
927
931
  onlyForTest: test
928
932
  });
@@ -940,12 +944,12 @@ let RunTestDecoration = class RunTestDecoration {
940
944
  })));
941
945
  }
942
946
  if (resultItem && isFailedState(resultItem.computedState)) {
943
- testActions.push(( new Action("testing.gutter.peekFailure", ( localize(14535, "Peek Error")), undefined, undefined, () => this.commandService.executeCommand("vscode.peekTestError", test.item.extId))));
947
+ testActions.push(( new Action("testing.gutter.peekFailure", ( localize(14688, "Peek Error")), undefined, undefined, () => this.commandService.executeCommand("vscode.peekTestError", test.item.extId))));
944
948
  }
945
949
  if (resultItem?.computedState === TestResultState.Running) {
946
- testActions.push(( new Action("testing.gutter.cancel", ( localize(14536, "Cancel Test Run")), undefined, undefined, () => this.commandService.executeCommand(TestCommandId.CancelTestRunAction))));
950
+ testActions.push(( new Action("testing.gutter.cancel", ( localize(14689, "Cancel Test Run")), undefined, undefined, () => this.commandService.executeCommand(TestCommandId.CancelTestRunAction))));
947
951
  }
948
- testActions.push(( new Action("testing.gutter.reveal", ( localize(14537, "Reveal in Test Explorer")), undefined, undefined, () => this.commandService.executeCommand("_revealTestInExplorer", test.item.extId))));
952
+ testActions.push(( new Action("testing.gutter.reveal", ( localize(14690, "Reveal in Test Explorer")), undefined, undefined, () => this.commandService.executeCommand("_revealTestInExplorer", test.item.extId))));
949
953
  const contributed = this.getContributedTestActions(test, capabilities);
950
954
  return {
951
955
  object: Separator.join(testActions, contributed),
@@ -1000,13 +1004,13 @@ let MultiRunTestDecoration = class MultiRunTestDecoration extends RunTestDecorat
1000
1004
  const allActions = [];
1001
1005
  [{
1002
1006
  bitset: TestRunProfileBitset.Run,
1003
- label: ( localize(14538, "Run All Tests"))
1007
+ label: ( localize(14691, "Run All Tests"))
1004
1008
  }, {
1005
1009
  bitset: TestRunProfileBitset.Coverage,
1006
- label: ( localize(14539, "Run All Tests with Coverage"))
1010
+ label: ( localize(14692, "Run All Tests with Coverage"))
1007
1011
  }, {
1008
1012
  bitset: TestRunProfileBitset.Debug,
1009
- label: ( localize(14540, "Debug All Tests"))
1013
+ label: ( localize(14693, "Debug All Tests"))
1010
1014
  }].forEach((
1011
1015
  {
1012
1016
  bitset,
@@ -1077,7 +1081,7 @@ let MultiRunTestDecoration = class MultiRunTestDecoration extends RunTestDecorat
1077
1081
  const overflow = testSubmenus.length - MAX_TESTS_IN_SUBMENU;
1078
1082
  if (overflow > 0) {
1079
1083
  testSubmenus = testSubmenus.slice(0, MAX_TESTS_IN_SUBMENU);
1080
- testSubmenus.push(( new Action("testing.gutter.overflow", ( localize(14541, "{0} more tests...", overflow)), undefined, undefined, () => this.pickAndRun(testItems))));
1084
+ testSubmenus.push(( new Action("testing.gutter.overflow", ( localize(14694, "{0} more tests...", overflow)), undefined, undefined, () => this.pickAndRun(testItems))));
1081
1085
  }
1082
1086
  return {
1083
1087
  object: Separator.join(allActions, testSubmenus),
@@ -1109,7 +1113,7 @@ let MultiRunTestDecoration = class MultiRunTestDecoration extends RunTestDecorat
1109
1113
  label: currentLabel,
1110
1114
  test: testItem.test,
1111
1115
  result: testItem.resultItem
1112
- }))), ( localize(14542, "Select a test to run")));
1116
+ }))), ( localize(14695, "Select a test to run")));
1113
1117
  if (!item) {
1114
1118
  return;
1115
1119
  }
@@ -1169,7 +1173,8 @@ let TestMessageDecoration = class TestMessageDecoration {
1169
1173
  const severity = testMessage.type;
1170
1174
  const message = testMessage.message;
1171
1175
  const options = editorService.resolveDecorationOptions(TestMessageDecoration_1.decorationId, true);
1172
- options.hoverMessage = typeof message === "string" ? ( new MarkdownString()).appendText(message) : message;
1176
+ const hoverText = renderTestMessageAsText(message);
1177
+ options.hoverMessage = ( new MarkdownString()).appendText(hoverText);
1173
1178
  options.zIndex = 10;
1174
1179
  options.className = `testing-inline-message-severity-${severity}`;
1175
1180
  options.isWholeLine = true;
@@ -24,11 +24,11 @@ import { denamespaceTestTag } from '@codingame/monaco-vscode-api/vscode/vs/workb
24
24
  import { AnchorAlignment } from '@codingame/monaco-vscode-api/vscode/vs/base/common/layout';
25
25
 
26
26
  const testFilterDescriptions = {
27
- [TestFilterTerm.Failed]: ( localize(14543, "Show Only Failed Tests")),
28
- [TestFilterTerm.Executed]: ( localize(14544, "Show Only Executed Tests")),
29
- [TestFilterTerm.CurrentDoc]: ( localize(14545, "Show in Active File Only")),
30
- [TestFilterTerm.OpenedFiles]: ( localize(14546, "Show in Opened Files Only")),
31
- [TestFilterTerm.Hidden]: ( localize(14547, "Show Hidden Tests"))
27
+ [TestFilterTerm.Failed]: ( localize(14696, "Show Only Failed Tests")),
28
+ [TestFilterTerm.Executed]: ( localize(14697, "Show Only Executed Tests")),
29
+ [TestFilterTerm.CurrentDoc]: ( localize(14698, "Show in Active File Only")),
30
+ [TestFilterTerm.OpenedFiles]: ( localize(14699, "Show in Opened Files Only")),
31
+ [TestFilterTerm.Hidden]: ( localize(14700, "Show Hidden Tests"))
32
32
  };
33
33
  let TestingExplorerFilter = class TestingExplorerFilter extends BaseActionViewItem {
34
34
  constructor(action, options, state, instantiationService, testService) {
@@ -38,7 +38,7 @@ let TestingExplorerFilter = class TestingExplorerFilter extends BaseActionViewIt
38
38
  this.testService = testService;
39
39
  this.focusEmitter = this._register(( new Emitter()));
40
40
  this.onDidFocus = this.focusEmitter.event;
41
- this.filtersAction = ( new Action("markersFiltersAction", ( localize(14548, "More Filters...")), "testing-filter-button " + ThemeIcon.asClassName(testingFilterIcon)));
41
+ this.filtersAction = ( new Action("markersFiltersAction", ( localize(14701, "More Filters...")), "testing-filter-button " + ThemeIcon.asClassName(testingFilterIcon)));
42
42
  this.history = this._register(instantiationService.createInstance(StoredValue, {
43
43
  key: "testing.filterHistory2",
44
44
  scope: StorageScope.WORKSPACE,
@@ -70,7 +70,7 @@ let TestingExplorerFilter = class TestingExplorerFilter extends BaseActionViewIt
70
70
  const input = this.input = this._register(
71
71
  this.instantiationService.createInstance(ContextScopedSuggestEnabledInputWithHistory, {
72
72
  id: "testing.explorer.filter",
73
- ariaLabel: ( localize(14549, "Filter text for tests in the explorer")),
73
+ ariaLabel: ( localize(14702, "Filter text for tests in the explorer")),
74
74
  parent: wrapper,
75
75
  suggestionProvider: {
76
76
  triggerCharacters: ["@"],
@@ -93,7 +93,7 @@ let TestingExplorerFilter = class TestingExplorerFilter extends BaseActionViewIt
93
93
  resourceHandle: "testing:filter",
94
94
  suggestOptions: {
95
95
  value: this.state.text.value,
96
- placeholderText: ( localize(14550, "Filter (e.g. text, !exclude, @tag)"))
96
+ placeholderText: ( localize(14703, "Filter (e.g. text, !exclude, @tag)"))
97
97
  },
98
98
  history: history.values
99
99
  })
@@ -194,7 +194,7 @@ let FiltersDropdownMenuActionViewItem = class FiltersDropdownMenuActionViewItem
194
194
  class: undefined,
195
195
  enabled: true,
196
196
  id: "fuzzy",
197
- label: ( localize(14551, "Fuzzy Match")),
197
+ label: ( localize(14704, "Fuzzy Match")),
198
198
  run: () => this.filters.fuzzy.value = !this.filters.fuzzy.value,
199
199
  tooltip: ""
200
200
  }, ( new Separator()), {
@@ -202,14 +202,14 @@ let FiltersDropdownMenuActionViewItem = class FiltersDropdownMenuActionViewItem
202
202
  class: undefined,
203
203
  enabled: this.testService.excluded.hasAny,
204
204
  id: "showExcluded",
205
- label: ( localize(14547, "Show Hidden Tests")),
205
+ label: ( localize(14700, "Show Hidden Tests")),
206
206
  run: () => this.filters.toggleFilteringFor(TestFilterTerm.Hidden),
207
207
  tooltip: ""
208
208
  }, {
209
209
  class: undefined,
210
210
  enabled: this.testService.excluded.hasAny,
211
211
  id: "removeExcluded",
212
- label: ( localize(14552, "Unhide All Tests")),
212
+ label: ( localize(14705, "Unhide All Tests")),
213
213
  run: async () => this.testService.excluded.clear(),
214
214
  tooltip: ""
215
215
  }];
@@ -86,7 +86,7 @@ import { ListProjection } from './explorerProjections/listProjection.js';
86
86
  import { getTestItemContextOverlay } from './explorerProjections/testItemContextOverlay.js';
87
87
  import { TestingObjectTree } from './explorerProjections/testingObjectTree.js';
88
88
  import { TreeProjection } from './explorerProjections/treeProjection.js';
89
- import { testingRunAllIcon, testingDebugAllIcon, testingTurnContinuousRunOn, testingTurnContinuousRunOff, testingRerunIcon, testingDebugIcon, testingStatesToIcons, testingContinuousIsOn, testingHiddenIcon } from './icons.js';
89
+ import { testingRunAllIcon, testingDebugAllIcon, testingCoverageAllIcon, testingTurnContinuousRunOn, testingTurnContinuousRunOff, testingRerunIcon, testingDebugIcon, testingStatesToIcons, testingContinuousIsOn, testingHiddenIcon } from './icons.js';
90
90
  import * as testing from './media/testing.css';
91
91
  import { ReRunLastRun, DebugLastRun } from './testExplorerActions.js';
92
92
  import { TestingExplorerFilter } from './testingExplorerFilter.js';
@@ -293,6 +293,8 @@ let TestingExplorerView = class TestingExplorerView extends ViewPane {
293
293
  return this.getRunGroupDropdown(TestRunProfileBitset.Run, action, options);
294
294
  case TestCommandId.DebugSelectedAction:
295
295
  return this.getRunGroupDropdown(TestRunProfileBitset.Debug, action, options);
296
+ case TestCommandId.CoverageSelectedAction:
297
+ return this.getRunGroupDropdown(TestRunProfileBitset.Coverage, action, options);
296
298
  case TestCommandId.StartContinousRun:
297
299
  case TestCommandId.StopContinousRun:
298
300
  return this.getContinuousRunDropdown(action, options);
@@ -328,7 +330,7 @@ let TestingExplorerView = class TestingExplorerView extends ViewPane {
328
330
  participatingProfiles++;
329
331
  profileActions.push(toAction({
330
332
  id: `${controller.id}.${profile.profileId}`,
331
- label: defaults.includes(profile) ? ( localize(14553, "{0} (Default)", profile.label)) : profile.label,
333
+ label: defaults.includes(profile) ? ( localize(14706, "{0} (Default)", profile.label)) : profile.label,
332
334
  run: () => {
333
335
  const {
334
336
  include,
@@ -364,14 +366,14 @@ let TestingExplorerView = class TestingExplorerView extends ViewPane {
364
366
  if (participatingProfiles > 1) {
365
367
  postActions.push(toAction({
366
368
  id: "selectDefaultTestConfigurations",
367
- label: ( localize(14554, "Select Default Profile")),
369
+ label: ( localize(14707, "Select Default Profile")),
368
370
  run: () => this.commandService.executeCommand(TestCommandId.SelectDefaultTestProfiles, group)
369
371
  }));
370
372
  }
371
373
  if (hasConfigurable) {
372
374
  postActions.push(toAction({
373
375
  id: "configureTestProfiles",
374
- label: ( localize(14555, "Configure Test Profiles")),
376
+ label: ( localize(14708, "Configure Test Profiles")),
375
377
  run: () => this.commandService.executeCommand(TestCommandId.ConfigureTestProfilesAction, group)
376
378
  }));
377
379
  }
@@ -392,7 +394,7 @@ let TestingExplorerView = class TestingExplorerView extends ViewPane {
392
394
  const primaryAction = this.instantiationService.createInstance(MenuItemAction, {
393
395
  id: defaultAction.id,
394
396
  title: defaultAction.label,
395
- icon: group === TestRunProfileBitset.Run ? testingRunAllIcon : testingDebugAllIcon
397
+ icon: group === TestRunProfileBitset.Run ? testingRunAllIcon : group === TestRunProfileBitset.Debug ? testingDebugAllIcon : testingCoverageAllIcon
396
398
  }, undefined, undefined, undefined, undefined);
397
399
  return this.instantiationService.createInstance(
398
400
  DropdownWithPrimaryActionViewItem,
@@ -406,7 +408,7 @@ let TestingExplorerView = class TestingExplorerView extends ViewPane {
406
408
  getDropdownAction() {
407
409
  return (new Action(
408
410
  "selectRunConfig",
409
- localize(14556, "Select Configuration..."),
411
+ localize(14709, "Select Configuration..."),
410
412
  "codicon-chevron-down",
411
413
  true
412
414
  ));
@@ -569,7 +571,7 @@ let ResultSummaryView = class ResultSummaryView extends Disposable {
569
571
  root.remove();
570
572
  this.elementsWereAttached = false;
571
573
  }
572
- this.container.innerText = ( localize(14557, "No test results yet."));
574
+ this.container.innerText = ( localize(14710, "No test results yet."));
573
575
  this.badgeDisposable.clear();
574
576
  return;
575
577
  }
@@ -604,7 +606,7 @@ let ResultSummaryView = class ResultSummaryView extends Disposable {
604
606
  if (this.badgeDisposable.value && this.lastBadge instanceof IconBadge && this.lastBadge.icon === spinningLoading) {
605
607
  return;
606
608
  }
607
- this.lastBadge = ( new IconBadge(spinningLoading, () => ( localize(14558, "Tests are running"))));
609
+ this.lastBadge = ( new IconBadge(spinningLoading, () => ( localize(14711, "Tests are running"))));
608
610
  } else if (countSummary && this.badgeType !== TestingCountBadge.Off && countSummary[this.badgeType] !== 0) {
609
611
  if (this.badgeDisposable.value && this.lastBadge instanceof NumberBadge && this.lastBadge.number === countSummary[this.badgeType]) {
610
612
  return;
@@ -617,7 +619,7 @@ let ResultSummaryView = class ResultSummaryView extends Disposable {
617
619
  if (this.badgeDisposable.value && this.lastBadge instanceof IconBadge && this.lastBadge.icon === testingContinuousIsOn) {
618
620
  return;
619
621
  }
620
- this.lastBadge = ( new IconBadge(testingContinuousIsOn, () => ( localize(14559, "Tests are being watched for changes"))));
622
+ this.lastBadge = ( new IconBadge(testingContinuousIsOn, () => ( localize(14712, "Tests are being watched for changes"))));
621
623
  } else {
622
624
  if (!this.lastBadge) {
623
625
  return;
@@ -631,11 +633,11 @@ let ResultSummaryView = class ResultSummaryView extends Disposable {
631
633
  getLocalizedBadgeString(countBadgeType, count) {
632
634
  switch (countBadgeType) {
633
635
  case TestingCountBadge.Passed:
634
- return localize(14560, "{0} passed tests", count);
636
+ return localize(14713, "{0} passed tests", count);
635
637
  case TestingCountBadge.Skipped:
636
- return localize(14561, "{0} skipped tests", count);
638
+ return localize(14714, "{0} skipped tests", count);
637
639
  default:
638
- return localize(14562, "{0} failed tests", count);
640
+ return localize(14715, "{0} failed tests", count);
639
641
  }
640
642
  }
641
643
  };
@@ -1174,8 +1176,8 @@ let NoTestsForDocumentWidget = class NoTestsForDocumentWidget extends Disposable
1174
1176
  super();
1175
1177
  const el = this.el = append(container, $(".testing-no-test-placeholder"));
1176
1178
  const emptyParagraph = append(el, $("p"));
1177
- emptyParagraph.innerText = ( localize(14563, "No tests were found in this file."));
1178
- const buttonLabel = ( localize(14564, "Show Workspace Tests"));
1179
+ emptyParagraph.innerText = ( localize(14716, "No tests were found in this file."));
1180
+ const buttonLabel = ( localize(14717, "Show Workspace Tests"));
1179
1181
  const button = this._register(( new Button(el, {
1180
1182
  title: buttonLabel,
1181
1183
  ...defaultButtonStyles
@@ -1210,17 +1212,17 @@ const getLabelForTestTreeElement = element => {
1210
1212
  let label = labelForTestInState(element.description || element.test.item.label, element.state);
1211
1213
  if (element instanceof TestItemTreeElement) {
1212
1214
  if (element.duration !== undefined) {
1213
- label = ( localize(14565, "{0}, in {1}", label, formatDuration(element.duration)));
1215
+ label = ( localize(14718, "{0}, in {1}", label, formatDuration(element.duration)));
1214
1216
  }
1215
1217
  if (element.retired) {
1216
- label = ( localize(14566, "{0}, outdated result", label));
1218
+ label = ( localize(14719, "{0}, outdated result", label));
1217
1219
  }
1218
1220
  }
1219
1221
  return label;
1220
1222
  };
1221
1223
  class ListAccessibilityProvider {
1222
1224
  getWidgetAriaLabel() {
1223
- return localize(14567, "Test Explorer");
1225
+ return localize(14720, "Test Explorer");
1224
1226
  }
1225
1227
  getAriaLabel(element) {
1226
1228
  return element instanceof TestTreeErrorMessage ? element.description : getLabelForTestTreeElement(element);