@joebigelow / wix-1 / commits / f76653ea

Undo CreateTuple change and add ErrorTuple test.

Strongly-typed tuples are preferred and avoid field-zero/id confusion.

Bob Arnson committed Oct 23, 2019 at 18:36 UTC f76653eab39c2df233d1d884542241c9aea4c5ff
7 files changed +98
src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
+12
@@ -913,6 +913,18 @@ namespace WixToolset.Core.ExtensibilityServices
913 {
914 var tuple = tupleDefinition.CreateTuple(sourceLineNumbers, identifier);
915
916 + if (null != identifier)
917 + {
918 + if (tuple.Definition.FieldDefinitions[0].Type == IntermediateFieldType.Number)
919 + {
920 + tuple.Set(0, Convert.ToInt32(identifier.Id));
921 + }
922 + else
923 + {
924 + tuple.Set(0, identifier.Id);
925 + }
926 + }
927 +
928 section.Tuples.Add(tuple);
929
930 return tuple;
src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
+36
@@ -247,6 +247,42 @@ namespace WixToolsetTest.CoreIntegration
247 }
248 }
249
250 + [Fact]
251 + public void CanBuildWithErrorTable()
252 + {
253 + var folder = TestData.Get(@"TestData\ErrorsInUI");
254 +
255 + using (var fs = new DisposableFileSystem())
256 + {
257 + var baseFolder = fs.GetFolder();
258 + var intermediateFolder = Path.Combine(baseFolder, "obj");
259 +
260 + var result = WixRunner.Execute(new[]
261 + {
262 + "build",
263 + Path.Combine(folder, "Package.wxs"),
264 + Path.Combine(folder, "PackageComponents.wxs"),
265 + "-loc", Path.Combine(folder, "Package.en-us.wxl"),
266 + "-bindpath", Path.Combine(folder, "data"),
267 + "-intermediateFolder", intermediateFolder,
268 + "-o", Path.Combine(baseFolder, @"bin\test.msi")
269 + });
270 +
271 + result.AssertSuccess();
272 +
273 + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi")));
274 + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb")));
275 + Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt")));
276 +
277 + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"test.wir"));
278 + var section = intermediate.Sections.Single();
279 +
280 + var error = section.Tuples.OfType<ErrorTuple>().Single();
281 + Assert.Equal(1234, error.Error);
282 + Assert.Equal("Category 55 Emergency Doomsday Crisis", error.Message.Trim());
283 + }
284 + }
285 +
286 [Fact]
287 public void CanLoadPdbGeneratedByBuild()
288 {
src/test/WixToolsetTest.CoreIntegration/TestData/ErrorsInUI/Package.en-us.wxl new
+9
@@ -0,0 +1,9 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +
3 +<!--
4 +This file contains the declaration of all the localizable strings.
5 +-->
6 +<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US">
7 + <String Id="DowngradeError">A newer version of [ProductName] is already installed.</String>
8 + <String Id="FeatureTitle">MsiPackage</String>
9 +</WixLocalization>
src/test/WixToolsetTest.CoreIntegration/TestData/ErrorsInUI/Package.wxs new
+21
@@ -0,0 +1,21 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 + <Product Id="*" Name="MsiPackage" Codepage="1252" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
4 + <Package InstallerVersion="200" Compressed="no" InstallScope="perMachine" />
5 +
6 + <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
7 + <MediaTemplate />
8 +
9 + <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
10 + <ComponentGroupRef Id="ProductComponents" />
11 + </Feature>
12 + </Product>
13 +
14 + <Fragment>
15 + <Directory Id="TARGETDIR" Name="SourceDir">
16 + <Directory Id="ProgramFilesFolder">
17 + <Directory Id="INSTALLFOLDER" Name="MsiPackage" />
18 + </Directory>
19 + </Directory>
20 + </Fragment>
21 +</Wix>
src/test/WixToolsetTest.CoreIntegration/TestData/ErrorsInUI/PackageComponents.wxs new
+15
@@ -0,0 +1,15 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 + <Fragment>
4 + <UI>
5 + <Error Id="1234">
6 + Category 55 Emergency Doomsday Crisis
7 + </Error>
8 + </UI>
9 + <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
10 + <Component>
11 + <File Source="test.txt" />
12 + </Component>
13 + </ComponentGroup>
14 + </Fragment>
15 +</Wix>
src/test/WixToolsetTest.CoreIntegration/TestData/ErrorsInUI/data/test.txt new
+1
@@ -0,0 +1 @@
1 +This is test.txt.
\ No newline at end of file
src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
+4
@@ -28,6 +28,10 @@
28 <Content Include="TestData\DialogsInInstallUISequence\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
29 <Content Include="TestData\DialogsInInstallUISequence\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
30 <Content Include="TestData\DialogsInInstallUISequence\PackageComponents.wxs" CopyToOutputDirectory="PreserveNewest" />
31 + <Content Include="TestData\ErrorsInUI\data\test.txt" CopyToOutputDirectory="PreserveNewest" />
32 + <Content Include="TestData\ErrorsInUI\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
33 + <Content Include="TestData\ErrorsInUI\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
34 + <Content Include="TestData\ErrorsInUI\PackageComponents.wxs" CopyToOutputDirectory="PreserveNewest" />
35 <Content Include="TestData\FeatureGroup\FeatureGroup.wxs" CopyToOutputDirectory="PreserveNewest" />
36 <Content Include="TestData\Font\FontTitle.wxs" CopyToOutputDirectory="PreserveNewest" />
37 <Content Include="TestData\Icon\SampleIcon.wxs" CopyToOutputDirectory="PreserveNewest" />