Skip to content

Commit 411129f

Browse files
committed
Use a valid Compilation for testing exception handling
1 parent 4b6fc31 commit 411129f

1 file changed

Lines changed: 26 additions & 11 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers.Test/SpecialRules/SA0002UnitTests.cs

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -353,18 +353,33 @@ public async Task TestEmptySettingsAsync()
353353
}
354354

355355
[Fact]
356-
public void TestUnexpectedExceptionNotCaught()
356+
public async Task TestUnexpectedExceptionNotCaughtAsync()
357357
{
358-
var analysisContext = new AnalysisContextMissingOptions();
359-
var analyzer = new SA0002InvalidSettingsFile();
360-
analyzer.Initialize(analysisContext);
361-
Assert.NotNull(analysisContext.CompilationAction);
362-
363-
var additionalFiles = ImmutableArray.Create<AdditionalText>(new InvalidAdditionalText());
364-
Assert.Null(additionalFiles[0].Path);
365-
Assert.Null(additionalFiles[0].GetText(CancellationToken.None));
366-
var context = new CompilationAnalysisContext(compilation: null, options: new AnalyzerOptions(additionalFiles), reportDiagnostic: null, isSupportedDiagnostic: null, cancellationToken: CancellationToken.None);
367-
Assert.Throws<ArgumentNullException>(() => analysisContext.CompilationAction(context));
358+
await new CSharpTest
359+
{
360+
TestSources = { string.Empty },
361+
SolutionTransforms =
362+
{
363+
// Run additional validation here with access to a Compilation
364+
(solution, projectId) =>
365+
{
366+
var compilation = solution.GetProject(projectId).GetCompilationAsync(CancellationToken.None).GetAwaiter().GetResult();
367+
368+
var analysisContext = new AnalysisContextMissingOptions();
369+
var analyzer = new SA0002InvalidSettingsFile();
370+
analyzer.Initialize(analysisContext);
371+
Assert.NotNull(analysisContext.CompilationAction);
372+
373+
var additionalFiles = ImmutableArray.Create<AdditionalText>(new InvalidAdditionalText());
374+
Assert.Null(additionalFiles[0].Path);
375+
Assert.Null(additionalFiles[0].GetText(CancellationToken.None));
376+
var context = new CompilationAnalysisContext(compilation, options: new AnalyzerOptions(additionalFiles), reportDiagnostic: null, isSupportedDiagnostic: null, cancellationToken: CancellationToken.None);
377+
Assert.Throws<ArgumentNullException>(() => analysisContext.CompilationAction(context));
378+
379+
return solution;
380+
},
381+
},
382+
}.RunAsync(CancellationToken.None).ConfigureAwait(false);
368383
}
369384

370385
private class InvalidAdditionalText : AdditionalText

0 commit comments

Comments
 (0)