aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2022-11-06 17:57:40 -0800
committerRob Mensching <rob@firegiant.com>2022-11-06 20:58:40 -0800
commita4e1959094cdf2f868479dc62aeb2cb92def51b7 (patch)
treeca163416d3994f5cf0550dee1afb1132b3cb9da8
parentf1b7df8ac8bd545d4329707761a81669b95c10e9 (diff)
downloadwix-a4e1959094cdf2f868479dc62aeb2cb92def51b7.tar.gz
wix-a4e1959094cdf2f868479dc62aeb2cb92def51b7.tar.bz2
wix-a4e1959094cdf2f868479dc62aeb2cb92def51b7.zip
Report multiple missing files in one build
-rw-r--r--src/wix/WixToolset.Core/Bind/ResolveFieldsCommand.cs4
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/MsiFixture.cs17
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
86 } 86 }
87 } 87 }
88 88
89 var beforeErrorCount = this.Messaging.ErrorCount;
90
89 // Check to make sure we're in a scenario where we can handle variable resolution. 91 // Check to make sure we're in a scenario where we can handle variable resolution.
90 if (null != delayedFields) 92 if (null != delayedFields)
91 { 93 {
@@ -110,7 +112,7 @@ namespace WixToolset.Core.Bind
110 } 112 }
111 113
112 // Move to next symbol if we've hit an error resolving variables. 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)
114 { 116 {
115 continue; 117 continue;
116 } 118 }
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
66 { 66 {
67 var baseFolder = fs.GetFolder(); 67 var baseFolder = fs.GetFolder();
68 var intermediateFolder = Path.Combine(baseFolder, "obj"); 68 var intermediateFolder = Path.Combine(baseFolder, "obj");
69 var binFolder = Path.Combine(baseFolder, "bin");
69 70
70 var result = WixRunner.Execute(new[] 71 var result = WixRunner.Execute(new[]
71 { 72 {
@@ -76,18 +77,24 @@ namespace WixToolsetTest.CoreIntegration
76 "-bindpath", Path.Combine(folder, "does-not-exist"), 77 "-bindpath", Path.Combine(folder, "does-not-exist"),
77 "-bindpath", Path.Combine(folder, "also-does-not-exist"), 78 "-bindpath", Path.Combine(folder, "also-does-not-exist"),
78 "-intermediateFolder", intermediateFolder, 79 "-intermediateFolder", intermediateFolder,
79 "-o", Path.Combine(baseFolder, @"bin\test.msi") 80 "-o", Path.Combine(binFolder, "test.msi")
80 }, out var messages); 81 }, out var messages);
81 Assert.Equal(103, result); 82 Assert.Equal(103, result);
82 83
83 var error = messages.Single(m => m.Level == MessageLevel.Error); 84 var errorMessages = messages.Select(m => m.ToString().Replace(folder, "<folder>")).ToArray();
84 var errorMessage = error.ToString(); 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();
85 var checkedPaths = errorMessage.Substring(errorMessage.IndexOf(':') + 1).Split(new[] { ',' }).Select(s => s.Trim()).ToArray(); 92 var checkedPaths = errorMessage.Substring(errorMessage.IndexOf(':') + 1).Split(new[] { ',' }).Select(s => s.Trim()).ToArray();
86 WixAssert.CompareLineByLine(new[] 93 WixAssert.CompareLineByLine(new[]
87 { 94 {
88 "test.txt", 95 "test.txt",
89 Path.Combine(folder, "does-not-exist", "test.txt"), 96 Path.Combine("<folder>", "does-not-exist", "test.txt"),
90 Path.Combine(folder, "also-does-not-exist", "test.txt"), 97 Path.Combine("<folder>", "also-does-not-exist", "test.txt"),
91 }, checkedPaths); 98 }, checkedPaths);
92 } 99 }
93 } 100 }