public DefaultProjectSnapshotTest() { TagHelperResolver = new TestTagHelperResolver(); HostProject = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_2_0); HostProjectWithConfigurationChange = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_1_0); var projectId = ProjectId.CreateNewId("Test"); var solution = Workspace.CurrentSolution.AddProject(ProjectInfo.Create( projectId, VersionStamp.Default, "Test", "Test", LanguageNames.CSharp, TestProjectData.SomeProject.FilePath)); WorkspaceProject = solution.GetProject(projectId); SomeTagHelpers = new List <TagHelperDescriptor> { TagHelperDescriptorBuilder.Create("Test1", "TestAssembly").Build() }; Documents = new HostDocument[] { TestProjectData.SomeProjectFile1, TestProjectData.SomeProjectFile2, // linked file TestProjectData.AnotherProjectNestedFile3, }; }
public DefaultProjectWorkspaceStateGeneratorTest() { var tagHelperResolver = new TestTagHelperResolver(); tagHelperResolver.TagHelpers.Add(TagHelperDescriptorBuilder.Create("ResolvableTagHelper", "TestAssembly").Build()); ResolvableTagHelpers = tagHelperResolver.TagHelpers; var workspaceServices = new List <IWorkspaceService>() { tagHelperResolver }; var testServices = TestServices.Create(workspaceServices, Enumerable.Empty <ILanguageService>()); Workspace = TestWorkspace.Create(testServices); var projectId = ProjectId.CreateNewId("Test"); var solution = Workspace.CurrentSolution.AddProject(ProjectInfo.Create( projectId, VersionStamp.Default, "Test", "Test", LanguageNames.CSharp, TestProjectData.SomeProject.FilePath)); WorkspaceProject = solution.GetProject(projectId); ProjectSnapshot = new DefaultProjectSnapshot(ProjectState.Create(Workspace.Services, TestProjectData.SomeProject)); ProjectWorkspaceStateWithTagHelpers = new ProjectWorkspaceState(new[] { TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly").Build(), }, default); }
public DefaultProjectSnapshotManagerTest() { var someTagHelpers = new List <TagHelperDescriptor>(); someTagHelpers.Add(TagHelperDescriptorBuilder.Create("Test1", "TestAssembly").Build()); TagHelperResolver = new TestTagHelperResolver() { TagHelpers = someTagHelpers, }; Documents = new HostDocument[] { TestProjectData.SomeProjectFile1, TestProjectData.SomeProjectFile2, // linked file TestProjectData.AnotherProjectNestedFile3, TestProjectData.SomeProjectComponentFile1, TestProjectData.SomeProjectComponentFile2, }; HostProject = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_2_0, TestProjectData.SomeProject.RootNamespace); HostProjectWithConfigurationChange = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_1_0, TestProjectData.SomeProject.RootNamespace); ProjectManager = new TestProjectSnapshotManager(Dispatcher, Enumerable.Empty <ProjectSnapshotChangeTrigger>(), Workspace); ProjectWorkspaceStateWithTagHelpers = new ProjectWorkspaceState(TagHelperResolver.TagHelpers, default); SourceText = SourceText.From("Hello world"); }
public async Task GetTagHelpersAsync_OperationCanceledException_DoesNotGetWrapped() { // Arrange ProjectManager.ProjectAdded(HostProject_For_2_0); var projectSnapshot = ProjectManager.GetLoadedProject("Test.csproj"); var cancellationToken = new CancellationToken(canceled: true); var resolver = new TestTagHelperResolver(EngineFactory, ErrorReporter, Workspace) { OnResolveInProcess = (p) => { Assert.Same(projectSnapshot, p); return(Task.FromResult(TagHelperResolutionResult.Empty)); }, OnResolveOutOfProcess = (f, p) => { Assert.Same(projectSnapshot, p); throw new OperationCanceledException(); } }; await Assert.ThrowsAsync <OperationCanceledException>(async() => await resolver.GetTagHelpersAsync(WorkspaceProject, projectSnapshot, cancellationToken)); }
public DefaultProjectSnapshotManagerTest() { TagHelperResolver = new TestTagHelperResolver(); Documents = new HostDocument[] { TestProjectData.SomeProjectFile1, TestProjectData.SomeProjectFile2, // linked file TestProjectData.AnotherProjectNestedFile3, TestProjectData.SomeProjectComponentFile1, TestProjectData.SomeProjectComponentFile2, }; HostProject = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_2_0, TestProjectData.SomeProject.RootNamespace); HostProjectWithConfigurationChange = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_1_0, TestProjectData.SomeProject.RootNamespace); ProjectManager = new TestProjectSnapshotManager(Dispatcher, Enumerable.Empty <ProjectSnapshotChangeTrigger>(), Workspace); ProjectWorkspaceStateWithTagHelpers = new ProjectWorkspaceState(TagHelperResolver.TagHelpers); SourceText = SourceText.From("Hello world"); }
public DefaultProjectSnapshotTest() { TagHelperResolver = new TestTagHelperResolver(); HostProject = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_2_0, TestProjectData.SomeProject.RootNamespace); HostProjectWithConfigurationChange = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_1_0, TestProjectData.SomeProject.RootNamespace); ProjectWorkspaceState = new ProjectWorkspaceState(new[] { TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly").Build(), }, default); SomeTagHelpers = new List <TagHelperDescriptor> { TagHelperDescriptorBuilder.Create("Test1", "TestAssembly").Build() }; Documents = new HostDocument[] { TestProjectData.SomeProjectFile1, TestProjectData.SomeProjectFile2, // linked file TestProjectData.AnotherProjectNestedFile3, }; }
public DocumentStateTest() { TagHelperResolver = new TestTagHelperResolver(); HostServices = TestServices.Create( new IWorkspaceService[] { new TestProjectSnapshotProjectEngineFactory(), }, new ILanguageService[] { TagHelperResolver, }); HostProject = new HostProject("c:\\MyProject\\Test.csproj", FallbackRazorConfiguration.MVC_2_0); HostProjectWithConfigurationChange = new HostProject("c:\\MyProject\\Test.csproj", FallbackRazorConfiguration.MVC_1_0); Workspace = TestWorkspace.Create(HostServices); var projectId = ProjectId.CreateNewId("Test"); var solution = Workspace.CurrentSolution.AddProject(ProjectInfo.Create( projectId, VersionStamp.Default, "Test", "Test", LanguageNames.CSharp, "c:\\MyProject\\Test.csproj")); WorkspaceProject = solution.GetProject(projectId); SomeTagHelpers = new List <TagHelperDescriptor>(); SomeTagHelpers.Add(TagHelperDescriptorBuilder.Create("Test1", "TestAssembly").Build()); Document = new HostDocument("c:\\MyProject\\File.cshtml", "File.cshtml"); }
public DocumentStateTest() { TagHelperResolver = new TestTagHelperResolver(); HostProject = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_2_0); HostProjectWithConfigurationChange = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_1_0); var projectId = ProjectId.CreateNewId("Test"); var solution = Workspace.CurrentSolution.AddProject(ProjectInfo.Create( projectId, VersionStamp.Default, "Test", "Test", LanguageNames.CSharp, TestProjectData.SomeProject.FilePath)); WorkspaceProject = solution.GetProject(projectId); SomeTagHelpers = new List <TagHelperDescriptor>(); SomeTagHelpers.Add(TagHelperDescriptorBuilder.Create("Test1", "TestAssembly").Build()); HostDocument = TestProjectData.SomeProjectFile1; Text = SourceText.From("Hello, world!"); TextLoader = () => Task.FromResult(TextAndVersion.Create(Text, VersionStamp.Create())); }
public void CalculateTagHelpersFromDelta_NewProject() { // Arrange var resolver = new TestTagHelperResolver(EngineFactory, ErrorReporter, Workspace); var initialDelta = new TagHelperDeltaResult(Delta: false, ResultId: 1, Project1TagHelpers, Array.Empty <TagHelperDescriptor>()); // Act var tagHelpers = resolver.PublicProduceTagHelpersFromDelta(Project1FilePath, lastResultId: -1, initialDelta); // Assert Assert.Equal(Project1TagHelpers, tagHelpers); }
public DefaultVisualStudioDocumentTrackerTest() { RazorCoreContentType = Mock.Of <IContentType>(c => c.IsOfType(RazorLanguage.ContentType) == true); TextBuffer = Mock.Of <ITextBuffer>(b => b.ContentType == RazorCoreContentType); FilePath = "C:/Some/Path/TestDocumentTracker.cshtml"; ProjectPath = "C:/Some/Path/TestProject.csproj"; ImportDocumentManager = Mock.Of <ImportDocumentManager>(); WorkspaceEditorSettings = new DefaultWorkspaceEditorSettings(Mock.Of <ForegroundDispatcher>(), Mock.Of <EditorSettingsManager>()); TagHelperResolver = new TestTagHelperResolver(); SomeTagHelpers = new List <TagHelperDescriptor>() { TagHelperDescriptorBuilder.Create("test", "test").Build(), }; HostServices = TestServices.Create( new IWorkspaceService[] { }, new ILanguageService[] { TagHelperResolver, }); Workspace = TestWorkspace.Create(HostServices, w => { WorkspaceProject = w.AddProject(ProjectInfo.Create( ProjectId.CreateNewId(), new VersionStamp(), "Test1", "TestAssembly", LanguageNames.CSharp, filePath: ProjectPath)); }); ProjectManager = new TestProjectSnapshotManager(Dispatcher, Workspace) { AllowNotifyListeners = true }; HostProject = new HostProject(ProjectPath, FallbackRazorConfiguration.MVC_2_1); OtherHostProject = new HostProject(ProjectPath, FallbackRazorConfiguration.MVC_2_0); DocumentTracker = new DefaultVisualStudioDocumentTracker( Dispatcher, FilePath, ProjectPath, ProjectManager, WorkspaceEditorSettings, Workspace, TextBuffer, ImportDocumentManager); }
public async Task GetTagHelpersAsync_WithNonInitializedProject_Noops() { // Arrange ProjectManager.HostProjectAdded(HostProject_For_2_0); var project = ProjectManager.GetProjectWithFilePath("Test.csproj"); var resolver = new TestTagHelperResolver(EngineFactory, ErrorReporter, Workspace); var result = await resolver.GetTagHelpersAsync(project); // Assert Assert.Same(TagHelperResolutionResult.Empty, result); }
public void CalculateTagHelpersFromDelta_ReplacedTagHelpers() { // Arrange var resolver = new TestTagHelperResolver(EngineFactory, ErrorReporter, Workspace); var initialDelta = new TagHelperDeltaResult(Delta: false, ResultId: 1, Project1TagHelpers, Array.Empty <TagHelperDescriptor>()); resolver.PublicProduceTagHelpersFromDelta(Project1FilePath, lastResultId: -1, initialDelta); var changedDelta = new TagHelperDeltaResult(Delta: true, initialDelta.ResultId + 1, new[] { TagHelper2_Project2 }, new[] { TagHelper2_Project1 }); // Act var tagHelpers = resolver.PublicProduceTagHelpersFromDelta(Project1FilePath, initialDelta.ResultId, changedDelta); // Assert Assert.Equal(new[] { TagHelper1_Project1, TagHelper2_Project2 }, tagHelpers.OrderBy(th => th.Name)); }
public void CalculateTagHelpersFromDelta_DeltaFailedToApplyToKnownProject() { // Arrange var resolver = new TestTagHelperResolver(EngineFactory, ErrorReporter, Workspace); var initialDelta = new TagHelperDeltaResult(Delta: false, ResultId: 1, Project1TagHelpers, Array.Empty <TagHelperDescriptor>()); resolver.PublicProduceTagHelpersFromDelta(Project1FilePath, lastResultId: -1, initialDelta); var newTagHelperSet = new[] { TagHelper1_Project1 }; var failedDeltaApplication = new TagHelperDeltaResult(Delta: false, initialDelta.ResultId + 1, newTagHelperSet, Array.Empty <TagHelperDescriptor>()); // Act var tagHelpers = resolver.PublicProduceTagHelpersFromDelta(Project1FilePath, initialDelta.ResultId, failedDeltaApplication); // Assert Assert.Equal(newTagHelperSet, tagHelpers); }
public DocumentStateTest() { TagHelperResolver = new TestTagHelperResolver(); HostProject = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_2_0, TestProjectData.SomeProject.RootNamespace); HostProjectWithConfigurationChange = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_1_0, TestProjectData.SomeProject.RootNamespace); ProjectWorkspaceState = new ProjectWorkspaceState(new[] { TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly").Build(), }, default); HostDocument = TestProjectData.SomeProjectFile1; Text = SourceText.From("Hello, world!"); TextLoader = () => Task.FromResult(TextAndVersion.Create(Text, VersionStamp.Create())); }
public ProjectStateTest() { TagHelperResolver = new TestTagHelperResolver(); HostServices = TestServices.Create( new IWorkspaceService[] { new TestProjectSnapshotProjectEngineFactory(), }, new ILanguageService[] { TagHelperResolver, }); HostProject = new HostProject("c:\\MyProject\\Test.csproj", FallbackRazorConfiguration.MVC_2_0); HostProjectWithConfigurationChange = new HostProject("c:\\MyProject\\Test.csproj", FallbackRazorConfiguration.MVC_1_0); Workspace = TestWorkspace.Create(HostServices); var projectId = ProjectId.CreateNewId("Test"); var solution = Workspace.CurrentSolution.AddProject(ProjectInfo.Create( projectId, VersionStamp.Default, "Test", "Test", LanguageNames.CSharp, "c:\\MyProject\\Test.csproj")); WorkspaceProject = solution.GetProject(projectId); SomeTagHelpers = new List <TagHelperDescriptor>(); SomeTagHelpers.Add(TagHelperDescriptorBuilder.Create("Test1", "TestAssembly").Build()); Documents = new HostDocument[] { new HostDocument("c:\\MyProject\\File.cshtml", "File.cshtml"), new HostDocument("c:\\MyProject\\Index.cshtml", "Index.cshtml"), // linked file new HostDocument("c:\\SomeOtherProject\\Index.cshtml", "Pages\\Index.cshtml"), }; Text = SourceText.From("Hello, world!"); TextLoader = () => Task.FromResult(TextAndVersion.Create(Text, VersionStamp.Create())); }
public async Task GetTagHelpersAsync_WithNonSerializableCustomFactory_StaysInProcess() { // Arrange ProjectManager.ProjectAdded(HostProject_For_NonSerializableConfiguration); var projectSnapshot = ProjectManager.GetLoadedProject("Test.csproj"); var resolver = new TestTagHelperResolver(EngineFactory, ErrorReporter, Workspace) { OnResolveInProcess = (p) => { Assert.Same(projectSnapshot, p); return(Task.FromResult(TagHelperResolutionResult.Empty)); }, }; var result = await resolver.GetTagHelpersAsync(WorkspaceProject, projectSnapshot); // Assert Assert.Same(TagHelperResolutionResult.Empty, result); }
public async Task GetTagHelpersAsync_WithSerializableCustomFactory_GoesOutOfProcess() { // Arrange ProjectManager.ProjectAdded(HostProject_For_2_0); var projectSnapshot = ProjectManager.GetLoadedProject("Test.csproj"); var resolver = new TestTagHelperResolver(EngineFactory, ErrorReporter, Workspace) { OnResolveOutOfProcess = (f, p) => { Assert.Same(CustomFactories[0].Value, f); Assert.Same(projectSnapshot, p); return(Task.FromResult(TagHelperResolutionResult.Empty)); }, }; var result = await resolver.GetTagHelpersAsync(WorkspaceProject, projectSnapshot); // Assert Assert.Same(TagHelperResolutionResult.Empty, result); }
protected override void ConfigureLanguageServices(List <ILanguageService> services) { TagHelperResolver = new TestTagHelperResolver(); services.Add(TagHelperResolver); }
protected override void ConfigureWorkspaceServices(List <IWorkspaceService> services) { TagHelperResolver = new TestTagHelperResolver(); services.Add(TagHelperResolver); }
public DefaultProjectSnapshotManagerTest() { TagHelperResolver = new TestTagHelperResolver(); HostServices = TestServices.Create( new IWorkspaceService[] { new TestProjectSnapshotProjectEngineFactory(), }, new ILanguageService[] { TagHelperResolver, }); Documents = new HostDocument[] { new HostDocument("c:\\MyProject\\File.cshtml", "File.cshtml"), new HostDocument("c:\\MyProject\\Index.cshtml", "Index.cshtml"), // linked file new HostDocument("c:\\SomeOtherProject\\Index.cshtml", "Pages\\Index.cshtml"), }; HostProject = new HostProject("c:\\MyProject\\Test.csproj", FallbackRazorConfiguration.MVC_2_0); HostProjectWithConfigurationChange = new HostProject("c:\\MyProject\\Test.csproj", FallbackRazorConfiguration.MVC_1_0); Workspace = TestWorkspace.Create(HostServices); ProjectManager = new TestProjectSnapshotManager(Dispatcher, Enumerable.Empty <ProjectSnapshotChangeTrigger>(), Workspace); var projectId = ProjectId.CreateNewId("Test"); var solution = Workspace.CurrentSolution.AddProject(ProjectInfo.Create( projectId, VersionStamp.Default, "Test", "Test", LanguageNames.CSharp, "c:\\MyProject\\Test.csproj")); WorkspaceProject = solution.GetProject(projectId); var vbProjectId = ProjectId.CreateNewId("VB"); solution = solution.AddProject(ProjectInfo.Create( vbProjectId, VersionStamp.Default, "VB", "VB", LanguageNames.VisualBasic, "VB.vbproj")); VBWorkspaceProject = solution.GetProject(vbProjectId); var projectWithoutFilePathId = ProjectId.CreateNewId("NoFile"); solution = solution.AddProject(ProjectInfo.Create( projectWithoutFilePathId, VersionStamp.Default, "NoFile", "NoFile", LanguageNames.CSharp)); WorkspaceProjectWithoutFilePath = solution.GetProject(projectWithoutFilePathId); // Approximates a project with multi-targeting var projectIdWithDifferentTfm = ProjectId.CreateNewId("TestWithDifferentTfm"); solution = Workspace.CurrentSolution.AddProject(ProjectInfo.Create( projectIdWithDifferentTfm, VersionStamp.Default, "Test (Different TFM)", "Test", LanguageNames.CSharp, "c:\\MyProject\\Test.csproj")); WorkspaceProjectWithDifferentTfm = solution.GetProject(projectIdWithDifferentTfm); SomeTagHelpers = TagHelperResolver.TagHelpers; SomeTagHelpers.Add(TagHelperDescriptorBuilder.Create("Test1", "TestAssembly").Build()); SourceText = SourceText.From("Hello world"); }
public DefaultProjectSnapshotManagerTest() { // Force VB and C# to Load GC.KeepAlive(typeof(Microsoft.CodeAnalysis.CSharp.SyntaxFactory)); GC.KeepAlive(typeof(Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory)); TagHelperResolver = new TestTagHelperResolver(); Documents = new HostDocument[] { TestProjectData.SomeProjectFile1, TestProjectData.SomeProjectFile2, // linked file TestProjectData.AnotherProjectNestedFile3, TestProjectData.SomeProjectComponentFile1, TestProjectData.SomeProjectComponentFile2, }; HostProject = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_2_0); HostProjectWithConfigurationChange = new HostProject(TestProjectData.SomeProject.FilePath, FallbackRazorConfiguration.MVC_1_0); ProjectManager = new TestProjectSnapshotManager(Dispatcher, Enumerable.Empty <ProjectSnapshotChangeTrigger>(), Workspace); var projectId = ProjectId.CreateNewId("Test"); var solution = Workspace.CurrentSolution.AddProject(ProjectInfo.Create( projectId, VersionStamp.Default, "Test", "Test", LanguageNames.CSharp, TestProjectData.SomeProject.FilePath)); WorkspaceProject = solution.GetProject(projectId); var vbProjectId = ProjectId.CreateNewId("VB"); solution = solution.AddProject(ProjectInfo.Create( vbProjectId, VersionStamp.Default, "VB", "VB", LanguageNames.VisualBasic, "VB.vbproj")); VBWorkspaceProject = solution.GetProject(vbProjectId); var projectWithoutFilePathId = ProjectId.CreateNewId("NoFile"); solution = solution.AddProject(ProjectInfo.Create( projectWithoutFilePathId, VersionStamp.Default, "NoFile", "NoFile", LanguageNames.CSharp)); WorkspaceProjectWithoutFilePath = solution.GetProject(projectWithoutFilePathId); // Approximates a project with multi-targeting var projectIdWithDifferentTfm = ProjectId.CreateNewId("TestWithDifferentTfm"); solution = Workspace.CurrentSolution.AddProject(ProjectInfo.Create( projectIdWithDifferentTfm, VersionStamp.Default, "Test (Different TFM)", "Test", LanguageNames.CSharp, TestProjectData.SomeProject.FilePath)); WorkspaceProjectWithDifferentTfm = solution.GetProject(projectIdWithDifferentTfm); SomeTagHelpers = TagHelperResolver.TagHelpers; SomeTagHelpers.Add(TagHelperDescriptorBuilder.Create("Test1", "TestAssembly").Build()); SourceText = SourceText.From("Hello world"); }