@joebigelow / wix / commits / 94b3c44e

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" />