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" />