Skip to content

Commit 5b8e0cb

Browse files
authored
Merge pull request #3573 from Samirat/samirat/pr_to_github
Add ability to use custom runsettings for tests
2 parents df07719 + 88b0920 commit 5b8e0cb

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
@@ -559,18 +559,26 @@ export namespace V2 {
559559
}
560560

561561
// dotnet-test endpoints
562-
export interface DebugTestGetStartInfoRequest extends Request {
562+
interface SingleTestRequest extends Request {
563563
MethodName: string;
564+
RunSettings: string;
564565
TestFrameworkName: string;
565566
TargetFrameworkVersion: string;
566567
}
567568

568-
export interface DebugTestClassGetStartInfoRequest extends Request {
569+
interface MultiTestRequest extends Request {
569570
MethodNames: string[];
571+
RunSettings: string;
570572
TestFrameworkName: string;
571573
TargetFrameworkVersion: string;
572574
}
573575

576+
export interface DebugTestGetStartInfoRequest extends SingleTestRequest {
577+
}
578+
579+
export interface DebugTestClassGetStartInfoRequest extends MultiTestRequest {
580+
}
581+
574582
export interface DebugTestGetStartInfoResponse {
575583
FileName: string;
576584
Arguments: string;
@@ -591,10 +599,7 @@ export namespace V2 {
591599
export interface DebugTestStopResponse {
592600
}
593601

594-
export interface GetTestStartInfoRequest extends Request {
595-
MethodName: string;
596-
TestFrameworkName: string;
597-
TargetFrameworkVersion: string;
602+
export interface GetTestStartInfoRequest extends SingleTestRequest {
598603
}
599604

600605
export interface GetTestStartInfoResponse {
@@ -603,16 +608,10 @@ export namespace V2 {
603608
WorkingDirectory: string;
604609
}
605610

606-
export interface RunTestRequest extends Request {
607-
MethodName: string;
608-
TestFrameworkName: string;
609-
TargetFrameworkVersion: string;
611+
export interface RunTestRequest extends SingleTestRequest {
610612
}
611613

612-
export interface RunTestsInClassRequest extends Request {
613-
MethodNames: string[];
614-
TestFrameworkName: string;
615-
TargetFrameworkVersion: string;
614+
export interface RunTestsInClassRequest extends MultiTestRequest {
616615
}
617616

618617
export module TestOutcomes {

0 commit comments

Comments
 (0)