Create unit test for WixVariable resolution issue #6376
Andrij Abyzov committed
Mar 4, 2021 at 00:43 UTC
722ffb41bb83879d3e086b6faffd45ee38c5a5b6
6 files changed
+105
src/test/WixToolsetTest.CoreIntegration/TestData/WixVariableOverride/Package.en-us.wxl
new
+11
@@ -0,0 +1,11 @@
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
+
8
+ <String Id="DowngradeError">A newer version of [ProductName] is already installed.</String>
9
+ <String Id="FeatureTitle">MsiPackage</String>
10
+
11
+</WixLocalization>
src/test/WixToolsetTest.CoreIntegration/TestData/WixVariableOverride/Package.wxs
new
+21
@@ -0,0 +1,21 @@
1
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2
+ <Package Name="MsiPackage" Codepage="1252" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" Compressed="no" InstallerVersion="200" Scope="perMachine">
3
+
4
+
5
+ <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
6
+
7
+ <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
8
+ <ComponentGroupRef Id="ProductComponents" />
9
+ </Feature>
10
+
11
+ <WixVariable Id="TestFile" Value="test2.txt" />
12
+ </Package>
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/WixVariableOverride/PackageComponents.wxs
new
+14
@@ -0,0 +1,14 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3
+ <Fragment>
4
+ <Binary Id="Test.txt" SourceFile="!(wix.TestFile=test.txt)" />
5
+ <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
6
+ <Component>
7
+ <File Source="test.txt" />
8
+ </Component>
9
+ <Component Id="Shared.dll" Shared="yes">
10
+ <File Name="Shared.dll" Source="test.txt" />
11
+ </Component>
12
+ </ComponentGroup>
13
+ </Fragment>
14
+</Wix>
src/test/WixToolsetTest.CoreIntegration/TestData/WixVariableOverride/data/test.txt
new
+1
@@ -0,0 +1 @@
1
+This is test.txt.
\ No newline at end of file
src/test/WixToolsetTest.CoreIntegration/TestData/WixVariableOverride/data/test2.txt
new
+1
@@ -0,0 +1 @@
1
+This is test2.txt.
\ No newline at end of file
src/test/WixToolsetTest.CoreIntegration/WixlibFixture.cs
+57
@@ -144,6 +144,63 @@ namespace WixToolsetTest.CoreIntegration
144
}
145
}
146
147
+ [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6376")]
148
+ public void CanOverridePathWixVariable()
149
+ {
150
+ var folder = TestData.Get(@"TestData\WixVariableOverride");
151
+
152
+ using (var fs = new DisposableFileSystem())
153
+ {
154
+ var baseFolder = fs.GetFolder();
155
+ var intermediateFolder = Path.Combine(baseFolder, "obj");
156
+ var wixlibPath = Path.Combine(intermediateFolder, @"test.wixlib");
157
+
158
+ var result = WixRunner.Execute(new[]
159
+ {
160
+ "build",
161
+ Path.Combine(folder, "PackageComponents.wxs"),
162
+ "-bf",
163
+ "-bindpath", Path.Combine(folder, "data"),
164
+ "-intermediateFolder", intermediateFolder,
165
+ "-o", wixlibPath,
166
+ });
167
+
168
+ result.AssertSuccess();
169
+
170
+ var wixlib = Intermediate.Load(wixlibPath);
171
+
172
+ Assert.True(wixlib.HasLevel(IntermediateLevels.Compiled));
173
+ Assert.True(wixlib.HasLevel(IntermediateLevels.Combined));
174
+ Assert.False(wixlib.HasLevel(IntermediateLevels.Linked));
175
+ Assert.False(wixlib.HasLevel(IntermediateLevels.Resolved));
176
+
177
+ result = WixRunner.Execute(new[]
178
+ {
179
+ "build",
180
+ Path.Combine(folder, "Package.wxs"),
181
+ "-loc", Path.Combine(folder, "Package.en-us.wxl"),
182
+ "-lib", Path.Combine(intermediateFolder, @"test.wixlib"),
183
+ "-bindpath", Path.Combine(folder, "data"),
184
+ "-intermediateFolder", intermediateFolder,
185
+ "-o", Path.Combine(baseFolder, @"bin\test.msi")
186
+ });
187
+
188
+ result.AssertSuccess();
189
+
190
+ var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb"));
191
+
192
+ Assert.False(intermediate.HasLevel(IntermediateLevels.Compiled));
193
+ Assert.False(intermediate.HasLevel(IntermediateLevels.Combined));
194
+ Assert.True(intermediate.HasLevel(IntermediateLevels.Linked));
195
+ Assert.True(intermediate.HasLevel(IntermediateLevels.Resolved));
196
+
197
+ var section = intermediate.Sections.Single();
198
+
199
+ var wixFile = section.Symbols.OfType<BinarySymbol>().First();
200
+ Assert.Equal(Path.Combine(folder, @"data\test2.txt"), wixFile.Data.Path);
201
+ }
202
+ }
203
+
204
[Fact]
205
public void CanBuildWithExtensionUsingWixlib()
206
{