summaryrefslogtreecommitdiff
path: root/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs')
-rw-r--r--src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs75
1 files changed, 58 insertions, 17 deletions
diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
index 1201620b..c1fdd548 100644
--- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
+++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
@@ -29,7 +29,7 @@ namespace WixToolsetTest.Sdk
29 var binFolder = Path.Combine(baseFolder, @"bin\"); 29 var binFolder = Path.Combine(baseFolder, @"bin\");
30 var projectPath = Path.Combine(baseFolder, "SimpleBundle.wixproj"); 30 var projectPath = Path.Combine(baseFolder, "SimpleBundle.wixproj");
31 31
32 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] { 32 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] {
33 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath), 33 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath),
34 "-p:SignOutput=true", 34 "-p:SignOutput=true",
35 }); 35 });
@@ -162,7 +162,7 @@ namespace WixToolsetTest.Sdk
162 var platformSwitches = result.Output.Where(line => line.Contains("-platform x86")); 162 var platformSwitches = result.Output.Where(line => line.Contains("-platform x86"));
163 Assert.Single(platformSwitches); 163 Assert.Single(platformSwitches);
164 164
165 var warnings = result.Output.Where(line => line.Contains(": warning")).Select(ExtractWarningFromMessage).ToArray(); 165 var warnings = result.Output.Where(line => line.Contains(": warning")).Select(line => ExtractWarningFromMessage(line, baseFolder)).ToArray();
166 WixAssert.CompareLineByLine(new[] 166 WixAssert.CompareLineByLine(new[]
167 { 167 {
168 @"WIX1118: The variable 'Variable' with value 'DifferentValue' was previously declared with value 'Value'.", 168 @"WIX1118: The variable 'Variable' with value 'DifferentValue' was previously declared with value 'Value'.",
@@ -173,7 +173,7 @@ namespace WixToolsetTest.Sdk
173 @"WIX1122: The installer database '<basefolder>\obj\x86\Release\en-US\MsiPackage.msi' has external cabs, but at least one of them is not signed. Please ensure that all external cabs are signed, if you mean to sign them. If you don't mean to sign them, there is no need to inscribe the MSI as part of your build." 173 @"WIX1122: The installer database '<basefolder>\obj\x86\Release\en-US\MsiPackage.msi' has external cabs, but at least one of them is not signed. Please ensure that all external cabs are signed, if you mean to sign them. If you don't mean to sign them, there is no need to inscribe the MSI as part of your build."
174 }, warnings); 174 }, warnings);
175 175
176 var testMessages = result.Output.Where(line => line.Contains("TEST:")).Select(ReplacePathsInMessage).ToArray(); 176 var testMessages = result.Output.Where(line => line.Contains("TEST:")).Select(line => ReplacePathsInMessage(line, baseFolder)).ToArray();
177 WixAssert.CompareLineByLine(new[] 177 WixAssert.CompareLineByLine(new[]
178 { 178 {
179 @"TEST: SignCabs: <basefolder>\obj\x86\Release\en-US\cab1.cab", 179 @"TEST: SignCabs: <basefolder>\obj\x86\Release\en-US\cab1.cab",
@@ -191,20 +191,6 @@ namespace WixToolsetTest.Sdk
191 @"bin\x86\Release\en-US\MsiPackage.wixpdb", 191 @"bin\x86\Release\en-US\MsiPackage.wixpdb",
192 }, paths); 192 }, paths);
193 } 193 }
194
195 string ExtractWarningFromMessage(string message)
196 {
197 const string prefix = ": warning ";
198
199 var start = message.IndexOf(prefix) + prefix.Length;
200 var end = message.LastIndexOf("[");
201 return ReplacePathsInMessage(message.Substring(start, end - start));
202 }
203
204 string ReplacePathsInMessage(string message)
205 {
206 return message.Replace(baseFolder, "<basefolder>").Trim();
207 }
208 } 194 }
209 195
210 [Theory] 196 [Theory]
@@ -585,6 +571,46 @@ namespace WixToolsetTest.Sdk
585 } 571 }
586 } 572 }
587 573
574
575 [Theory]
576 [InlineData(BuildSystem.DotNetCoreSdk)]
577 [InlineData(BuildSystem.MSBuild)]
578 [InlineData(BuildSystem.MSBuild64)]
579 public void CanBuildWithWarningWhenExtensionIsMissing(BuildSystem buildSystem)
580 {
581 var sourceFolder = TestData.Get(@"TestData", "WixlibMissingExtension");
582
583 using (var fs = new TestDataFolderFileSystem())
584 {
585 fs.Initialize(sourceFolder);
586 var baseFolder = fs.BaseFolder;
587 var binFolder = Path.Combine(baseFolder, @"bin\");
588 var projectPath = Path.Combine(baseFolder, "WixlibMissingExtension.wixproj");
589
590 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] {
591 MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath),
592 "-p:SignOutput=true",
593 });
594 result.AssertSuccess();
595
596 var warnings = result.Output.Where(line => line.Contains(": warning")).Select(line => ExtractWarningFromMessage(line, baseFolder)).ToArray();
597 WixAssert.CompareLineByLine(new[]
598 {
599 "WXE0001: Unable to find extension DoesNotExist.wixext.dll.",
600 "WXE0001: Unable to find extension DoesNotExist.wixext.dll.",
601 }, warnings);
602
603 var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories)
604 .Select(s => s.Substring(baseFolder.Length + 1))
605 .OrderBy(s => s)
606 .ToArray();
607 WixAssert.CompareLineByLine(new[]
608 {
609 @"bin\Release\WixlibMissingExtension.wixlib",
610 }, paths);
611 }
612 }
613
588 [Theory(Skip = "Depends on creating broken publish which is not supported at this time")] 614 [Theory(Skip = "Depends on creating broken publish which is not supported at this time")]
589 [InlineData(BuildSystem.DotNetCoreSdk)] 615 [InlineData(BuildSystem.DotNetCoreSdk)]
590 [InlineData(BuildSystem.MSBuild)] 616 [InlineData(BuildSystem.MSBuild)]
@@ -610,5 +636,20 @@ namespace WixToolsetTest.Sdk
610 Assert.Contains(result.Output, m => m.Contains(expectedMessage)); 636 Assert.Contains(result.Output, m => m.Contains(expectedMessage));
611 } 637 }
612 } 638 }
639
640 private static string ExtractWarningFromMessage(string message, string baseFolder)
641 {
642 const string prefix = ": warning ";
643
644 var start = message.IndexOf(prefix) + prefix.Length;
645 var end = message.LastIndexOf("[");
646
647 return ReplacePathsInMessage(message.Substring(start, end - start), baseFolder);
648 }
649
650 private static string ReplacePathsInMessage(string message, string baseFolder)
651 {
652 return message.Replace(baseFolder, "<basefolder>").Trim();
653 }
613 } 654 }
614} 655}