@joebigelow / wix / commits / 722ffb41

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 {