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 GetReferenceNearestTargetFrameworkTask_WithTargetFrameworkInformation_WhenATFMatches_Warns( string currentProjectTFM, string currentProjectTPM, string refTargetFrameworks, string refTargetFrameworkMonikers, string refTargetPlatformMonikers, string atf, string expected) { var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var references = new List <ITaskItem>(); var reference = new Mock <ITaskItem>(); reference.SetupGet(e => e.ItemSpec).Returns("a.csproj"); reference.Setup(e => e.GetMetadata("TargetFrameworks")).Returns(refTargetFrameworks); reference.Setup(e => e.GetMetadata("TargetFrameworkMonikers")).Returns(refTargetFrameworkMonikers); reference.Setup(e => e.GetMetadata("TargetPlatformMonikers")).Returns(refTargetPlatformMonikers); references.Add(reference.Object); var task = new GetReferenceNearestTargetFrameworkTask { BuildEngine = buildEngine, CurrentProjectTargetFramework = currentProjectTFM, CurrentProjectTargetPlatform = currentProjectTPM, FallbackTargetFrameworks = atf.Split(';'), AnnotatedProjectReferences = references.ToArray() }; var result = task.Execute(); result.Should().BeTrue(); task.AssignedProjects.Should().HaveCount(1); task.AssignedProjects[0].GetMetadata("NearestTargetFramework").Should().Be(expected); testLogger.Warnings.Should().Be(1); testLogger.Errors.Should().Be(0); testLogger.DebugMessages.Count.Should().Be(DEBUG_MESSAGE_COUNT_INPUT_OUTPUT); }
public void Execute_AllowMultiRangeVersion() { // Arrange var buildEngine = new TestBuildEngine(); var packageX = new TaskItem(); packageX.ItemSpec = "x"; packageX.SetMetadata("Version", "[1.0.0];[2.0.0]"); var packageDownloads = new List <ITaskItem>() { packageX }; var task = new GetRestorePackageDownloadsTask() { BuildEngine = buildEngine, ProjectUniqueName = "MyProj", TargetFrameworks = "netstandard2.0", PackageDownloads = packageDownloads.ToArray() }; // Act var result = task.Execute(); // Assert Assert.True(result, "Task failed"); Assert.Equal(1, task.RestoreGraphItems.Length); Assert.Equal("x", task.RestoreGraphItems[0].GetMetadata("Id")); Assert.Equal("[1.0.0];[2.0.0]", task.RestoreGraphItems[0].GetMetadata("VersionRange")); }
public void GetReferenceNearestTargetFrameworkTask_NoCompatibleTargetTF() { var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var references = new List <ITaskItem>(); var reference = new Mock <ITaskItem>(); reference.SetupGet(e => e.ItemSpec).Returns("a.csproj"); reference.Setup(e => e.GetMetadata("TargetFrameworks")).Returns("net461"); reference.Setup(e => e.GetMetadata("HasSingleTargetFramework")).Returns("true"); references.Add(reference.Object); var task = new GetReferenceNearestTargetFrameworkTask { BuildEngine = buildEngine, CurrentProjectTargetFramework = "net46", AnnotatedProjectReferences = references.ToArray() }; var result = task.Execute(); result.Should().BeFalse(); task.AssignedProjects.Should().HaveCount(1); testLogger.Warnings.Should().Be(0); testLogger.Errors.Should().Be(1); testLogger.DebugMessages.Count.Should().Be(DEBUG_MESSAGE_COUNT_INPUT_OUTPUT); }
public void GetReferenceNearestTargetFrameworkTask_WithSingleTfmAndSingleAtfAndNoMatch(string referenceProjectFramework) { var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var references = new List <ITaskItem>(); var reference = new Mock <ITaskItem>(); reference.SetupGet(e => e.ItemSpec).Returns("a.csproj"); reference.Setup(e => e.GetMetadata("TargetFrameworks")).Returns(referenceProjectFramework); references.Add(reference.Object); var task = new GetReferenceNearestTargetFrameworkTask { BuildEngine = buildEngine, CurrentProjectTargetFramework = "netcoreapp1.0", FallbackTargetFrameworks = new string[] { "net45" }, AnnotatedProjectReferences = references.ToArray() }; var result = task.Execute(); result.Should().BeFalse(); task.AssignedProjects.Should().HaveCount(1); testLogger.Warnings.Should().Be(0); testLogger.Errors.Should().Be(1); testLogger.DebugMessages.Count.Should().Be(DEBUG_MESSAGE_COUNT_INPUT_OUTPUT); }
public void GetReferenceNearestTargetFrameworkTask_BadSourceTF() { var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var references = new List <ITaskItem>(); var reference = new Mock <ITaskItem>(); reference.SetupGet(e => e.ItemSpec).Returns("a.csproj"); references.Add(reference.Object); var task = new GetReferenceNearestTargetFrameworkTask { BuildEngine = buildEngine, CurrentProjectTargetFramework = "abadframework", AnnotatedProjectReferences = references.ToArray() }; var result = task.Execute(); result.Should().BeFalse(); task.AssignedProjects.Should().BeNullOrEmpty(); testLogger.Warnings.Should().Be(0); testLogger.Errors.Should().Be(1); testLogger.DebugMessages.Count.Should().Be(DEBUG_MESSAGE_COUNT_INPUT); }
public void GetReferenceNearestTargetFrameworkTask_BadAtf() { var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var references = new List <ITaskItem>(); var reference = new Mock <ITaskItem>(); reference.SetupGet(e => e.ItemSpec).Returns("a.csproj"); reference.Setup(e => e.GetMetadata("TargetFrameworks")).Returns("netcoreapp2.0"); reference.Setup(e => e.GetMetadata("HasSingleTargetFramework")).Returns("true"); references.Add(reference.Object); var task = new GetReferenceNearestTargetFrameworkTask { BuildEngine = buildEngine, CurrentProjectTargetFramework = "netcoreapp2.0", FallbackTargetFrameworks = new string[] { "abcdef" }, AnnotatedProjectReferences = references.ToArray() }; var result = task.Execute(); result.Should().BeFalse(); task.AssignedProjects.Should().BeNullOrEmpty(); testLogger.Warnings.Should().Be(0); testLogger.Errors.Should().Be(1); testLogger.DebugMessages.Count.Should().Be(DEBUG_MESSAGE_COUNT_INPUT); }
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 TaskLoggingQueue_Process_HandleBadMessage() { const string badMessage = "{ 'Importance': [] }"; var buildEngine = new TestBuildEngine(); using (var loggingQueue = new TaskLoggingQueue(new TaskLoggingHelper(buildEngine, nameof(TaskLoggingQueueTests)))) { loggingQueue.Enqueue(badMessage); } buildEngine.TestLogger.DebugMessages.Should().ContainSingle() .Which.Should().Be(badMessage); }
public void Execute_CheckMetadata() { // Arrange var buildEngine = new TestBuildEngine(); var packageX = new TaskItem(); packageX.ItemSpec = "x"; packageX.SetMetadata("Version", "[1.0.0]"); var packageY = new TaskItem(); packageY.ItemSpec = "y"; packageY.SetMetadata("Version", "2.0.0"); packageY.SetMetadata("Dummy", "someDummyValue"); var centralPackageVersions = new List <ITaskItem>() { packageX, packageY }; var task = new GetCentralPackageVersionsTask() { BuildEngine = buildEngine, ProjectUniqueName = "MyProj", TargetFrameworks = "netstandard2.0", CentralPackageVersions = centralPackageVersions.ToArray() }; // Act var result = task.Execute(); // Assert Assert.True(result, "Task failed"); Assert.Equal(2, task.RestoreGraphItems.Length); var graphItems = task.RestoreGraphItems.OrderBy(item => item.GetMetadata("Id")).ToList(); Assert.Equal("x", graphItems[0].GetMetadata("Id")); Assert.Equal(task.ProjectUniqueName, task.RestoreGraphItems[0].GetMetadata("ProjectUniqueName")); Assert.Equal("CentralPackageVersion", graphItems[0].GetMetadata("Type")); Assert.Equal("[1.0.0]", graphItems[0].GetMetadata("VersionRange")); Assert.Equal("netstandard2.0", graphItems[0].GetMetadata("TargetFrameworks")); Assert.Equal("y", graphItems[1].GetMetadata("Id")); Assert.Equal("CentralPackageVersion", graphItems[1].GetMetadata("Type")); Assert.Equal("2.0.0", graphItems[1].GetMetadata("VersionRange")); Assert.Equal("netstandard2.0", graphItems[1].GetMetadata("TargetFrameworks")); Assert.Equal(task.ProjectUniqueName, task.RestoreGraphItems[1].GetMetadata("ProjectUniqueName")); Assert.Equal(0, graphItems[1].MetadataNames.Cast <string>().Where(n => string.Equals(n, "Dummy")).Count()); }
public void Execute_WhenProjectHasPackageReferenceItems_ReturnsPackageReference() { var buildEngine = new TestBuildEngine(); var task = new GetRestoreProjectStyleTask { BuildEngine = buildEngine, HasPackageReferenceItems = true }; task.Execute().Should().BeTrue(); task.ProjectStyle.Should().Be(ProjectStyle.PackageReference); task.IsPackageReferenceCompatibleProjectStyle.Should().BeTrue(); }
public void Execute_WhenProjectJsonPathSpecified_ReturnsProjectJson() { var buildEngine = new TestBuildEngine(); var task = new GetRestoreProjectStyleTask { BuildEngine = buildEngine, ProjectJsonPath = "SomePath" }; task.Execute().Should().BeTrue(); task.ProjectStyle.Should().Be(ProjectStyle.ProjectJson); task.IsPackageReferenceCompatibleProjectStyle.Should().BeFalse(); }
public void GetCommandLineArguments_WhenOptionsSpecified_CorrectValuesReturned() { using (var testDirectory = TestDirectory.Create()) { string msbuildBinPath = Path.Combine(testDirectory, "MSBuild", "Current", "Bin"); string projectPath = Path.Combine(testDirectory, "src", "project1", "project1.csproj"); var globalProperties = new Dictionary <string, string> { ["Property1"] = "Value1", ["Property2"] = " Value2 " }; var buildEngine = new TestBuildEngine(globalProperties); using (var task = new RestoreTaskEx { BuildEngine = buildEngine, DisableParallel = true, Force = true, ForceEvaluate = true, HideWarningsAndErrors = true, IgnoreFailedSources = true, Interactive = true, MSBuildBinPath = msbuildBinPath, NoCache = true, ProjectFullPath = projectPath, Recursive = true, RestorePackagesConfig = true, MSBuildStartupDirectory = testDirectory, }) { var arguments = task.GetCommandLineArguments().ToList(); arguments.Should().BeEquivalentTo( #if IS_CORECLR Path.ChangeExtension(typeof(RestoreTaskEx).Assembly.Location, ".Console.dll"), #endif "CleanupAssetsForUnsupportedProjects=True;DisableParallel=True;Force=True;ForceEvaluate=True;HideWarningsAndErrors=True;IgnoreFailedSources=True;Interactive=True;NoCache=True;Recursive=True;RestorePackagesConfig=True", #if IS_CORECLR Path.Combine(msbuildBinPath, "MSBuild.dll"), #else Path.Combine(msbuildBinPath, "MSBuild.exe"), #endif projectPath, $"Property1=Value1;Property2= Value2 ;ExcludeRestorePackageImports=true;OriginalMSBuildStartupDirectory={testDirectory}"); } } }
public void TaskLoggingQueue_Process_ThrowsIfInvalidMessageType() { const string badMessage = "{ 'MessageType': 200 }"; var buildEngine = new TestBuildEngine(); Action act = () => { using (var loggingQueue = new TaskLoggingQueue(new TaskLoggingHelper(buildEngine, nameof(TaskLoggingQueueTests)))) { loggingQueue.Enqueue(badMessage); } }; act.ShouldThrow <ArgumentOutOfRangeException>(); }
public void WarnForInvalidProjectsTask_NullItemsVerifyNoErrors() { var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var task = new WarnForInvalidProjectsTask { BuildEngine = buildEngine }; var result = task.Execute(); result.Should().BeTrue(); testLogger.Warnings.Should().Be(0); testLogger.Errors.Should().Be(0); testLogger.DebugMessages.Count.Should().Be(2); }
public void Execute_AllowMultiplePackages() { // Arrange var buildEngine = new TestBuildEngine(); var packageX = new TaskItem(); packageX.ItemSpec = "x"; packageX.SetMetadata("Version", "[1.0.0]"); var packageY = new TaskItem(); packageY.ItemSpec = "y"; packageY.SetMetadata("Version", "[2.0.0]"); var packageDownloads = new List <ITaskItem>() { packageX, packageY }; var task = new GetRestorePackageDownloadsTask() { BuildEngine = buildEngine, ProjectUniqueName = "MyProj", TargetFrameworks = "netstandard2.0", PackageDownloads = packageDownloads.ToArray() }; // Act var result = task.Execute(); // Assert Assert.True(result, "Task failed"); Assert.Equal(2, task.RestoreGraphItems.Length); var package = task.RestoreGraphItems.SingleOrDefault(i => i.GetMetadata("Id") == "x"); Assert.NotNull(package); Assert.Equal("[1.0.0]", package.GetMetadata("VersionRange")); package = task.RestoreGraphItems.SingleOrDefault(i => i.GetMetadata("Id") == "y"); Assert.NotNull(package); Assert.Equal("[2.0.0]", package.GetMetadata("VersionRange")); }
public void Execute_WithWarningsAsErrors_ReturnsFalse() { // Arrange var buildEngine = new TestBuildEngine(); var packageX1 = new TaskItem { ItemSpec = "x" }; packageX1.SetMetadata("Version", "[1.0.0]"); var packageX2 = new TaskItem { ItemSpec = "x", }; packageX2.SetMetadata("Version", "2.0.0"); var items = new ITaskItem[] { packageX1, packageX2, }; var task = new CheckForDuplicateNuGetItemsTask() { BuildEngine = buildEngine, ItemName = "PackageReference", Items = items, LogCode = "NU1504", NoWarn = "1234;5678", TreatWarningsAsErrors = "false", WarningsAsErrors = "NU1504" }; // Act var result = task.Execute(); // Assert result.Should().BeFalse(); task.DeduplicatedItems.Length.Should().Be(1); buildEngine.TestLogger.WarningMessages.Should().HaveCount(0); buildEngine.TestLogger.ErrorMessages.Should().HaveCount(1); }
public void Execute_WithDuplicateItems_SelectsFirstItem() { // Arrange var buildEngine = new TestBuildEngine(); var packageX1 = new TaskItem { ItemSpec = "x" }; packageX1.SetMetadata("Version", "[1.0.0]"); var packageX2 = new TaskItem { ItemSpec = "x", }; packageX2.SetMetadata("Version", "2.0.0"); var items = new ITaskItem[] { packageX1, packageX2, }; var task = new CheckForDuplicateNuGetItemsTask() { BuildEngine = buildEngine, ItemName = "PackageReference", Items = items, LogCode = "NU1504" }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); buildEngine.TestLogger.WarningMessages.Should().HaveCount(1); task.DeduplicatedItems.Length.Should().Be(1); var item = task.DeduplicatedItems.Single(); item.ItemSpec.Should().Be("x"); item.GetMetadata("Version").Should().Be("[1.0.0]"); }
public void Execute_WithoutSpecialGlobalProperties_ReturnsNull() { // Arrange var buildEngine = new TestBuildEngine(); var task = new GetGlobalPropertyValueTask() { BuildEngine = buildEngine, PropertyName = "TargetFramework", }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.GlobalPropertyValue.Should().Be(null); task.CheckCompleted.Should().Be(true); }
public void Execute_WhenNothingMatches_ReturnsUnknown(string restoreStyle) { var buildEngine = new TestBuildEngine(); var task = new GetRestoreProjectStyleTask { BuildEngine = buildEngine, RestoreProjectStyle = restoreStyle, ProjectJsonPath = string.Empty, HasPackageReferenceItems = false, MSBuildProjectName = "ProjectA", MSBuildProjectDirectory = "SomeDirectory" }; task.Execute().Should().BeTrue(); task.ProjectStyle.Should().Be(ProjectStyle.Unknown); task.IsPackageReferenceCompatibleProjectStyle.Should().BeFalse(); }
public void Execute_RemoveDuplicates() { // Arrange var buildEngine = new TestBuildEngine(); var packageX = new TaskItem(); packageX.ItemSpec = "x"; packageX.SetMetadata("Version", "[1.0.0]"); var packageY = new TaskItem(); packageY.ItemSpec = "x"; packageY.SetMetadata("Version", "2.0.0"); var centralPackageVersions = new List <ITaskItem>() { packageX, packageY }; var task = new GetCentralPackageVersionsTask() { BuildEngine = buildEngine, ProjectUniqueName = "MyProj", TargetFrameworks = "netstandard2.0", CentralPackageVersions = centralPackageVersions.ToArray() }; // Act var result = task.Execute(); // Assert Assert.True(result, "Task failed"); Assert.Equal(1, task.RestoreGraphItems.Length); var graphItems = task.RestoreGraphItems.OrderBy(item => item.GetMetadata("Id")).ToList(); Assert.Equal("x", graphItems[0].GetMetadata("Id")); Assert.Equal(task.ProjectUniqueName, task.RestoreGraphItems[0].GetMetadata("ProjectUniqueName")); Assert.Equal("CentralPackageVersion", graphItems[0].GetMetadata("Type")); Assert.Equal("[1.0.0]", graphItems[0].GetMetadata("VersionRange")); Assert.Equal("netstandard2.0", graphItems[0].GetMetadata("TargetFrameworks")); }
public void Execute_WithoutDuplicateItems_ReturnsTrue() { // Arrange var buildEngine = new TestBuildEngine(); var packageX = new TaskItem { ItemSpec = "x" }; packageX.SetMetadata("Version", "[1.0.0]"); var packageY = new TaskItem { ItemSpec = "y" }; packageY.SetMetadata("Version", "2.0.0"); var items = new ITaskItem[] { packageX, packageY, }; var task = new CheckForDuplicateNuGetItemsTask() { BuildEngine = buildEngine, ItemName = "PackageReference", Items = items, LogCode = "NU1504" }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.DeduplicatedItems.Length.Should().Be(0); buildEngine.TestLogger.Messages.Should().HaveCount(0); }
public void GetCommandLineArguments_WhenOptionsSpecified_CorrectValuesReturned() { using (var testDirectory = TestDirectory.Create()) { string msbuildBinPath = Path.Combine(testDirectory, "MSBuild", "Current", "Bin"); string projectPath = Path.Combine(testDirectory, "src", "project1", "project1.csproj"); string restoreGraphOutputPath = Path.Combine(testDirectory, "out.dgspec.json"); var globalProperties = new Dictionary <string, string> { ["Property1"] = "Value1", ["Property2"] = " Value2 " }; var buildEngine = new TestBuildEngine(globalProperties); using (var task = new GenerateRestoreGraphFileTask { BuildEngine = buildEngine, MSBuildBinPath = msbuildBinPath, ProjectFullPath = projectPath, Recursive = true, MSBuildStartupDirectory = testDirectory, RestoreGraphOutputPath = restoreGraphOutputPath, }) { var arguments = task.GetCommandLineArguments().ToList(); arguments.Should().BeEquivalentTo( #if IS_CORECLR Path.ChangeExtension(typeof(RestoreTaskEx).Assembly.Location, ".Console.dll"), #endif $"GenerateRestoreGraphFile=True;Recursive=True;RestoreGraphOutputPath={restoreGraphOutputPath}", #if IS_CORECLR Path.Combine(msbuildBinPath, "MSBuild.dll"), #else Path.Combine(msbuildBinPath, "MSBuild.exe"), #endif projectPath, $"Property1=Value1;Property2= Value2 ;ExcludeRestorePackageImports=true;OriginalMSBuildStartupDirectory={testDirectory}"); } } }
public void GetReferenceNearestTargetFrameworkTask_NoReferences() { var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var task = new GetReferenceNearestTargetFrameworkTask { BuildEngine = buildEngine, CurrentProjectTargetFramework = "net46" }; var result = task.Execute(); result.Should().BeTrue(); task.AssignedProjects.Should().BeNullOrEmpty(); testLogger.Warnings.Should().Be(0); testLogger.Errors.Should().Be(0); testLogger.DebugMessages.Count.Should().Be(DEBUG_MESSAGE_COUNT_INPUT); }
public void Execute_WhenProjectHasPackagesConfigFile_ReturnsPackagesConfig(string packagesConfigFileName) { using (var testDirectory = TestDirectory.Create()) { File.WriteAllText(Path.Combine(testDirectory, packagesConfigFileName), string.Empty); var buildEngine = new TestBuildEngine(); var task = new GetRestoreProjectStyleTask { BuildEngine = buildEngine, MSBuildProjectDirectory = testDirectory, MSBuildProjectName = "ProjectA" }; task.Execute().Should().BeTrue(); task.ProjectStyle.Should().Be(ProjectStyle.PackagesConfig); task.IsPackageReferenceCompatibleProjectStyle.Should().BeFalse(); } }
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); } }
public void Execute_WithArgs_LogsMessageWithCorrectReplacements() { var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var task = new NuGetMessageTask { BuildEngine = buildEngine, Name = nameof(TestStrings.Execute_WithArgs_LogsMessageWithCorrectReplacements), Args = new[] { "One", "two" } }; task.Log.TaskResources = TestStrings.ResourceManager; var result = task.Execute(); result.Should().BeTrue(); var message = testLogger.LogMessages.Should().ContainSingle().Which; message.Level.Should().Be(LogLevel.Information); message.Message.Should().Be("This is One two"); }
public void Execute_WithImportance_LogsMessageWithCorrectLogLevel(string importance, LogLevel expectedLogLevel) { var buildEngine = new TestBuildEngine(); var testLogger = buildEngine.TestLogger; var task = new NuGetMessageTask { BuildEngine = buildEngine, Name = nameof(TestStrings.Execute_WithImportance_LogsMessageWithCorrectLogLevel), Importance = importance }; task.Log.TaskResources = TestStrings.ResourceManager; var result = task.Execute(); result.Should().BeTrue(); var message = testLogger.LogMessages.Should().ContainSingle().Which; message.Level.Should().Be(expectedLogLevel); message.Message.Should().Be(TestStrings.Execute_WithImportance_LogsMessageWithCorrectLogLevel); }