public void when_loading_projects_then_loads_documents() { var properties = new Dictionary <string, string> { { "CurrentSolutionConfigurationContents", @"<SolutionConfiguration> <ProjectConfiguration Project=""{f1db354d-8db4-476c-9308-08cdc0e411f7}"" AbsolutePath=""" + ModuleInitializer.BaseDirectory + @"\Content\CsLibrary\CsLibrary.csproj"">Debug|AnyCPU</ProjectConfiguration> <ProjectConfiguration Project=""{a8ea2d18-4125-4cfd-a9de-6112f38df636}"" AbsolutePath=""" + ModuleInitializer.BaseDirectory + @"\Content\VbLibrary\VbLibrary.vbproj"">Debug|AnyCPU</ProjectConfiguration> <ProjectConfiguration Project=""{3ede89ec-a461-4e2c-be95-05f63b96926c}"" AbsolutePath=""" + ModuleInitializer.BaseDirectory + @"\Content\PclLibrary\PclLibrary.csproj"">Release|AnyCPU</ProjectConfiguration> <ProjectConfiguration Project=""{b7009850-92bd-4926-a2a6-1208f1dcd645}"" AbsolutePath=""" + ModuleInitializer.BaseDirectory + @"\Content\FsLibrary\FsLibrary.fsproj"">Debug|AnyCPU</ProjectConfiguration> </SolutionConfiguration>" }, }; var factory = new Mock <IProjectLoaderFactory>(); factory.Setup(x => x.Create(It.IsAny <IBuildEngine>())) .Returns(() => new ProjectLoader(properties)); var workspace = new SnapshotWorkspace(factory.Object); var project = workspace.GetOrAddProject(Mock.Of <IBuildEngine>(), Path.Combine(ModuleInitializer.BaseDirectory, @"Content\CsLibrary\CsLibrary.csproj"), CancellationToken.None); var reference = project.Solution.GetProject(project.ProjectReferences.First().ProjectId); Assert.True(project.Documents.Any(doc => Path.GetFileName(doc.FilePath) == "Class1.cs")); Assert.True(project.Documents.Any(doc => Path.GetFileName(doc.FilePath) == "AssemblyInfo.cs")); Assert.True(reference.Documents.Any(doc => Path.GetFileName(doc.FilePath) == "Class1.cs")); Assert.True(reference.Documents.Any(doc => Path.GetFileName(doc.FilePath) == "AssemblyInfo.cs")); // CsLibrary has AdditionalFileItemNames=None Assert.True(project.AdditionalDocuments.Any(doc => Path.GetFileName(doc.FilePath) == "CsTextInFolder.txt")); }
public void when_loading_projects_then_loads_proper_configuration_from_solution() { var properties = new Dictionary <string, string> { { "CurrentSolutionConfigurationContents", @"<SolutionConfiguration> <ProjectConfiguration Project=""{f1db354d-8db4-476c-9308-08cdc0e411f7}"" AbsolutePath=""" + ModuleInitializer.BaseDirectory + @"\Content\CsLibrary\CsLibrary.csproj"">Debug|AnyCPU</ProjectConfiguration> <ProjectConfiguration Project=""{a8ea2d18-4125-4cfd-a9de-6112f38df636}"" AbsolutePath=""" + ModuleInitializer.BaseDirectory + @"\Content\VbLibrary\VbLibrary.vbproj"">Debug|AnyCPU</ProjectConfiguration> <ProjectConfiguration Project=""{3ede89ec-a461-4e2c-be95-05f63b96926c}"" AbsolutePath=""" + ModuleInitializer.BaseDirectory + @"\Content\PclLibrary\PclLibrary.csproj"">Release|AnyCPU</ProjectConfiguration> <ProjectConfiguration Project=""{b7009850-92bd-4926-a2a6-1208f1dcd645}"" AbsolutePath=""" + ModuleInitializer.BaseDirectory + @"\Content\FsLibrary\FsLibrary.fsproj"">Debug|AnyCPU</ProjectConfiguration> </SolutionConfiguration>" }, }; var factory = new Mock <IProjectLoaderFactory>(); factory.Setup(x => x.Create(It.IsAny <IBuildEngine>())) .Returns(() => new ProjectLoader(properties)); var workspace = new SnapshotWorkspace(factory.Object); var project = workspace.GetOrAddProject(Mock.Of <IBuildEngine>(), Path.Combine(ModuleInitializer.BaseDirectory, @"Content\CsLibrary\CsLibrary.csproj"), CancellationToken.None); // Configuration for the main project is Debug in the selected solution configuration. Assert.Equal("Debug", new DirectoryInfo(Path.GetDirectoryName(project.OutputFilePath)).Name); // We have a single project reference Assert.Equal(1, project.ProjectReferences.Count()); var reference = project.Solution.GetProject(project.ProjectReferences.First().ProjectId); // The reference exists in the project solution Assert.NotNull(reference); // Configuration for the referenced project is Release in the selected solution configuration. Assert.Equal("Release", new DirectoryInfo(Path.GetDirectoryName(reference.OutputFilePath)).Name); // Because solution configuration is release for the PclLibrary, the Release.cs should be included Assert.True(reference.Documents.Any(doc => Path.GetFileName(doc.FilePath) == "Release.cs")); }
public void when_loading_without_solution_configuration_then_loads_default_configuration() { var factory = new Mock <IProjectLoaderFactory>(); factory.Setup(x => x.Create(It.IsAny <IBuildEngine>())) .Returns(() => new ProjectLoader(new Dictionary <string, string>())); var workspace = new SnapshotWorkspace(factory.Object); var project = workspace.GetOrAddProject(Mock.Of <IBuildEngine>(), Path.Combine(ModuleInitializer.BaseDirectory, @"Content\CsLibrary\CsLibrary.csproj"), CancellationToken.None); var reference = project.Solution.GetProject(project.ProjectReferences.First().ProjectId); // Because there is no solution configuration, PclLibrary defaults to Debug configuration, and the // Release.cs should be not included since it has a condition on Configuration=Release Assert.False(reference.Documents.Any(doc => Path.GetFileName(doc.FilePath) == "Release.cs")); }