From f025a27f042e13d0a753d559f2f2e9cec8ae0a1c Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Tue, 9 Jan 2018 12:33:49 -0800 Subject: [PATCH] Unify how AdhocWorkspace is constructed. - Created a new `TestWorkspace` type to lock on `AdhocWorkspace` construction. This type can't be constructed/changed in parallel. - Updated test usages of `AdhocWorkspace` to make use of `TestWorkspace`. - Added a `Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common` project to have the `TestWorkspace` type. #1913 --- Razor.sln | 11 +++++++ build/repo.props | 1 + ...alysis.Razor.Workspaces.Test.Common.csproj | 15 ++++++++++ .../TestWorkspace.cs | 23 ++++++++++++++ ....CodeAnalysis.Razor.Workspaces.Test.csproj | 2 +- .../DefaultProjectSnapshotManagerTest.cs | 2 +- .../DefaultProjectSnapshotTest.cs | 6 +++- ...rkspaceProjectSnapshotChangeTriggerTest.cs | 30 ++++++++++++++----- ...sualStudio.Editor.Razor.Test.Common.csproj | 5 +--- .../DefaultRazorDocumentManagerTest.cs | 2 +- ...DefaultTemplateEngineFactoryServiceTest.cs | 11 +++++-- .../DefaultTextBufferProviderTest.cs | 17 ++++++----- .../DefaultVisualStudioDocumentTrackerTest.cs | 26 +++++++++++----- .../RazorDirectiveCompletionProviderTest.cs | 28 ++++++++++------- .../RazorTextViewConnectionListenerTest.cs | 1 - .../ProjectSnapshotWorkerQueueTest.cs | 13 ++++++-- ...UpdatesProjectSnapshotChangeTriggerTest.cs | 16 ++++++---- .../ProjectBuildChangeTriggerTest.cs | 14 +++++---- 18 files changed, 165 insertions(+), 58 deletions(-) create mode 100644 test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common.csproj create mode 100644 test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common/TestWorkspace.cs diff --git a/Razor.sln b/Razor.sln index f32eb14ffb..469db66c4d 100644 --- a/Razor.sln +++ b/Razor.sln @@ -92,6 +92,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Razor. EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{C2C98051-0F39-47F2-80B6-E72B29159F2C}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common", "test\Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common\Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common.csproj", "{933101DA-C4CC-401A-AA01-2784E1025B7F}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Razor.Tools", "src\Microsoft.AspNetCore.Razor.Tools\Microsoft.AspNetCore.Razor.Tools.csproj", "{3E7F2D49-3B45-45A8-9893-F73EC1EEBAAB}" EndProject Global @@ -388,6 +390,14 @@ Global {3E7F2D49-3B45-45A8-9893-F73EC1EEBAAB}.Release|Any CPU.Build.0 = Release|Any CPU {3E7F2D49-3B45-45A8-9893-F73EC1EEBAAB}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU {3E7F2D49-3B45-45A8-9893-F73EC1EEBAAB}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU + {933101DA-C4CC-401A-AA01-2784E1025B7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {933101DA-C4CC-401A-AA01-2784E1025B7F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {933101DA-C4CC-401A-AA01-2784E1025B7F}.DebugNoVSIX|Any CPU.ActiveCfg = Debug|Any CPU + {933101DA-C4CC-401A-AA01-2784E1025B7F}.DebugNoVSIX|Any CPU.Build.0 = Debug|Any CPU + {933101DA-C4CC-401A-AA01-2784E1025B7F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {933101DA-C4CC-401A-AA01-2784E1025B7F}.Release|Any CPU.Build.0 = Release|Any CPU + {933101DA-C4CC-401A-AA01-2784E1025B7F}.ReleaseNoVSIX|Any CPU.ActiveCfg = Release|Any CPU + {933101DA-C4CC-401A-AA01-2784E1025B7F}.ReleaseNoVSIX|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -429,6 +439,7 @@ Global {323553F0-14AB-4FBD-9CF0-1CC0BE8056F8} = {92463391-81BE-462B-AC3C-78C6C760741F} {6205467F-E381-4C42-AEEC-763BD62B3D5E} = {C2C98051-0F39-47F2-80B6-E72B29159F2C} {3E7F2D49-3B45-45A8-9893-F73EC1EEBAAB} = {3C0D6505-79B3-49D0-B4C3-176F0F1836ED} + {933101DA-C4CC-401A-AA01-2784E1025B7F} = {92463391-81BE-462B-AC3C-78C6C760741F} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0035341D-175A-4D05-95E6-F1C2785A1E26} diff --git a/build/repo.props b/build/repo.props index 9576374c85..fd60435af5 100644 --- a/build/repo.props +++ b/build/repo.props @@ -10,6 +10,7 @@ + diff --git a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common.csproj b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common.csproj new file mode 100644 index 0000000000..9952960ebb --- /dev/null +++ b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common.csproj @@ -0,0 +1,15 @@ + + + + net46;$(StandardTestTfms) + + + + + + + + + + + diff --git a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common/TestWorkspace.cs b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common/TestWorkspace.cs new file mode 100644 index 0000000000..b375509708 --- /dev/null +++ b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.Common/TestWorkspace.cs @@ -0,0 +1,23 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace Microsoft.CodeAnalysis +{ + public static class TestWorkspace + { + private static readonly object WorkspaceLock = new object(); + + public static Workspace Create(Action configure = null) + { + lock (WorkspaceLock) + { + var workspace = new AdhocWorkspace(); + configure?.Invoke(workspace); + + return workspace; + } + } + } +} diff --git a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.csproj b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.csproj index bb5f05b323..d1ad2a9fab 100644 --- a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.csproj +++ b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.csproj @@ -13,7 +13,7 @@ - + diff --git a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotManagerTest.cs b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotManagerTest.cs index 3edbef29ca..eda57ab8ba 100644 --- a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotManagerTest.cs +++ b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotManagerTest.cs @@ -12,7 +12,7 @@ namespace Microsoft.CodeAnalysis.Razor.ProjectSystem { public DefaultProjectSnapshotManagerTest() { - Workspace = new AdhocWorkspace(); + Workspace = TestWorkspace.Create(); ProjectManager = new TestProjectSnapshotManager(Enumerable.Empty(), Workspace); } diff --git a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotTest.cs b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotTest.cs index be14178ae9..e0d04fb0e8 100644 --- a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotTest.cs +++ b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DefaultProjectSnapshotTest.cs @@ -102,7 +102,11 @@ namespace Microsoft.CodeAnalysis.Razor.ProjectSystem private Project GetProject(string name) { - var project = new AdhocWorkspace().AddProject(name, LanguageNames.CSharp); + Project project = null; + TestWorkspace.Create(workspace => + { + project = workspace.AddProject(name, LanguageNames.CSharp); + }); return project; } } diff --git a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/WorkspaceProjectSnapshotChangeTriggerTest.cs b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/WorkspaceProjectSnapshotChangeTriggerTest.cs index c458b5388c..293f6e8bf0 100644 --- a/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/WorkspaceProjectSnapshotChangeTriggerTest.cs +++ b/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/WorkspaceProjectSnapshotChangeTriggerTest.cs @@ -14,15 +14,31 @@ namespace Microsoft.CodeAnalysis.Razor.ProjectSystem { public WorkspaceProjectSnapshotChangeTriggerTest() { - Workspace = new AdhocWorkspace(); - EmptySolution = Workspace.CurrentSolution.GetIsolatedSolution(); + Solution emptySolution = null; + Project project1 = null; + Project project2 = null; + Project project3 = null; + Solution solutionWithTwoProjects = null; + Solution solutionWithOneProject = null; - ProjectNumberOne = Workspace.CurrentSolution.AddProject("One", "One", LanguageNames.CSharp); - ProjectNumberTwo = ProjectNumberOne.Solution.AddProject("Two", "Two", LanguageNames.CSharp); - SolutionWithTwoProjects = ProjectNumberTwo.Solution; + Workspace = TestWorkspace.Create(ws => + { + emptySolution = ws.CurrentSolution.GetIsolatedSolution(); + project1 = ws.CurrentSolution.AddProject("One", "One", LanguageNames.CSharp); + project2 = project1.Solution.AddProject("Two", "Two", LanguageNames.CSharp); + solutionWithTwoProjects = project2.Solution; + + project3 = emptySolution.GetIsolatedSolution().AddProject("Three", "Three", LanguageNames.CSharp); + solutionWithOneProject = project3.Solution; + }); + + EmptySolution = emptySolution; + ProjectNumberOne = project1; + ProjectNumberTwo = project2; + ProjectNumberThree = project3; + SolutionWithTwoProjects = solutionWithTwoProjects; + SolutionWithOneProject = solutionWithOneProject; - ProjectNumberThree = EmptySolution.GetIsolatedSolution().AddProject("Three", "Three", LanguageNames.CSharp); - SolutionWithOneProject = ProjectNumberThree.Solution; } private Solution EmptySolution { get; } diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test.Common/Microsoft.VisualStudio.Editor.Razor.Test.Common.csproj b/test/Microsoft.VisualStudio.Editor.Razor.Test.Common/Microsoft.VisualStudio.Editor.Razor.Test.Common.csproj index b96e8ac612..18327289a4 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test.Common/Microsoft.VisualStudio.Editor.Razor.Test.Common.csproj +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test.Common/Microsoft.VisualStudio.Editor.Razor.Test.Common.csproj @@ -9,15 +9,12 @@ - + - - - diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultRazorDocumentManagerTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultRazorDocumentManagerTest.cs index 228225137c..d950f52590 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultRazorDocumentManagerTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultRazorDocumentManagerTest.cs @@ -31,7 +31,7 @@ namespace Microsoft.VisualStudio.Editor.Razor private ImportDocumentManager ImportDocumentManager => Mock.Of(); - private Workspace Workspace => new AdhocWorkspace(); + private Workspace Workspace => TestWorkspace.Create(); private TextBufferProjectService SupportedProjectService { get; } = Mock.Of( s => s.GetHostProject(It.IsAny()) == Mock.Of() && diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTemplateEngineFactoryServiceTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTemplateEngineFactoryServiceTest.cs index 863b02110f..423ae8566a 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTemplateEngineFactoryServiceTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTemplateEngineFactoryServiceTest.cs @@ -18,10 +18,15 @@ namespace Microsoft.VisualStudio.Editor.Razor { public DefaultTemplateEngineFactoryServiceTest() { - Workspace = new AdhocWorkspace(); + Project project = null; - var info = ProjectInfo.Create(ProjectId.CreateNewId("Test"), VersionStamp.Default, "Test", "Test", LanguageNames.CSharp, filePath: "/TestPath/SomePath/Test.csproj"); - Project = Workspace.CurrentSolution.AddProject(info).GetProject(info.Id); + Workspace = TestWorkspace.Create(workspace => + { + var info = ProjectInfo.Create(ProjectId.CreateNewId("Test"), VersionStamp.Default, "Test", "Test", LanguageNames.CSharp, filePath: "/TestPath/SomePath/Test.csproj"); + project = workspace.CurrentSolution.AddProject(info).GetProject(info.Id); + }); + + Project = project; } // We don't actually look at the project, we rely on the ProjectStateManager diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTextBufferProviderTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTextBufferProviderTest.cs index b4dad2044b..fef720a47e 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTextBufferProviderTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultTextBufferProviderTest.cs @@ -92,13 +92,16 @@ namespace Microsoft.VisualStudio.Editor.Razor private static Document CreateDocumentWithoutText() { - var project = ProjectInfo - .Create(ProjectId.CreateNewId(), VersionStamp.Default, "TestProject", "TestAssembly", LanguageNames.CSharp) - .WithFilePath("/TestProject.csproj"); - var workspace = new AdhocWorkspace(); - workspace.AddProject(project); - var documentInfo = DocumentInfo.Create(DocumentId.CreateNewId(project.Id), "Test.cshtml"); - var document = workspace.AddDocument(documentInfo); + Document document = null; + TestWorkspace.Create(workspace => + { + var project = ProjectInfo + .Create(ProjectId.CreateNewId(), VersionStamp.Default, "TestProject", "TestAssembly", LanguageNames.CSharp) + .WithFilePath("/TestProject.csproj"); + workspace.AddProject(project); + var documentInfo = DocumentInfo.Create(DocumentId.CreateNewId(project.Id), "Test.cshtml"); + document = workspace.AddDocument(documentInfo); + }); return document; } diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioDocumentTrackerTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioDocumentTrackerTest.cs index 546591f849..7712cd49eb 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioDocumentTrackerTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioDocumentTrackerTest.cs @@ -29,7 +29,7 @@ namespace Microsoft.VisualStudio.Editor.Razor private EditorSettingsManagerInternal EditorSettingsManager => new DefaultEditorSettingsManagerInternal(Dispatcher); - private Workspace Workspace => new AdhocWorkspace(); + private Workspace Workspace => TestWorkspace.Create(); private ImportDocumentManager ImportDocumentManager => Mock.Of(); @@ -57,9 +57,13 @@ namespace Microsoft.VisualStudio.Editor.Razor public void ProjectManager_Changed_ProjectChanged_TriggersContextChanged() { // Arrange - var documentTracker = new DefaultVisualStudioDocumentTracker(Dispatcher, FilePath, ProjectPath, ProjectManager, EditorSettingsManager, Workspace, TextBuffer, ImportDocumentManager); + Project project = null; + var workspace = TestWorkspace.Create(ws => + { + project = ws.AddProject(ProjectInfo.Create(ProjectId.CreateNewId(), new VersionStamp(), "Test1", "TestAssembly", LanguageNames.CSharp, filePath: "C:/Some/Path/TestProject.csproj")); + }); + var documentTracker = new DefaultVisualStudioDocumentTracker(Dispatcher, FilePath, ProjectPath, ProjectManager, EditorSettingsManager, workspace, TextBuffer, ImportDocumentManager); - var project = new AdhocWorkspace().AddProject(ProjectInfo.Create(ProjectId.CreateNewId(), new VersionStamp(), "Test1", "TestAssembly", LanguageNames.CSharp, filePath: "C:/Some/Path/TestProject.csproj")); var projectSnapshot = new DefaultProjectSnapshot(project); var projectChangedArgs = new ProjectChangeEventArgs(projectSnapshot, ProjectChangeKind.Changed); @@ -81,9 +85,13 @@ namespace Microsoft.VisualStudio.Editor.Razor public void ProjectManager_Changed_TagHelpersChanged_TriggersContextChanged() { // Arrange - var documentTracker = new DefaultVisualStudioDocumentTracker(Dispatcher, FilePath, ProjectPath, ProjectManager, EditorSettingsManager, Workspace, TextBuffer, ImportDocumentManager); + Project project = null; + var workspace = TestWorkspace.Create(ws => + { + project = ws.AddProject(ProjectInfo.Create(ProjectId.CreateNewId(), new VersionStamp(), "Test1", "TestAssembly", LanguageNames.CSharp, filePath: "C:/Some/Path/TestProject.csproj")); + }); + var documentTracker = new DefaultVisualStudioDocumentTracker(Dispatcher, FilePath, ProjectPath, ProjectManager, EditorSettingsManager, workspace, TextBuffer, ImportDocumentManager); - var project = new AdhocWorkspace().AddProject(ProjectInfo.Create(ProjectId.CreateNewId(), new VersionStamp(), "Test1", "TestAssembly", LanguageNames.CSharp, filePath: "C:/Some/Path/TestProject.csproj")); var projectSnapshot = new DefaultProjectSnapshot(project); var projectChangedArgs = new ProjectChangeEventArgs(projectSnapshot, ProjectChangeKind.TagHelpersChanged); @@ -105,9 +113,13 @@ namespace Microsoft.VisualStudio.Editor.Razor public void ProjectManager_Changed_IgnoresUnknownProject() { // Arrange - var documentTracker = new DefaultVisualStudioDocumentTracker(Dispatcher, FilePath, ProjectPath, ProjectManager, EditorSettingsManager, Workspace, TextBuffer, ImportDocumentManager); + Project project = null; + var workspace = TestWorkspace.Create(ws => + { + project = ws.AddProject(ProjectInfo.Create(ProjectId.CreateNewId(), new VersionStamp(), "Test1", "TestAssembly", LanguageNames.CSharp, filePath: "C:/Some/Other/Path/TestProject.csproj")); + }); + var documentTracker = new DefaultVisualStudioDocumentTracker(Dispatcher, FilePath, ProjectPath, ProjectManager, EditorSettingsManager, workspace, TextBuffer, ImportDocumentManager); - var project = new AdhocWorkspace().AddProject(ProjectInfo.Create(ProjectId.CreateNewId(), new VersionStamp(), "Test1", "TestAssembly", LanguageNames.CSharp, filePath: "C:/Some/Other/Path/TestProject.csproj")); var projectSnapshot = new DefaultProjectSnapshot(project); var projectChangedArgs = new ProjectChangeEventArgs(projectSnapshot, ProjectChangeKind.Changed); diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorDirectiveCompletionProviderTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorDirectiveCompletionProviderTest.cs index c30b573b2a..0b8ccafb91 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorDirectiveCompletionProviderTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorDirectiveCompletionProviderTest.cs @@ -108,13 +108,16 @@ namespace Microsoft.VisualStudio.Editor.Razor public async Task ProvideCompletionAsync_DoesNotProvideCompletionsForDocumentWithoutPath() { // Arrange - var project = ProjectInfo + Document document = null; + TestWorkspace.Create(workspace => + { + var project = ProjectInfo .Create(ProjectId.CreateNewId(), VersionStamp.Default, "TestProject", "TestAssembly", LanguageNames.CSharp) .WithFilePath("/TestProject.csproj"); - var workspace = new AdhocWorkspace(); - workspace.AddProject(project); - var documentInfo = DocumentInfo.Create(DocumentId.CreateNewId(project.Id), "Test.cshtml"); - var document = workspace.AddDocument(documentInfo); + workspace.AddProject(project); + var documentInfo = DocumentInfo.Create(DocumentId.CreateNewId(project.Id), "Test.cshtml"); + document = workspace.AddDocument(documentInfo); + }); var codeDocumentProvider = new Mock(MockBehavior.Strict); var completionProvider = new FailOnGetCompletionsProvider(new Lazy(() => codeDocumentProvider.Object)); @@ -325,14 +328,17 @@ namespace Microsoft.VisualStudio.Editor.Razor private static Document CreateDocument() { - var project = ProjectInfo + Document document = null; + TestWorkspace.Create(workspace => + { + var project = ProjectInfo .Create(ProjectId.CreateNewId(), VersionStamp.Default, "TestProject", "TestAssembly", LanguageNames.CSharp) .WithFilePath("/TestProject.csproj"); - var workspace = new AdhocWorkspace(); - workspace.AddProject(project); - var documentInfo = DocumentInfo.Create(DocumentId.CreateNewId(project.Id), "Test.cshtml"); - var document = workspace.AddDocument(documentInfo); - document = document.WithFilePath("Test.cshtml"); + workspace.AddProject(project); + var documentInfo = DocumentInfo.Create(DocumentId.CreateNewId(project.Id), "Test.cshtml"); + document = workspace.AddDocument(documentInfo); + document = document.WithFilePath("Test.cshtml"); + }); return document; } diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorTextViewConnectionListenerTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorTextViewConnectionListenerTest.cs index 11616b872a..d032aad935 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorTextViewConnectionListenerTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorTextViewConnectionListenerTest.cs @@ -36,7 +36,6 @@ namespace Microsoft.VisualStudio.Editor.Razor // Arrange var textView = Mock.Of(); var buffers = new Collection(); - var workspace = new AdhocWorkspace(); var documentManager = new Mock(MockBehavior.Strict); documentManager.Setup(d => d.OnTextViewClosed(textView, buffers)).Verifiable(); diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/ProjectSnapshotWorkerQueueTest.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/ProjectSnapshotWorkerQueueTest.cs index 7dc947f44e..f4129b8bd6 100644 --- a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/ProjectSnapshotWorkerQueueTest.cs +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/ProjectSnapshotWorkerQueueTest.cs @@ -16,10 +16,17 @@ namespace Microsoft.CodeAnalysis.Razor.ProjectSystem { public ProjectSnapshotWorkerQueueTest() { - Workspace = new AdhocWorkspace(); + Project project1 = null; + Project project2 = null; - Project1 = Workspace.CurrentSolution.AddProject("Test1", "Test1", LanguageNames.CSharp); - Project2 = Workspace.CurrentSolution.AddProject("Test2", "Test2", LanguageNames.CSharp); + Workspace = TestWorkspace.Create(workspace => + { + project1 = workspace.CurrentSolution.AddProject("Test1", "Test1", LanguageNames.CSharp); + project2 = workspace.CurrentSolution.AddProject("Test2", "Test2", LanguageNames.CSharp); + }); + + Project1 = project1; + Project2 = project2; } public Project Project1 { get; } diff --git a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/VsSolutionUpdatesProjectSnapshotChangeTriggerTest.cs b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/VsSolutionUpdatesProjectSnapshotChangeTriggerTest.cs index 86ed4dae0d..32e6c03370 100644 --- a/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/VsSolutionUpdatesProjectSnapshotChangeTriggerTest.cs +++ b/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/VsSolutionUpdatesProjectSnapshotChangeTriggerTest.cs @@ -56,9 +56,11 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor projectService.Setup(p => p.GetProjectName(It.IsAny())).Returns(expectedProjectName); projectService.Setup(p => p.GetProjectPath(It.IsAny())).Returns(expectedProjectPath); - var workspace = new AdhocWorkspace(); - CreateProjectInWorkspace(workspace, expectedProjectName, expectedProjectPath); - CreateProjectInWorkspace(workspace, "Test2", "Path/To/AnotherProject"); + var workspace = TestWorkspace.Create(ws => + { + CreateProjectInWorkspace(ws, expectedProjectName, expectedProjectPath); + CreateProjectInWorkspace(ws, "Test2", "Path/To/AnotherProject"); + }); var called = false; var projectManager = new Mock(); @@ -101,9 +103,11 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor projectService.Setup(p => p.GetProjectName(It.IsAny())).Returns(expectedProjectName); projectService.Setup(p => p.GetProjectPath(It.IsAny())).Returns(expectedProjectPath); - var workspace = new AdhocWorkspace(); - CreateProjectInWorkspace(workspace, "Test2", "Path/To/AnotherProject"); - CreateProjectInWorkspace(workspace, "Test3", "Path/To/DifferenProject"); + var workspace = TestWorkspace.Create(ws => + { + CreateProjectInWorkspace(ws, "Test2", "Path/To/AnotherProject"); + CreateProjectInWorkspace(ws, "Test3", "Path/To/DifferenProject"); + }); var projectManager = new Mock(); projectManager.SetupGet(p => p.Workspace).Returns(workspace); diff --git a/test/Microsoft.VisualStudio.Mac.LanguageServices.Razor.Test/ProjectBuildChangeTriggerTest.cs b/test/Microsoft.VisualStudio.Mac.LanguageServices.Razor.Test/ProjectBuildChangeTriggerTest.cs index d2e4ec838c..b02cb50f04 100644 --- a/test/Microsoft.VisualStudio.Mac.LanguageServices.Razor.Test/ProjectBuildChangeTriggerTest.cs +++ b/test/Microsoft.VisualStudio.Mac.LanguageServices.Razor.Test/ProjectBuildChangeTriggerTest.cs @@ -22,9 +22,11 @@ namespace Microsoft.VisualStudio.Mac.LanguageServices.Razor var expectedProjectName = "Test1"; var expectedProjectPath = "Path/To/Project"; var projectService = CreateProjectService(expectedProjectName, expectedProjectPath); - var workspace = new AdhocWorkspace(); - CreateProjectInWorkspace(workspace, expectedProjectName, expectedProjectPath); - CreateProjectInWorkspace(workspace, "Test2", "Path/To/AnotherProject"); + var workspace = TestWorkspace.Create(ws => + { + CreateProjectInWorkspace(ws, expectedProjectName, expectedProjectPath); + CreateProjectInWorkspace(ws, "Test2", "Path/To/AnotherProject"); + }); var projectManager = new Mock(MockBehavior.Strict); projectManager.SetupGet(p => p.Workspace).Returns(workspace); @@ -46,8 +48,10 @@ namespace Microsoft.VisualStudio.Mac.LanguageServices.Razor // Arrange var args = new BuildEventArgs(monitor: null, success: true); var projectService = CreateProjectService("Test1", "Path/To/Project"); - var workspace = new AdhocWorkspace(); - CreateProjectInWorkspace(workspace, "Test2", "Path/To/AnotherProject"); + var workspace = TestWorkspace.Create(ws => + { + CreateProjectInWorkspace(ws, "Test2", "Path/To/AnotherProject"); + }); var projectManager = new Mock(); projectManager.SetupGet(p => p.Workspace).Returns(workspace); projectManager