@theia/test 1.67.0-next.56 → 1.67.0-next.86

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 (81) hide show
  1. package/lib/browser/constants.d.ts +46 -0
  2. package/lib/browser/constants.d.ts.map +1 -0
  3. package/lib/browser/constants.js +18 -0
  4. package/lib/browser/constants.js.map +1 -0
  5. package/lib/browser/test-execution-progress-service.d.ts +16 -0
  6. package/lib/browser/test-execution-progress-service.d.ts.map +1 -0
  7. package/lib/browser/test-execution-progress-service.js +54 -0
  8. package/lib/browser/test-execution-progress-service.js.map +1 -0
  9. package/lib/browser/test-service.d.ts +168 -0
  10. package/lib/browser/test-service.d.ts.map +1 -0
  11. package/lib/browser/test-service.js +283 -0
  12. package/lib/browser/test-service.js.map +1 -0
  13. package/lib/browser/view/test-context-key-service.d.ts +8 -0
  14. package/lib/browser/view/test-context-key-service.d.ts.map +1 -0
  15. package/lib/browser/view/test-context-key-service.js +44 -0
  16. package/lib/browser/view/test-context-key-service.js.map +1 -0
  17. package/lib/browser/view/test-execution-state-manager.d.ts +14 -0
  18. package/lib/browser/view/test-execution-state-manager.d.ts.map +1 -0
  19. package/lib/browser/view/test-execution-state-manager.js +166 -0
  20. package/lib/browser/view/test-execution-state-manager.js.map +1 -0
  21. package/lib/browser/view/test-output-ui-model.d.ts +48 -0
  22. package/lib/browser/view/test-output-ui-model.d.ts.map +1 -0
  23. package/lib/browser/view/test-output-ui-model.js +144 -0
  24. package/lib/browser/view/test-output-ui-model.js.map +1 -0
  25. package/lib/browser/view/test-output-view-contribution.d.ts +6 -0
  26. package/lib/browser/view/test-output-view-contribution.d.ts.map +1 -0
  27. package/lib/browser/view/test-output-view-contribution.js +40 -0
  28. package/lib/browser/view/test-output-view-contribution.js.map +1 -0
  29. package/lib/browser/view/test-output-widget.d.ts +24 -0
  30. package/lib/browser/view/test-output-widget.d.ts.map +1 -0
  31. package/lib/browser/view/test-output-widget.js +146 -0
  32. package/lib/browser/view/test-output-widget.js.map +1 -0
  33. package/lib/browser/view/test-result-view-contribution.d.ts +6 -0
  34. package/lib/browser/view/test-result-view-contribution.d.ts.map +1 -0
  35. package/lib/browser/view/test-result-view-contribution.js +40 -0
  36. package/lib/browser/view/test-result-view-contribution.js.map +1 -0
  37. package/lib/browser/view/test-result-widget.d.ts +31 -0
  38. package/lib/browser/view/test-result-widget.d.ts.map +1 -0
  39. package/lib/browser/view/test-result-widget.js +160 -0
  40. package/lib/browser/view/test-result-widget.js.map +1 -0
  41. package/lib/browser/view/test-run-view-contribution.d.ts +18 -0
  42. package/lib/browser/view/test-run-view-contribution.d.ts.map +1 -0
  43. package/lib/browser/view/test-run-view-contribution.js +93 -0
  44. package/lib/browser/view/test-run-view-contribution.js.map +1 -0
  45. package/lib/browser/view/test-run-widget.d.ts +59 -0
  46. package/lib/browser/view/test-run-widget.d.ts.map +1 -0
  47. package/lib/browser/view/test-run-widget.js +300 -0
  48. package/lib/browser/view/test-run-widget.js.map +1 -0
  49. package/lib/browser/view/test-tree-widget.d.ts +68 -0
  50. package/lib/browser/view/test-tree-widget.d.ts.map +1 -0
  51. package/lib/browser/view/test-tree-widget.js +376 -0
  52. package/lib/browser/view/test-tree-widget.js.map +1 -0
  53. package/lib/browser/view/test-view-contribution.d.ts +48 -0
  54. package/lib/browser/view/test-view-contribution.d.ts.map +1 -0
  55. package/lib/browser/view/test-view-contribution.js +316 -0
  56. package/lib/browser/view/test-view-contribution.js.map +1 -0
  57. package/lib/browser/view/test-view-frontend-module.d.ts +7 -0
  58. package/lib/browser/view/test-view-frontend-module.d.ts.map +1 -0
  59. package/lib/browser/view/test-view-frontend-module.js +126 -0
  60. package/lib/browser/view/test-view-frontend-module.js.map +1 -0
  61. package/lib/common/collections.d.ts +47 -0
  62. package/lib/common/collections.d.ts.map +1 -0
  63. package/lib/common/collections.js +211 -0
  64. package/lib/common/collections.js.map +1 -0
  65. package/lib/common/test-preferences.d.ts +14 -0
  66. package/lib/common/test-preferences.d.ts.map +1 -0
  67. package/lib/common/test-preferences.js +55 -0
  68. package/lib/common/test-preferences.js.map +1 -0
  69. package/lib/common/tree-delta.d.ts +52 -0
  70. package/lib/common/tree-delta.d.ts.map +1 -0
  71. package/lib/common/tree-delta.js +241 -0
  72. package/lib/common/tree-delta.js.map +1 -0
  73. package/lib/common/tree-delta.spec.d.ts +2 -0
  74. package/lib/common/tree-delta.spec.d.ts.map +1 -0
  75. package/lib/common/tree-delta.spec.js +140 -0
  76. package/lib/common/tree-delta.spec.js.map +1 -0
  77. package/lib/node/test-backend-module.d.ts +4 -0
  78. package/lib/node/test-backend-module.d.ts.map +1 -0
  79. package/lib/node/test-backend-module.js +23 -0
  80. package/lib/node/test-backend-module.js.map +1 -0
  81. package/package.json +7 -7
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2023 STMicroelectronics and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ var TestRunTreeWidget_1;
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.TestRunTreeWidget = exports.TestRunTree = void 0;
20
+ const tslib_1 = require("tslib");
21
+ const inversify_1 = require("@theia/core/shared/inversify");
22
+ const tree_1 = require("@theia/core/lib/browser/tree");
23
+ const browser_1 = require("@theia/core/lib/browser");
24
+ const icon_theme_service_1 = require("@theia/core/lib/browser/icon-theme-service");
25
+ const theming_1 = require("@theia/core/lib/browser/theming");
26
+ const context_key_service_1 = require("@theia/core/lib/browser/context-key-service");
27
+ const test_service_1 = require("../test-service");
28
+ const React = require("@theia/core/shared/react");
29
+ const core_1 = require("@theia/core");
30
+ const test_execution_state_manager_1 = require("./test-execution-state-manager");
31
+ const test_output_ui_model_1 = require("./test-output-ui-model");
32
+ class TestRunNode {
33
+ constructor(counter, id, run, parent) {
34
+ this.counter = counter;
35
+ this.id = id;
36
+ this.run = run;
37
+ this.parent = parent;
38
+ this.selected = false;
39
+ this.children = [];
40
+ }
41
+ get name() {
42
+ return this.run.name || core_1.nls.localize('theia/test/testRunDefaultName', '{0} run {1}', this.run.controller.label, this.counter);
43
+ }
44
+ ;
45
+ }
46
+ class TestItemNode {
47
+ constructor(id, item, parent) {
48
+ this.id = id;
49
+ this.item = item;
50
+ this.parent = parent;
51
+ this.selected = false;
52
+ }
53
+ get name() {
54
+ return this.item.label;
55
+ }
56
+ }
57
+ let TestRunTree = class TestRunTree extends tree_1.TreeImpl {
58
+ constructor() {
59
+ super(...arguments);
60
+ this.ROOT = {
61
+ id: 'TestResults',
62
+ name: 'Test Results',
63
+ parent: undefined,
64
+ children: [],
65
+ visible: false
66
+ };
67
+ this.controllerListeners = new Map();
68
+ this.runs = new Map();
69
+ this.nextId = 0;
70
+ }
71
+ init() {
72
+ this.root = this.ROOT;
73
+ this.testService.getControllers().forEach(controller => {
74
+ this.addController(controller);
75
+ });
76
+ this.testService.onControllersChanged(controllerDelta => {
77
+ var _a, _b;
78
+ (_a = controllerDelta.removed) === null || _a === void 0 ? void 0 : _a.forEach(controller => {
79
+ var _a;
80
+ (_a = this.controllerListeners.get(controller)) === null || _a === void 0 ? void 0 : _a.dispose();
81
+ });
82
+ (_b = controllerDelta.added) === null || _b === void 0 ? void 0 : _b.forEach(controller => this.addController(controller));
83
+ });
84
+ }
85
+ addController(controller) {
86
+ controller.testRuns.forEach(run => this.addRun(run));
87
+ const listeners = new core_1.DisposableCollection();
88
+ this.controllerListeners.set(controller.id, listeners);
89
+ listeners.push(controller.onRunsChanged(runDelta => {
90
+ var _a, _b;
91
+ (_a = runDelta.removed) === null || _a === void 0 ? void 0 : _a.forEach(run => {
92
+ var _a;
93
+ (_a = this.runs.get(run)) === null || _a === void 0 ? void 0 : _a.disposable.dispose();
94
+ this.runs.delete(run);
95
+ this.refresh(this.ROOT);
96
+ });
97
+ (_b = runDelta.added) === null || _b === void 0 ? void 0 : _b.forEach(run => {
98
+ this.addRun(run);
99
+ this.refresh(this.ROOT);
100
+ });
101
+ }));
102
+ }
103
+ addRun(run) {
104
+ const newNode = this.createRunNode(run);
105
+ const affected = [];
106
+ const disposables = new core_1.DisposableCollection();
107
+ disposables.push(run.onDidChangeTestState(deltas => {
108
+ let needsRefresh = false;
109
+ deltas.forEach(delta => {
110
+ if (delta.newState) {
111
+ if (delta.newState.state > test_service_1.TestExecutionState.Queued) {
112
+ const testNode = info.tests.get(delta.test);
113
+ if (!testNode) {
114
+ if (info.tests.size === 0) {
115
+ newNode.expanded = true;
116
+ }
117
+ info.tests.set(delta.test, this.createTestItemNode(newNode, delta.test));
118
+ needsRefresh = true;
119
+ }
120
+ else {
121
+ affected.push(testNode);
122
+ }
123
+ }
124
+ }
125
+ else {
126
+ info.tests.delete(delta.test);
127
+ needsRefresh = true;
128
+ }
129
+ });
130
+ if (needsRefresh) {
131
+ this.refresh(newNode);
132
+ }
133
+ else {
134
+ this.onDidUpdateEmitter.fire(affected);
135
+ }
136
+ }));
137
+ disposables.push(run.onDidChangeProperty(() => this.onDidUpdateEmitter.fire([])));
138
+ const info = {
139
+ node: newNode,
140
+ disposable: disposables,
141
+ tests: new Map(run.items.filter(item => { var _a; return (((_a = run.getTestState(item)) === null || _a === void 0 ? void 0 : _a.state) || 0) > test_service_1.TestExecutionState.Queued; }).map(item => [item, this.createTestItemNode(newNode, item)]))
142
+ };
143
+ this.runs.set(run, info);
144
+ }
145
+ createRunNode(run) {
146
+ return new TestRunNode(this.nextId, `id-${this.nextId++}`, run, this.ROOT);
147
+ }
148
+ createTestItemNode(parent, item) {
149
+ return new TestItemNode(`testitem-${this.nextId++}`, item, parent);
150
+ }
151
+ async resolveChildren(parent) {
152
+ if (parent === this.ROOT) {
153
+ return Promise.resolve([...this.runs.values()].reverse().map(info => info.node));
154
+ }
155
+ else if (parent instanceof TestRunNode) {
156
+ const runInfo = this.runs.get(parent.run);
157
+ if (runInfo) {
158
+ return Promise.resolve([...runInfo.tests.values()]);
159
+ }
160
+ else {
161
+ return Promise.resolve([]);
162
+ }
163
+ }
164
+ else {
165
+ return Promise.resolve([]);
166
+ }
167
+ }
168
+ };
169
+ exports.TestRunTree = TestRunTree;
170
+ tslib_1.__decorate([
171
+ (0, inversify_1.inject)(test_service_1.TestService),
172
+ tslib_1.__metadata("design:type", Object)
173
+ ], TestRunTree.prototype, "testService", void 0);
174
+ tslib_1.__decorate([
175
+ (0, inversify_1.postConstruct)(),
176
+ tslib_1.__metadata("design:type", Function),
177
+ tslib_1.__metadata("design:paramtypes", []),
178
+ tslib_1.__metadata("design:returntype", void 0)
179
+ ], TestRunTree.prototype, "init", null);
180
+ exports.TestRunTree = TestRunTree = tslib_1.__decorate([
181
+ (0, inversify_1.injectable)()
182
+ ], TestRunTree);
183
+ let TestRunTreeWidget = TestRunTreeWidget_1 = class TestRunTreeWidget extends tree_1.TreeWidget {
184
+ constructor(props, model, contextMenuRenderer) {
185
+ super(props, model, contextMenuRenderer);
186
+ this.id = TestRunTreeWidget_1.ID;
187
+ this.title.label = core_1.nls.localize('theia/test/testRuns', 'Test Runs');
188
+ this.title.caption = core_1.nls.localize('theia/test/testRuns', 'Test Runs');
189
+ this.title.iconClass = (0, browser_1.codicon)('run');
190
+ this.title.closable = true;
191
+ }
192
+ init() {
193
+ super.init();
194
+ this.addClass('theia-test-run-view');
195
+ this.model.onSelectionChanged(() => {
196
+ const node = this.model.selectedNodes[0];
197
+ if (node instanceof TestRunNode) {
198
+ this.uiModel.selectedOutputSource = {
199
+ get output() {
200
+ return node.run.getOutput();
201
+ },
202
+ onDidAddTestOutput: core_1.Event.map(node.run.onDidChangeTestOutput, evt => evt.map(item => item[1]))
203
+ };
204
+ }
205
+ else if (node instanceof TestItemNode) {
206
+ this.uiModel.selectedOutputSource = {
207
+ get output() {
208
+ return node.parent.run.getOutput(node.item);
209
+ },
210
+ onDidAddTestOutput: core_1.Event.map(node.parent.run.onDidChangeTestOutput, evt => evt.filter(item => item[0] === node.item).map(item => item[1]))
211
+ };
212
+ this.uiModel.selectedTestState = node.parent.run.getTestState(node.item);
213
+ }
214
+ });
215
+ }
216
+ renderTree(model) {
217
+ if (tree_1.CompositeTreeNode.is(this.model.root) && this.model.root.children.length > 0) {
218
+ return super.renderTree(model);
219
+ }
220
+ return React.createElement("div", { className: 'theia-widget-noInfo noMarkers' }, core_1.nls.localizeByDefault('No tests have been found in this workspace yet.'));
221
+ }
222
+ getTestStateClass(state) {
223
+ switch (state) {
224
+ case test_service_1.TestExecutionState.Queued: return `${(0, browser_1.codicon)('history')} queued`;
225
+ case test_service_1.TestExecutionState.Running: return `${(0, browser_1.codicon)('sync')} codicon-modifier-spin running`;
226
+ case test_service_1.TestExecutionState.Skipped: return `${(0, browser_1.codicon)('debug-step-over')} skipped`;
227
+ case test_service_1.TestExecutionState.Failed: return `${(0, browser_1.codicon)('error')} failed`;
228
+ case test_service_1.TestExecutionState.Errored: return `${(0, browser_1.codicon)('issues')} errored`;
229
+ case test_service_1.TestExecutionState.Passed: return `${(0, browser_1.codicon)('pass')} passed`;
230
+ default: return (0, browser_1.codicon)('circle');
231
+ }
232
+ }
233
+ renderIcon(node, props) {
234
+ var _a;
235
+ if (node instanceof TestItemNode) {
236
+ const state = (_a = node.parent.run.getTestState(node.item)) === null || _a === void 0 ? void 0 : _a.state;
237
+ return React.createElement("div", { className: this.getTestStateClass(state) });
238
+ }
239
+ else if (node instanceof TestRunNode) {
240
+ const icon = node.run.isRunning ? `${(0, browser_1.codicon)('sync')} codicon-modifier-spin running` : (0, browser_1.codicon)('circle');
241
+ return React.createElement("div", { className: icon });
242
+ }
243
+ else {
244
+ return super.renderIcon(node, props);
245
+ }
246
+ }
247
+ toContextMenuArgs(node) {
248
+ if (node instanceof TestRunNode) {
249
+ return [node.run];
250
+ }
251
+ else if (node instanceof TestItemNode) {
252
+ const item = node.item;
253
+ const executionState = node.parent.run.getTestState(node.item);
254
+ if (test_service_1.TestFailure.is(executionState)) {
255
+ return [item, executionState.messages];
256
+ }
257
+ return [item];
258
+ }
259
+ return [];
260
+ }
261
+ storeState() {
262
+ return {}; // don't store any state for now
263
+ }
264
+ };
265
+ exports.TestRunTreeWidget = TestRunTreeWidget;
266
+ TestRunTreeWidget.ID = 'test-run-widget';
267
+ tslib_1.__decorate([
268
+ (0, inversify_1.inject)(icon_theme_service_1.IconThemeService),
269
+ tslib_1.__metadata("design:type", icon_theme_service_1.IconThemeService)
270
+ ], TestRunTreeWidget.prototype, "iconThemeService", void 0);
271
+ tslib_1.__decorate([
272
+ (0, inversify_1.inject)(context_key_service_1.ContextKeyService),
273
+ tslib_1.__metadata("design:type", Object)
274
+ ], TestRunTreeWidget.prototype, "contextKeys", void 0);
275
+ tslib_1.__decorate([
276
+ (0, inversify_1.inject)(theming_1.ThemeService),
277
+ tslib_1.__metadata("design:type", theming_1.ThemeService)
278
+ ], TestRunTreeWidget.prototype, "themeService", void 0);
279
+ tslib_1.__decorate([
280
+ (0, inversify_1.inject)(test_execution_state_manager_1.TestExecutionStateManager),
281
+ tslib_1.__metadata("design:type", test_execution_state_manager_1.TestExecutionStateManager)
282
+ ], TestRunTreeWidget.prototype, "stateManager", void 0);
283
+ tslib_1.__decorate([
284
+ (0, inversify_1.inject)(test_output_ui_model_1.TestOutputUIModel),
285
+ tslib_1.__metadata("design:type", test_output_ui_model_1.TestOutputUIModel)
286
+ ], TestRunTreeWidget.prototype, "uiModel", void 0);
287
+ tslib_1.__decorate([
288
+ (0, inversify_1.postConstruct)(),
289
+ tslib_1.__metadata("design:type", Function),
290
+ tslib_1.__metadata("design:paramtypes", []),
291
+ tslib_1.__metadata("design:returntype", void 0)
292
+ ], TestRunTreeWidget.prototype, "init", null);
293
+ exports.TestRunTreeWidget = TestRunTreeWidget = TestRunTreeWidget_1 = tslib_1.__decorate([
294
+ (0, inversify_1.injectable)(),
295
+ tslib_1.__param(0, (0, inversify_1.inject)(tree_1.TreeProps)),
296
+ tslib_1.__param(1, (0, inversify_1.inject)(tree_1.TreeModel)),
297
+ tslib_1.__param(2, (0, inversify_1.inject)(browser_1.ContextMenuRenderer)),
298
+ tslib_1.__metadata("design:paramtypes", [Object, Object, browser_1.ContextMenuRenderer])
299
+ ], TestRunTreeWidget);
300
+ //# sourceMappingURL=test-run-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-run-widget.js","sourceRoot":"","sources":["../../../src/browser/view/test-run-widget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /// <reference types="react" />
2
+ import { TreeWidget, TreeModel, TreeProps, CompositeTreeNode, ExpandableTreeNode, TreeNode, TreeImpl, NodeProps, SelectableTreeNode } from '@theia/core/lib/browser/tree';
3
+ import { ContextMenuRenderer, KeybindingRegistry } from '@theia/core/lib/browser';
4
+ import { IconThemeService } from '@theia/core/lib/browser/icon-theme-service';
5
+ import { ThemeService } from '@theia/core/lib/browser/theming';
6
+ import { ContextKeyService } from '@theia/core/lib/browser/context-key-service';
7
+ import { TestController, TestExecutionState, TestItem, TestService } from '../test-service';
8
+ import * as React from '@theia/core/shared/react';
9
+ import { TreeDelta } from '../../common/tree-delta';
10
+ import { CommandMenu, CommandRegistry, MenuModelRegistry } from '@theia/core';
11
+ import { TestExecutionStateManager } from './test-execution-state-manager';
12
+ import { TestOutputUIModel } from './test-output-ui-model';
13
+ export interface TestRoot extends CompositeTreeNode {
14
+ children: TestControllerNode[];
15
+ }
16
+ export declare namespace TestRoot {
17
+ function is(node: unknown): node is TestRoot;
18
+ }
19
+ export interface TestControllerNode extends ExpandableTreeNode {
20
+ controller: TestController;
21
+ }
22
+ export declare namespace TestControllerNode {
23
+ function is(node: unknown): node is TestControllerNode;
24
+ }
25
+ export interface TestItemNode extends TreeNode {
26
+ controller: TestController;
27
+ testItem: TestItem;
28
+ }
29
+ export declare namespace TestItemNode {
30
+ function is(node: unknown): node is TestItemNode;
31
+ }
32
+ export declare class TestTree extends TreeImpl {
33
+ protected readonly testService: TestService;
34
+ private controllerListeners;
35
+ init(): void;
36
+ protected addController(controller: TestController): void;
37
+ protected resolveChildren(parent: CompositeTreeNode): Promise<TreeNode[]>;
38
+ createControllerNode(parent: CompositeTreeNode, controller: TestController): TestControllerNode;
39
+ protected processDeltas(controller: TestController, parent: TestItem | TestController, deltas: TreeDelta<string, TestItem>[]): void;
40
+ protected processDelta(controller: TestController, parent: TestItem | TestController, delta: TreeDelta<string, TestItem>): void;
41
+ protected findInParent(root: TestItem | TestController, path: string[], startIndex: number): TestItem | TestController | undefined;
42
+ protected computePath(controller: TestController, item: TestItem): string[];
43
+ protected computeId(path: string[]): string;
44
+ createTestNode(controller: TestController, parent: CompositeTreeNode, test: TestItem): TestItemNode;
45
+ }
46
+ export declare class TestTreeWidget extends TreeWidget {
47
+ static ID: string;
48
+ static TEST_CONTEXT_MENU: string[];
49
+ protected readonly iconThemeService: IconThemeService;
50
+ protected readonly contextKeys: ContextKeyService;
51
+ protected readonly themeService: ThemeService;
52
+ protected readonly stateManager: TestExecutionStateManager;
53
+ protected uiModel: TestOutputUIModel;
54
+ protected readonly menus: MenuModelRegistry;
55
+ readonly commands: CommandRegistry;
56
+ protected readonly keybindings: KeybindingRegistry;
57
+ constructor(props: TreeProps, model: TreeModel, contextMenuRenderer: ContextMenuRenderer);
58
+ protected init(): void;
59
+ protected renderTree(model: TreeModel): React.ReactNode;
60
+ protected getTestStateClass(state: TestExecutionState | undefined): string;
61
+ protected renderIcon(node: TreeNode, props: NodeProps): React.ReactNode;
62
+ protected renderTailDecorations(node: TreeNode, props: NodeProps): React.ReactNode;
63
+ protected renderInlineCommand(actionMenuNode: CommandMenu, index: number, tabbable: boolean, args: any[]): React.ReactNode;
64
+ protected resolveKeybindingForCommand(command: string | undefined): string;
65
+ protected toContextMenuArgs(node: SelectableTreeNode): (TestItem)[];
66
+ storeState(): object;
67
+ }
68
+ //# sourceMappingURL=test-tree-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-tree-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/view/test-tree-widget.tsx"],"names":[],"mappings":"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"}