Skip to content

Commit 8d755e2

Browse files
committed
Revert "Revert "[Ignore] Add timeouts to asynchronous tests""
This reverts commit 0bdbbe0.
1 parent 0bdbbe0 commit 8d755e2

File tree

1 file changed

+34
-21
lines changed

1 file changed

+34
-21
lines changed

test/PowerShellEditorServices.Test/Language/LanguageServiceTests.cs

+34-21
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public async Task LanguageServiceCompletesCommandInFile()
4444
{
4545
CompletionResults completionResults =
4646
await this.GetCompletionResults(
47-
CompleteCommandInFile.SourceDetails);
47+
CompleteCommandInFile.SourceDetails).RunWithTimeout();
4848

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

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

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

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

101101
Assert.NotEqual(0, completionResults.Completions.Length);
102102
Assert.Equal(
@@ -109,7 +109,7 @@ public async Task LanguageServiceFindsParameterHintsOnCommand()
109109
{
110110
ParameterSetSignatures paramSignatures =
111111
await this.GetParamSetSignatures(
112-
FindsParameterSetsOnCommand.SourceDetails);
112+
FindsParameterSetsOnCommand.SourceDetails).RunWithTimeout();
113113

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

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

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

151151
SymbolReference definition = definitionResult.FoundDefinition;
152152
Assert.True(
@@ -167,7 +167,7 @@ await this.GetDefinition(
167167
new Workspace(this.powerShellContext.LocalPowerShellVersion.Version, Logging.NullLogger)
168168
{
169169
WorkspacePath = Path.Combine(baseSharedScriptPath, @"References")
170-
});
170+
}).RunWithTimeout();
171171
var definition = definitionResult.FoundDefinition;
172172
Assert.EndsWith("ReferenceFileE.ps1", definition.FilePath);
173173
Assert.Equal("My-FunctionInFileE", definition.SymbolName);
@@ -178,7 +178,7 @@ public async Task LanguageServiceFindsVariableDefinition()
178178
{
179179
GetDefinitionResult definitionResult =
180180
await this.GetDefinition(
181-
FindsVariableDefinition.SourceDetails);
181+
FindsVariableDefinition.SourceDetails).RunWithTimeout();
182182

183183
SymbolReference definition = definitionResult.FoundDefinition;
184184
Assert.Equal(6, definition.ScriptRegion.StartLineNumber);
@@ -215,7 +215,7 @@ public async Task LanguageServiceFindsReferencesOnCommandWithAlias()
215215
{
216216
FindReferencesResult refsResult =
217217
await this.GetReferences(
218-
FindsReferencesOnBuiltInCommandWithAlias.SourceDetails);
218+
FindsReferencesOnBuiltInCommandWithAlias.SourceDetails).RunWithTimeout();
219219

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

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

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

@@ -261,7 +261,7 @@ public async Task LanguageServiceFindsDetailsForBuiltInCommand()
261261
await this.languageService.FindSymbolDetailsAtLocation(
262262
this.GetScriptFile(FindsDetailsForBuiltInCommand.SourceDetails),
263263
FindsDetailsForBuiltInCommand.SourceDetails.StartLineNumber,
264-
FindsDetailsForBuiltInCommand.SourceDetails.StartColumnNumber);
264+
FindsDetailsForBuiltInCommand.SourceDetails.StartColumnNumber).RunWithTimeout();
265265

266266
Assert.NotNull(symbolDetails.Documentation);
267267
Assert.NotEqual("", symbolDetails.Documentation);
@@ -344,7 +344,7 @@ private async Task<CompletionResults> GetCompletionResults(ScriptRegion scriptRe
344344
await this.languageService.GetCompletionsInFile(
345345
GetScriptFile(scriptRegion),
346346
scriptRegion.StartLineNumber,
347-
scriptRegion.StartColumnNumber);
347+
scriptRegion.StartColumnNumber).RunWithTimeout();
348348
}
349349

350350
private async Task<ParameterSetSignatures> GetParamSetSignatures(ScriptRegion scriptRegion)
@@ -353,7 +353,7 @@ private async Task<ParameterSetSignatures> GetParamSetSignatures(ScriptRegion sc
353353
await this.languageService.FindParameterSetsInFile(
354354
GetScriptFile(scriptRegion),
355355
scriptRegion.StartLineNumber,
356-
scriptRegion.StartColumnNumber);
356+
scriptRegion.StartColumnNumber).RunWithTimeout();
357357
}
358358

359359
private async Task<GetDefinitionResult> GetDefinition(ScriptRegion scriptRegion, Workspace workspace)
@@ -372,12 +372,12 @@ private async Task<GetDefinitionResult> GetDefinition(ScriptRegion scriptRegion,
372372
await this.languageService.GetDefinitionOfSymbol(
373373
scriptFile,
374374
symbolReference,
375-
workspace);
375+
workspace).RunWithTimeout();
376376
}
377377

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

383383
private async Task<FindReferencesResult> GetReferences(ScriptRegion scriptRegion)
@@ -396,7 +396,7 @@ private async Task<FindReferencesResult> GetReferences(ScriptRegion scriptRegion
396396
await this.languageService.FindReferencesOfSymbol(
397397
symbolReference,
398398
this.workspace.ExpandScriptReferences(scriptFile),
399-
this.workspace);
399+
this.workspace).RunWithTimeout();
400400
}
401401

402402
private FindOccurrencesResult GetOccurrences(ScriptRegion scriptRegion)
@@ -415,4 +415,17 @@ private FindOccurrencesResult FindSymbolsInFile(ScriptRegion scriptRegion)
415415
GetScriptFile(scriptRegion));
416416
}
417417
}
418+
419+
internal static class TaskExtensions
420+
{
421+
public static async Task<T> RunWithTimeout<T>(this Task<T> task, int timeoutMillis = 10000)
422+
{
423+
if (await Task.WhenAny(task, Task.Delay(timeoutMillis)) == task)
424+
{
425+
return task.Result;
426+
}
427+
428+
throw new TimeoutException();
429+
}
430+
}
418431
}

0 commit comments

Comments
 (0)