зеркало из https://github.com/dotnet/razor.git
Remove CreateAndAddProject/Document test extension methods
This commit is contained in:
Родитель
b6f047f3f7
Коммит
71981dcede
|
@ -29,13 +29,16 @@ public class TextDocumentUriPresentationEndpointTests(ITestOutputHelper testOutp
|
|||
// Arrange
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
var project = await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
return updater.CreateAndAddProject("c:/path/project.csproj");
|
||||
});
|
||||
var hostProject = TestHostProject.Create("c:/path/project.csproj");
|
||||
var hostDocument1 = TestHostDocument.Create(hostProject, "c:/path/index.razor");
|
||||
var hostDocument2 = TestHostDocument.Create(hostProject, "c:/path/MyTagHelper.razor");
|
||||
|
||||
await projectManager.CreateAndAddDocumentAsync(project, "c:/path/index.razor");
|
||||
await projectManager.CreateAndAddDocumentAsync(project, "c:/path/MyTagHelper.razor");
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectAdded(hostProject);
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument1, hostDocument1.CreateEmptyTextLoader());
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument2, hostDocument2.CreateEmptyTextLoader());
|
||||
});
|
||||
|
||||
var droppedUri = new Uri("file:///c:/path/MyTagHelper.razor");
|
||||
var builder = TagHelperDescriptorBuilder.Create("MyTagHelper", "MyAssembly");
|
||||
|
@ -43,15 +46,14 @@ public class TextDocumentUriPresentationEndpointTests(ITestOutputHelper testOutp
|
|||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectWorkspaceStateChanged(project.Key, ProjectWorkspaceState.Create([builder.Build()]));
|
||||
updater.ProjectWorkspaceStateChanged(hostProject.Key, ProjectWorkspaceState.Create([builder.Build()]));
|
||||
});
|
||||
|
||||
var razorFilePath = "c:/path/index.razor";
|
||||
var uri = new Uri(razorFilePath);
|
||||
var uri = new Uri(hostDocument1.FilePath);
|
||||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.DocumentOpened(project.Key, razorFilePath, SourceText.From("<div></div>"));
|
||||
updater.DocumentOpened(hostProject.Key, hostDocument1.FilePath, SourceText.From("<div></div>"));
|
||||
});
|
||||
|
||||
var documentContextFactory = new DocumentContextFactory(projectManager, LoggerFactory);
|
||||
|
@ -87,13 +89,16 @@ public class TextDocumentUriPresentationEndpointTests(ITestOutputHelper testOutp
|
|||
// Arrange
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
var project = await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
return updater.CreateAndAddProject("c:/path/project.csproj");
|
||||
});
|
||||
var hostProject = TestHostProject.Create("c:/path/project.csproj");
|
||||
var hostDocument1 = TestHostDocument.Create(hostProject, "c:/path/index.razor");
|
||||
var hostDocument2 = TestHostDocument.Create(hostProject, "c:/path/MyTagHelper.razor");
|
||||
|
||||
await projectManager.CreateAndAddDocumentAsync(project, "c:/path/index.razor");
|
||||
await projectManager.CreateAndAddDocumentAsync(project, "c:/path/MyTagHelper.razor");
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectAdded(hostProject);
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument1, hostDocument1.CreateEmptyTextLoader());
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument2, hostDocument2.CreateEmptyTextLoader());
|
||||
});
|
||||
|
||||
var droppedUri = new Uri("file:///c:/path/MyTagHelper.razor");
|
||||
var builder = TagHelperDescriptorBuilder.Create("MyTagHelper", "MyAssembly");
|
||||
|
@ -101,15 +106,14 @@ public class TextDocumentUriPresentationEndpointTests(ITestOutputHelper testOutp
|
|||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectWorkspaceStateChanged(project.Key, ProjectWorkspaceState.Create([builder.Build()]));
|
||||
updater.ProjectWorkspaceStateChanged(hostProject.Key, ProjectWorkspaceState.Create([builder.Build()]));
|
||||
});
|
||||
|
||||
var razorFilePath = "c:/path/index.razor";
|
||||
var uri = new Uri(razorFilePath);
|
||||
var uri = new Uri(hostDocument1.FilePath);
|
||||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.DocumentOpened(project.Key, razorFilePath, SourceText.From("<div></div>"));
|
||||
updater.DocumentOpened(hostProject.Key, hostDocument1.FilePath, SourceText.From("<div></div>"));
|
||||
});
|
||||
|
||||
var documentContextFactory = new DocumentContextFactory(projectManager, LoggerFactory);
|
||||
|
@ -150,13 +154,16 @@ public class TextDocumentUriPresentationEndpointTests(ITestOutputHelper testOutp
|
|||
// Arrange
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
var project = await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
return updater.CreateAndAddProject("c:/path/project.csproj");
|
||||
});
|
||||
var hostProject = TestHostProject.Create("c:/path/project.csproj");
|
||||
var hostDocument1 = TestHostDocument.Create(hostProject, "c:/path/index.razor");
|
||||
var hostDocument2 = TestHostDocument.Create(hostProject, "c:/path/fetchdata.razor");
|
||||
|
||||
await projectManager.CreateAndAddDocumentAsync(project, "c:/path/index.razor");
|
||||
await projectManager.CreateAndAddDocumentAsync(project, "c:/path/fetchdata.razor");
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectAdded(hostProject);
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument1, hostDocument1.CreateEmptyTextLoader());
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument2, hostDocument2.CreateEmptyTextLoader());
|
||||
});
|
||||
|
||||
var droppedUri = new Uri("file:///c:/path/fetchdata.razor");
|
||||
var builder = TagHelperDescriptorBuilder.Create("FetchData", "MyAssembly");
|
||||
|
@ -170,15 +177,14 @@ public class TextDocumentUriPresentationEndpointTests(ITestOutputHelper testOutp
|
|||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectWorkspaceStateChanged(project.Key, ProjectWorkspaceState.Create([builder.Build()]));
|
||||
updater.ProjectWorkspaceStateChanged(hostProject.Key, ProjectWorkspaceState.Create([builder.Build()]));
|
||||
});
|
||||
|
||||
var razorFilePath = "c:/path/index.razor";
|
||||
var uri = new Uri(razorFilePath);
|
||||
var uri = new Uri(hostDocument1.FilePath);
|
||||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.DocumentOpened(project.Key, razorFilePath, SourceText.From("<div></div>"));
|
||||
updater.DocumentOpened(hostProject.Key, hostDocument1.FilePath, SourceText.From("<div></div>"));
|
||||
});
|
||||
|
||||
var documentContextFactory = new DocumentContextFactory(projectManager, LoggerFactory);
|
||||
|
@ -308,13 +314,16 @@ public class TextDocumentUriPresentationEndpointTests(ITestOutputHelper testOutp
|
|||
// Arrange
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
var project = await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
return updater.CreateAndAddProject("c:/path/project.csproj");
|
||||
});
|
||||
var hostProject = TestHostProject.Create("c:/path/project.csproj");
|
||||
var hostDocument1 = TestHostDocument.Create(hostProject, "c:/path/index.razor");
|
||||
var hostDocument2 = TestHostDocument.Create(hostProject, "c:/path/fetchdata.razor");
|
||||
|
||||
await projectManager.CreateAndAddDocumentAsync(project, "c:/path/index.razor");
|
||||
await projectManager.CreateAndAddDocumentAsync(project, "c:/path/fetchdata.razor");
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectAdded(hostProject);
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument1, hostDocument1.CreateEmptyTextLoader());
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument2, hostDocument2.CreateEmptyTextLoader());
|
||||
});
|
||||
|
||||
var droppedUri1 = new Uri("file:///c:/path/fetchdata.razor.cs");
|
||||
var droppedUri2 = new Uri("file:///c:/path/fetchdata.razor");
|
||||
|
@ -323,20 +332,19 @@ public class TextDocumentUriPresentationEndpointTests(ITestOutputHelper testOutp
|
|||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectWorkspaceStateChanged(project.Key, ProjectWorkspaceState.Create([builder.Build()]));
|
||||
updater.ProjectWorkspaceStateChanged(hostProject.Key, ProjectWorkspaceState.Create([builder.Build()]));
|
||||
});
|
||||
|
||||
var razorFilePath = "c:/path/index.razor";
|
||||
var uri = new Uri(razorFilePath);
|
||||
var uri = new Uri(hostDocument1.FilePath);
|
||||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.DocumentOpened(project.Key, razorFilePath, SourceText.From("<div></div>"));
|
||||
updater.DocumentOpened(hostProject.Key, hostDocument1.FilePath, SourceText.From("<div></div>"));
|
||||
});
|
||||
|
||||
var documentSnapshot = projectManager
|
||||
.GetLoadedProject(project.Key)
|
||||
.GetDocument(razorFilePath);
|
||||
.GetLoadedProject(hostProject.Key)
|
||||
.GetDocument(hostDocument1.FilePath);
|
||||
Assert.NotNull(documentSnapshot);
|
||||
|
||||
var documentContextFactory = new DocumentContextFactory(projectManager, LoggerFactory);
|
||||
|
|
|
@ -39,12 +39,10 @@ public class IProjectSnapshotManagerExtensionsTest(ITestOutputHelper testOutput)
|
|||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
var miscProject = projectManager.GetMiscellaneousProject();
|
||||
var hostProject = new HostProject(miscProject.FilePath, miscProject.IntermediateOutputPath, FallbackRazorConfiguration.Latest, miscProject.RootNamespace);
|
||||
updater.DocumentAdded(
|
||||
hostProject.Key,
|
||||
new HostDocument(normalizedFilePath, "document.cshtml"),
|
||||
new EmptyTextLoader(normalizedFilePath));
|
||||
var hostProject = MiscFilesHostProject.Instance with { Configuration = FallbackRazorConfiguration.Latest };
|
||||
var hostDocument = new HostDocument(normalizedFilePath, targetPath: "document.cshtml");
|
||||
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument, hostDocument.CreateEmptyTextLoader());
|
||||
});
|
||||
|
||||
// Act
|
||||
|
@ -110,11 +108,13 @@ public class IProjectSnapshotManagerExtensionsTest(ITestOutputHelper testOutput)
|
|||
{
|
||||
// Arrange
|
||||
var documentFilePath = "C:/path/to/document.cshtml";
|
||||
var hostProject = TestHostProject.Create("C:/other/path/to/project.csproj");
|
||||
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectAdded(TestProjectSnapshot.Create("C:/other/path/to/project.csproj").HostProject);
|
||||
updater.ProjectAdded(hostProject);
|
||||
});
|
||||
|
||||
// Act
|
||||
|
@ -125,20 +125,23 @@ public class IProjectSnapshotManagerExtensionsTest(ITestOutputHelper testOutput)
|
|||
public async Task TryResolveAllProjects_OwnerProjectWithOthers_ReturnsTrue()
|
||||
{
|
||||
// Arrange
|
||||
var documentFilePath = "C:/path/to/document.cshtml";
|
||||
var hostProject = TestHostProject.Create("C:/path/to/project.csproj");
|
||||
var hostDocument = TestHostDocument.Create(hostProject, "C:/path/to/document.cshtml");
|
||||
var otherHostProject = TestHostProject.Create("C:/path/to/other/project.csproj");
|
||||
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
var expectedProject = await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
var expectedProject = updater.CreateAndAddProject("C:/path/to/project.csproj");
|
||||
updater.CreateAndAddProject("C:/path/to/other/project.csproj");
|
||||
updater.CreateAndAddDocument(expectedProject, documentFilePath);
|
||||
updater.ProjectAdded(hostProject);
|
||||
updater.ProjectAdded(otherHostProject);
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument, hostDocument.CreateEmptyTextLoader());
|
||||
|
||||
return expectedProject;
|
||||
return updater.GetLoadedProject(hostProject.Key);
|
||||
});
|
||||
|
||||
// Act
|
||||
Assert.True(projectManager.TryResolveAllProjects(documentFilePath, out var projects));
|
||||
Assert.True(projectManager.TryResolveAllProjects(hostDocument.FilePath, out var projects));
|
||||
|
||||
// Assert
|
||||
var project = Assert.Single(projects);
|
||||
|
@ -149,18 +152,21 @@ public class IProjectSnapshotManagerExtensionsTest(ITestOutputHelper testOutput)
|
|||
public async Task TryResolveAllProjects_MiscellaneousOwnerProjectWithOthers_ReturnsTrue()
|
||||
{
|
||||
// Arrange
|
||||
var documentFilePath = Path.Combine(MiscFilesHostProject.Instance.DirectoryPath, "file.cshtml");
|
||||
var miscFilesHostProject = MiscFilesHostProject.Instance;
|
||||
var documentFilePath = Path.Combine(miscFilesHostProject.DirectoryPath, "file.cshtml");
|
||||
documentFilePath = FilePathNormalizer.Normalize(documentFilePath);
|
||||
|
||||
var hostDocument = TestHostDocument.Create(miscFilesHostProject, documentFilePath);
|
||||
var hostProject = TestHostProject.Create("C:/path/to/project.csproj");
|
||||
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
var miscProject = await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
var miscProject = (ProjectSnapshot)projectManager.GetMiscellaneousProject();
|
||||
updater.CreateAndAddDocument(miscProject, documentFilePath);
|
||||
updater.CreateAndAddProject("C:/path/to/project.csproj");
|
||||
updater.DocumentAdded(miscFilesHostProject.Key, hostDocument, hostDocument.CreateEmptyTextLoader());
|
||||
updater.ProjectAdded(hostProject);
|
||||
|
||||
return miscProject;
|
||||
return updater.GetLoadedProject(miscFilesHostProject.Key);
|
||||
});
|
||||
|
||||
// Act
|
||||
|
@ -175,19 +181,21 @@ public class IProjectSnapshotManagerExtensionsTest(ITestOutputHelper testOutput)
|
|||
public async Task TryResolveAllProjects_OwnerProjectDifferentCasing_ReturnsTrue()
|
||||
{
|
||||
// Arrange
|
||||
var documentFilePath = "c:/path/to/document.cshtml";
|
||||
var hostProject = TestHostProject.Create("C:/Path/To/project.csproj");
|
||||
var hostDocument = TestHostDocument.Create(hostProject, "c:/path/to/document.cshtml");
|
||||
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
var ownerProject = await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
var ownerProject = updater.CreateAndAddProject("C:/Path/To/project.csproj");
|
||||
updater.CreateAndAddDocument(ownerProject, documentFilePath);
|
||||
updater.ProjectAdded(hostProject);
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument, hostDocument.CreateEmptyTextLoader());
|
||||
|
||||
return ownerProject;
|
||||
return updater.GetLoadedProject(hostProject.Key);
|
||||
});
|
||||
|
||||
// Act
|
||||
Assert.True(projectManager.TryResolveAllProjects(documentFilePath, out var projects));
|
||||
Assert.True(projectManager.TryResolveAllProjects(hostDocument.FilePath, out var projects));
|
||||
|
||||
// Assert
|
||||
var project = Assert.Single(projects);
|
||||
|
@ -222,32 +230,36 @@ public class IProjectSnapshotManagerExtensionsTest(ITestOutputHelper testOutput)
|
|||
Assert.Equal(MiscFilesHostProject.Instance.FilePath, project.FilePath);
|
||||
}
|
||||
|
||||
private async Task<TestProjectSnapshotManager> CreateProjectManagerAsync(string filePath, bool addToMiscellaneous = false)
|
||||
private async Task<TestProjectSnapshotManager> CreateProjectManagerAsync(string documentFilePath, bool addToMiscellaneous = false)
|
||||
{
|
||||
filePath = FilePathNormalizer.Normalize(filePath);
|
||||
documentFilePath = FilePathNormalizer.Normalize(documentFilePath);
|
||||
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
HostProject hostProject;
|
||||
|
||||
if (addToMiscellaneous)
|
||||
{
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
var miscProject = (ProjectSnapshot)projectManager.GetMiscellaneousProject();
|
||||
updater.CreateAndAddDocument(miscProject, filePath);
|
||||
});
|
||||
hostProject = MiscFilesHostProject.Instance;
|
||||
}
|
||||
else
|
||||
{
|
||||
var projectDirectory = FilePathNormalizer.GetNormalizedDirectoryName(filePath);
|
||||
var projectSnapshot = TestProjectSnapshot.Create(Path.Combine(projectDirectory, "proj.csproj"));
|
||||
var projectDirectory = FilePathNormalizer.GetNormalizedDirectoryName(documentFilePath);
|
||||
hostProject = TestHostProject.Create(Path.Combine(projectDirectory, "proj.csproj"));
|
||||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.ProjectAdded(projectSnapshot.HostProject);
|
||||
updater.CreateAndAddDocument(projectSnapshot, filePath);
|
||||
updater.ProjectAdded(hostProject);
|
||||
});
|
||||
}
|
||||
|
||||
var hostDocument = TestHostDocument.Create(hostProject, documentFilePath);
|
||||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument, hostDocument.CreateEmptyTextLoader());
|
||||
});
|
||||
|
||||
return projectManager;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
// Licensed under the MIT license. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
@ -10,7 +9,6 @@ using Microsoft.AspNetCore.Razor.LanguageServer.Hosting;
|
|||
using Microsoft.AspNetCore.Razor.Test.Common;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem;
|
||||
using Microsoft.CodeAnalysis.Razor.ProjectSystem;
|
||||
using Microsoft.VisualStudio.LanguageServer.Protocol;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
@ -52,7 +50,8 @@ public class WorkspaceDiagnosticRefreshTest(ITestOutputHelper testOutputHelper)
|
|||
await projectSnapshotManager.UpdateAsync(
|
||||
static updater =>
|
||||
{
|
||||
updater.CreateAndAddProject("C:/path/to/project.csproj");
|
||||
var hostProject = TestHostProject.Create("C:/path/to/project.csproj");
|
||||
updater.ProjectAdded(hostProject);
|
||||
});
|
||||
|
||||
await testAccessor.WaitForRefreshAsync();
|
||||
|
@ -86,23 +85,25 @@ public class WorkspaceDiagnosticRefreshTest(ITestOutputHelper testOutputHelper)
|
|||
|
||||
var testAccessor = publisher.GetTestAccessor();
|
||||
|
||||
var hostProject = TestHostProject.Create("C:/path/to/project.csproj");
|
||||
|
||||
var directory = Path.GetDirectoryName(hostProject.FilePath);
|
||||
Assert.NotNull(directory);
|
||||
|
||||
var hostDocument = TestHostDocument.Create(hostProject, Path.Combine(directory, "directory.razor"));
|
||||
|
||||
await projectSnapshotManager.UpdateAsync(
|
||||
static updater =>
|
||||
updater =>
|
||||
{
|
||||
updater.CreateAndAddProject("C:/path/to/project.csproj");
|
||||
updater.ProjectAdded(hostProject);
|
||||
});
|
||||
|
||||
await testAccessor.WaitForRefreshAsync();
|
||||
|
||||
await projectSnapshotManager.UpdateAsync(
|
||||
static updater =>
|
||||
updater =>
|
||||
{
|
||||
var project = (ProjectSnapshot)updater.GetProjects().First();
|
||||
var directory = Path.GetDirectoryName(project.FilePath);
|
||||
Assert.NotNull(directory);
|
||||
|
||||
var filePath = Path.Combine(directory, "document.razor");
|
||||
updater.CreateAndAddDocument(project, filePath);
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument, hostDocument.CreateEmptyTextLoader());
|
||||
});
|
||||
|
||||
await testAccessor.WaitForRefreshAsync();
|
||||
|
@ -136,9 +137,10 @@ public class WorkspaceDiagnosticRefreshTest(ITestOutputHelper testOutputHelper)
|
|||
var testAccessor = publisher.GetTestAccessor();
|
||||
|
||||
await projectSnapshotManager.UpdateAsync(
|
||||
static updater =>
|
||||
updater =>
|
||||
{
|
||||
updater.CreateAndAddProject("C:/path/to/project.csproj");
|
||||
var hostProject = TestHostProject.Create("C:/path/to/project.csproj");
|
||||
updater.ProjectAdded(hostProject);
|
||||
});
|
||||
|
||||
await testAccessor.WaitForRefreshAsync();
|
||||
|
@ -176,7 +178,8 @@ public class WorkspaceDiagnosticRefreshTest(ITestOutputHelper testOutputHelper)
|
|||
await projectSnapshotManager.UpdateAsync(
|
||||
static updater =>
|
||||
{
|
||||
updater.CreateAndAddProject("C:/path/to/project.csproj");
|
||||
var hostProject = TestHostProject.Create("C:/path/to/project.csproj");
|
||||
updater.ProjectAdded(hostProject);
|
||||
});
|
||||
|
||||
await testAccessor.WaitForRefreshAsync();
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the MIT license. See License.txt in the project root for license information.
|
||||
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer;
|
||||
using Microsoft.CodeAnalysis.Razor.ProjectSystem;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem;
|
||||
|
||||
internal static class Extensions
|
||||
{
|
||||
public static TestDocumentSnapshot CreateAndAddDocument(this ProjectSnapshotManager.Updater updater, ProjectSnapshot projectSnapshot, string filePath)
|
||||
{
|
||||
var documentSnapshot = TestDocumentSnapshot.Create(projectSnapshot, filePath);
|
||||
updater.DocumentAdded(projectSnapshot.Key, documentSnapshot.HostDocument, new DocumentSnapshotTextLoader(documentSnapshot));
|
||||
|
||||
return documentSnapshot;
|
||||
}
|
||||
|
||||
public static TestProjectSnapshot CreateAndAddProject(this ProjectSnapshotManager.Updater updater, string filePath)
|
||||
{
|
||||
var projectSnapshot = TestProjectSnapshot.Create(filePath);
|
||||
updater.ProjectAdded(projectSnapshot.HostProject);
|
||||
|
||||
return projectSnapshot;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the MIT license. See License.txt in the project root for license information.
|
||||
|
||||
using Microsoft.AspNetCore.Razor.Utilities;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.Razor.ProjectSystem;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem;
|
||||
|
||||
internal static class TestHostDocument
|
||||
{
|
||||
public static HostDocument Create(HostProject hostProject, string documentFilePath)
|
||||
{
|
||||
var targetPath = FilePathNormalizer.Normalize(documentFilePath);
|
||||
var projectDirectory = FilePathNormalizer.GetNormalizedDirectoryName(hostProject.FilePath);
|
||||
if (targetPath.StartsWith(projectDirectory))
|
||||
{
|
||||
targetPath = targetPath[projectDirectory.Length..];
|
||||
}
|
||||
|
||||
return new(documentFilePath, targetPath);
|
||||
}
|
||||
|
||||
public static TextLoader CreateEmptyTextLoader(this HostDocument hostDocument)
|
||||
=> TestMocks.CreateTextLoader(hostDocument.FilePath, string.Empty);
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the MIT license. See License.txt in the project root for license information.
|
||||
|
||||
using System.IO;
|
||||
using Microsoft.AspNetCore.Razor.Language;
|
||||
using Microsoft.CodeAnalysis.Razor.ProjectSystem;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem;
|
||||
|
||||
internal static class TestHostProject
|
||||
{
|
||||
public static HostProject Create(string filePath)
|
||||
=> Create(filePath, intermediateOutputPath: Path.Combine(Path.GetDirectoryName(filePath) ?? @"\\path", "obj"));
|
||||
|
||||
public static HostProject Create(string filePath, string intermediateOutputPath)
|
||||
=> new(filePath, intermediateOutputPath, RazorConfiguration.Default, rootNamespace: "TestRootNamespace");
|
||||
}
|
|
@ -4,7 +4,6 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer;
|
||||
using Microsoft.AspNetCore.Razor.ProjectEngineHost;
|
||||
using Microsoft.CodeAnalysis.Razor.Logging;
|
||||
using Microsoft.CodeAnalysis.Razor.ProjectSystem;
|
||||
|
@ -20,19 +19,6 @@ internal partial class TestProjectSnapshotManager(
|
|||
{
|
||||
private readonly CancellationToken _disposalToken = disposalToken;
|
||||
|
||||
public Task<TestDocumentSnapshot> CreateAndAddDocumentAsync(ProjectSnapshot projectSnapshot, string filePath)
|
||||
{
|
||||
return UpdateAsync(
|
||||
updater =>
|
||||
{
|
||||
var documentSnapshot = TestDocumentSnapshot.Create(projectSnapshot, filePath);
|
||||
updater.DocumentAdded(projectSnapshot.Key, documentSnapshot.HostDocument, new DocumentSnapshotTextLoader(documentSnapshot));
|
||||
|
||||
return documentSnapshot;
|
||||
},
|
||||
_disposalToken);
|
||||
}
|
||||
|
||||
public Listener ListenToNotifications() => new(this);
|
||||
|
||||
public Task UpdateAsync(Action<Updater> updater)
|
||||
|
|
|
@ -3,12 +3,10 @@
|
|||
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Razor.LanguageServer.Hosting;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.Text;
|
||||
using Moq;
|
||||
using Moq.Language.Flow;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Test.Common;
|
||||
|
||||
|
|
|
@ -3,14 +3,12 @@
|
|||
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Razor.Language;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio;
|
||||
using Microsoft.AspNetCore.Razor.Test.Common.Workspaces;
|
||||
using Microsoft.CodeAnalysis.Razor.ProjectSystem;
|
||||
using Microsoft.CodeAnalysis.Razor.Workspaces;
|
||||
using Microsoft.VisualStudio.Editor.Razor;
|
||||
using Microsoft.VisualStudio.LanguageServer.ContainedLanguage;
|
||||
using Microsoft.VisualStudio.Text;
|
||||
using Microsoft.VisualStudio.Utilities;
|
||||
|
@ -133,10 +131,13 @@ public class CSharpVirtualDocumentFactoryTest : VisualStudioTestBase
|
|||
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
var hostProject = TestHostProject.Create(@"C:\path\to\project.csproj");
|
||||
var hostDocument = TestHostDocument.Create(hostProject, @"C:\path\to\file.razor");
|
||||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
var project = updater.CreateAndAddProject(@"C:\path\to\project.csproj");
|
||||
updater.CreateAndAddDocument(project, @"C:\path\to\file.razor");
|
||||
updater.ProjectAdded(hostProject);
|
||||
updater.DocumentAdded(hostProject.Key, hostDocument, hostDocument.CreateEmptyTextLoader());
|
||||
});
|
||||
|
||||
var factory = new CSharpVirtualDocumentFactory(
|
||||
|
@ -171,25 +172,25 @@ public class CSharpVirtualDocumentFactoryTest : VisualStudioTestBase
|
|||
|
||||
var projectManager = CreateProjectSnapshotManager();
|
||||
|
||||
var hostProject1 = TestHostProject.Create(
|
||||
filePath: @"C:\path\to\project1.csproj",
|
||||
intermediateOutputPath: @"C:\path\to\obj1");
|
||||
|
||||
var hostDocument1 = TestHostDocument.Create(hostProject1, @"C:\path\to\file.razor");
|
||||
|
||||
var hostProject2 = TestHostProject.Create(
|
||||
filePath: @"C:\path\to\project2.csproj",
|
||||
intermediateOutputPath: @"C:\path\to\obj2");
|
||||
|
||||
var hostDocument2 = TestHostDocument.Create(hostProject2, @"C:\path\to\file.razor");
|
||||
|
||||
await projectManager.UpdateAsync(updater =>
|
||||
{
|
||||
var project1 = TestProjectSnapshot.Create(
|
||||
@"C:\path\to\project1.csproj",
|
||||
@"C:\path\to\obj1",
|
||||
documentFilePaths: [],
|
||||
RazorConfiguration.Default,
|
||||
projectWorkspaceState: null);
|
||||
updater.ProjectAdded(project1.HostProject);
|
||||
updater.CreateAndAddDocument(project1, @"C:\path\to\file.razor");
|
||||
updater.ProjectAdded(hostProject1);
|
||||
updater.DocumentAdded(hostProject1.Key, hostDocument1, hostDocument1.CreateEmptyTextLoader());
|
||||
|
||||
var project2 = TestProjectSnapshot.Create(
|
||||
@"C:\path\to\project2.csproj",
|
||||
@"C:\path\to\obj2",
|
||||
documentFilePaths: [],
|
||||
RazorConfiguration.Default,
|
||||
projectWorkspaceState: null);
|
||||
updater.ProjectAdded(project2.HostProject);
|
||||
updater.CreateAndAddDocument(project2, @"C:\path\to\file.razor");
|
||||
updater.ProjectAdded(hostProject2);
|
||||
updater.DocumentAdded(hostProject2.Key, hostDocument2, hostDocument2.CreateEmptyTextLoader());
|
||||
});
|
||||
|
||||
var languageServerFeatureOptions = new TestLanguageServerFeatureOptions(includeProjectKeyInGeneratedFilePath: true);
|
||||
|
|
Загрузка…
Ссылка в новой задаче