未验证 提交 d5f71191 编写于 作者: H Heejae Chang 提交者: GitHub

add output paths as one of causes to reanalyze solution cralwer. (#31181)

output paths are not specifically affecting semantics of code but some analyzer such as source based test discovery requires it to generate correct data. so they want to be re-analyzed when those are changed as well.

since output path are rarely get changed. decide to add it as one of cause to reanalyze projects.
上级 8740f8bc
......@@ -286,6 +286,42 @@ public async Task Project_AnalyzerOptions_Change()
}
}
[Fact]
public async Task Project_OutputFilePath_Change()
{
using (var workspace = new WorkCoordinatorWorkspace(SolutionCrawler))
{
var solutionInfo = GetInitialSolutionInfo_2Projects_10Documents(workspace);
workspace.OnSolutionAdded(solutionInfo);
await WaitWaiterAsync(workspace.ExportProvider);
var projectId = workspace.CurrentSolution.Projects.First(p => p.Name == "P1").Id;
var newSolution = workspace.CurrentSolution.WithProjectOutputFilePath(projectId, "/newPath");
var worker = await ExecuteOperation(workspace, w => w.ChangeProject(projectId, newSolution));
Assert.Equal(5, worker.SyntaxDocumentIds.Count);
Assert.Equal(5, worker.DocumentIds.Count);
}
}
[Fact]
public async Task Project_OutputRefFilePath_Change()
{
using (var workspace = new WorkCoordinatorWorkspace(SolutionCrawler))
{
var solutionInfo = GetInitialSolutionInfo_2Projects_10Documents(workspace);
workspace.OnSolutionAdded(solutionInfo);
await WaitWaiterAsync(workspace.ExportProvider);
var projectId = workspace.CurrentSolution.Projects.First(p => p.Name == "P1").Id;
var newSolution = workspace.CurrentSolution.WithProjectOutputRefFilePath(projectId, "/newPath");
var worker = await ExecuteOperation(workspace, w => w.ChangeProject(projectId, newSolution));
Assert.Equal(5, worker.SyntaxDocumentIds.Count);
Assert.Equal(5, worker.DocumentIds.Count);
}
}
[Fact]
public async Task Test_NeedsReanalysisOnOptionChanged()
{
......
......@@ -506,7 +506,9 @@ private async Task EnqueueProjectConfigurationChangeWorkItemAsync(ProjectChanges
!object.Equals(oldProject.AssemblyName, newProject.AssemblyName) ||
!object.Equals(oldProject.Name, newProject.Name) ||
!object.Equals(oldProject.AnalyzerOptions, newProject.AnalyzerOptions) ||
!object.Equals(oldProject.DefaultNamespace, newProject.DefaultNamespace))
!object.Equals(oldProject.DefaultNamespace, newProject.DefaultNamespace) ||
!object.Equals(oldProject.OutputFilePath, newProject.OutputFilePath) ||
!object.Equals(oldProject.OutputRefFilePath, newProject.OutputRefFilePath))
{
projectConfigurationChange = projectConfigurationChange.With(InvocationReasons.ProjectConfigurationChanged);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册