Fix EnvironmentTuple nullable fields. Add test.
Bob Arnson committed
Nov 14, 2019 at 18:10 UTC
94b3c44ea27e29253a26e18bf0c70295d0fc48e5
4 files changed
+59
-1
src/WixToolset.Core/Compiler.cs
+1
-1
@@ -5203,7 +5203,7 @@ namespace WixToolset.Core
5203
this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
5204
}
5205
5206
- if (!part.HasValue && action == EnvironmentActionType.Create)
5206
+ if (part.HasValue && action == EnvironmentActionType.Create)
5207
{
5208
this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Part", "Action", "create"));
5209
}
src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs
+44
@@ -427,6 +427,41 @@ namespace WixToolsetTest.CoreIntegration
427
}
428
}
429
430
+ [Fact]
431
+ public void PopulatesEnvironmentTable()
432
+ {
433
+ var folder = TestData.Get(@"TestData");
434
+
435
+ using (var fs = new DisposableFileSystem())
436
+ {
437
+ var baseFolder = fs.GetFolder();
438
+ var intermediateFolder = Path.Combine(baseFolder, "obj");
439
+ var msiPath = Path.Combine(baseFolder, @"bin\test.msi");
440
+
441
+ var result = WixRunner.Execute(new[]
442
+ {
443
+ "build",
444
+ Path.Combine(folder, "Environment", "Environment.wxs"),
445
+ Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
446
+ "-bindpath", Path.Combine(folder, "SingleFile", "data"),
447
+ "-intermediateFolder", intermediateFolder,
448
+ "-o", msiPath
449
+ });
450
+
451
+ result.AssertSuccess();
452
+
453
+ Assert.True(File.Exists(msiPath));
454
+ var results = Query.QueryDatabase(msiPath, new[] { "Environment" });
455
+ Assert.Equal(new[]
456
+ {
457
+ "Environment:WixEnvironmentTest1\t=-WixEnvTest1\t\tWixEnvironmentTest",
458
+ "Environment:WixEnvironmentTest2\t+-WixEnvTest1\t\tWixEnvironmentTest",
459
+ "Environment:WixEnvironmentTest3\t!-WixEnvTest1\t\tWixEnvironmentTest",
460
+ "Environment:WixEnvironmentTest4\t=-*WIX\t[INSTALLFOLDER]\tWixEnvironmentTest",
461
+ }, results);
462
+ }
463
+ }
464
+
465
[Fact]
466
public void PopulatesFeatureTableWithParent()
467
{
@@ -942,6 +977,15 @@ namespace WixToolsetTest.CoreIntegration
977
"Upgrade:{12E4699F-E774-4D05-8A01-5BDD41BBA127}\t1.0.0.0\t\t1033\t2\t\tWIX_DOWNGRADE_DETECTED",
978
"Upgrade:{B05772EA-82B8-4DE0-B7EB-45B5F0CCFE6D}\t1.0.0\t\t\t256\t\tRELPRODFOUND",
979
}, results);
980
+
981
+ var prefix = "Property:SecureCustomProperties\t";
982
+ var secureProperties = Query.QueryDatabase(msiPath, new[] { "Property" }).Where(p => p.StartsWith(prefix)).Single();
983
+ Assert.Equal(new[]
984
+ {
985
+ "RELPRODFOUND",
986
+ "WIX_DOWNGRADE_DETECTED",
987
+ "WIX_UPGRADE_DETECTED",
988
+ }, secureProperties.Substring(prefix.Length).Split(';').OrderBy(p => p));
989
}
990
}
991
}
src/test/WixToolsetTest.CoreIntegration/TestData/Environment/Environment.wxs
new
+13
@@ -0,0 +1,13 @@
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="WixEnvironmentTest" Guid="{068C1CF4-DA54-4221-B0D2-E7310770DF0B}" Directory="INSTALLFOLDER">
6
+ <Environment Id="WixEnvironmentTest1" Action="set" Name="WixEnvTest1"/>
7
+ <Environment Id="WixEnvironmentTest2" Action="create" Name="WixEnvTest1"/>
8
+ <Environment Id="WixEnvironmentTest3" Action="remove" Name="WixEnvTest1"/>
9
+ <Environment Id="WixEnvironmentTest4" Name="WIX" Action="set" System="yes" Value="[INSTALLFOLDER]" />
10
+ </Component>
11
+ </ComponentGroup>
12
+ </Fragment>
13
+</Wix>
src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
+1
@@ -31,6 +31,7 @@
31
<Content Include="TestData\DialogsInInstallUISequence\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
32
<Content Include="TestData\DialogsInInstallUISequence\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
33
<Content Include="TestData\DialogsInInstallUISequence\PackageComponents.wxs" CopyToOutputDirectory="PreserveNewest" />
34
+ <Content Include="TestData\Environment\Environment.wxs" CopyToOutputDirectory="PreserveNewest" />
35
<Content Include="TestData\ErrorsInUI\data\test.txt" CopyToOutputDirectory="PreserveNewest" />
36
<Content Include="TestData\ErrorsInUI\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
37
<Content Include="TestData\ErrorsInUI\Package.wxs" CopyToOutputDirectory="PreserveNewest" />