From 5b1221de6d91b8fefa27a9f47fff96d0fe0ae857 Mon Sep 17 00:00:00 2001 From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com> Date: Mon, 11 Oct 2021 09:45:09 -0700 Subject: [PATCH 1/4] RemoveDir returns !HasLoggedErrors --- src/Tasks.UnitTests/RemoveDir_Tests.cs | 26 ++++++++++++++++++++++++++ src/Tasks/RemoveDir.cs | 10 +--------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/Tasks.UnitTests/RemoveDir_Tests.cs b/src/Tasks.UnitTests/RemoveDir_Tests.cs index 7f88ef17839..bb017a8781b 100644 --- a/src/Tasks.UnitTests/RemoveDir_Tests.cs +++ b/src/Tasks.UnitTests/RemoveDir_Tests.cs @@ -1,9 +1,11 @@ // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System.Collections.Generic; using Microsoft.Build.Framework; using Microsoft.Build.Tasks; using Microsoft.Build.Utilities; +using Shouldly; using Xunit; namespace Microsoft.Build.UnitTests @@ -32,6 +34,30 @@ public void AttributeForwarding() // Output ItemSpec should not be overwritten. Assert.Equal("MyNonExistentDirectory", t.RemovedDirectories[0].ItemSpec); } + + [Fact] + public void SimpleDir() + { + + using (TestEnvironment env = TestEnvironment.Create()) + { + List list = new List(); + + for (int i = 0; i < 20; i++) + { + list.Add(new TaskItem(env.CreateFolder().Path)); + } + + RemoveDir t = new RemoveDir(); + + t.Directories = list.ToArray(); + t.BuildEngine = new MockEngine(); + + t.Execute().ShouldBeTrue(); + + Assert.Equal(list.Count, t.RemovedDirectories.Length); + } + } } } diff --git a/src/Tasks/RemoveDir.cs b/src/Tasks/RemoveDir.cs index f802cbfc70d..c19be8486f6 100644 --- a/src/Tasks/RemoveDir.cs +++ b/src/Tasks/RemoveDir.cs @@ -44,8 +44,6 @@ public ITaskItem[] Directories //----------------------------------------------------------------------------------- public override bool Execute() { - // Delete each directory - bool overallSuccess = true; // Our record of the directories that were removed var removedDirectoriesList = new List(); @@ -73,12 +71,6 @@ public override bool Execute() } } - // The current directory was not removed successfully - if (!currentSuccess) - { - overallSuccess = false; - } - // We successfully removed the directory, so add the removed directory to our record if (currentSuccess) { @@ -97,7 +89,7 @@ public override bool Execute() } // convert the list of deleted files into an array of ITaskItems RemovedDirectories = removedDirectoriesList.ToArray(); - return overallSuccess; + return !Log.HasLoggedErrors; } // Core implementation of directory removal From 9409709e27b496f51111f49c6c4368158b36484a Mon Sep 17 00:00:00 2001 From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com> Date: Thu, 14 Oct 2021 11:28:46 -0700 Subject: [PATCH 2/4] Ensure directories are deleted --- src/Tasks.UnitTests/RemoveDir_Tests.cs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/Tasks.UnitTests/RemoveDir_Tests.cs b/src/Tasks.UnitTests/RemoveDir_Tests.cs index bb017a8781b..c497ef65a90 100644 --- a/src/Tasks.UnitTests/RemoveDir_Tests.cs +++ b/src/Tasks.UnitTests/RemoveDir_Tests.cs @@ -2,16 +2,24 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Collections.Generic; +using System.IO; using Microsoft.Build.Framework; using Microsoft.Build.Tasks; using Microsoft.Build.Utilities; using Shouldly; using Xunit; +using Xunit.Abstractions; namespace Microsoft.Build.UnitTests { sealed public class RemoveDir_Tests { + ITestOutputHelper _output; + public RemoveDir_Tests(ITestOutputHelper output) + { + _output = output; + } + /* * Method: AttributeForwarding * @@ -29,17 +37,16 @@ public void AttributeForwarding() t.Execute(); - Assert.Equal("en-GB", t.RemovedDirectories[0].GetMetadata("Locale")); - - // Output ItemSpec should not be overwritten. - Assert.Equal("MyNonExistentDirectory", t.RemovedDirectories[0].ItemSpec); + t.RemovedDirectories[0].GetMetadata("Locale").ShouldBe("en-GB"); + t.RemovedDirectories[0].ItemSpec.ShouldBe("MyNonExistentDirectory"); + Directory.Exists(t.RemovedDirectories[0].ItemSpec).ShouldBeFalse(); } [Fact] - public void SimpleDir() + public void SimpleDelete() { - using (TestEnvironment env = TestEnvironment.Create()) + using (TestEnvironment env = TestEnvironment.Create(_output)) { List list = new List(); @@ -55,7 +62,12 @@ public void SimpleDir() t.Execute().ShouldBeTrue(); - Assert.Equal(list.Count, t.RemovedDirectories.Length); + list.Count.ShouldBe(t.RemovedDirectories.Length); + + for (int i = 0; i < 20; i++) + { + Directory.Exists(list[i].ItemSpec).ShouldBeFalse(); + } } } } From 0dadfab7a9e6bc5fc7ba5791902b2f2a27326d69 Mon Sep 17 00:00:00 2001 From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com> Date: Thu, 14 Oct 2021 11:30:12 -0700 Subject: [PATCH 3/4] Add outputhelper to mockengine --- src/Tasks.UnitTests/RemoveDir_Tests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Tasks.UnitTests/RemoveDir_Tests.cs b/src/Tasks.UnitTests/RemoveDir_Tests.cs index c497ef65a90..b143afa9f70 100644 --- a/src/Tasks.UnitTests/RemoveDir_Tests.cs +++ b/src/Tasks.UnitTests/RemoveDir_Tests.cs @@ -33,7 +33,7 @@ public void AttributeForwarding() ITaskItem i = new TaskItem("MyNonExistentDirectory"); i.SetMetadata("Locale", "en-GB"); t.Directories = new ITaskItem[] { i }; - t.BuildEngine = new MockEngine(); + t.BuildEngine = new MockEngine(_output); t.Execute(); @@ -58,7 +58,7 @@ public void SimpleDelete() RemoveDir t = new RemoveDir(); t.Directories = list.ToArray(); - t.BuildEngine = new MockEngine(); + t.BuildEngine = new MockEngine(_output); t.Execute().ShouldBeTrue(); From 33865a6a54330709d9787fcdc9c815f2033b38e6 Mon Sep 17 00:00:00 2001 From: Ben Villalobos <4691428+BenVillalobos@users.noreply.github.com> Date: Fri, 22 Oct 2021 09:54:24 -0700 Subject: [PATCH 4/4] Update src/Tasks.UnitTests/RemoveDir_Tests.cs Co-authored-by: Ladi Prosek --- src/Tasks.UnitTests/RemoveDir_Tests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tasks.UnitTests/RemoveDir_Tests.cs b/src/Tasks.UnitTests/RemoveDir_Tests.cs index b143afa9f70..0dee182082b 100644 --- a/src/Tasks.UnitTests/RemoveDir_Tests.cs +++ b/src/Tasks.UnitTests/RemoveDir_Tests.cs @@ -62,7 +62,7 @@ public void SimpleDelete() t.Execute().ShouldBeTrue(); - list.Count.ShouldBe(t.RemovedDirectories.Length); + t.RemovedDirectories.Length.ShouldBe(list.Count); for (int i = 0; i < 20; i++) {