Update test

This commit is contained in:
Matt Parker
2025-11-26 00:00:38 +10:00
parent 97b2e40949
commit b0177905bb
5 changed files with 57 additions and 12 deletions

View File

@@ -34,6 +34,7 @@ public static class DependencyInjection
services.AddScoped<RoslynAnalysis>();
services.AddScoped<IdeFileOperationsService>();
services.AddScoped<SharpIdeSolutionModificationService>();
services.AddLogging();
return services;
}
}

View File

@@ -56,7 +56,7 @@ public class RoslynAnalysis(ILogger<RoslynAnalysis> logger, BuildService buildSe
// Primarily used for getting the globs for a project
private Dictionary<ProjectId, ProjectFileInfo> _projectFileInfoMap = new();
private TaskCompletionSource _solutionLoadedTcs = null!;
public TaskCompletionSource _solutionLoadedTcs = null!;
private SharpIdeSolutionModel? _sharpIdeSolutionModel;
public void StartSolutionAnalysis(SharpIdeSolutionModel solutionModel)
{
@@ -66,6 +66,7 @@ public class RoslynAnalysis(ILogger<RoslynAnalysis> logger, BuildService buildSe
try
{
await Analyse(solutionModel);
await UpdateSolutionDiagnostics();
}
catch (Exception e)
{
@@ -148,7 +149,6 @@ public class RoslynAnalysis(ILogger<RoslynAnalysis> logger, BuildService buildSe
// _codeRefactoringProviders.AddRange(refactoringProviders);
// }
await UpdateSolutionDiagnostics(cancellationToken);
// foreach (var project in solution.Projects)
// {
// // foreach (var document in project.Documents)

View File

@@ -0,0 +1,50 @@
using System.Diagnostics;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SharpIDE.Application.Features.Analysis;
using SharpIDE.Application.Features.Build;
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
[assembly: CaptureConsole]
namespace SharpIDE.Application.UnitTests.Features.Analysis;
public class RoslynAnalysisTests
{
private readonly ITestOutputHelper _testOutputHelper;
public RoslynAnalysisTests(ITestOutputHelper testOutputHelper)
{
_testOutputHelper = testOutputHelper;
SharpIdeMsbuildLocator.Register();
}
[Fact]
public async Task GetProjectDiagnostics_NoSolutionChanges_IsSubsequentlyCheaper()
{
// Arrange
var serviceCollection = new ServiceCollection();
serviceCollection.AddApplication();
var services = serviceCollection.BuildServiceProvider();
var logger = services.GetRequiredService<ILogger<RoslynAnalysis>>();
var buildService = services.GetRequiredService<BuildService>();
var roslynAnalysis = new RoslynAnalysis(logger, buildService);
var solutionModel = await VsPersistenceMapper.GetSolutionModel(@"C:\Users\Matthew\Documents\Git\SharpIDE\SharpIDE.sln", TestContext.Current.CancellationToken);
var sharpIdeApplicationProject = solutionModel.AllProjects.Single(p => p.Name == "SharpIDE.Application");
roslynAnalysis._solutionLoadedTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
await roslynAnalysis.Analyse(solutionModel, TestContext.Current.CancellationToken);
// Act
foreach (var i in Enumerable.Range(1, 3))
{
var timer = Stopwatch.StartNew();
await roslynAnalysis.GetProjectDiagnostics(sharpIdeApplicationProject, TestContext.Current.CancellationToken);
timer.Stop();
_testOutputHelper.WriteLine($"Diagnostics: {timer.ElapsedMilliseconds.ToString()}ms");
}
}
}

View File

@@ -21,4 +21,8 @@
<PackageReference Include="xunit.v3.mtp-v2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\SharpIDE.Application\SharpIDE.Application.csproj" />
</ItemGroup>
</Project>

View File

@@ -1,10 +0,0 @@
namespace SharpIDE.Application.UnitTests;
public class UnitTest1
{
[Fact]
public void Test1()
{
true.Should().BeTrue();
}
}