@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-testing-service-override",
3
- "version": "30.0.1",
3
+ "version": "31.0.0",
4
4
  "private": false,
5
5
  "description": "VSCode public API plugged on the monaco editor - testing service-override",
6
6
  "keywords": [],
@@ -15,9 +15,9 @@
15
15
  },
16
16
  "type": "module",
17
17
  "dependencies": {
18
- "@codingame/monaco-vscode-api": "30.0.1",
19
- "@codingame/monaco-vscode-terminal-service-override": "30.0.1",
20
- "@codingame/monaco-vscode-xterm-addons-common": "30.0.1"
18
+ "@codingame/monaco-vscode-api": "31.0.0",
19
+ "@codingame/monaco-vscode-terminal-service-override": "31.0.0",
20
+ "@codingame/monaco-vscode-xterm-addons-common": "31.0.0"
21
21
  },
22
22
  "main": "index.js",
23
23
  "module": "index.js",
@@ -180,7 +180,7 @@ let StackAccessibilityProvider = class StackAccessibilityProvider {
180
180
  if (e instanceof CallStackFrame) {
181
181
  if (e.source && e.line) {
182
182
  return localize(
183
- 8166,
183
+ 8295,
184
184
  "{0}, line {1} in {2}",
185
185
  e.name,
186
186
  e.line,
@@ -194,7 +194,7 @@ let StackAccessibilityProvider = class StackAccessibilityProvider {
194
194
  assertNever();
195
195
  }
196
196
  getWidgetAriaLabel() {
197
- return localize(8167, "Stack Trace");
197
+ return localize(8296, "Stack Trace");
198
198
  }
199
199
  };
200
200
  StackAccessibilityProvider = ( __decorate([( __param(0, ILabelService))], StackAccessibilityProvider));
@@ -473,7 +473,7 @@ let MissingCodeRenderer = class MissingCodeRenderer {
473
473
  const cast = element;
474
474
  templateData.label.element.setResource({
475
475
  name: cast.name,
476
- description: ( localize(8168, "Line {0} column {1}", cast.line, cast.column)),
476
+ description: ( localize(8297, "Line {0} column {1}", cast.line, cast.column)),
477
477
  range: {
478
478
  startLineNumber: cast.line,
479
479
  startColumn: cast.column,
@@ -557,7 +557,7 @@ let SkippedRenderer = class SkippedRenderer {
557
557
  }
558
558
  button.enabled = false;
559
559
  this.loadFrames(data.current).catch(e => {
560
- this.notificationService.error(( localize(8169, "Failed to load stack frames: {0}", e.message)));
560
+ this.notificationService.error(( localize(8298, "Failed to load stack frames: {0}", e.message)));
561
561
  });
562
562
  }));
563
563
  return data;
@@ -637,7 +637,7 @@ registerAction2(class extends Action2 {
637
637
  constructor() {
638
638
  super({
639
639
  id: "callStackWidget.goToFile",
640
- title: ( localize2(8170, "Open File")),
640
+ title: ( localize2(8299, "Open File")),
641
641
  icon: Codicon.goToFile,
642
642
  menu: {
643
643
  id: MenuId.DebugCallStackToolbar,
@@ -21,7 +21,7 @@ import { ICodeEditorService } from '@codingame/monaco-vscode-api/vscode/vs/edito
21
21
  import { EditorOption } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/config/editorOptions';
22
22
  import { Position } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position';
23
23
  import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
24
- import { InjectedTextCursorStops } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model';
24
+ import { MinimapPosition, InjectedTextCursorStops } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model';
25
25
  import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
26
26
  import { Categories } from '@codingame/monaco-vscode-api/vscode/vs/platform/action/common/actionCommonCategories';
27
27
  import { MenuId, registerAction2, Action2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
@@ -36,6 +36,7 @@ import { KeybindingWeight } from '@codingame/monaco-vscode-api/vscode/vs/platfor
36
36
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
37
37
  import { bindContextKey, observableConfigValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
38
38
  import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
39
+ import { themeColorFromId } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService';
39
40
  import { ActiveEditorContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
40
41
  import { TEXT_FILE_EDITOR_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/files/common/files';
41
42
  import { TestingConfigKeys, getTestingConfiguration } from '../common/configuration.js';
@@ -49,6 +50,7 @@ import { TestingContextKeys } from '../common/testingContextKeys.js';
49
50
  import { labels, getLabelForItem } from './codeCoverageDisplayUtils.js';
50
51
  import { testingCoverageMissingBranch, testingCoverageReport, testingFilterIcon, testingRerunIcon } from './icons.js';
51
52
  import { ManagedTestCoverageBars } from './testCoverageBars.js';
53
+ import { testingCoveredMinimapBackground, testingUncoveredMinimapBackground } from './theme.js';
52
54
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
53
55
  import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
54
56
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
@@ -56,11 +58,11 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
56
58
 
57
59
  const CLASS_HIT = "coverage-deco-hit";
58
60
  const CLASS_MISS = "coverage-deco-miss";
59
- const TOGGLE_INLINE_COMMAND_TEXT = ( localize(14339, "Toggle Inline"));
61
+ const TOGGLE_INLINE_COMMAND_TEXT = ( localize(14492, "Toggle Inline"));
60
62
  const TOGGLE_INLINE_COMMAND_ID = "testing.toggleInlineCoverage";
61
63
  const BRANCH_MISS_INDICATOR_CHARS = 4;
62
- const GO_TO_NEXT_MISSED_LINE_TITLE = ( localize2(14340, "Go to Next Uncovered Line"));
63
- const GO_TO_PREVIOUS_MISSED_LINE_TITLE = ( localize2(14341, "Go to Previous Uncovered Line"));
64
+ const GO_TO_NEXT_MISSED_LINE_TITLE = ( localize2(14493, "Go to Next Uncovered Line"));
65
+ const GO_TO_PREVIOUS_MISSED_LINE_TITLE = ( localize2(14494, "Go to Previous Uncovered Line"));
64
66
  let CodeCoverageDecorations = class CodeCoverageDecorations extends Disposable {
65
67
  static {
66
68
  this.ID = Testing.CoverageDecorationsContributionId;
@@ -120,10 +122,17 @@ let CodeCoverageDecorations = class CodeCoverageDecorations extends Disposable {
120
122
  contextKeyService,
121
123
  reader => this.hasInlineCoverageDetails.read(reader)
122
124
  ));
125
+ const minimapEnabled = observableConfigValue(TestingConfigKeys.CoverageMinimapEnabled, true, configurationService);
123
126
  this._register(autorun(reader => {
124
127
  const c = fileCoverage.read(reader);
125
128
  if (c) {
126
- this.apply(editor.getModel(), c.file, c.testId, coverage.showInline.read(reader));
129
+ this.apply(
130
+ editor.getModel(),
131
+ c.file,
132
+ c.testId,
133
+ coverage.showInline.read(reader),
134
+ minimapEnabled.read(reader)
135
+ );
127
136
  } else {
128
137
  this.clear();
129
138
  }
@@ -295,7 +304,7 @@ let CodeCoverageDecorations = class CodeCoverageDecorations extends Disposable {
295
304
  }
296
305
  return false;
297
306
  }
298
- async apply(model, coverage, testId, showInlineByDefault) {
307
+ async apply(model, coverage, testId, showInlineByDefault, showMinimap) {
299
308
  const details = this.details = await this.loadDetails(coverage, testId, model);
300
309
  if (!details) {
301
310
  this.hasInlineCoverageDetails.set(false, undefined);
@@ -320,7 +329,11 @@ let CodeCoverageDecorations = class CodeCoverageDecorations extends Disposable {
320
329
  const options = {
321
330
  showIfCollapsed: showMissIndicator,
322
331
  description: "coverage-gutter",
323
- lineNumberClassName: `coverage-deco-gutter ${cls}`
332
+ lineNumberClassName: `coverage-deco-gutter ${cls}`,
333
+ minimap: showMinimap ? {
334
+ color: themeColorFromId(hits ? testingCoveredMinimapBackground : testingUncoveredMinimapBackground),
335
+ position: MinimapPosition.Gutter
336
+ } : undefined
324
337
  };
325
338
  const applyHoverOptions = target => {
326
339
  target.hoverMessage = description;
@@ -351,7 +364,13 @@ let CodeCoverageDecorations = class CodeCoverageDecorations extends Disposable {
351
364
  const options = {
352
365
  showIfCollapsed: false,
353
366
  description: "coverage-inline",
354
- lineNumberClassName: `coverage-deco-gutter ${cls}`
367
+ lineNumberClassName: `coverage-deco-gutter ${cls}`,
368
+ minimap: showMinimap ? {
369
+ color: themeColorFromId(
370
+ detail.count ? testingCoveredMinimapBackground : testingUncoveredMinimapBackground
371
+ ),
372
+ position: MinimapPosition.Gutter
373
+ } : undefined
355
374
  };
356
375
  const applyHoverOptions = target => {
357
376
  target.className = `coverage-deco-inline ${cls}`;
@@ -503,7 +522,7 @@ class CoverageDetailsModel {
503
522
  if (detail.branches?.length) {
504
523
  const covered = detail.branches.filter(b => !!b.count).length;
505
524
  return ( new MarkdownString()).appendMarkdown(( localize(
506
- 14342,
525
+ 14495,
507
526
  "{0} of {1} of branches in {2} were covered.",
508
527
  covered,
509
528
  detail.branches.length,
@@ -522,11 +541,11 @@ class CoverageDetailsModel {
522
541
  } = detail.detail.branches[detail.branch];
523
542
  const label2 = label ? wrapInBackticks(label) : `#${detail.branch + 1}`;
524
543
  if (!count) {
525
- return ( new MarkdownString()).appendMarkdown(( localize(14343, "Branch {0} in {1} was not covered.", label2, text)));
544
+ return ( new MarkdownString()).appendMarkdown(( localize(14496, "Branch {0} in {1} was not covered.", label2, text)));
526
545
  } else if (count === true) {
527
- return ( new MarkdownString()).appendMarkdown(( localize(14344, "Branch {0} in {1} was executed.", label2, text)));
546
+ return ( new MarkdownString()).appendMarkdown(( localize(14497, "Branch {0} in {1} was executed.", label2, text)));
528
547
  } else {
529
- return ( new MarkdownString()).appendMarkdown(( localize(14345, "Branch {0} in {1} was executed {2} time(s).", label2, text, count)));
548
+ return ( new MarkdownString()).appendMarkdown(( localize(14498, "Branch {0} in {1} was executed {2} time(s).", label2, text, count)));
530
549
  }
531
550
  }
532
551
  assertNever();
@@ -534,7 +553,7 @@ class CoverageDetailsModel {
534
553
  }
535
554
  function namedDetailLabel(name, detail) {
536
555
  return ( new MarkdownString()).appendMarkdown(
537
- !detail.count ? ( localize(14346, "`{0}` was not executed.", name)) : typeof detail.count === "number" ? ( localize(14347, "`{0}` was executed {1} time(s).", name, detail.count)) : ( localize(14348, "`{0}` was executed.", name)));
556
+ !detail.count ? ( localize(14499, "`{0}` was not executed.", name)) : typeof detail.count === "number" ? ( localize(14500, "`{0}` was executed {1} time(s).", name, detail.count)) : ( localize(14501, "`{0}` was executed.", name)));
538
557
  }
539
558
  function tidyLocation(location) {
540
559
  if (location instanceof Position) {
@@ -650,7 +669,7 @@ let CoverageToolbarWidget = class CoverageToolbarWidget extends Disposable {
650
669
  if (!current) {
651
670
  return;
652
671
  }
653
- const toggleAction = ( new ActionWithIcon("toggleInline", this.coverage.showInline.get() ? ( localize(14349, "Hide Inline")) : ( localize(14350, "Show Inline")), testingCoverageReport, undefined, () => this.coverage.showInline.set(!this.coverage.showInline.get(), undefined)));
672
+ const toggleAction = ( new ActionWithIcon("toggleInline", this.coverage.showInline.get() ? ( localize(14502, "Hide Inline")) : ( localize(14503, "Show Inline")), testingCoverageReport, undefined, () => this.coverage.showInline.set(!this.coverage.showInline.get(), undefined)));
654
673
  toggleAction.tooltip = this.keybindingService.appendKeybinding(TOGGLE_INLINE_COMMAND_TEXT, TOGGLE_INLINE_COMMAND_ID);
655
674
  const hasUncoveredStmt = current.coverage.statement.covered < current.coverage.statement.total;
656
675
  this.actionBar.push(( new ActionWithIcon(
@@ -682,12 +701,12 @@ let CoverageToolbarWidget = class CoverageToolbarWidget extends Disposable {
682
701
  )));
683
702
  } else if (current.coverage.perTestData?.size) {
684
703
  this.actionBar.push(( new ActionWithIcon("perTestFilter", ( localize(
685
- 14351,
704
+ 14504,
686
705
  "{0} test(s) ran code in this file",
687
706
  current.coverage.perTestData.size
688
707
  )), testingFilterIcon, undefined, () => this.commandService.executeCommand(TestCommandId.CoverageFilterToTestInEditor, this.current, this.editor))));
689
708
  }
690
- this.actionBar.push(( new ActionWithIcon("rerun", ( localize(14352, "Rerun")), testingRerunIcon, !this.isRunning, () => this.rerunTest())));
709
+ this.actionBar.push(( new ActionWithIcon("rerun", ( localize(14505, "Rerun")), testingRerunIcon, !this.isRunning, () => this.rerunTest())));
691
710
  }
692
711
  show() {
693
712
  if (this.registered) {
@@ -739,7 +758,7 @@ registerAction2(class ToggleInlineCoverage extends Action2 {
739
758
  constructor() {
740
759
  super({
741
760
  id: TOGGLE_INLINE_COMMAND_ID,
742
- title: ( localize2(14353, "Toggle Inline Coverage")),
761
+ title: ( localize2(14506, "Toggle Inline Coverage")),
743
762
  category: Categories.Test,
744
763
  keybinding: {
745
764
  weight: KeybindingWeight.WorkbenchContrib,
@@ -750,7 +769,7 @@ registerAction2(class ToggleInlineCoverage extends Action2 {
750
769
  },
751
770
  toggled: {
752
771
  condition: TestingContextKeys.inlineCoverageEnabled,
753
- title: ( localize(14354, "Hide Inline Coverage"))
772
+ title: ( localize(14507, "Hide Inline Coverage"))
754
773
  },
755
774
  icon: testingCoverageReport,
756
775
  menu: [{
@@ -772,9 +791,9 @@ registerAction2(class ToggleCoverageToolbar extends Action2 {
772
791
  constructor() {
773
792
  super({
774
793
  id: TestCommandId.CoverageToggleToolbar,
775
- title: ( localize2(14355, "Show Test Coverage Toolbar")),
794
+ title: ( localize2(14508, "Show Test Coverage Toolbar")),
776
795
  metadata: {
777
- description: ( localize2(14356, "Toggle the sticky coverage bar in the editor."))
796
+ description: ( localize2(14509, "Toggle the sticky coverage bar in the editor."))
778
797
  },
779
798
  category: Categories.Test,
780
799
  toggled: {
@@ -804,7 +823,7 @@ registerAction2(class FilterCoverageToTestInEditor extends Action2 {
804
823
  constructor() {
805
824
  super({
806
825
  id: TestCommandId.CoverageFilterToTestInEditor,
807
- title: ( localize2(14357, "Filter Coverage to Test")),
826
+ title: ( localize2(14510, "Filter Coverage to Test")),
808
827
  category: Categories.Test,
809
828
  icon: Codicon.filter,
810
829
  toggled: {
@@ -849,7 +868,7 @@ registerAction2(class FilterCoverageToTestInEditor extends Action2 {
849
868
  }, {
850
869
  type: "separator"
851
870
  }, ...( tests.map(id => ({
852
- label: getLabelForItem(result, id, commonPrefix),
871
+ ...getLabelForItem(result, id, commonPrefix),
853
872
  testId: id,
854
873
  buttons
855
874
  })))];
@@ -894,14 +913,14 @@ registerAction2(class ToggleCoverageInExplorer extends Action2 {
894
913
  constructor() {
895
914
  super({
896
915
  id: TestCommandId.CoverageToggleInExplorer,
897
- title: ( localize2(14358, "Toggle Coverage in Explorer")),
916
+ title: ( localize2(14511, "Toggle Coverage in Explorer")),
898
917
  metadata: {
899
- description: ( localize2(14359, "Toggle the display of test coverage in the File Explorer view."))
918
+ description: ( localize2(14512, "Toggle the display of test coverage in the File Explorer view."))
900
919
  },
901
920
  category: Categories.Test,
902
921
  toggled: {
903
922
  condition: ( ContextKeyExpr.equals("config.testing.showCoverageInExplorer", true)),
904
- title: ( localize(14360, "Hide Coverage in Explorer"))
923
+ title: ( localize(14513, "Hide Coverage in Explorer"))
905
924
  },
906
925
  menu: [{
907
926
  id: MenuId.CommandPalette,
@@ -921,7 +940,7 @@ registerAction2(class GoToNextMissedCoverageLine extends Action2 {
921
940
  id: TestCommandId.CoverageGoToNextMissedLine,
922
941
  title: GO_TO_NEXT_MISSED_LINE_TITLE,
923
942
  metadata: {
924
- description: ( localize2(14361, "Navigate to the next line that is not covered by tests."))
943
+ description: ( localize2(14514, "Navigate to the next line that is not covered by tests."))
925
944
  },
926
945
  category: Categories.Test,
927
946
  icon: Codicon.arrowDown,
@@ -958,7 +977,7 @@ registerAction2(class GoToPreviousMissedCoverageLine extends Action2 {
958
977
  id: TestCommandId.CoverageGoToPreviousMissedLine,
959
978
  title: GO_TO_PREVIOUS_MISSED_LINE_TITLE,
960
979
  metadata: {
961
- description: ( localize2(14362, "Navigate to the previous line that is not covered by tests."))
980
+ description: ( localize2(14515, "Navigate to the previous line that is not covered by tests."))
962
981
  },
963
982
  category: Categories.Test,
964
983
  icon: Codicon.arrowUp,
@@ -7,7 +7,10 @@ export declare const percent: (cc: ICoverageCount) => number;
7
7
  export declare const getCoverageColor: (pct: number, thresholds: ITestingCoverageBarThresholds) => `var(${string})`;
8
8
  export declare const displayPercent: (value: number, precision?: number) => string;
9
9
  export declare const calculateDisplayedStat: (coverage: CoverageBarSource, method: TestingDisplayedCoveragePercent) => number;
10
- export declare function getLabelForItem(result: LiveTestResult, testId: TestId, commonPrefixLen: number): string;
10
+ export declare function getLabelForItem(result: LiveTestResult, testId: TestId, commonPrefixLen: number): {
11
+ label: string;
12
+ description?: string;
13
+ };
11
14
  export declare namespace labels {
12
15
  const showingFilterFor: (label: string) => string;
13
16
  const clickToChangeFiltering: string;
@@ -80,15 +80,24 @@ function getLabelForItem(result, testId, commonPrefixLen) {
80
80
  }
81
81
  parts.push(item.label);
82
82
  }
83
- return parts.slice(commonPrefixLen).join(" › ");
83
+ const relevant = parts.slice(commonPrefixLen);
84
+ if (relevant.length <= 1) {
85
+ return {
86
+ label: relevant[0] ?? ""
87
+ };
88
+ }
89
+ return {
90
+ label: relevant[relevant.length - 1],
91
+ description: relevant.slice(0, -1).join(" › ")
92
+ };
84
93
  }
85
94
  var labels;
86
95
  (function(labels) {
87
- labels.showingFilterFor = label => ( localize(14363, "Showing \"{0}\"", label));
88
- labels.clickToChangeFiltering = ( localize(14364, "Click to view coverage for a single test"));
89
- labels.percentCoverage = (percent, precision) => ( localize(14365, "{0} Coverage", displayPercent(percent, precision)));
90
- labels.allTests = ( localize(14366, "All tests"));
91
- labels.pickShowCoverage = ( localize(14367, "Pick a test to show coverage for"));
96
+ labels.showingFilterFor = label => ( localize(14516, "Showing \"{0}\"", label));
97
+ labels.clickToChangeFiltering = ( localize(14517, "Click to view coverage for a single test"));
98
+ labels.percentCoverage = (percent, precision) => ( localize(14518, "{0} Coverage", displayPercent(percent, precision)));
99
+ labels.allTests = ( localize(14519, "Entire run"));
100
+ labels.pickShowCoverage = ( localize(14520, "Pick a test to show coverage for"));
92
101
  })(labels || (labels = {}));
93
102
 
94
103
  export { calculateDisplayedStat, displayPercent, getCoverageColor, getLabelForItem, labels, percent };
@@ -7,47 +7,47 @@ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/th
7
7
  import { testStatesToIconColors, testStatesToRetiredIconColors, testingColorRunAction } from './theme.js';
8
8
  import { TestResultState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/testing/common/testTypes';
9
9
 
10
- const testingViewIcon = registerIcon("test-view-icon", Codicon.beaker, ( localize(14368, "View icon of the test view.")));
11
- const testingResultsIcon = registerIcon("test-results-icon", Codicon.checklist, ( localize(14369, "Icons for test results.")));
12
- const testingRunIcon = registerIcon("testing-run-icon", Codicon.run, ( localize(14370, "Icon of the \"run test\" action.")));
13
- const testingRerunIcon = registerIcon("testing-rerun-icon", Codicon.debugRerun, ( localize(14371, "Icon of the \"rerun tests\" action.")));
14
- const testingRunAllIcon = registerIcon("testing-run-all-icon", Codicon.runAll, ( localize(14372, "Icon of the \"run all tests\" action.")));
15
- const testingDebugAllIcon = registerIcon("testing-debug-all-icon", Codicon.debugAltSmall, ( localize(14373, "Icon of the \"debug all tests\" action.")));
16
- const testingDebugIcon = registerIcon("testing-debug-icon", Codicon.debugAltSmall, ( localize(14374, "Icon of the \"debug test\" action.")));
17
- const testingCoverageIcon = registerIcon("testing-coverage-icon", Codicon.runCoverage, ( localize(14375, "Icon of the \"run test with coverage\" action.")));
18
- const testingCoverageAllIcon = registerIcon("testing-coverage-all-icon", Codicon.runAllCoverage, ( localize(14376, "Icon of the \"run all tests with coverage\" action.")));
19
- const testingCancelIcon = registerIcon("testing-cancel-icon", Codicon.debugStop, ( localize(14377, "Icon to cancel ongoing test runs.")));
20
- const testingFilterIcon = registerIcon("testing-filter", Codicon.filter, ( localize(14378, "Icon for the 'Filter' action in the testing view.")));
21
- const testingHiddenIcon = registerIcon("testing-hidden", Codicon.eyeClosed, ( localize(14379, "Icon shown beside hidden tests, when they've been shown.")));
22
- registerIcon("testing-show-as-list-icon", Codicon.listTree, ( localize(14380, "Icon shown when the test explorer is disabled as a tree.")));
23
- registerIcon("testing-show-as-list-icon", Codicon.listFlat, ( localize(14381, "Icon shown when the test explorer is disabled as a list.")));
24
- const testingUpdateProfiles = registerIcon("testing-update-profiles", Codicon.gear, ( localize(14382, "Icon shown to update test profiles.")));
25
- const testingRefreshTests = registerIcon("testing-refresh-tests", Codicon.refresh, ( localize(14383, "Icon on the button to refresh tests.")));
26
- const testingTurnContinuousRunOn = registerIcon("testing-turn-continuous-run-on", Codicon.eye, ( localize(14384, "Icon to turn continuous test runs on.")));
27
- const testingTurnContinuousRunOff = registerIcon("testing-turn-continuous-run-off", Codicon.eyeClosed, ( localize(14385, "Icon to turn continuous test runs off.")));
28
- const testingContinuousIsOn = registerIcon("testing-continuous-is-on", Codicon.eye, ( localize(14386, "Icon when continuous run is on for a test ite,.")));
29
- const testingCancelRefreshTests = registerIcon("testing-cancel-refresh-tests", Codicon.stop, ( localize(14387, "Icon on the button to cancel refreshing tests.")));
30
- const testingCoverageReport = registerIcon("testing-coverage", Codicon.coverage, ( localize(14388, "Icon representing test coverage")));
31
- const testingWasCovered = registerIcon("testing-was-covered", Codicon.check, ( localize(14389, "Icon representing that an element was covered")));
32
- const testingCoverageMissingBranch = registerIcon("testing-missing-branch", Codicon.question, ( localize(14390, "Icon representing a uncovered block without a range")));
10
+ const testingViewIcon = registerIcon("test-view-icon", Codicon.beaker, ( localize(14521, "View icon of the test view.")));
11
+ const testingResultsIcon = registerIcon("test-results-icon", Codicon.checklist, ( localize(14522, "Icons for test results.")));
12
+ const testingRunIcon = registerIcon("testing-run-icon", Codicon.run, ( localize(14523, "Icon of the \"run test\" action.")));
13
+ const testingRerunIcon = registerIcon("testing-rerun-icon", Codicon.debugRerun, ( localize(14524, "Icon of the \"rerun tests\" action.")));
14
+ const testingRunAllIcon = registerIcon("testing-run-all-icon", Codicon.runAll, ( localize(14525, "Icon of the \"run all tests\" action.")));
15
+ const testingDebugAllIcon = registerIcon("testing-debug-all-icon", Codicon.debugAltSmall, ( localize(14526, "Icon of the \"debug all tests\" action.")));
16
+ const testingDebugIcon = registerIcon("testing-debug-icon", Codicon.debugAltSmall, ( localize(14527, "Icon of the \"debug test\" action.")));
17
+ const testingCoverageIcon = registerIcon("testing-coverage-icon", Codicon.runCoverage, ( localize(14528, "Icon of the \"run test with coverage\" action.")));
18
+ const testingCoverageAllIcon = registerIcon("testing-coverage-all-icon", Codicon.runAllCoverage, ( localize(14529, "Icon of the \"run all tests with coverage\" action.")));
19
+ const testingCancelIcon = registerIcon("testing-cancel-icon", Codicon.debugStop, ( localize(14530, "Icon to cancel ongoing test runs.")));
20
+ const testingFilterIcon = registerIcon("testing-filter", Codicon.filter, ( localize(14531, "Icon for the 'Filter' action in the testing view.")));
21
+ const testingHiddenIcon = registerIcon("testing-hidden", Codicon.eyeClosed, ( localize(14532, "Icon shown beside hidden tests, when they've been shown.")));
22
+ registerIcon("testing-show-as-list-icon", Codicon.listTree, ( localize(14533, "Icon shown when the test explorer is disabled as a tree.")));
23
+ registerIcon("testing-show-as-list-icon", Codicon.listFlat, ( localize(14534, "Icon shown when the test explorer is disabled as a list.")));
24
+ const testingUpdateProfiles = registerIcon("testing-update-profiles", Codicon.gear, ( localize(14535, "Icon shown to update test profiles.")));
25
+ const testingRefreshTests = registerIcon("testing-refresh-tests", Codicon.refresh, ( localize(14536, "Icon on the button to refresh tests.")));
26
+ const testingTurnContinuousRunOn = registerIcon("testing-turn-continuous-run-on", Codicon.eye, ( localize(14537, "Icon to turn continuous test runs on.")));
27
+ const testingTurnContinuousRunOff = registerIcon("testing-turn-continuous-run-off", Codicon.eyeClosed, ( localize(14538, "Icon to turn continuous test runs off.")));
28
+ const testingContinuousIsOn = registerIcon("testing-continuous-is-on", Codicon.eye, ( localize(14539, "Icon when continuous run is on for a test ite,.")));
29
+ const testingCancelRefreshTests = registerIcon("testing-cancel-refresh-tests", Codicon.stop, ( localize(14540, "Icon on the button to cancel refreshing tests.")));
30
+ const testingCoverageReport = registerIcon("testing-coverage", Codicon.coverage, ( localize(14541, "Icon representing test coverage")));
31
+ const testingWasCovered = registerIcon("testing-was-covered", Codicon.check, ( localize(14542, "Icon representing that an element was covered")));
32
+ const testingCoverageMissingBranch = registerIcon("testing-missing-branch", Codicon.question, ( localize(14543, "Icon representing a uncovered block without a range")));
33
33
  const testingStatesToIcons = ( new Map([[
34
34
  TestResultState.Errored,
35
- registerIcon("testing-error-icon", Codicon.issues, ( localize(14391, "Icon shown for tests that have an error.")))
35
+ registerIcon("testing-error-icon", Codicon.issues, ( localize(14544, "Icon shown for tests that have an error.")))
36
36
  ], [
37
37
  TestResultState.Failed,
38
- registerIcon("testing-failed-icon", Codicon.error, ( localize(14392, "Icon shown for tests that failed.")))
38
+ registerIcon("testing-failed-icon", Codicon.error, ( localize(14545, "Icon shown for tests that failed.")))
39
39
  ], [
40
40
  TestResultState.Passed,
41
- registerIcon("testing-passed-icon", Codicon.pass, ( localize(14393, "Icon shown for tests that passed.")))
41
+ registerIcon("testing-passed-icon", Codicon.pass, ( localize(14546, "Icon shown for tests that passed.")))
42
42
  ], [
43
43
  TestResultState.Queued,
44
- registerIcon("testing-queued-icon", Codicon.history, ( localize(14394, "Icon shown for tests that are queued.")))
44
+ registerIcon("testing-queued-icon", Codicon.history, ( localize(14547, "Icon shown for tests that are queued.")))
45
45
  ], [TestResultState.Running, spinningLoading], [
46
46
  TestResultState.Skipped,
47
- registerIcon("testing-skipped-icon", Codicon.debugStepOver, ( localize(14395, "Icon shown for tests that are skipped.")))
47
+ registerIcon("testing-skipped-icon", Codicon.debugStepOver, ( localize(14548, "Icon shown for tests that are skipped.")))
48
48
  ], [
49
49
  TestResultState.Unset,
50
- registerIcon("testing-unset-icon", Codicon.circleOutline, ( localize(14396, "Icon shown for tests that are in an unset state.")))
50
+ registerIcon("testing-unset-icon", Codicon.circleOutline, ( localize(14549, "Icon shown for tests that are in an unset state.")))
51
51
  ]]));
52
52
  registerThemingParticipant((theme, collector) => {
53
53
  for (const [state, icon] of testingStatesToIcons.entries()) {
@@ -140,21 +140,21 @@ const renderBar = (bar, pct, isZero, thresholds) => {
140
140
  };
141
141
  const nf = safeIntl.NumberFormat();
142
142
  const stmtCoverageText = coverage => ( localize(
143
- 14397,
143
+ 14550,
144
144
  "{0}/{1} statements covered ({2})",
145
145
  nf.value.format(coverage.statement.covered),
146
146
  nf.value.format(coverage.statement.total),
147
147
  displayPercent(percent(coverage.statement))
148
148
  ));
149
149
  const fnCoverageText = coverage => coverage.declaration && ( localize(
150
- 14398,
150
+ 14551,
151
151
  "{0}/{1} functions covered ({2})",
152
152
  nf.value.format(coverage.declaration.covered),
153
153
  nf.value.format(coverage.declaration.total),
154
154
  displayPercent(percent(coverage.declaration))
155
155
  ));
156
156
  const branchCoverageText = coverage => coverage.branch && ( localize(
157
- 14399,
157
+ 14552,
158
158
  "{0}/{1} branches covered ({2})",
159
159
  nf.value.format(coverage.branch.covered),
160
160
  nf.value.format(coverage.branch.total),
@@ -203,7 +203,7 @@ class DeclarationCoverageNode {
203
203
  DeclarationCoverageNode.__decorator = ( __decorate([memoize], DeclarationCoverageNode.prototype, "attributableCoverage", null));
204
204
  class RevealUncoveredDeclarations {
205
205
  get label() {
206
- return localize(14400, "{0} declarations without coverage...", this.n);
206
+ return localize(14553, "{0} declarations without coverage...", this.n);
207
207
  }
208
208
  constructor(n) {
209
209
  this.n = n;
@@ -212,7 +212,7 @@ class RevealUncoveredDeclarations {
212
212
  }
213
213
  class CurrentlyFilteredTo {
214
214
  get label() {
215
- return localize(14401, "Showing coverage for \"{0}\"", this.testItem.label);
215
+ return localize(14554, "Showing coverage for \"{0}\"", this.testItem.label);
216
216
  }
217
217
  constructor(testItem) {
218
218
  this.testItem = testItem;
@@ -222,7 +222,7 @@ class CurrentlyFilteredTo {
222
222
  class LoadingDetails {
223
223
  constructor() {
224
224
  this.id = String(fnNodeId++);
225
- this.label = ( localize(14402, "Loading Coverage Details..."));
225
+ this.label = ( localize(14555, "Loading Coverage Details..."));
226
226
  }
227
227
  }
228
228
  const isFileCoverage = c => typeof c === "object" && "value" in c;
@@ -266,13 +266,13 @@ let TestCoverageTree = class TestCoverageTree extends Disposable {
266
266
  getAriaLabel(element) {
267
267
  if (isFileCoverage(element)) {
268
268
  const name = basenameOrAuthority(element.value.uri);
269
- return localize(14403, "{0} coverage: {0}%", name, (element.value.tpc * 100).toFixed(2));
269
+ return localize(14556, "{0} coverage: {0}%", name, (element.value.tpc * 100).toFixed(2));
270
270
  } else {
271
271
  return element.label;
272
272
  }
273
273
  },
274
274
  getWidgetAriaLabel() {
275
- return localize(14404, "Test Coverage Explorer");
275
+ return localize(14557, "Test Coverage Explorer");
276
276
  }
277
277
  },
278
278
  identityProvider: ( new TestCoverageIdentityProvider())
@@ -648,7 +648,7 @@ registerAction2(class TestCoverageChangePerTestFilterAction extends Action2 {
648
648
  super({
649
649
  id: TestCommandId.CoverageFilterToTest,
650
650
  category: Categories.Test,
651
- title: ( localize2(14405, "Filter Coverage by Test")),
651
+ title: ( localize2(14558, "Filter Coverage by Test")),
652
652
  icon: Codicon.filter,
653
653
  toggled: {
654
654
  icon: Codicon.filterFilled,
@@ -685,7 +685,7 @@ registerAction2(class TestCoverageChangePerTestFilterAction extends Action2 {
685
685
  }, {
686
686
  type: "separator"
687
687
  }, ...( tests.map(testId => ({
688
- label: getLabelForItem(result, testId, commonPrefix),
688
+ ...getLabelForItem(result, testId, commonPrefix),
689
689
  testId
690
690
  })))];
691
691
  quickInputService.pick(items, {
@@ -706,7 +706,7 @@ registerAction2(class TestCoverageChangeSortingAction extends ViewAction {
706
706
  super({
707
707
  id: TestCommandId.CoverageViewChangeSorting,
708
708
  viewId: Testing.CoverageViewId,
709
- title: ( localize2(14406, "Change Sort Order")),
709
+ title: ( localize2(14559, "Change Sort Order")),
710
710
  icon: Codicon.sortPrecedence,
711
711
  menu: {
712
712
  id: MenuId.ViewTitle,
@@ -720,22 +720,22 @@ registerAction2(class TestCoverageChangeSortingAction extends ViewAction {
720
720
  const disposables = ( new DisposableStore());
721
721
  const quickInput = disposables.add(accessor.get(IQuickInputService).createQuickPick());
722
722
  const items = [{
723
- label: ( localize(14407, "Sort by Location")),
723
+ label: ( localize(14560, "Sort by Location")),
724
724
  value: CoverageSortOrder.Location,
725
725
  description: ( localize(
726
- 14408,
726
+ 14561,
727
727
  "Files are sorted alphabetically, declarations are sorted by position"
728
728
  ))
729
729
  }, {
730
- label: ( localize(14409, "Sort by Coverage")),
730
+ label: ( localize(14562, "Sort by Coverage")),
731
731
  value: CoverageSortOrder.Coverage,
732
- description: ( localize(14410, "Files and declarations are sorted by total coverage"))
732
+ description: ( localize(14563, "Files and declarations are sorted by total coverage"))
733
733
  }, {
734
- label: ( localize(14411, "Sort by Name")),
734
+ label: ( localize(14564, "Sort by Name")),
735
735
  value: CoverageSortOrder.Name,
736
- description: ( localize(14412, "Files and declarations are sorted alphabetically"))
736
+ description: ( localize(14565, "Files and declarations are sorted alphabetically"))
737
737
  }];
738
- quickInput.placeholder = ( localize(14413, "Sort the Test Coverage view..."));
738
+ quickInput.placeholder = ( localize(14566, "Sort the Test Coverage view..."));
739
739
  quickInput.items = items;
740
740
  quickInput.show();
741
741
  disposables.add(quickInput.onDidHide(() => disposables.dispose()));
@@ -753,7 +753,7 @@ registerAction2(class TestCoverageCollapseAllAction extends ViewAction {
753
753
  super({
754
754
  id: TestCommandId.CoverageViewCollapseAll,
755
755
  viewId: Testing.CoverageViewId,
756
- title: ( localize2(14414, "Collapse All Coverage")),
756
+ title: ( localize2(14567, "Collapse All Coverage")),
757
757
  icon: Codicon.collapseAll,
758
758
  menu: {
759
759
  id: MenuId.ViewTitle,