Skip to content

Commit ea2ebad

Browse files
committed
[Ignore] Change asynchronous language service tests to execute in new thread
1 parent ed86689 commit ea2ebad

File tree

1 file changed

+44
-46
lines changed

1 file changed

+44
-46
lines changed

test/PowerShellEditorServices.Test/Language/LanguageServiceTests.cs

Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ public void Dispose()
4242
[Fact]
4343
public async Task LanguageServiceCompletesCommandInFile()
4444
{
45-
CompletionResults completionResults =
45+
CompletionResults completionResults = await RunWithTimeout(async () =>
4646
await this.GetCompletionResults(
47-
CompleteCommandInFile.SourceDetails).RunWithTimeout();
47+
CompleteCommandInFile.SourceDetails));
4848

4949
Assert.NotEqual(0, completionResults.Completions.Length);
5050
Assert.Equal(
@@ -56,8 +56,8 @@ await this.GetCompletionResults(
5656
public async Task LanguageServiceCompletesCommandFromModule()
5757
{
5858
CompletionResults completionResults =
59-
await this.GetCompletionResults(
60-
CompleteCommandFromModule.SourceDetails).RunWithTimeout();
59+
await RunWithTimeout(async () => await this.GetCompletionResults(
60+
CompleteCommandFromModule.SourceDetails));
6161

6262
Assert.NotEqual(0, completionResults.Completions.Length);
6363
Assert.Equal(
@@ -69,8 +69,8 @@ await this.GetCompletionResults(
6969
public async Task LanguageServiceCompletesVariableInFile()
7070
{
7171
CompletionResults completionResults =
72-
await this.GetCompletionResults(
73-
CompleteVariableInFile.SourceDetails).RunWithTimeout();
72+
await RunWithTimeout(async () => await this.GetCompletionResults(
73+
CompleteVariableInFile.SourceDetails));
7474

7575
Assert.Equal(1, completionResults.Completions.Length);
7676
Assert.Equal(
@@ -82,8 +82,8 @@ await this.GetCompletionResults(
8282
public async Task LanguageServiceCompletesAttributeValue()
8383
{
8484
CompletionResults completionResults =
85-
await this.GetCompletionResults(
86-
CompleteAttributeValue.SourceDetails).RunWithTimeout();
85+
await RunWithTimeout(async () => await this.GetCompletionResults(
86+
CompleteAttributeValue.SourceDetails));
8787

8888
Assert.NotEqual(0, completionResults.Completions.Length);
8989
Assert.Equal(
@@ -95,8 +95,8 @@ await this.GetCompletionResults(
9595
public async Task LanguageServiceCompletesFilePath()
9696
{
9797
CompletionResults completionResults =
98-
await this.GetCompletionResults(
99-
CompleteFilePath.SourceDetails).RunWithTimeout();
98+
await RunWithTimeout(async () => await this.GetCompletionResults(
99+
CompleteFilePath.SourceDetails));
100100

101101
Assert.NotEqual(0, completionResults.Completions.Length);
102102
Assert.Equal(
@@ -108,8 +108,8 @@ await this.GetCompletionResults(
108108
public async Task LanguageServiceFindsParameterHintsOnCommand()
109109
{
110110
ParameterSetSignatures paramSignatures =
111-
await this.GetParamSetSignatures(
112-
FindsParameterSetsOnCommand.SourceDetails).RunWithTimeout();
111+
await RunWithTimeout(async () => await this.GetParamSetSignatures(
112+
FindsParameterSetsOnCommand.SourceDetails));
113113

114114
Assert.NotNull(paramSignatures);
115115
Assert.Equal("Get-Process", paramSignatures.CommandName);
@@ -120,8 +120,8 @@ await this.GetParamSetSignatures(
120120
public async Task LanguageServiceFindsCommandForParamHintsWithSpaces()
121121
{
122122
ParameterSetSignatures paramSignatures =
123-
await this.GetParamSetSignatures(
124-
FindsParameterSetsOnCommandWithSpaces.SourceDetails).RunWithTimeout();
123+
await RunWithTimeout(async () => await this.GetParamSetSignatures(
124+
FindsParameterSetsOnCommandWithSpaces.SourceDetails));
125125

126126
Assert.NotNull(paramSignatures);
127127
Assert.Equal("Write-Host", paramSignatures.CommandName);
@@ -132,8 +132,8 @@ await this.GetParamSetSignatures(
132132
public async Task LanguageServiceFindsFunctionDefinition()
133133
{
134134
GetDefinitionResult definitionResult =
135-
await this.GetDefinition(
136-
FindsFunctionDefinition.SourceDetails).RunWithTimeout();
135+
await RunWithTimeout(async () => await this.GetDefinition(
136+
FindsFunctionDefinition.SourceDetails));
137137

138138
SymbolReference definition = definitionResult.FoundDefinition;
139139
Assert.Equal(1, definition.ScriptRegion.StartLineNumber);
@@ -145,8 +145,8 @@ await this.GetDefinition(
145145
public async Task LanguageServiceFindsFunctionDefinitionInDotSourceReference()
146146
{
147147
GetDefinitionResult definitionResult =
148-
await this.GetDefinition(
149-
FindsFunctionDefinitionInDotSourceReference.SourceDetails).RunWithTimeout();
148+
await RunWithTimeout(async () => await this.GetDefinition(
149+
FindsFunctionDefinitionInDotSourceReference.SourceDetails));
150150

151151
SymbolReference definition = definitionResult.FoundDefinition;
152152
Assert.True(
@@ -162,12 +162,12 @@ await this.GetDefinition(
162162
public async Task LanguageServiceFindsFunctionDefinitionInWorkspace()
163163
{
164164
var definitionResult =
165-
await this.GetDefinition(
165+
await RunWithTimeout(async () => await this.GetDefinition(
166166
FindsFunctionDefinitionInWorkspace.SourceDetails,
167167
new Workspace(this.powerShellContext.LocalPowerShellVersion.Version, Logging.NullLogger)
168168
{
169169
WorkspacePath = Path.Combine(baseSharedScriptPath, @"References")
170-
}).RunWithTimeout();
170+
}));
171171
var definition = definitionResult.FoundDefinition;
172172
Assert.EndsWith("ReferenceFileE.ps1", definition.FilePath);
173173
Assert.Equal("My-FunctionInFileE", definition.SymbolName);
@@ -177,8 +177,8 @@ await this.GetDefinition(
177177
public async Task LanguageServiceFindsVariableDefinition()
178178
{
179179
GetDefinitionResult definitionResult =
180-
await this.GetDefinition(
181-
FindsVariableDefinition.SourceDetails).RunWithTimeout();
180+
await RunWithTimeout(async () => await this.GetDefinition(
181+
FindsVariableDefinition.SourceDetails));
182182

183183
SymbolReference definition = definitionResult.FoundDefinition;
184184
Assert.Equal(6, definition.ScriptRegion.StartLineNumber);
@@ -214,8 +214,8 @@ public void LanguageServiceFindsOccurrencesOnParameter()
214214
public async Task LanguageServiceFindsReferencesOnCommandWithAlias()
215215
{
216216
FindReferencesResult refsResult =
217-
await this.GetReferences(
218-
FindsReferencesOnBuiltInCommandWithAlias.SourceDetails).RunWithTimeout();
217+
await RunWithTimeout(async () => await this.GetReferences(
218+
FindsReferencesOnBuiltInCommandWithAlias.SourceDetails));
219219

220220
Assert.Equal(6, refsResult.FoundReferences.Count());
221221
Assert.Equal("Get-ChildItem", refsResult.FoundReferences.Last().SymbolName);
@@ -226,8 +226,8 @@ await this.GetReferences(
226226
public async Task LanguageServiceFindsReferencesOnAlias()
227227
{
228228
FindReferencesResult refsResult =
229-
await this.GetReferences(
230-
FindsReferencesOnBuiltInCommandWithAlias.SourceDetails).RunWithTimeout();
229+
await RunWithTimeout(async () => await this.GetReferences(
230+
FindsReferencesOnBuiltInCommandWithAlias.SourceDetails));
231231

232232
Assert.Equal(6, refsResult.FoundReferences.Count());
233233
Assert.Equal("Get-ChildItem", refsResult.FoundReferences.Last().SymbolName);
@@ -239,8 +239,8 @@ await this.GetReferences(
239239
public async Task LanguageServiceFindsReferencesOnFileWithReferencesFileB()
240240
{
241241
FindReferencesResult refsResult =
242-
await this.GetReferences(
243-
FindsReferencesOnFunctionMultiFileDotSourceFileB.SourceDetails).RunWithTimeout();
242+
await RunWithTimeout(async () => await this.GetReferences(
243+
FindsReferencesOnFunctionMultiFileDotSourceFileB.SourceDetails));
244244

245245
Assert.Equal(4, refsResult.FoundReferences.Count());
246246
}
@@ -249,19 +249,19 @@ await this.GetReferences(
249249
public async Task LanguageServiceFindsReferencesOnFileWithReferencesFileC()
250250
{
251251
FindReferencesResult refsResult =
252-
await this.GetReferences(
253-
FindsReferencesOnFunctionMultiFileDotSourceFileC.SourceDetails).RunWithTimeout();
252+
await RunWithTimeout(async () => await this.GetReferences(
253+
FindsReferencesOnFunctionMultiFileDotSourceFileC.SourceDetails));
254254
Assert.Equal(4, refsResult.FoundReferences.Count());
255255
}
256256

257257
[Fact]
258258
public async Task LanguageServiceFindsDetailsForBuiltInCommand()
259259
{
260260
SymbolDetails symbolDetails =
261-
await this.languageService.FindSymbolDetailsAtLocation(
261+
await RunWithTimeout(async () => await this.languageService.FindSymbolDetailsAtLocation(
262262
this.GetScriptFile(FindsDetailsForBuiltInCommand.SourceDetails),
263263
FindsDetailsForBuiltInCommand.SourceDetails.StartLineNumber,
264-
FindsDetailsForBuiltInCommand.SourceDetails.StartColumnNumber).RunWithTimeout();
264+
FindsDetailsForBuiltInCommand.SourceDetails.StartColumnNumber));
265265

266266
Assert.NotNull(symbolDetails.Documentation);
267267
Assert.NotEqual("", symbolDetails.Documentation);
@@ -341,19 +341,19 @@ private async Task<CompletionResults> GetCompletionResults(ScriptRegion scriptRe
341341
{
342342
// Run the completions request
343343
return
344-
await this.languageService.GetCompletionsInFile(
344+
await RunWithTimeout(async () => await this.languageService.GetCompletionsInFile(
345345
GetScriptFile(scriptRegion),
346346
scriptRegion.StartLineNumber,
347-
scriptRegion.StartColumnNumber).RunWithTimeout();
347+
scriptRegion.StartColumnNumber));
348348
}
349349

350350
private async Task<ParameterSetSignatures> GetParamSetSignatures(ScriptRegion scriptRegion)
351351
{
352352
return
353-
await this.languageService.FindParameterSetsInFile(
353+
await RunWithTimeout(async () => await this.languageService.FindParameterSetsInFile(
354354
GetScriptFile(scriptRegion),
355355
scriptRegion.StartLineNumber,
356-
scriptRegion.StartColumnNumber).RunWithTimeout();
356+
scriptRegion.StartColumnNumber));
357357
}
358358

359359
private async Task<GetDefinitionResult> GetDefinition(ScriptRegion scriptRegion, Workspace workspace)
@@ -369,15 +369,15 @@ private async Task<GetDefinitionResult> GetDefinition(ScriptRegion scriptRegion,
369369
Assert.NotNull(symbolReference);
370370

371371
return
372-
await this.languageService.GetDefinitionOfSymbol(
372+
await RunWithTimeout(async () => await this.languageService.GetDefinitionOfSymbol(
373373
scriptFile,
374374
symbolReference,
375-
workspace).RunWithTimeout();
375+
workspace));
376376
}
377377

378378
private async Task<GetDefinitionResult> GetDefinition(ScriptRegion scriptRegion)
379379
{
380-
return await GetDefinition(scriptRegion, this.workspace).RunWithTimeout();
380+
return await RunWithTimeout(async () => await GetDefinition(scriptRegion, this.workspace));
381381
}
382382

383383
private async Task<FindReferencesResult> GetReferences(ScriptRegion scriptRegion)
@@ -393,10 +393,10 @@ private async Task<FindReferencesResult> GetReferences(ScriptRegion scriptRegion
393393
Assert.NotNull(symbolReference);
394394

395395
return
396-
await this.languageService.FindReferencesOfSymbol(
396+
await RunWithTimeout(async () => await this.languageService.FindReferencesOfSymbol(
397397
symbolReference,
398398
this.workspace.ExpandScriptReferences(scriptFile),
399-
this.workspace).RunWithTimeout();
399+
this.workspace));
400400
}
401401

402402
private FindOccurrencesResult GetOccurrences(ScriptRegion scriptRegion)
@@ -414,17 +414,15 @@ private FindOccurrencesResult FindSymbolsInFile(ScriptRegion scriptRegion)
414414
this.languageService.FindSymbolsInFile(
415415
GetScriptFile(scriptRegion));
416416
}
417-
}
418417

419-
internal static class TaskExtensions
420-
{
421-
public static async Task<T> RunWithTimeout<T>(this Task<T> task, int timeoutMillis = 10000)
418+
private static async Task<T> RunWithTimeout<T>(Func<Task<T>> task, int timeoutMillis = 1000)
422419
{
423-
Task<T> newThreadTask = Task<T>.Run(() => task);
420+
Task<T> newThreadTask = Task.Run(task);
424421
if (!((IAsyncResult)newThreadTask).AsyncWaitHandle.WaitOne(timeoutMillis))
425422
{
426423
throw new TimeoutException();
427424
}
425+
428426
return await newThreadTask;
429427
}
430428
}

0 commit comments

Comments
 (0)