@joebigelow / wix-1 / commits / a4e19590

Report multiple missing files in one build

Rob Mensching committed Nov 6, 2022 at 17:57 UTC a4e1959094cdf2f868479dc62aeb2cb92def51b7
2 files changed +15 -6
src/wix/WixToolset.Core/Bind/ResolveFieldsCommand.cs
+3 -1
@@ -86,6 +86,8 @@ namespace WixToolset.Core.Bind
86 }
87 }
88
89 + var beforeErrorCount = this.Messaging.ErrorCount;
90 +
91 // Check to make sure we're in a scenario where we can handle variable resolution.
92 if (null != delayedFields)
93 {
@@ -110,7 +112,7 @@ namespace WixToolset.Core.Bind
112 }
113
114 // Move to next symbol if we've hit an error resolving variables.
113 - if (this.Messaging.EncounteredError) // TODO: make this error handling more specific to just the failure to resolve variables in this field.
115 + if (beforeErrorCount < this.Messaging.ErrorCount)
116 {
117 continue;
118 }
src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
+12 -5
@@ -66,6 +66,7 @@ namespace WixToolsetTest.CoreIntegration
66 {
67 var baseFolder = fs.GetFolder();
68 var intermediateFolder = Path.Combine(baseFolder, "obj");
69 + var binFolder = Path.Combine(baseFolder, "bin");
70
71 var result = WixRunner.Execute(new[]
72 {
@@ -76,18 +77,24 @@ namespace WixToolsetTest.CoreIntegration
77 "-bindpath", Path.Combine(folder, "does-not-exist"),
78 "-bindpath", Path.Combine(folder, "also-does-not-exist"),
79 "-intermediateFolder", intermediateFolder,
79 - "-o", Path.Combine(baseFolder, @"bin\test.msi")
80 + "-o", Path.Combine(binFolder, "test.msi")
81 }, out var messages);
82 Assert.Equal(103, result);
83
83 - var error = messages.Single(m => m.Level == MessageLevel.Error);
84 - var errorMessage = error.ToString();
84 + var errorMessages = messages.Select(m => m.ToString().Replace(folder, "<folder>")).ToArray();
85 + WixAssert.CompareLineByLine(new[]
86 + {
87 + @"The system cannot find the file 'test.txt' with type 'File'. The following paths were checked: test.txt, <folder>\does-not-exist\test.txt, <folder>\also-does-not-exist\test.txt",
88 + @"The system cannot find the file 'test.txt' with type 'File'. The following paths were checked: test.txt, <folder>\does-not-exist\test.txt, <folder>\also-does-not-exist\test.txt",
89 + }, errorMessages);
90 +
91 + var errorMessage = errorMessages.First();
92 var checkedPaths = errorMessage.Substring(errorMessage.IndexOf(':') + 1).Split(new[] { ',' }).Select(s => s.Trim()).ToArray();
93 WixAssert.CompareLineByLine(new[]
94 {
95 "test.txt",
89 - Path.Combine(folder, "does-not-exist", "test.txt"),
90 - Path.Combine(folder, "also-does-not-exist", "test.txt"),
96 + Path.Combine("<folder>", "does-not-exist", "test.txt"),
97 + Path.Combine("<folder>", "also-does-not-exist", "test.txt"),
98 }, checkedPaths);
99 }
100 }