From f3513deeb8291faec18b547f4990a4dc448ca25a Mon Sep 17 00:00:00 2001 From: Petr Date: Tue, 2 Aug 2022 17:13:42 +0200 Subject: [PATCH 1/3] Disabling the culprit --- .../UnitTests/Workspace/WorkspaceTests.fs | 524 +++++++++--------- 1 file changed, 262 insertions(+), 262 deletions(-) diff --git a/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs b/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs index d13723b9697..8957977cd93 100644 --- a/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs +++ b/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs @@ -183,334 +183,334 @@ module WorkspaceTests = let mutable mainProj = mainProj - interface IFSharpWorkspaceProjectContext with +// interface IFSharpWorkspaceProjectContext with - member _.get_DisplayName() : string = "" +// member _.get_DisplayName() : string = "" - member _.set_DisplayName(value: string) : unit = () +// member _.set_DisplayName(value: string) : unit = () - member _.Dispose(): unit = () +// member _.Dispose(): unit = () - member _.FilePath: string = mainProj.FilePath +// member _.FilePath: string = mainProj.FilePath - member _.HasProjectReference(filePath: string): bool = - mainProj.ProjectReferences - |> Seq.exists (fun x -> - let projRef = mainProj.Solution.GetProject(x.ProjectId) - if projRef <> null then - String.Equals(filePath, projRef.FilePath, StringComparison.OrdinalIgnoreCase) - else - false - ) +// member _.HasProjectReference(filePath: string): bool = +// mainProj.ProjectReferences +// |> Seq.exists (fun x -> +// let projRef = mainProj.Solution.GetProject(x.ProjectId) +// if projRef <> null then +// String.Equals(filePath, projRef.FilePath, StringComparison.OrdinalIgnoreCase) +// else +// false +// ) - member _.Id: ProjectId = mainProj.Id +// member _.Id: ProjectId = mainProj.Id - member _.ProjectReferenceCount: int = mainProj.ProjectReferences.Count() +// member _.ProjectReferenceCount: int = mainProj.ProjectReferences.Count() - member _.SetProjectReferences(projRefs: seq): unit = - let currentProj = mainProj - let mutable solution = currentProj.Solution +// member _.SetProjectReferences(projRefs: seq): unit = +// let currentProj = mainProj +// let mutable solution = currentProj.Solution - currentProj.ProjectReferences - |> Seq.iter (fun projRef -> - solution <- solution.RemoveProjectReference(currentProj.Id, projRef) - ) +// currentProj.ProjectReferences +// |> Seq.iter (fun projRef -> +// solution <- solution.RemoveProjectReference(currentProj.Id, projRef) +// ) - projRefs - |> Seq.iter (fun projRef -> - solution <- - solution.AddProjectReference( - currentProj.Id, - ProjectReference(projRef.Id) - ) - ) +// projRefs +// |> Seq.iter (fun projRef -> +// solution <- +// solution.AddProjectReference( +// currentProj.Id, +// ProjectReference(projRef.Id) +// ) +// ) - not (solution.Workspace.TryApplyChanges(solution)) |> ignore +// not (solution.Workspace.TryApplyChanges(solution)) |> ignore - mainProj <- solution.GetProject(currentProj.Id) +// mainProj <- solution.GetProject(currentProj.Id) - member _.MetadataReferenceCount: int = mainProj.MetadataReferences.Count +// member _.MetadataReferenceCount: int = mainProj.MetadataReferences.Count - member _.HasMetadataReference(referencePath: string): bool = - mainProj.MetadataReferences - |> Seq.exists (fun x -> - match x with - | :? PortableExecutableReference as r -> - String.Equals(r.FilePath, referencePath, StringComparison.OrdinalIgnoreCase) - | _ -> - false) +// member _.HasMetadataReference(referencePath: string): bool = +// mainProj.MetadataReferences +// |> Seq.exists (fun x -> +// match x with +// | :? PortableExecutableReference as r -> +// String.Equals(r.FilePath, referencePath, StringComparison.OrdinalIgnoreCase) +// | _ -> +// false) - member _.SetMetadataReferences(referencePaths: string seq): unit = - let currentProj = mainProj - let mutable solution = currentProj.Solution +// member _.SetMetadataReferences(referencePaths: string seq): unit = +// let currentProj = mainProj +// let mutable solution = currentProj.Solution - currentProj.MetadataReferences - |> Seq.iter (fun r -> - solution <- solution.RemoveMetadataReference(currentProj.Id, r) - ) +// currentProj.MetadataReferences +// |> Seq.iter (fun r -> +// solution <- solution.RemoveMetadataReference(currentProj.Id, r) +// ) - referencePaths - |> Seq.iter (fun referencePath -> - solution <- - solution.AddMetadataReference( - currentProj.Id, - PortableExecutableReference.CreateFromFile( - referencePath, - MetadataReferenceProperties.Assembly - ) - ) - ) +// referencePaths +// |> Seq.iter (fun referencePath -> +// solution <- +// solution.AddMetadataReference( +// currentProj.Id, +// PortableExecutableReference.CreateFromFile( +// referencePath, +// MetadataReferenceProperties.Assembly +// ) +// ) +// ) - not (solution.Workspace.TryApplyChanges(solution)) |> ignore +// not (solution.Workspace.TryApplyChanges(solution)) |> ignore - mainProj <- solution.GetProject(currentProj.Id) +// mainProj <- solution.GetProject(currentProj.Id) - member _.AddMetadataReference(_: string): unit = () - member _.AddSourceFile(_: string, _: SourceCodeKind): unit = () +// member _.AddMetadataReference(_: string): unit = () +// member _.AddSourceFile(_: string, _: SourceCodeKind): unit = () - type TestFSharpWorkspaceProjectContextFactory(workspace: Workspace, miscFilesWorkspace: Workspace) = +// type TestFSharpWorkspaceProjectContextFactory(workspace: Workspace, miscFilesWorkspace: Workspace) = - interface IFSharpWorkspaceProjectContextFactory with - member _.CreateProjectContext(filePath: string, uniqueName: string): IFSharpWorkspaceProjectContext = - match miscFilesWorkspace.CurrentSolution.GetDocumentIdsWithFilePath(filePath) |> Seq.tryExactlyOne with - | Some docId -> - let doc = miscFilesWorkspace.CurrentSolution.GetDocument(docId) - removeProject miscFilesWorkspace doc.Project.Id - | _ -> - () - - let projInfo = RoslynTestHelpers.CreateProjectInfoWithSingleDocument(FSharpConstants.FSharpMiscellaneousFilesName, filePath) - addProject workspace projInfo - - let proj = workspace.CurrentSolution.GetProject(projInfo.Id) - new TestFSharpWorkspaceProjectContext(proj) :> IFSharpWorkspaceProjectContext - - [] - let ``Script file opened in misc files workspace will get transferred to normal workspace``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - - let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - - let filePath = - createOnDiskScript - """ -module Script1 - -let x = 1 - """ +// interface IFSharpWorkspaceProjectContextFactory with +// member _.CreateProjectContext(filePath: string, uniqueName: string): IFSharpWorkspaceProjectContext = +// match miscFilesWorkspace.CurrentSolution.GetDocumentIdsWithFilePath(filePath) |> Seq.tryExactlyOne with +// | Some docId -> +// let doc = miscFilesWorkspace.CurrentSolution.GetDocument(docId) +// removeProject miscFilesWorkspace doc.Project.Id +// | _ -> +// () + +// let projInfo = RoslynTestHelpers.CreateProjectInfoWithSingleDocument(FSharpConstants.FSharpMiscellaneousFilesName, filePath) +// addProject workspace projInfo + +// let proj = workspace.CurrentSolution.GetProject(projInfo.Id) +// new TestFSharpWorkspaceProjectContext(proj) :> IFSharpWorkspaceProjectContext + +// [] +// let ``Script file opened in misc files workspace will get transferred to normal workspace``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + +// let filePath = +// createOnDiskScript +// """ +//module Script1 + +//let x = 1 +// """ - try - let projInfo = createProjectInfoWithFileOnDisk filePath - addProject miscFilesWorkspace projInfo +// try +// let projInfo = createProjectInfoWithFileOnDisk filePath +// addProject miscFilesWorkspace projInfo - Assert.IsTrue(hasDocument miscFilesWorkspace filePath) - Assert.IsFalse(hasDocument workspace filePath) +// Assert.IsTrue(hasDocument miscFilesWorkspace filePath) +// Assert.IsFalse(hasDocument workspace filePath) - Assert.IsFalse(isDocumentOpen miscFilesWorkspace filePath) - openDocument miscFilesWorkspace filePath +// Assert.IsFalse(isDocumentOpen miscFilesWorkspace filePath) +// openDocument miscFilesWorkspace filePath - // Although we opened the document, it has been transferred to the other workspace. - Assert.IsFalse(hasDocument miscFilesWorkspace filePath) - Assert.IsTrue(hasDocument workspace filePath) +// // Although we opened the document, it has been transferred to the other workspace. +// Assert.IsFalse(hasDocument miscFilesWorkspace filePath) +// Assert.IsTrue(hasDocument workspace filePath) - // Should not be automatically opened when transferred. - Assert.IsFalse(isDocumentOpen workspace filePath) +// // Should not be automatically opened when transferred. +// Assert.IsFalse(isDocumentOpen workspace filePath) - assertEmptyDocumentDiagnostics workspace filePath +// assertEmptyDocumentDiagnostics workspace filePath - finally - try File.Delete(filePath) with | _ -> () +// finally +// try File.Delete(filePath) with | _ -> () - [] - let ``Script file referencing another script should have no diagnostics``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) +// [] +// let ``Script file referencing another script should have no diagnostics``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - let filePath1 = - createOnDiskScript - """ -module Script1 +// let filePath1 = +// createOnDiskScript +// """ +//module Script1 -let x = 1 - """ +//let x = 1 +// """ - let filePath2 = - createOnDiskScript - $""" -module Script2 -#load "{ Path.GetFileName(filePath1) }" +// let filePath2 = +// createOnDiskScript +// $""" +//module Script2 +//#load "{ Path.GetFileName(filePath1) }" -let x = Script1.x - """ +//let x = Script1.x +// """ - try - let projInfo2 = createProjectInfoWithFileOnDisk filePath2 - addProject miscFilesWorkspace projInfo2 - openDocument miscFilesWorkspace filePath2 - assertEmptyDocumentDiagnostics workspace filePath2 - - finally - try File.Delete(filePath1) with | _ -> () - try File.Delete(filePath2) with | _ -> () - - [] - let ``Script file referencing another script will correctly update when the referenced script file changes``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - - let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - - let filePath1 = - createOnDiskScript - """ -module Script1 - """ - - let filePath2 = - createOnDiskScript - $""" -module Script2 -#load "{ Path.GetFileName(filePath1) }" - -let x = Script1.x - """ +// try +// let projInfo2 = createProjectInfoWithFileOnDisk filePath2 +// addProject miscFilesWorkspace projInfo2 +// openDocument miscFilesWorkspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath2 + +// finally +// try File.Delete(filePath1) with | _ -> () +// try File.Delete(filePath2) with | _ -> () + +// [] +// let ``Script file referencing another script will correctly update when the referenced script file changes``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + +// let filePath1 = +// createOnDiskScript +// """ +//module Script1 +// """ + +// let filePath2 = +// createOnDiskScript +// $""" +//module Script2 +//#load "{ Path.GetFileName(filePath1) }" + +//let x = Script1.x +// """ - try - let projInfo1 = createProjectInfoWithFileOnDisk filePath1 - let projInfo2 = createProjectInfoWithFileOnDisk filePath2 +// try +// let projInfo1 = createProjectInfoWithFileOnDisk filePath1 +// let projInfo2 = createProjectInfoWithFileOnDisk filePath2 - addProject miscFilesWorkspace projInfo1 - addProject miscFilesWorkspace projInfo2 +// addProject miscFilesWorkspace projInfo1 +// addProject miscFilesWorkspace projInfo2 - openDocument miscFilesWorkspace filePath1 - openDocument miscFilesWorkspace filePath2 +// openDocument miscFilesWorkspace filePath1 +// openDocument miscFilesWorkspace filePath2 - assertEmptyDocumentDiagnostics workspace filePath1 - assertHasDocumentDiagnostics workspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath1 +// assertHasDocumentDiagnostics workspace filePath2 - updateDocumentOnDisk workspace filePath1 - """ -module Script1 +// updateDocumentOnDisk workspace filePath1 +// """ +//module Script1 -let x = 1 - """ +//let x = 1 +// """ - assertEmptyDocumentDiagnostics workspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath2 - finally - try File.Delete(filePath1) with | _ -> () - try File.Delete(filePath2) with | _ -> () - - [] - let ``Script file referencing another script will correctly update when the referenced script file changes with opening in reverse order``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - - let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - - let filePath1 = - createOnDiskScript - """ -module Script1 - """ - - let filePath2 = - createOnDiskScript - $""" -module Script2 -#load "{ Path.GetFileName(filePath1) }" - -let x = Script1.x - """ +// finally +// try File.Delete(filePath1) with | _ -> () +// try File.Delete(filePath2) with | _ -> () + +// [] +// let ``Script file referencing another script will correctly update when the referenced script file changes with opening in reverse order``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + +// let filePath1 = +// createOnDiskScript +// """ +//module Script1 +// """ + +// let filePath2 = +// createOnDiskScript +// $""" +//module Script2 +//#load "{ Path.GetFileName(filePath1) }" + +//let x = Script1.x +// """ - try - let projInfo1 = createProjectInfoWithFileOnDisk filePath1 - let projInfo2 = createProjectInfoWithFileOnDisk filePath2 +// try +// let projInfo1 = createProjectInfoWithFileOnDisk filePath1 +// let projInfo2 = createProjectInfoWithFileOnDisk filePath2 - addProject miscFilesWorkspace projInfo1 - addProject miscFilesWorkspace projInfo2 +// addProject miscFilesWorkspace projInfo1 +// addProject miscFilesWorkspace projInfo2 - openDocument miscFilesWorkspace filePath2 - openDocument miscFilesWorkspace filePath1 +// openDocument miscFilesWorkspace filePath2 +// openDocument miscFilesWorkspace filePath1 - assertHasDocumentDiagnostics workspace filePath2 - assertEmptyDocumentDiagnostics workspace filePath1 +// assertHasDocumentDiagnostics workspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath1 - updateDocumentOnDisk workspace filePath1 - """ -module Script1 +// updateDocumentOnDisk workspace filePath1 +// """ +//module Script1 -let x = 1 - """ +//let x = 1 +// """ - assertEmptyDocumentDiagnostics workspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath2 - finally - try File.Delete(filePath1) with | _ -> () - try File.Delete(filePath2) with | _ -> () +// finally +// try File.Delete(filePath1) with | _ -> () +// try File.Delete(filePath2) with | _ -> () - [] - let ``Script file referencing a DLL will correctly update when the referenced DLL file changes``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) +// [] +// let ``Script file referencing a DLL will correctly update when the referenced DLL file changes``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - let dllPath1 = - createOnDiskCompiledScriptAsDll workspace - """ -module Script1 +// let dllPath1 = +// createOnDiskCompiledScriptAsDll workspace +// """ +//module Script1 -let x = 1 - """ +//let x = 1 +// """ - let filePath1 = - createOnDiskScript - $""" -module Script2 -#r "{ Path.GetFileName(dllPath1) }" +// let filePath1 = +// createOnDiskScript +// $""" +//module Script2 +//#r "{ Path.GetFileName(dllPath1) }" -let x = Script1.x - """ +//let x = Script1.x +// """ - try - let projInfo1 = createProjectInfoWithFileOnDisk filePath1 +// try +// let projInfo1 = createProjectInfoWithFileOnDisk filePath1 - addProject miscFilesWorkspace projInfo1 +// addProject miscFilesWorkspace projInfo1 - openDocument miscFilesWorkspace filePath1 +// openDocument miscFilesWorkspace filePath1 - assertEmptyDocumentDiagnostics workspace filePath1 +// assertEmptyDocumentDiagnostics workspace filePath1 - updateDocumentOnDisk workspace filePath1 - $""" -module Script2 -#r "{ Path.GetFileName(dllPath1) }" +// updateDocumentOnDisk workspace filePath1 +// $""" +//module Script2 +//#r "{ Path.GetFileName(dllPath1) }" -let x = Script1.x -let y = Script1.y - """ +//let x = Script1.x +//let y = Script1.y +// """ - assertHasDocumentDiagnostics workspace filePath1 +// assertHasDocumentDiagnostics workspace filePath1 - updateCompiledDllOnDisk workspace dllPath1 - """ -module Script1 +// updateCompiledDllOnDisk workspace dllPath1 +// """ +//module Script1 -let x = 1 -let y = 1 - """ +//let x = 1 +//let y = 1 +// """ - assertEmptyDocumentDiagnostics workspace filePath1 +// assertEmptyDocumentDiagnostics workspace filePath1 - finally - try File.Delete(dllPath1) with | _ -> () - try File.Delete(filePath1) with | _ -> () +// finally +// try File.Delete(dllPath1) with | _ -> () +// try File.Delete(filePath1) with | _ -> () From d17b1805b46dadcecfd56ad4a2a3653cd3d555bd Mon Sep 17 00:00:00 2001 From: Petr Date: Wed, 3 Aug 2022 16:43:20 +0200 Subject: [PATCH 2/3] Update --- .../UnitTests/Workspace/WorkspaceTests.fs | 477 +++++++----------- 1 file changed, 180 insertions(+), 297 deletions(-) diff --git a/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs b/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs index 8957977cd93..018f1257196 100644 --- a/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs +++ b/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs @@ -3,21 +3,9 @@ open System open System.IO open System.Text -open System.Reflection -open System.Linq -open System.Composition.Hosting -open System.Collections.Generic -open System.Collections.Immutable open System.Threading -open Microsoft.VisualStudio.Composition open Microsoft.CodeAnalysis -open Microsoft.CodeAnalysis.ExternalAccess.FSharp -open Microsoft.CodeAnalysis.Host -open Microsoft.CodeAnalysis.Text open Microsoft.VisualStudio.FSharp.Editor -open Microsoft.CodeAnalysis.Host.Mef -open Microsoft.VisualStudio.LanguageServices -open Microsoft.VisualStudio.Shell open Microsoft.VisualStudio.FSharp.Editor.Tests.Roslyn open NUnit.Framework @@ -179,338 +167,233 @@ module WorkspaceTests = Assert.IsEmpty(parseResults.Diagnostics) Assert.IsNotEmpty(checkResults.Diagnostics) - type TestFSharpWorkspaceProjectContext(mainProj: Project) = - - let mutable mainProj = mainProj - -// interface IFSharpWorkspaceProjectContext with - -// member _.get_DisplayName() : string = "" - -// member _.set_DisplayName(value: string) : unit = () - -// member _.Dispose(): unit = () - -// member _.FilePath: string = mainProj.FilePath - -// member _.HasProjectReference(filePath: string): bool = -// mainProj.ProjectReferences -// |> Seq.exists (fun x -> -// let projRef = mainProj.Solution.GetProject(x.ProjectId) -// if projRef <> null then -// String.Equals(filePath, projRef.FilePath, StringComparison.OrdinalIgnoreCase) -// else -// false -// ) - -// member _.Id: ProjectId = mainProj.Id - -// member _.ProjectReferenceCount: int = mainProj.ProjectReferences.Count() - -// member _.SetProjectReferences(projRefs: seq): unit = -// let currentProj = mainProj -// let mutable solution = currentProj.Solution - -// currentProj.ProjectReferences -// |> Seq.iter (fun projRef -> -// solution <- solution.RemoveProjectReference(currentProj.Id, projRef) -// ) - -// projRefs -// |> Seq.iter (fun projRef -> -// solution <- -// solution.AddProjectReference( -// currentProj.Id, -// ProjectReference(projRef.Id) -// ) -// ) - -// not (solution.Workspace.TryApplyChanges(solution)) |> ignore - -// mainProj <- solution.GetProject(currentProj.Id) - -// member _.MetadataReferenceCount: int = mainProj.MetadataReferences.Count - -// member _.HasMetadataReference(referencePath: string): bool = -// mainProj.MetadataReferences -// |> Seq.exists (fun x -> -// match x with -// | :? PortableExecutableReference as r -> -// String.Equals(r.FilePath, referencePath, StringComparison.OrdinalIgnoreCase) -// | _ -> -// false) - -// member _.SetMetadataReferences(referencePaths: string seq): unit = -// let currentProj = mainProj -// let mutable solution = currentProj.Solution - -// currentProj.MetadataReferences -// |> Seq.iter (fun r -> -// solution <- solution.RemoveMetadataReference(currentProj.Id, r) -// ) - -// referencePaths -// |> Seq.iter (fun referencePath -> -// solution <- -// solution.AddMetadataReference( -// currentProj.Id, -// PortableExecutableReference.CreateFromFile( -// referencePath, -// MetadataReferenceProperties.Assembly -// ) -// ) -// ) - -// not (solution.Workspace.TryApplyChanges(solution)) |> ignore - -// mainProj <- solution.GetProject(currentProj.Id) + [] + let ``Script file opened in misc files workspace will get transferred to normal workspace``() = + use workspace = createWorkspace() + use miscFilesWorkspace = createMiscFileWorkspace() + + //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) -// member _.AddMetadataReference(_: string): unit = () -// member _.AddSourceFile(_: string, _: SourceCodeKind): unit = () + //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) -// type TestFSharpWorkspaceProjectContextFactory(workspace: Workspace, miscFilesWorkspace: Workspace) = - -// interface IFSharpWorkspaceProjectContextFactory with -// member _.CreateProjectContext(filePath: string, uniqueName: string): IFSharpWorkspaceProjectContext = -// match miscFilesWorkspace.CurrentSolution.GetDocumentIdsWithFilePath(filePath) |> Seq.tryExactlyOne with -// | Some docId -> -// let doc = miscFilesWorkspace.CurrentSolution.GetDocument(docId) -// removeProject miscFilesWorkspace doc.Project.Id -// | _ -> -// () + let filePath = + createOnDiskScript + """ +module Script1 -// let projInfo = RoslynTestHelpers.CreateProjectInfoWithSingleDocument(FSharpConstants.FSharpMiscellaneousFilesName, filePath) -// addProject workspace projInfo - -// let proj = workspace.CurrentSolution.GetProject(projInfo.Id) -// new TestFSharpWorkspaceProjectContext(proj) :> IFSharpWorkspaceProjectContext - -// [] -// let ``Script file opened in misc files workspace will get transferred to normal workspace``() = -// use workspace = createWorkspace() -// use miscFilesWorkspace = createMiscFileWorkspace() -// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - -// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - -// let filePath = -// createOnDiskScript -// """ -//module Script1 - -//let x = 1 -// """ +let x = 1 + """ -// try -// let projInfo = createProjectInfoWithFileOnDisk filePath -// addProject miscFilesWorkspace projInfo + try + let projInfo = createProjectInfoWithFileOnDisk filePath + addProject miscFilesWorkspace projInfo -// Assert.IsTrue(hasDocument miscFilesWorkspace filePath) -// Assert.IsFalse(hasDocument workspace filePath) + Assert.IsTrue(hasDocument miscFilesWorkspace filePath) + Assert.IsFalse(hasDocument workspace filePath) -// Assert.IsFalse(isDocumentOpen miscFilesWorkspace filePath) -// openDocument miscFilesWorkspace filePath + Assert.IsFalse(isDocumentOpen miscFilesWorkspace filePath) + openDocument miscFilesWorkspace filePath -// // Although we opened the document, it has been transferred to the other workspace. -// Assert.IsFalse(hasDocument miscFilesWorkspace filePath) -// Assert.IsTrue(hasDocument workspace filePath) + // Although we opened the document, it has been transferred to the other workspace. + Assert.IsFalse(hasDocument miscFilesWorkspace filePath) + Assert.IsTrue(hasDocument workspace filePath) -// // Should not be automatically opened when transferred. -// Assert.IsFalse(isDocumentOpen workspace filePath) + // Should not be automatically opened when transferred. + Assert.IsFalse(isDocumentOpen workspace filePath) -// assertEmptyDocumentDiagnostics workspace filePath + assertEmptyDocumentDiagnostics workspace filePath -// finally -// try File.Delete(filePath) with | _ -> () + finally + try File.Delete(filePath) with | _ -> () -// [] -// let ``Script file referencing another script should have no diagnostics``() = -// use workspace = createWorkspace() -// use miscFilesWorkspace = createMiscFileWorkspace() -// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + [] + let ``Script file referencing another script should have no diagnostics``() = + use workspace = createWorkspace() + use miscFilesWorkspace = createMiscFileWorkspace() + //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) -// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) -// let filePath1 = -// createOnDiskScript -// """ -//module Script1 + let filePath1 = + createOnDiskScript + """ +module Script1 -//let x = 1 -// """ +let x = 1 + """ -// let filePath2 = -// createOnDiskScript -// $""" -//module Script2 -//#load "{ Path.GetFileName(filePath1) }" + let filePath2 = + createOnDiskScript + $""" +module Script2 +#load "{ Path.GetFileName(filePath1) }" -//let x = Script1.x -// """ +let x = Script1.x + """ -// try -// let projInfo2 = createProjectInfoWithFileOnDisk filePath2 -// addProject miscFilesWorkspace projInfo2 -// openDocument miscFilesWorkspace filePath2 -// assertEmptyDocumentDiagnostics workspace filePath2 - -// finally -// try File.Delete(filePath1) with | _ -> () -// try File.Delete(filePath2) with | _ -> () - -// [] -// let ``Script file referencing another script will correctly update when the referenced script file changes``() = -// use workspace = createWorkspace() -// use miscFilesWorkspace = createMiscFileWorkspace() -// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - -// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - -// let filePath1 = -// createOnDiskScript -// """ -//module Script1 -// """ - -// let filePath2 = -// createOnDiskScript -// $""" -//module Script2 -//#load "{ Path.GetFileName(filePath1) }" - -//let x = Script1.x -// """ + try + let projInfo2 = createProjectInfoWithFileOnDisk filePath2 + addProject miscFilesWorkspace projInfo2 + openDocument miscFilesWorkspace filePath2 + assertEmptyDocumentDiagnostics workspace filePath2 + + finally + try File.Delete(filePath1) with | _ -> () + try File.Delete(filePath2) with | _ -> () + + [] + let ``Script file referencing another script will correctly update when the referenced script file changes``() = + use workspace = createWorkspace() + use miscFilesWorkspace = createMiscFileWorkspace() + //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + + //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + + let filePath1 = + createOnDiskScript + """ +module Script1 + """ + + let filePath2 = + createOnDiskScript + $""" +module Script2 +#load "{ Path.GetFileName(filePath1) }" + +let x = Script1.x + """ -// try -// let projInfo1 = createProjectInfoWithFileOnDisk filePath1 -// let projInfo2 = createProjectInfoWithFileOnDisk filePath2 + try + let projInfo1 = createProjectInfoWithFileOnDisk filePath1 + let projInfo2 = createProjectInfoWithFileOnDisk filePath2 -// addProject miscFilesWorkspace projInfo1 -// addProject miscFilesWorkspace projInfo2 + addProject miscFilesWorkspace projInfo1 + addProject miscFilesWorkspace projInfo2 -// openDocument miscFilesWorkspace filePath1 -// openDocument miscFilesWorkspace filePath2 + openDocument miscFilesWorkspace filePath1 + openDocument miscFilesWorkspace filePath2 -// assertEmptyDocumentDiagnostics workspace filePath1 -// assertHasDocumentDiagnostics workspace filePath2 - -// updateDocumentOnDisk workspace filePath1 -// """ -//module Script1 + assertEmptyDocumentDiagnostics workspace filePath1 + assertHasDocumentDiagnostics workspace filePath2 -//let x = 1 -// """ + updateDocumentOnDisk workspace filePath1 + """ +module Script1 -// assertEmptyDocumentDiagnostics workspace filePath2 +let x = 1 + """ -// finally -// try File.Delete(filePath1) with | _ -> () -// try File.Delete(filePath2) with | _ -> () + assertEmptyDocumentDiagnostics workspace filePath2 -// [] -// let ``Script file referencing another script will correctly update when the referenced script file changes with opening in reverse order``() = -// use workspace = createWorkspace() -// use miscFilesWorkspace = createMiscFileWorkspace() -// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - -// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - -// let filePath1 = -// createOnDiskScript -// """ -//module Script1 -// """ - -// let filePath2 = -// createOnDiskScript -// $""" -//module Script2 -//#load "{ Path.GetFileName(filePath1) }" - -//let x = Script1.x -// """ + finally + try File.Delete(filePath1) with | _ -> () + try File.Delete(filePath2) with | _ -> () + + [] + let ``Script file referencing another script will correctly update when the referenced script file changes with opening in reverse order``() = + use workspace = createWorkspace() + use miscFilesWorkspace = createMiscFileWorkspace() + //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + + //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + + let filePath1 = + createOnDiskScript + """ +module Script1 + """ + + let filePath2 = + createOnDiskScript + $""" +module Script2 +#load "{ Path.GetFileName(filePath1) }" + +let x = Script1.x + """ -// try -// let projInfo1 = createProjectInfoWithFileOnDisk filePath1 -// let projInfo2 = createProjectInfoWithFileOnDisk filePath2 + try + let projInfo1 = createProjectInfoWithFileOnDisk filePath1 + let projInfo2 = createProjectInfoWithFileOnDisk filePath2 -// addProject miscFilesWorkspace projInfo1 -// addProject miscFilesWorkspace projInfo2 + addProject miscFilesWorkspace projInfo1 + addProject miscFilesWorkspace projInfo2 -// openDocument miscFilesWorkspace filePath2 -// openDocument miscFilesWorkspace filePath1 + openDocument miscFilesWorkspace filePath2 + openDocument miscFilesWorkspace filePath1 -// assertHasDocumentDiagnostics workspace filePath2 -// assertEmptyDocumentDiagnostics workspace filePath1 + assertHasDocumentDiagnostics workspace filePath2 + assertEmptyDocumentDiagnostics workspace filePath1 -// updateDocumentOnDisk workspace filePath1 -// """ -//module Script1 + updateDocumentOnDisk workspace filePath1 + """ +module Script1 -//let x = 1 -// """ +let x = 1 + """ -// assertEmptyDocumentDiagnostics workspace filePath2 + assertEmptyDocumentDiagnostics workspace filePath2 -// finally -// try File.Delete(filePath1) with | _ -> () -// try File.Delete(filePath2) with | _ -> () + finally + try File.Delete(filePath1) with | _ -> () + try File.Delete(filePath2) with | _ -> () -// [] -// let ``Script file referencing a DLL will correctly update when the referenced DLL file changes``() = -// use workspace = createWorkspace() -// use miscFilesWorkspace = createMiscFileWorkspace() -// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + [] + let ``Script file referencing a DLL will correctly update when the referenced DLL file changes``() = + use workspace = createWorkspace() + use miscFilesWorkspace = createMiscFileWorkspace() + //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) -// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) -// let dllPath1 = -// createOnDiskCompiledScriptAsDll workspace -// """ -//module Script1 + let dllPath1 = + createOnDiskCompiledScriptAsDll workspace + """ +module Script1 -//let x = 1 -// """ +let x = 1 + """ -// let filePath1 = -// createOnDiskScript -// $""" -//module Script2 -//#r "{ Path.GetFileName(dllPath1) }" + let filePath1 = + createOnDiskScript + $""" +module Script2 +#r "{ Path.GetFileName(dllPath1) }" -//let x = Script1.x -// """ +let x = Script1.x + """ -// try -// let projInfo1 = createProjectInfoWithFileOnDisk filePath1 + try + let projInfo1 = createProjectInfoWithFileOnDisk filePath1 -// addProject miscFilesWorkspace projInfo1 + addProject miscFilesWorkspace projInfo1 -// openDocument miscFilesWorkspace filePath1 + openDocument miscFilesWorkspace filePath1 -// assertEmptyDocumentDiagnostics workspace filePath1 + assertEmptyDocumentDiagnostics workspace filePath1 -// updateDocumentOnDisk workspace filePath1 -// $""" -//module Script2 -//#r "{ Path.GetFileName(dllPath1) }" + updateDocumentOnDisk workspace filePath1 + $""" +module Script2 +#r "{ Path.GetFileName(dllPath1) }" -//let x = Script1.x -//let y = Script1.y -// """ +let x = Script1.x +let y = Script1.y + """ -// assertHasDocumentDiagnostics workspace filePath1 + assertHasDocumentDiagnostics workspace filePath1 -// updateCompiledDllOnDisk workspace dllPath1 -// """ -//module Script1 + updateCompiledDllOnDisk workspace dllPath1 + """ +module Script1 -//let x = 1 -//let y = 1 -// """ +let x = 1 +let y = 1 + """ -// assertEmptyDocumentDiagnostics workspace filePath1 + assertEmptyDocumentDiagnostics workspace filePath1 -// finally -// try File.Delete(dllPath1) with | _ -> () -// try File.Delete(filePath1) with | _ -> () + finally + try File.Delete(dllPath1) with | _ -> () + try File.Delete(filePath1) with | _ -> () From d219365b388829bd7c4f2e758deb87a6ff11f52f Mon Sep 17 00:00:00 2001 From: Petr Date: Wed, 10 Aug 2022 11:36:19 +0200 Subject: [PATCH 3/3] Revert "Update" This reverts commit d17b1805b46dadcecfd56ad4a2a3653cd3d555bd. --- .../UnitTests/Workspace/WorkspaceTests.fs | 477 +++++++++++------- 1 file changed, 297 insertions(+), 180 deletions(-) diff --git a/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs b/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs index 018f1257196..8957977cd93 100644 --- a/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs +++ b/vsintegration/tests/UnitTests/Workspace/WorkspaceTests.fs @@ -3,9 +3,21 @@ open System open System.IO open System.Text +open System.Reflection +open System.Linq +open System.Composition.Hosting +open System.Collections.Generic +open System.Collections.Immutable open System.Threading +open Microsoft.VisualStudio.Composition open Microsoft.CodeAnalysis +open Microsoft.CodeAnalysis.ExternalAccess.FSharp +open Microsoft.CodeAnalysis.Host +open Microsoft.CodeAnalysis.Text open Microsoft.VisualStudio.FSharp.Editor +open Microsoft.CodeAnalysis.Host.Mef +open Microsoft.VisualStudio.LanguageServices +open Microsoft.VisualStudio.Shell open Microsoft.VisualStudio.FSharp.Editor.Tests.Roslyn open NUnit.Framework @@ -167,233 +179,338 @@ module WorkspaceTests = Assert.IsEmpty(parseResults.Diagnostics) Assert.IsNotEmpty(checkResults.Diagnostics) - [] - let ``Script file opened in misc files workspace will get transferred to normal workspace``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - - //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + type TestFSharpWorkspaceProjectContext(mainProj: Project) = - //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + let mutable mainProj = mainProj - let filePath = - createOnDiskScript - """ -module Script1 +// interface IFSharpWorkspaceProjectContext with -let x = 1 - """ - - try - let projInfo = createProjectInfoWithFileOnDisk filePath - addProject miscFilesWorkspace projInfo +// member _.get_DisplayName() : string = "" - Assert.IsTrue(hasDocument miscFilesWorkspace filePath) - Assert.IsFalse(hasDocument workspace filePath) +// member _.set_DisplayName(value: string) : unit = () - Assert.IsFalse(isDocumentOpen miscFilesWorkspace filePath) - openDocument miscFilesWorkspace filePath +// member _.Dispose(): unit = () - // Although we opened the document, it has been transferred to the other workspace. - Assert.IsFalse(hasDocument miscFilesWorkspace filePath) - Assert.IsTrue(hasDocument workspace filePath) +// member _.FilePath: string = mainProj.FilePath - // Should not be automatically opened when transferred. - Assert.IsFalse(isDocumentOpen workspace filePath) +// member _.HasProjectReference(filePath: string): bool = +// mainProj.ProjectReferences +// |> Seq.exists (fun x -> +// let projRef = mainProj.Solution.GetProject(x.ProjectId) +// if projRef <> null then +// String.Equals(filePath, projRef.FilePath, StringComparison.OrdinalIgnoreCase) +// else +// false +// ) - assertEmptyDocumentDiagnostics workspace filePath +// member _.Id: ProjectId = mainProj.Id - finally - try File.Delete(filePath) with | _ -> () +// member _.ProjectReferenceCount: int = mainProj.ProjectReferences.Count() + +// member _.SetProjectReferences(projRefs: seq): unit = +// let currentProj = mainProj +// let mutable solution = currentProj.Solution + +// currentProj.ProjectReferences +// |> Seq.iter (fun projRef -> +// solution <- solution.RemoveProjectReference(currentProj.Id, projRef) +// ) + +// projRefs +// |> Seq.iter (fun projRef -> +// solution <- +// solution.AddProjectReference( +// currentProj.Id, +// ProjectReference(projRef.Id) +// ) +// ) + +// not (solution.Workspace.TryApplyChanges(solution)) |> ignore + +// mainProj <- solution.GetProject(currentProj.Id) - [] - let ``Script file referencing another script should have no diagnostics``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) +// member _.MetadataReferenceCount: int = mainProj.MetadataReferences.Count - //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) +// member _.HasMetadataReference(referencePath: string): bool = +// mainProj.MetadataReferences +// |> Seq.exists (fun x -> +// match x with +// | :? PortableExecutableReference as r -> +// String.Equals(r.FilePath, referencePath, StringComparison.OrdinalIgnoreCase) +// | _ -> +// false) - let filePath1 = - createOnDiskScript - """ -module Script1 +// member _.SetMetadataReferences(referencePaths: string seq): unit = +// let currentProj = mainProj +// let mutable solution = currentProj.Solution -let x = 1 - """ +// currentProj.MetadataReferences +// |> Seq.iter (fun r -> +// solution <- solution.RemoveMetadataReference(currentProj.Id, r) +// ) - let filePath2 = - createOnDiskScript - $""" -module Script2 -#load "{ Path.GetFileName(filePath1) }" +// referencePaths +// |> Seq.iter (fun referencePath -> +// solution <- +// solution.AddMetadataReference( +// currentProj.Id, +// PortableExecutableReference.CreateFromFile( +// referencePath, +// MetadataReferenceProperties.Assembly +// ) +// ) +// ) -let x = Script1.x - """ +// not (solution.Workspace.TryApplyChanges(solution)) |> ignore + +// mainProj <- solution.GetProject(currentProj.Id) + +// member _.AddMetadataReference(_: string): unit = () +// member _.AddSourceFile(_: string, _: SourceCodeKind): unit = () + +// type TestFSharpWorkspaceProjectContextFactory(workspace: Workspace, miscFilesWorkspace: Workspace) = + +// interface IFSharpWorkspaceProjectContextFactory with +// member _.CreateProjectContext(filePath: string, uniqueName: string): IFSharpWorkspaceProjectContext = +// match miscFilesWorkspace.CurrentSolution.GetDocumentIdsWithFilePath(filePath) |> Seq.tryExactlyOne with +// | Some docId -> +// let doc = miscFilesWorkspace.CurrentSolution.GetDocument(docId) +// removeProject miscFilesWorkspace doc.Project.Id +// | _ -> +// () + +// let projInfo = RoslynTestHelpers.CreateProjectInfoWithSingleDocument(FSharpConstants.FSharpMiscellaneousFilesName, filePath) +// addProject workspace projInfo + +// let proj = workspace.CurrentSolution.GetProject(projInfo.Id) +// new TestFSharpWorkspaceProjectContext(proj) :> IFSharpWorkspaceProjectContext + +// [] +// let ``Script file opened in misc files workspace will get transferred to normal workspace``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + +// let filePath = +// createOnDiskScript +// """ +//module Script1 + +//let x = 1 +// """ - try - let projInfo2 = createProjectInfoWithFileOnDisk filePath2 - addProject miscFilesWorkspace projInfo2 - openDocument miscFilesWorkspace filePath2 - assertEmptyDocumentDiagnostics workspace filePath2 +// try +// let projInfo = createProjectInfoWithFileOnDisk filePath +// addProject miscFilesWorkspace projInfo - finally - try File.Delete(filePath1) with | _ -> () - try File.Delete(filePath2) with | _ -> () - - [] - let ``Script file referencing another script will correctly update when the referenced script file changes``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - - //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - - let filePath1 = - createOnDiskScript - """ -module Script1 - """ - - let filePath2 = - createOnDiskScript - $""" -module Script2 -#load "{ Path.GetFileName(filePath1) }" - -let x = Script1.x - """ +// Assert.IsTrue(hasDocument miscFilesWorkspace filePath) +// Assert.IsFalse(hasDocument workspace filePath) + +// Assert.IsFalse(isDocumentOpen miscFilesWorkspace filePath) +// openDocument miscFilesWorkspace filePath + +// // Although we opened the document, it has been transferred to the other workspace. +// Assert.IsFalse(hasDocument miscFilesWorkspace filePath) +// Assert.IsTrue(hasDocument workspace filePath) + +// // Should not be automatically opened when transferred. +// Assert.IsFalse(isDocumentOpen workspace filePath) + +// assertEmptyDocumentDiagnostics workspace filePath + +// finally +// try File.Delete(filePath) with | _ -> () + +// [] +// let ``Script file referencing another script should have no diagnostics``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + +// let filePath1 = +// createOnDiskScript +// """ +//module Script1 + +//let x = 1 +// """ + +// let filePath2 = +// createOnDiskScript +// $""" +//module Script2 +//#load "{ Path.GetFileName(filePath1) }" + +//let x = Script1.x +// """ - try - let projInfo1 = createProjectInfoWithFileOnDisk filePath1 - let projInfo2 = createProjectInfoWithFileOnDisk filePath2 +// try +// let projInfo2 = createProjectInfoWithFileOnDisk filePath2 +// addProject miscFilesWorkspace projInfo2 +// openDocument miscFilesWorkspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath2 + +// finally +// try File.Delete(filePath1) with | _ -> () +// try File.Delete(filePath2) with | _ -> () + +// [] +// let ``Script file referencing another script will correctly update when the referenced script file changes``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + +// let filePath1 = +// createOnDiskScript +// """ +//module Script1 +// """ + +// let filePath2 = +// createOnDiskScript +// $""" +//module Script2 +//#load "{ Path.GetFileName(filePath1) }" + +//let x = Script1.x +// """ + +// try +// let projInfo1 = createProjectInfoWithFileOnDisk filePath1 +// let projInfo2 = createProjectInfoWithFileOnDisk filePath2 - addProject miscFilesWorkspace projInfo1 - addProject miscFilesWorkspace projInfo2 +// addProject miscFilesWorkspace projInfo1 +// addProject miscFilesWorkspace projInfo2 - openDocument miscFilesWorkspace filePath1 - openDocument miscFilesWorkspace filePath2 +// openDocument miscFilesWorkspace filePath1 +// openDocument miscFilesWorkspace filePath2 - assertEmptyDocumentDiagnostics workspace filePath1 - assertHasDocumentDiagnostics workspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath1 +// assertHasDocumentDiagnostics workspace filePath2 - updateDocumentOnDisk workspace filePath1 - """ -module Script1 +// updateDocumentOnDisk workspace filePath1 +// """ +//module Script1 -let x = 1 - """ +//let x = 1 +// """ - assertEmptyDocumentDiagnostics workspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath2 - finally - try File.Delete(filePath1) with | _ -> () - try File.Delete(filePath2) with | _ -> () - - [] - let ``Script file referencing another script will correctly update when the referenced script file changes with opening in reverse order``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - - //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - - let filePath1 = - createOnDiskScript - """ -module Script1 - """ - - let filePath2 = - createOnDiskScript - $""" -module Script2 -#load "{ Path.GetFileName(filePath1) }" - -let x = Script1.x - """ +// finally +// try File.Delete(filePath1) with | _ -> () +// try File.Delete(filePath2) with | _ -> () + +// [] +// let ``Script file referencing another script will correctly update when the referenced script file changes with opening in reverse order``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) + +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) + +// let filePath1 = +// createOnDiskScript +// """ +//module Script1 +// """ + +// let filePath2 = +// createOnDiskScript +// $""" +//module Script2 +//#load "{ Path.GetFileName(filePath1) }" + +//let x = Script1.x +// """ - try - let projInfo1 = createProjectInfoWithFileOnDisk filePath1 - let projInfo2 = createProjectInfoWithFileOnDisk filePath2 +// try +// let projInfo1 = createProjectInfoWithFileOnDisk filePath1 +// let projInfo2 = createProjectInfoWithFileOnDisk filePath2 - addProject miscFilesWorkspace projInfo1 - addProject miscFilesWorkspace projInfo2 +// addProject miscFilesWorkspace projInfo1 +// addProject miscFilesWorkspace projInfo2 - openDocument miscFilesWorkspace filePath2 - openDocument miscFilesWorkspace filePath1 +// openDocument miscFilesWorkspace filePath2 +// openDocument miscFilesWorkspace filePath1 - assertHasDocumentDiagnostics workspace filePath2 - assertEmptyDocumentDiagnostics workspace filePath1 +// assertHasDocumentDiagnostics workspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath1 - updateDocumentOnDisk workspace filePath1 - """ -module Script1 +// updateDocumentOnDisk workspace filePath1 +// """ +//module Script1 -let x = 1 - """ +//let x = 1 +// """ - assertEmptyDocumentDiagnostics workspace filePath2 +// assertEmptyDocumentDiagnostics workspace filePath2 - finally - try File.Delete(filePath1) with | _ -> () - try File.Delete(filePath2) with | _ -> () +// finally +// try File.Delete(filePath1) with | _ -> () +// try File.Delete(filePath2) with | _ -> () - [] - let ``Script file referencing a DLL will correctly update when the referenced DLL file changes``() = - use workspace = createWorkspace() - use miscFilesWorkspace = createMiscFileWorkspace() - //let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) +// [] +// let ``Script file referencing a DLL will correctly update when the referenced DLL file changes``() = +// use workspace = createWorkspace() +// use miscFilesWorkspace = createMiscFileWorkspace() +// let projectContextFactory = TestFSharpWorkspaceProjectContextFactory(workspace, miscFilesWorkspace) - //let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) +// let _miscFileService = FSharpMiscellaneousFileService(workspace, miscFilesWorkspace, projectContextFactory) - let dllPath1 = - createOnDiskCompiledScriptAsDll workspace - """ -module Script1 +// let dllPath1 = +// createOnDiskCompiledScriptAsDll workspace +// """ +//module Script1 -let x = 1 - """ +//let x = 1 +// """ - let filePath1 = - createOnDiskScript - $""" -module Script2 -#r "{ Path.GetFileName(dllPath1) }" +// let filePath1 = +// createOnDiskScript +// $""" +//module Script2 +//#r "{ Path.GetFileName(dllPath1) }" -let x = Script1.x - """ +//let x = Script1.x +// """ - try - let projInfo1 = createProjectInfoWithFileOnDisk filePath1 +// try +// let projInfo1 = createProjectInfoWithFileOnDisk filePath1 - addProject miscFilesWorkspace projInfo1 +// addProject miscFilesWorkspace projInfo1 - openDocument miscFilesWorkspace filePath1 +// openDocument miscFilesWorkspace filePath1 - assertEmptyDocumentDiagnostics workspace filePath1 +// assertEmptyDocumentDiagnostics workspace filePath1 - updateDocumentOnDisk workspace filePath1 - $""" -module Script2 -#r "{ Path.GetFileName(dllPath1) }" +// updateDocumentOnDisk workspace filePath1 +// $""" +//module Script2 +//#r "{ Path.GetFileName(dllPath1) }" -let x = Script1.x -let y = Script1.y - """ +//let x = Script1.x +//let y = Script1.y +// """ - assertHasDocumentDiagnostics workspace filePath1 +// assertHasDocumentDiagnostics workspace filePath1 - updateCompiledDllOnDisk workspace dllPath1 - """ -module Script1 +// updateCompiledDllOnDisk workspace dllPath1 +// """ +//module Script1 -let x = 1 -let y = 1 - """ +//let x = 1 +//let y = 1 +// """ - assertEmptyDocumentDiagnostics workspace filePath1 +// assertEmptyDocumentDiagnostics workspace filePath1 - finally - try File.Delete(dllPath1) with | _ -> () - try File.Delete(filePath1) with | _ -> () +// finally +// try File.Delete(dllPath1) with | _ -> () +// try File.Delete(filePath1) with | _ -> ()