public void GetRestoreSettingsTask_VerifyEmptyPerFrameworkSettings() { using (var testDir = TestDirectory.CreateInTemp()) { // Arrange var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var task = new GetRestoreSettingsTask() { BuildEngine = buildEngine, ProjectUniqueName = Path.Combine(testDir, "a.csproj"), RestoreSources = new[] { Path.Combine(testDir, "base") }, RestoreFallbackFolders = new[] { Path.Combine(testDir, "base") }, RestoreSettingsPerFramework = new ITaskItem[0] }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.OutputSources.ShouldBeEquivalentTo(new[] { Path.Combine(testDir, "base") }); task.OutputFallbackFolders.ShouldBeEquivalentTo(new[] { Path.Combine(testDir, "base") }); } }
public void GetRestoreSettingsTask_VerifyDisabledSourcesAreExcluded() { using (var testDir = TestDirectory.CreateInTemp()) { // Arrange var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var configFile = Path.Combine(testDir, Settings.DefaultSettingsFileName); var projectDirectory = Path.GetDirectoryName(configFile); Directory.CreateDirectory(projectDirectory); File.WriteAllText(configFile, DisableSourceConfig); var task = new GetRestoreSettingsTask() { BuildEngine = buildEngine, ProjectUniqueName = Path.Combine(testDir, "a.csproj"), RestoreFallbackFolders = new[] { Path.Combine(testDir, "base") }, RestoreSettingsPerFramework = new ITaskItem[0] }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.OutputSources.ShouldBeEquivalentTo(new[] { @"https://nuget.org/v2/api" }); } }
public void GetRestoreSettingsTask_VerifyRestoreAdditionalProjectFallbackFoldersWithExcludeAreNotAdded() { using (var testDir = TestDirectory.CreateInTemp()) { // Arrange var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var settingsPerFramework = new List <ITaskItem>(); var settings1 = new Mock <ITaskItem>(); settings1.SetupGet(e => e.ItemSpec).Returns("a"); settings1.Setup(e => e.GetMetadata("RestoreAdditionalProjectFallbackFolders")).Returns(Path.Combine(testDir, "sourceC")); settingsPerFramework.Add(settings1.Object); var settings2 = new Mock <ITaskItem>(); settings2.SetupGet(e => e.ItemSpec).Returns("b"); settings2.Setup(e => e.GetMetadata("RestoreAdditionalProjectFallbackFoldersExcludes")).Returns(Path.Combine(testDir, "sourceC")); settingsPerFramework.Add(settings2.Object); var task = new GetRestoreSettingsTask() { BuildEngine = buildEngine, ProjectUniqueName = Path.Combine(testDir, "a.csproj"), RestoreFallbackFolders = new[] { Path.Combine(testDir, "sourceA"), Path.Combine(testDir, "sourceB") }, RestoreSettingsPerFramework = settingsPerFramework.ToArray() }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.OutputFallbackFolders.ShouldBeEquivalentTo(new[] { Path.Combine(testDir, "sourceA"), Path.Combine(testDir, "sourceB") }); } }
public void GetRestoreSettingsTask_VerifyAggregationAcrossFrameworks() { using (var testDir = TestDirectory.CreateInTemp()) { // Arrange var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var settingsPerFramework = new List <ITaskItem>(); var settings1 = new Mock <ITaskItem>(); settings1.SetupGet(e => e.ItemSpec).Returns("a"); settings1.Setup(e => e.GetMetadata("RestoreAdditionalProjectSources")).Returns($"{Path.Combine(testDir, "a")};{Path.Combine(testDir, "b")}"); settings1.Setup(e => e.GetMetadata("RestoreAdditionalProjectFallbackFolders")).Returns($"{Path.Combine(testDir, "m")};{Path.Combine(testDir, "n")}"); settingsPerFramework.Add(settings1.Object); var settings2 = new Mock <ITaskItem>(); settings2.SetupGet(e => e.ItemSpec).Returns("b"); settings2.Setup(e => e.GetMetadata("RestoreAdditionalProjectSources")).Returns(Path.Combine(testDir, "c")); settings2.Setup(e => e.GetMetadata("RestoreAdditionalProjectFallbackFolders")).Returns(Path.Combine(testDir, "s")); settingsPerFramework.Add(settings2.Object); var settings3 = new Mock <ITaskItem>(); settings3.SetupGet(e => e.ItemSpec).Returns("c"); settings3.Setup(e => e.GetMetadata("RestoreAdditionalProjectSources")).Returns(Path.Combine(testDir, "d")); settingsPerFramework.Add(settings3.Object); var settings4 = new Mock <ITaskItem>(); settings4.SetupGet(e => e.ItemSpec).Returns("d"); settings4.Setup(e => e.GetMetadata("RestoreAdditionalProjectFallbackFolders")).Returns(Path.Combine(testDir, "t")); settingsPerFramework.Add(settings4.Object); var settings5 = new Mock <ITaskItem>(); settings5.SetupGet(e => e.ItemSpec).Returns("e"); settingsPerFramework.Add(settings5.Object); var task = new GetRestoreSettingsTask() { BuildEngine = buildEngine, ProjectUniqueName = Path.Combine(testDir, "a.csproj"), RestoreSources = new[] { Path.Combine(testDir, "base") }, RestoreFallbackFolders = new[] { Path.Combine(testDir, "base") }, RestoreSettingsPerFramework = settingsPerFramework.ToArray() }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.OutputSources.Should().BeEquivalentTo(new[] { Path.Combine(testDir, "base"), Path.Combine(testDir, "a"), Path.Combine(testDir, "b"), Path.Combine(testDir, "c"), Path.Combine(testDir, "d") }); task.OutputFallbackFolders.Should().BeEquivalentTo(new[] { Path.Combine(testDir, "base"), Path.Combine(testDir, "m"), Path.Combine(testDir, "n"), Path.Combine(testDir, "s"), Path.Combine(testDir, "t") }); } }
public void GetRestoreSettingsTask_WithRestoreRootDirectory_ProjectLevelConfigIsIgnored() { using (var testDir = TestDirectory.CreateInTemp()) { var projectDir = Path.Combine(testDir, "project"); Directory.CreateDirectory(projectDir); // Arrange var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var settingsPerFramework = new List <ITaskItem>(); var settings1 = new Mock <ITaskItem>(); settings1.SetupGet(e => e.ItemSpec).Returns("a"); settingsPerFramework.Add(settings1.Object); var task = new GetRestoreSettingsTask() { BuildEngine = buildEngine, ProjectUniqueName = Path.Combine(projectDir, "a.csproj"), RestoreRootConfigDirectory = testDir, RestoreSettingsPerFramework = settingsPerFramework.ToArray() }; var rootConfigFile = Path.Combine(testDir, Settings.DefaultSettingsFileName); var projectLevelConfigFile = Path.Combine(projectDir, Settings.DefaultSettingsFileName); File.WriteAllText(rootConfigFile, RootConfig); File.WriteAllText(projectLevelConfigFile, ProjectLevelConfig); // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.OutputSources.Should().BeEquivalentTo(new[] { "https://api.nuget.org/v3/index.json" }); task.OutputFallbackFolders.Should().BeEmpty(); task.OutputConfigFilePaths.Should().Contain(rootConfigFile); task.OutputConfigFilePaths.Should().NotContain(projectLevelConfigFile); } }