diff options
Diffstat (limited to 'src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs')
-rw-r--r-- | src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs | 75 |
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 | } |