-
Notifications
You must be signed in to change notification settings - Fork 97
/
extension.ts
125 lines (99 loc) · 4.93 KB
/
extension.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
"use strict";
import * as vscode from "vscode";
import { AppInsights } from "./appInsights";
import { AppInsightsClient } from "./appInsightsClient";
import { DotnetTestExplorer } from "./dotnetTestExplorer";
import { Executor } from "./executor";
import { FindTestInContext } from "./findTestInContext";
import { GotoTest } from "./gotoTest";
import { LeftClickTest } from "./leftClickTest";
import { Logger } from "./logger";
import { Problems } from "./problems";
import { StatusBar } from "./statusBar";
import { TestCommands } from "./testCommands";
import { TestDirectories } from "./testDirectories";
import { TestNode } from "./testNode";
import { TestStatusCodeLensProvider } from "./testStatusCodeLensProvider";
import { Utility } from "./utility";
import { Watch } from "./watch";
export function activate(context: vscode.ExtensionContext) {
const testDirectories = new TestDirectories();
const testCommands = new TestCommands(testDirectories);
const gotoTest = new GotoTest();
const findTestInContext = new FindTestInContext();
const problems = new Problems(testCommands);
const statusBar = new StatusBar(testCommands);
const watch = new Watch(testCommands, testDirectories);
const leftClickTest = new LeftClickTest();
const appInsights = new AppInsights(testCommands, testDirectories);
Logger.Log("Starting extension");
testDirectories.parseTestDirectories();
context.subscriptions.push(problems);
context.subscriptions.push(statusBar);
context.subscriptions.push(testCommands);
Utility.updateCache();
const dotnetTestExplorer = new DotnetTestExplorer(context, testCommands, statusBar);
vscode.window.registerTreeDataProvider("dotnetTestExplorer", dotnetTestExplorer);
AppInsightsClient.sendEvent("loadExtension");
context.subscriptions.push(vscode.workspace.onDidChangeConfiguration((e: vscode.ConfigurationChangeEvent) => {
if (!e.affectsConfiguration("dotnet-test-explorer")) { return; }
if (e.affectsConfiguration("dotnet-test-explorer.testProjectPath")) {
testDirectories.parseTestDirectories();
testCommands.discoverTests();
}
dotnetTestExplorer._onDidChangeTreeData.fire(null);
Utility.updateCache();
}));
testCommands.discoverTests();
const codeLensProvider = new TestStatusCodeLensProvider(testCommands);
context.subscriptions.push(codeLensProvider);
context.subscriptions.push(vscode.languages.registerCodeLensProvider(
{ language: "csharp", scheme: "file" },
codeLensProvider));
context.subscriptions.push(vscode.languages.registerCodeLensProvider(
{language: "fsharp", scheme: "file" },
codeLensProvider
));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.showLog", () => {
Logger.Show();
}));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.openPanel", () => {
vscode.commands.executeCommand("workbench.view.extension.test");
}));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.stop", () => {
Executor.stop();
dotnetTestExplorer._onDidChangeTreeData.fire(null);
}));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.refreshTestExplorer", () => {
testDirectories.parseTestDirectories();
dotnetTestExplorer.refreshTestExplorer();
}));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.runAllTests", () => {
testCommands.runAllTests();
}));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.runTest", (test: TestNode) => {
testCommands.runTest(test);
}));
context.subscriptions.push(vscode.commands.registerTextEditorCommand("dotnet-test-explorer.runTestInContext", (editor: vscode.TextEditor) => {
findTestInContext.find(editor.document, editor.selection.start).then((testRunContext) => {
testCommands.runTestByName(testRunContext.testName, testRunContext.isSingleTest);
});
}));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.gotoTest", (test: TestNode) => {
gotoTest.go(test);
}));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.debugTest", (test: TestNode) => {
testCommands.debugTestByName(test.fqn, true);
}));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.rerunLastCommand", (test: TestNode) => {
testCommands.rerunLastCommand();
}));
context.subscriptions.push(vscode.commands.registerCommand("dotnet-test-explorer.leftClickTest", (test: TestNode) => {
leftClickTest.handle(test);
}));
context.subscriptions.push(vscode.window.onDidCloseTerminal((closedTerminal: vscode.Terminal) => {
Executor.onDidCloseTerminal(closedTerminal);
}));
}
export function deactivate() {
}