aboutsummaryrefslogtreecommitdiff
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.cs57
1 files changed, 51 insertions, 6 deletions
diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
index b1a97644..3a9ce776 100644
--- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
+++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs
@@ -26,12 +26,19 @@ namespace WixToolsetTest.Sdk
26 var binFolder = Path.Combine(baseFolder, @"bin\"); 26 var binFolder = Path.Combine(baseFolder, @"bin\");
27 var projectPath = Path.Combine(baseFolder, "SimpleBundle.wixproj"); 27 var projectPath = Path.Combine(baseFolder, "SimpleBundle.wixproj");
28 28
29 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath); 29 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] { "-p:SignOutput=true" });
30 result.AssertSuccess(); 30 result.AssertSuccess();
31 31
32 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); 32 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray();
33 WixAssert.StringCollectionEmpty(warnings); 33 WixAssert.StringCollectionEmpty(warnings);
34 34
35 var testMessages = result.Output.Where(line => line.Contains("TEST:")).Select(line => line.Trim()).ToArray();
36 WixAssert.CompareLineByLine(new[]
37 {
38 @"TEST: SignBundleEngine: obj\x86\Release\SimpleBundle.exe",
39 @"TEST: SignBundle: obj\x86\Release\SimpleBundle.exe",
40 }, testMessages);
41
35 var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) 42 var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories)
36 .Select(s => s.Substring(baseFolder.Length + 1)) 43 .Select(s => s.Substring(baseFolder.Length + 1))
37 .OrderBy(s => s) 44 .OrderBy(s => s)
@@ -59,12 +66,18 @@ namespace WixToolsetTest.Sdk
59 var binFolder = Path.Combine(baseFolder, @"bin\"); 66 var binFolder = Path.Combine(baseFolder, @"bin\");
60 var projectPath = Path.Combine(baseFolder, "UncompressedBundle.wixproj"); 67 var projectPath = Path.Combine(baseFolder, "UncompressedBundle.wixproj");
61 68
62 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath); 69 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] { "-p:SignOutput=true" });
63 result.AssertSuccess(); 70 result.AssertSuccess();
64 71
65 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); 72 var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray();
66 WixAssert.StringCollectionEmpty(warnings); 73 WixAssert.StringCollectionEmpty(warnings);
67 74
75 var testMessages = result.Output.Where(line => line.Contains("TEST:")).Select(line => line.Trim()).ToArray();
76 WixAssert.CompareLineByLine(new[]
77 {
78 @"TEST: SignBundleEngine: obj\x86\Release\UncompressedBundle.exe",
79 }, testMessages);
80
68 var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) 81 var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories)
69 .Select(s => s.Substring(baseFolder.Length + 1)) 82 .Select(s => s.Substring(baseFolder.Length + 1))
70 .OrderBy(s => s) 83 .OrderBy(s => s)
@@ -119,21 +132,39 @@ namespace WixToolsetTest.Sdk
119 { 132 {
120 var sourceFolder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage"); 133 var sourceFolder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage");
121 134
135 var baseFolder = String.Empty;
136
122 using (var fs = new TestDataFolderFileSystem()) 137 using (var fs = new TestDataFolderFileSystem())
123 { 138 {
124 fs.Initialize(sourceFolder); 139 fs.Initialize(sourceFolder);
125 var baseFolder = fs.BaseFolder; 140 baseFolder = fs.BaseFolder;
141
126 var binFolder = Path.Combine(baseFolder, @"bin\"); 142 var binFolder = Path.Combine(baseFolder, @"bin\");
127 var projectPath = Path.Combine(baseFolder, "MsiPackage.wixproj"); 143 var projectPath = Path.Combine(baseFolder, "MsiPackage.wixproj");
128 144
129 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath); 145 var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] { "-p:SignOutput=true" });
130 result.AssertSuccess(); 146 result.AssertSuccess();
131 147
132 var platformSwitches = result.Output.Where(line => line.Contains("-platform x86")); 148 var platformSwitches = result.Output.Where(line => line.Contains("-platform x86"));
133 Assert.Single(platformSwitches); 149 Assert.Single(platformSwitches);
134 150
135 var warnings = result.Output.Where(line => line.Contains(": warning")); 151 var warnings = result.Output.Where(line => line.Contains(": warning")).Select(ExtractWarningFromMessage).ToArray();
136 Assert.Equal(4, warnings.Count()); 152 WixAssert.CompareLineByLine(new[]
153 {
154 @"WIX1118: The variable 'Variable' with value 'DifferentValue' was previously declared with value 'Value'.",
155 @"WIX1102: The DefaultLanguage '1033' was used for file 'filcV1yrx0x8wJWj4qMzcH21jwkPko' which has no language or version. For unversioned files, specifying a value for DefaultLanguage is not neccessary and it will not be used when determining file versions. Remove the DefaultLanguage attribute to eliminate this warning.",
156 @"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.",
157 @"WIX1118: The variable 'Variable' with value 'DifferentValue' was previously declared with value 'Value'.",
158 @"WIX1102: The DefaultLanguage '1033' was used for file 'filcV1yrx0x8wJWj4qMzcH21jwkPko' which has no language or version. For unversioned files, specifying a value for DefaultLanguage is not neccessary and it will not be used when determining file versions. Remove the DefaultLanguage attribute to eliminate this warning.",
159 @"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."
160 }, warnings);
161
162 var testMessages = result.Output.Where(line => line.Contains("TEST:")).Select(ReplacePathsInMessage).ToArray();
163 WixAssert.CompareLineByLine(new[]
164 {
165 @"TEST: SignCabs: <basefolder>\obj\x86\Release\en-US\cab1.cab",
166 @"TEST: SignMsi: obj\x86\Release\en-US\MsiPackage.msi",
167 }, testMessages);
137 168
138 var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) 169 var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories)
139 .Select(s => s.Substring(baseFolder.Length + 1)) 170 .Select(s => s.Substring(baseFolder.Length + 1))
@@ -146,6 +177,20 @@ namespace WixToolsetTest.Sdk
146 @"bin\x86\Release\en-US\MsiPackage.wixpdb", 177 @"bin\x86\Release\en-US\MsiPackage.wixpdb",
147 }, paths); 178 }, paths);
148 } 179 }
180
181 string ExtractWarningFromMessage(string message)
182 {
183 const string prefix = ": warning ";
184
185 var start = message.IndexOf(prefix) + prefix.Length;
186 var end = message.LastIndexOf("[");
187 return ReplacePathsInMessage(message.Substring(start, end - start));
188 }
189
190 string ReplacePathsInMessage(string message)
191 {
192 return message.Replace(baseFolder, "<basefolder>").Trim();
193 }
149 } 194 }
150 195
151 [Theory] 196 [Theory]