Fix infinite loop in ResolveDelayedFieldsCommand and add failing test.
Sean Hall committed
Apr 14, 2021 at 22:03 UTC
930b0ca136824d7f4917482fe7a7a577d28f6903
3 files changed
+37
src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
+1
@@ -149,6 +149,7 @@ namespace WixToolset.Core.Bind
149
else
150
{
151
this.Messaging.Write(ErrorMessages.UnresolvedBindReference(sourceLineNumbers, value));
152
+ break;
153
}
154
}
155
else
src/test/WixToolsetTest.CoreIntegration/BindVariablesFixture.cs
+28
@@ -10,6 +10,34 @@ namespace WixToolsetTest.CoreIntegration
10
11
public class BindVariablesFixture
12
{
13
+ [Fact(Skip = "Test demonstrates failure")]
14
+ public void CanBuildBundleWithPackageBindVariables()
15
+ {
16
+ var folder = TestData.Get(@"TestData");
17
+
18
+ using (var fs = new DisposableFileSystem())
19
+ {
20
+ var baseFolder = fs.GetFolder();
21
+ var intermediateFolder = Path.Combine(baseFolder, "obj");
22
+ var exePath = Path.Combine(baseFolder, @"bin\test.exe");
23
+
24
+ var result = WixRunner.Execute(new[]
25
+ {
26
+ "build",
27
+ Path.Combine(folder, "BundleBindVariables", "CacheIdFromPackageDescription.wxs"),
28
+ Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"),
29
+ "-bindpath", Path.Combine(folder, "SimpleBundle", "data"),
30
+ "-bindpath", Path.Combine(folder, ".Data"),
31
+ "-intermediateFolder", intermediateFolder,
32
+ "-o", exePath,
33
+ });
34
+
35
+ result.AssertSuccess();
36
+
37
+ Assert.True(File.Exists(exePath));
38
+ }
39
+ }
40
+
41
[Fact]
42
public void CanBuildWithDefaultValue()
43
{
src/test/WixToolsetTest.CoreIntegration/TestData/BundleBindVariables/CacheIdFromPackageDescription.wxs
new
+8
@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3
+ <Fragment>
4
+ <PackageGroup Id="BundlePackages">
5
+ <MsiPackage SourceFile="test.msi" CacheId="!(bind.packageDescription.test.msi)" />
6
+ </PackageGroup>
7
+ </Fragment>
8
+</Wix>