@joebigelow / wix / commits / aa5a5e49

Add failing test for AsString on a number field with 0.

Sean Hall committed Oct 15, 2019 at 11:12 UTC aa5a5e492f9a7060720056c27963cf1d06b4737f
4 files changed +82 -2
src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs
+32
@@ -680,6 +680,38 @@ namespace WixToolsetTest.CoreIntegration
680 }
681 }
682
683 + [Fact]
684 + public void PopulatesTypeLibTableWhenLanguageIsZero()
685 + {
686 + var folder = TestData.Get(@"TestData");
687 +
688 + using (var fs = new DisposableFileSystem())
689 + {
690 + var baseFolder = fs.GetFolder();
691 + var intermediateFolder = Path.Combine(baseFolder, "obj");
692 + var msiPath = Path.Combine(baseFolder, @"bin\test.msi");
693 +
694 + var result = WixRunner.Execute(new[]
695 + {
696 + "build",
697 + Path.Combine(folder, "TypeLib", "Language0.wxs"),
698 + Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
699 + "-bindpath", Path.Combine(folder, "SingleFile", "data"),
700 + "-intermediateFolder", intermediateFolder,
701 + "-o", msiPath
702 + });
703 +
704 + result.AssertSuccess();
705 +
706 + Assert.True(File.Exists(msiPath));
707 + var results = Query.QueryDatabase(msiPath, new[] { "TypeLib" });
708 + Assert.Equal(new[]
709 + {
710 + "TypeLib:{765BE8EE-BD7F-491E-90D2-C5A972462B50}\t0\tTypeLibComp\t\t\t\tProductFeature\t",
711 + }, results);
712 + }
713 + }
714 +
715 [Fact]
716 public void PopulatesUpgradeTableFromManualUpgrade()
717 {
src/test/WixToolsetTest.CoreIntegration/TestData/TypeLib/Language0.wxs new
+11
@@ -0,0 +1,11 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 + <Fragment>
4 + <ComponentGroup Id="ProductComponents">
5 + <Component Id="TypeLibComp" Directory="INSTALLFOLDER" Guid="E85CB46B-BC22-4943-B678-5E399CBE53A6">
6 + <File Source="test.txt" Name="TypeLibComp.txt"></File>
7 + <TypeLib Id="765BE8EE-BD7F-491E-90D2-C5A972462B50" Advertise="yes" Language="0" />
8 + </Component>
9 + </ComponentGroup>
10 + </Fragment>
11 +</Wix>
src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
+1
@@ -114,6 +114,7 @@
114 <Content Include="TestData\OverridableActions\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
115 <Content Include="TestData\OverridableActions\PackageComponents.wxs" CopyToOutputDirectory="PreserveNewest" />
116 <Content Include="TestData\TextStyle\ColorNull.wxs" CopyToOutputDirectory="PreserveNewest" />
117 + <Content Include="TestData\TypeLib\Language0.wxs" CopyToOutputDirectory="PreserveNewest" />
118 <Content Include="TestData\Wixipl\data\test.txt" CopyToOutputDirectory="PreserveNewest" />
119 <Content Include="TestData\Wixipl\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
120 <Content Include="TestData\Wixipl\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
src/test/WixToolsetTest.CoreIntegration/WixlibQueryFixture.cs
+38 -2
@@ -21,18 +21,19 @@ namespace WixToolsetTest.CoreIntegration
21 {
22 var baseFolder = fs.GetFolder();
23 var intermediateFolder = Path.Combine(baseFolder, "obj");
24 + var wixlibPath = Path.Combine(intermediateFolder, @"test.wixlib");
25
26 var result = WixRunner.Execute(new[]
27 {
28 "build",
29 Path.Combine(folder, "DetectOnly.wxs"),
30 "-intermediateFolder", intermediateFolder,
30 - "-o", Path.Combine(intermediateFolder, @"test.wixlib"),
31 + "-o", wixlibPath,
32 });
33
34 result.AssertSuccess();
35
35 - var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"test.wixlib"));
36 + var intermediate = Intermediate.Load(wixlibPath);
37 var allTuples = intermediate.Sections.SelectMany(s => s.Tuples);
38 var wixSimpleRefTuples = allTuples.OfType<WixSimpleReferenceTuple>();
39 var repRef = wixSimpleRefTuples.Where(t => t.Table == "WixAction" &&
@@ -41,5 +42,40 @@ namespace WixToolsetTest.CoreIntegration
42 Assert.NotNull(repRef);
43 }
44 }
45 +
46 + [Fact(Skip = "Test demonstrates failure")]
47 + public void TypeLibLanguageAsStringReturnsZero()
48 + {
49 + var folder = TestData.Get(@"TestData\TypeLib");
50 +
51 + using (var fs = new DisposableFileSystem())
52 + {
53 + var baseFolder = fs.GetFolder();
54 + var intermediateFolder = Path.Combine(baseFolder, "obj");
55 + var wixlibPath = Path.Combine(intermediateFolder, @"test.wixlib");
56 +
57 + var result = WixRunner.Execute(new[]
58 + {
59 + "build",
60 + Path.Combine(folder, "Language0.wxs"),
61 + "-intermediateFolder", intermediateFolder,
62 + "-o", wixlibPath
63 + });
64 +
65 + result.AssertSuccess();
66 +
67 + var intermediate = Intermediate.Load(wixlibPath);
68 + var allTuples = intermediate.Sections.SelectMany(s => s.Tuples);
69 + var typeLibTuple = allTuples.OfType<TypeLibTuple>()
70 + .SingleOrDefault();
71 + Assert.NotNull(typeLibTuple);
72 +
73 + var fields = typeLibTuple.Fields.Select(field => field?.Type == IntermediateFieldType.Bool
74 + ? field.AsNullableNumber()?.ToString()
75 + : field?.AsString())
76 + .ToList();
77 + Assert.Equal("0", fields[1]);
78 + }
79 + }
80 }
81 }