From 60c10f6765dab7dc76c2e06284417f3e8dbbae20 Mon Sep 17 00:00:00 2001 From: Jenny Bai Date: Thu, 7 Sep 2023 15:37:12 +0800 Subject: [PATCH 1/4] return false if there are sources --- .../GenerateResource_Tests.cs | 25 ++++++++++++++++--- src/Tasks/GenerateResource.cs | 19 ++++++++++---- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/Tasks.UnitTests/ResourceHandling/GenerateResource_Tests.cs b/src/Tasks.UnitTests/ResourceHandling/GenerateResource_Tests.cs index f704ef169a1..3964c492edc 100644 --- a/src/Tasks.UnitTests/ResourceHandling/GenerateResource_Tests.cs +++ b/src/Tasks.UnitTests/ResourceHandling/GenerateResource_Tests.cs @@ -11,6 +11,7 @@ using Microsoft.Build.Framework; using Microsoft.Build.Shared; using Microsoft.Build.Tasks; +using Microsoft.Build.UnitTests.Shared; using Microsoft.Build.Utilities; using Shouldly; using Xunit; @@ -338,7 +339,7 @@ public void ForceOutOfDate() /* Unmerged change from project 'Microsoft.Build.Tasks.UnitTests (net7.0)' Before: Utilities.AssertLogContainsResource(t, "GenerateResource.OutputDoesntExist", t.OutputResources[0].ItemSpec); - + Utilities.AssertStateFileWasWritten(t); After: Utilities.AssertLogContainsResource(t, "GenerateResource.OutputDoesntExist", t.OutputResources[0].ItemSpec); @@ -1718,7 +1719,7 @@ public void FailedResXReader() /* Unmerged change from project 'Microsoft.Build.Tasks.UnitTests (net7.0)' Before: Assert.False(success); - + Utilities.AssertStateFileWasWritten(t); After: Assert.False(success); @@ -1797,7 +1798,7 @@ public void FailedResXReaderWithAllOutputResourcesSpecified() /* Unmerged change from project 'Microsoft.Build.Tasks.UnitTests (net7.0)' Before: Assert.False(success); - + Utilities.AssertStateFileWasWritten(t); After: Assert.False(success); @@ -2317,7 +2318,7 @@ public void OutputFilesPartialInputs() /* Unmerged change from project 'Microsoft.Build.Tasks.UnitTests (net7.0)' Before: Assert.Equal(t.FilesWritten[2].ItemSpec, Path.ChangeExtension(t.Sources[3].ItemSpec, ".resources")); - + Utilities.AssertStateFileWasWritten(t); After: Assert.Equal(t.FilesWritten[2].ItemSpec, Path.ChangeExtension(t.Sources[3].ItemSpec, ".resources")); @@ -3653,6 +3654,22 @@ GenerateResource ExecuteTask() Utilities.FileUpdated(resourcesFile, initialWriteTime).ShouldBeFalse(); } } + + private readonly ITestOutputHelper _testOutputHelper; + + /// + /// https://github.com/dotnet/msbuild/issues/9199 + /// + [Fact] + public void NotValidSources() + { + GenerateResource t = new GenerateResource { BuildEngine = new MockEngine(_testOutputHelper) }; + t.Sources = new ITaskItem[] { new TaskItem("non-existent") }; + t.OutputResources = new ITaskItem[] { new TaskItem("out") }; + Assert.False(t.Execute()); + ((MockEngine)t.BuildEngine).AssertLogContains("MSB3552"); + Assert.Equal(1, ((MockEngine)t.BuildEngine).Errors); + } } } diff --git a/src/Tasks/GenerateResource.cs b/src/Tasks/GenerateResource.cs index 3c198c1d512..947ab068a1d 100644 --- a/src/Tasks/GenerateResource.cs +++ b/src/Tasks/GenerateResource.cs @@ -714,14 +714,22 @@ public override bool Execute() GetResourcesToProcess(out inputsToProcess, out outputsToProcess, out cachedOutputFiles); - if (inputsToProcess.Count == 0 && !Log.HasLoggedErrors) + if (inputsToProcess.Count == 0) { - if (cachedOutputFiles.Count > 0) + if (!Log.HasLoggedErrors) { - OutputResources = cachedOutputFiles.ToArray(); - } + if (cachedOutputFiles.Count > 0) + { + OutputResources = cachedOutputFiles.ToArray(); + } - Log.LogMessageFromResources("GenerateResource.NothingOutOfDate"); + Log.LogMessageFromResources("GenerateResource.NothingOutOfDate"); + } + else + { + // No valid sources found + return false; + } } else if (FailIfNotIncremental) { @@ -729,6 +737,7 @@ public override bool Execute() } else { + if (!ComputePathToResGen()) { // unable to compute the path to resgen.exe and that is necessary to From c47f029ae07df5809fecfee523da53146fa4d709 Mon Sep 17 00:00:00 2001 From: Jenny Bai Date: Thu, 7 Sep 2023 16:08:49 +0800 Subject: [PATCH 2/4] Remove uncessary blank line --- src/Tasks/GenerateResource.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Tasks/GenerateResource.cs b/src/Tasks/GenerateResource.cs index 947ab068a1d..c2d1c26e37a 100644 --- a/src/Tasks/GenerateResource.cs +++ b/src/Tasks/GenerateResource.cs @@ -737,7 +737,6 @@ public override bool Execute() } else { - if (!ComputePathToResGen()) { // unable to compute the path to resgen.exe and that is necessary to From 8ccb4f616955de7671be32e30dae56cc44c76cfd Mon Sep 17 00:00:00 2001 From: Jenny Bai Date: Thu, 7 Sep 2023 17:45:05 +0800 Subject: [PATCH 3/4] Update the test ouput --- .../ResourceHandling/GenerateResource_Tests.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Tasks.UnitTests/ResourceHandling/GenerateResource_Tests.cs b/src/Tasks.UnitTests/ResourceHandling/GenerateResource_Tests.cs index 3964c492edc..5b672f3b88c 100644 --- a/src/Tasks.UnitTests/ResourceHandling/GenerateResource_Tests.cs +++ b/src/Tasks.UnitTests/ResourceHandling/GenerateResource_Tests.cs @@ -3655,15 +3655,13 @@ GenerateResource ExecuteTask() } } - private readonly ITestOutputHelper _testOutputHelper; - /// /// https://github.com/dotnet/msbuild/issues/9199 /// [Fact] public void NotValidSources() { - GenerateResource t = new GenerateResource { BuildEngine = new MockEngine(_testOutputHelper) }; + GenerateResource t = new GenerateResource { BuildEngine = new MockEngine(_output) }; t.Sources = new ITaskItem[] { new TaskItem("non-existent") }; t.OutputResources = new ITaskItem[] { new TaskItem("out") }; Assert.False(t.Execute()); From 11ef5b9ca94edf5bf7f71bbed36ce574162332b3 Mon Sep 17 00:00:00 2001 From: Jenny Bai Date: Wed, 27 Sep 2023 16:55:56 +0800 Subject: [PATCH 4/4] Update the comment Co-authored-by: Rainer Sigwald --- src/Tasks/GenerateResource.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tasks/GenerateResource.cs b/src/Tasks/GenerateResource.cs index c2d1c26e37a..cb84eb5b8ae 100644 --- a/src/Tasks/GenerateResource.cs +++ b/src/Tasks/GenerateResource.cs @@ -727,7 +727,7 @@ public override bool Execute() } else { - // No valid sources found + // No valid sources found--failures should have been logged in GetResourcesToProcess return false; } }