Skip to content

Commit ae1916b

Browse files
committed
Add option to set custom runsettings for tests
1 parent 4ca5155 commit ae1916b

File tree

2 files changed

+36
-24
lines changed

2 files changed

+36
-24
lines changed

src/features/dotnetTest.ts

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,11 @@ export default class TestManager extends AbstractProvider {
110110
vscode.workspace.saveAll(/*includeUntitled*/ false));
111111
}
112112

113-
private async _runTest(fileName: string, testMethod: string, testFrameworkName: string, targetFrameworkVersion: string): Promise<protocol.V2.DotNetTestResult[]> {
113+
private async _runTest(fileName: string, testMethod: string, runSettings: string, testFrameworkName: string, targetFrameworkVersion: string): Promise<protocol.V2.DotNetTestResult[]> {
114114
const request: protocol.V2.RunTestRequest = {
115115
FileName: fileName,
116116
MethodName: testMethod,
117+
RunSettings: runSettings,
117118
TestFrameworkName: testFrameworkName,
118119
TargetFrameworkVersion: targetFrameworkVersion
119120
};
@@ -163,9 +164,10 @@ export default class TestManager extends AbstractProvider {
163164
});
164165

165166
let targetFrameworkVersion = await this._recordRunAndGetFrameworkVersion(fileName, testFrameworkName);
167+
let runSettings = vscode.workspace.getConfiguration('omnisharp').get<string>('testRunSettings');
166168

167169
try {
168-
let results = await this._runTest(fileName, testMethod, testFrameworkName, targetFrameworkVersion);
170+
let results = await this._runTest(fileName, testMethod, runSettings, testFrameworkName, targetFrameworkVersion);
169171
this._eventStream.post(new ReportDotNetTestResults(results));
170172
}
171173
catch (reason) {
@@ -186,9 +188,10 @@ export default class TestManager extends AbstractProvider {
186188
});
187189

188190
let targetFrameworkVersion = await this._recordRunAndGetFrameworkVersion(fileName, testFrameworkName);
191+
let runSettings = vscode.workspace.getConfiguration('omnisharp').get<string>('testRunSettings');
189192

190193
try {
191-
let results = await this._runTestsInClass(fileName, testFrameworkName, targetFrameworkVersion, methodsInClass);
194+
let results = await this._runTestsInClass(fileName, runSettings, testFrameworkName, targetFrameworkVersion, methodsInClass);
192195
this._eventStream.post(new ReportDotNetTestResults(results));
193196
}
194197
catch (reason) {
@@ -199,9 +202,10 @@ export default class TestManager extends AbstractProvider {
199202
}
200203
}
201204

202-
private async _runTestsInClass(fileName: string, testFrameworkName: string, targetFrameworkVersion: string, methodsToRun: string[]): Promise<protocol.V2.DotNetTestResult[]> {
205+
private async _runTestsInClass(fileName: string, runSettings: string, testFrameworkName: string, targetFrameworkVersion: string, methodsToRun: string[]): Promise<protocol.V2.DotNetTestResult[]> {
203206
const request: protocol.V2.RunTestsInClassRequest = {
204207
FileName: fileName,
208+
RunSettings: runSettings,
205209
TestFrameworkName: testFrameworkName,
206210
TargetFrameworkVersion: targetFrameworkVersion,
207211
MethodNames: methodsToRun
@@ -241,6 +245,7 @@ export default class TestManager extends AbstractProvider {
241245
private async _getLaunchConfigurationForVSTest(
242246
fileName: string,
243247
testMethod: string,
248+
runSettings: string,
244249
testFrameworkName: string,
245250
targetFrameworkVersion: string,
246251
debugEventListener: DebugEventListener): Promise<LaunchConfiguration> {
@@ -253,6 +258,7 @@ export default class TestManager extends AbstractProvider {
253258
const request: protocol.V2.DebugTestGetStartInfoRequest = {
254259
FileName: fileName,
255260
MethodName: testMethod,
261+
RunSettings: runSettings,
256262
TestFrameworkName: testFrameworkName,
257263
TargetFrameworkVersion: targetFrameworkVersion
258264
};
@@ -270,7 +276,7 @@ export default class TestManager extends AbstractProvider {
270276
}
271277
}
272278

273-
private async _getLaunchConfigurationForLegacy(fileName: string, testMethod: string, testFrameworkName: string, targetFrameworkVersion: string): Promise<LaunchConfiguration> {
279+
private async _getLaunchConfigurationForLegacy(fileName: string, testMethod: string, runSettings: string, testFrameworkName: string, targetFrameworkVersion: string): Promise<LaunchConfiguration> {
274280

275281
// Listen for test messages while getting start info.
276282
const listener = this._server.onTestMessage(e => {
@@ -280,6 +286,7 @@ export default class TestManager extends AbstractProvider {
280286
const request: protocol.V2.GetTestStartInfoRequest = {
281287
FileName: fileName,
282288
MethodName: testMethod,
289+
RunSettings: runSettings,
283290
TestFrameworkName: testFrameworkName,
284291
TargetFrameworkVersion: targetFrameworkVersion
285292
};
@@ -297,14 +304,15 @@ export default class TestManager extends AbstractProvider {
297304
debugType: string,
298305
fileName: string,
299306
testMethod: string,
307+
runSettings: string,
300308
testFrameworkName: string,
301309
targetFrameworkVersion: string,
302310
debugEventListener: DebugEventListener): Promise<LaunchConfiguration> {
303311
switch (debugType) {
304312
case 'legacy':
305-
return this._getLaunchConfigurationForLegacy(fileName, testMethod, testFrameworkName, targetFrameworkVersion);
313+
return this._getLaunchConfigurationForLegacy(fileName, testMethod, runSettings, testFrameworkName, targetFrameworkVersion);
306314
case 'vstest':
307-
return this._getLaunchConfigurationForVSTest(fileName, testMethod, testFrameworkName, targetFrameworkVersion, debugEventListener);
315+
return this._getLaunchConfigurationForVSTest(fileName, testMethod, runSettings, testFrameworkName, targetFrameworkVersion, debugEventListener);
308316

309317
default:
310318
throw new Error(`Unexpected debug type: ${debugType}`);
@@ -350,9 +358,10 @@ export default class TestManager extends AbstractProvider {
350358
this._eventStream.post(new DotNetTestDebugStart(testMethod));
351359

352360
let { debugType, debugEventListener, targetFrameworkVersion } = await this._recordDebugAndGetDebugValues(fileName, testFrameworkName);
361+
let runSettings = vscode.workspace.getConfiguration('omnisharp').get<string>('testRunSettings');
353362

354363
try {
355-
let config = await this._getLaunchConfiguration(debugType, fileName, testMethod, testFrameworkName, targetFrameworkVersion, debugEventListener);
364+
let config = await this._getLaunchConfiguration(debugType, fileName, testMethod, runSettings, testFrameworkName, targetFrameworkVersion, debugEventListener);
356365
const workspaceFolder = vscode.workspace.getWorkspaceFolder(vscode.Uri.file(fileName));
357366
return vscode.debug.startDebugging(workspaceFolder, config);
358367
}
@@ -369,9 +378,10 @@ export default class TestManager extends AbstractProvider {
369378
this._eventStream.post(new DotNetTestsInClassDebugStart(className));
370379

371380
let { debugType, debugEventListener, targetFrameworkVersion } = await this._recordDebugAndGetDebugValues(fileName, testFrameworkName);
381+
let runSettings = vscode.workspace.getConfiguration('omnisharp').get<string>('testRunSettings');
372382

373383
try {
374-
let config = await this._getLaunchConfigurationForClass(debugType, fileName, methodsToRun, testFrameworkName, targetFrameworkVersion, debugEventListener);
384+
let config = await this._getLaunchConfigurationForClass(debugType, fileName, methodsToRun, runSettings, testFrameworkName, targetFrameworkVersion, debugEventListener);
375385
const workspaceFolder = vscode.workspace.getWorkspaceFolder(vscode.Uri.file(fileName));
376386
return vscode.debug.startDebugging(workspaceFolder, config);
377387
}
@@ -387,18 +397,20 @@ export default class TestManager extends AbstractProvider {
387397
debugType: string,
388398
fileName: string,
389399
methodsToRun: string[],
400+
runSettings: string,
390401
testFrameworkName: string,
391402
targetFrameworkVersion: string,
392403
debugEventListener: DebugEventListener): Promise<LaunchConfiguration> {
393404
if (debugType == 'vstest') {
394-
return this._getLaunchConfigurationForVSTestClass(fileName, methodsToRun, testFrameworkName, targetFrameworkVersion, debugEventListener);
405+
return this._getLaunchConfigurationForVSTestClass(fileName, methodsToRun, runSettings, testFrameworkName, targetFrameworkVersion, debugEventListener);
395406
}
396407
throw new Error(`Unexpected debug type: ${debugType}`);
397408
}
398409

399410
private async _getLaunchConfigurationForVSTestClass(
400411
fileName: string,
401412
methodsToRun: string[],
413+
runSettings: string,
402414
testFrameworkName: string,
403415
targetFrameworkVersion: string,
404416
debugEventListener: DebugEventListener): Promise<LaunchConfiguration> {
@@ -410,6 +422,7 @@ export default class TestManager extends AbstractProvider {
410422
const request: protocol.V2.DebugTestClassGetStartInfoRequest = {
411423
FileName: fileName,
412424
MethodNames: methodsToRun,
425+
RunSettings: runSettings,
413426
TestFrameworkName: testFrameworkName,
414427
TargetFrameworkVersion: targetFrameworkVersion
415428
};

src/omnisharp/protocol.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -556,18 +556,26 @@ export namespace V2 {
556556
}
557557

558558
// dotnet-test endpoints
559-
export interface DebugTestGetStartInfoRequest extends Request {
559+
interface SingleTestRequest extends Request {
560560
MethodName: string;
561+
RunSettings: string;
561562
TestFrameworkName: string;
562563
TargetFrameworkVersion: string;
563564
}
564565

565-
export interface DebugTestClassGetStartInfoRequest extends Request {
566+
interface MultiTestRequest extends Request {
566567
MethodNames: string[];
568+
RunSettings: string;
567569
TestFrameworkName: string;
568570
TargetFrameworkVersion: string;
569571
}
570572

573+
export interface DebugTestGetStartInfoRequest extends SingleTestRequest {
574+
}
575+
576+
export interface DebugTestClassGetStartInfoRequest extends MultiTestRequest {
577+
}
578+
571579
export interface DebugTestGetStartInfoResponse {
572580
FileName: string;
573581
Arguments: string;
@@ -588,10 +596,7 @@ export namespace V2 {
588596
export interface DebugTestStopResponse {
589597
}
590598

591-
export interface GetTestStartInfoRequest extends Request {
592-
MethodName: string;
593-
TestFrameworkName: string;
594-
TargetFrameworkVersion: string;
599+
export interface GetTestStartInfoRequest extends SingleTestRequest {
595600
}
596601

597602
export interface GetTestStartInfoResponse {
@@ -600,16 +605,10 @@ export namespace V2 {
600605
WorkingDirectory: string;
601606
}
602607

603-
export interface RunTestRequest extends Request {
604-
MethodName: string;
605-
TestFrameworkName: string;
606-
TargetFrameworkVersion: string;
608+
export interface RunTestRequest extends SingleTestRequest {
607609
}
608610

609-
export interface RunTestsInClassRequest extends Request {
610-
MethodNames: string[];
611-
TestFrameworkName: string;
612-
TargetFrameworkVersion: string;
611+
export interface RunTestsInClassRequest extends MultiTestRequest {
613612
}
614613

615614
export module TestOutcomes {

0 commit comments

Comments
 (0)