From a4e1959094cdf2f868479dc62aeb2cb92def51b7 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Sun, 6 Nov 2022 17:57:40 -0800 Subject: Report multiple missing files in one build --- src/wix/WixToolset.Core/Bind/ResolveFieldsCommand.cs | 4 +++- .../test/WixToolsetTest.CoreIntegration/MsiFixture.cs | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/wix/WixToolset.Core/Bind/ResolveFieldsCommand.cs b/src/wix/WixToolset.Core/Bind/ResolveFieldsCommand.cs index 8a5299d9..acdf999a 100644 --- a/src/wix/WixToolset.Core/Bind/ResolveFieldsCommand.cs +++ b/src/wix/WixToolset.Core/Bind/ResolveFieldsCommand.cs @@ -86,6 +86,8 @@ namespace WixToolset.Core.Bind } } + var beforeErrorCount = this.Messaging.ErrorCount; + // Check to make sure we're in a scenario where we can handle variable resolution. if (null != delayedFields) { @@ -110,7 +112,7 @@ namespace WixToolset.Core.Bind } // Move to next symbol if we've hit an error resolving variables. - if (this.Messaging.EncounteredError) // TODO: make this error handling more specific to just the failure to resolve variables in this field. + if (beforeErrorCount < this.Messaging.ErrorCount) { continue; } diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs index 18b19460..fe5f8e63 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs @@ -66,6 +66,7 @@ namespace WixToolsetTest.CoreIntegration { var baseFolder = fs.GetFolder(); var intermediateFolder = Path.Combine(baseFolder, "obj"); + var binFolder = Path.Combine(baseFolder, "bin"); var result = WixRunner.Execute(new[] { @@ -76,18 +77,24 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "does-not-exist"), "-bindpath", Path.Combine(folder, "also-does-not-exist"), "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(baseFolder, @"bin\test.msi") + "-o", Path.Combine(binFolder, "test.msi") }, out var messages); Assert.Equal(103, result); - var error = messages.Single(m => m.Level == MessageLevel.Error); - var errorMessage = error.ToString(); + var errorMessages = messages.Select(m => m.ToString().Replace(folder, "")).ToArray(); + WixAssert.CompareLineByLine(new[] + { + @"The system cannot find the file 'test.txt' with type 'File'. The following paths were checked: test.txt, \does-not-exist\test.txt, \also-does-not-exist\test.txt", + @"The system cannot find the file 'test.txt' with type 'File'. The following paths were checked: test.txt, \does-not-exist\test.txt, \also-does-not-exist\test.txt", + }, errorMessages); + + var errorMessage = errorMessages.First(); var checkedPaths = errorMessage.Substring(errorMessage.IndexOf(':') + 1).Split(new[] { ',' }).Select(s => s.Trim()).ToArray(); WixAssert.CompareLineByLine(new[] { "test.txt", - Path.Combine(folder, "does-not-exist", "test.txt"), - Path.Combine(folder, "also-does-not-exist", "test.txt"), + Path.Combine("", "does-not-exist", "test.txt"), + Path.Combine("", "also-does-not-exist", "test.txt"), }, checkedPaths); } } -- cgit v1.2.3-55-g6feb