main
cs 131 lines 5.33 KB
Raw
1 // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3 namespace WixToolsetTest.CoreIntegration
4 {
5 using System;
6 using System.IO;
7 using System.Linq;
8 using WixInternal.TestSupport;
9 using WixInternal.Core.TestPackage;
10 using Xunit;
11
12 public class BindVariablesFixture
13 {
14 [Fact]
15 public void CanBuildBundleWithPackageBindVariables()
16 {
17 var folder = TestData.Get(@"TestData");
18
19 using (var fs = new DisposableFileSystem())
20 {
21 var baseFolder = fs.GetFolder();
22 var intermediateFolder = Path.Combine(baseFolder, "obj");
23 var exePath = Path.Combine(baseFolder, @"bin\test.exe");
24
25 var result = WixRunner.Execute(new[]
26 {
27 "build",
28 Path.Combine(folder, "BundleBindVariables", "CacheIdFromPackageDescription.wxs"),
29 Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"),
30 "-bindpath", Path.Combine(folder, "SimpleBundle", "data"),
31 "-bindpath", Path.Combine(folder, ".Data"),
32 "-intermediateFolder", intermediateFolder,
33 "-o", exePath,
34 });
35
36 result.AssertSuccess();
37
38 Assert.True(File.Exists(exePath));
39 }
40 }
41
42 [Fact]
43 public void CanBuildPackageWithBindVariables()
44 {
45 var folder = TestData.Get(@"TestData", "BindVariables");
46 var dotDataFolder = TestData.Get(@"TestData", ".Data");
47
48 using (var fs = new DisposableFileSystem())
49 {
50 var baseFolder = fs.GetFolder();
51 var intermediateFolder = Path.Combine(baseFolder, "obj");
52 var msiPath = Path.Combine(intermediateFolder, @"test.msi");
53
54 var result = WixRunner.Execute(new[]
55 {
56 "build",
57 Path.Combine(folder, "PackageWithBindVariables.wxs"),
58 "-intermediateFolder", intermediateFolder,
59 "-bindpath", folder,
60 "-bindpath", dotDataFolder,
61 "-o", msiPath,
62 });
63
64 result.AssertSuccess();
65
66 var queryResults = Query.QueryDatabase(msiPath, new[] { "Property" }).ToDictionary(s => s.Split('\t')[0]);
67 WixAssert.StringEqual("Property:ProductVersion\t3.14.1703.0", queryResults["Property:ProductVersion"]);
68 WixAssert.StringEqual("Property:TestPackageManufacturer\tExample Corporation", queryResults["Property:TestPackageManufacturer"]);
69 WixAssert.StringEqual("Property:TestPackageName\tPacakgeWithBindVariables", queryResults["Property:TestPackageName"]);
70 WixAssert.StringEqual("Property:TestPackageVersion\t3.14.1703.0", queryResults["Property:TestPackageVersion"]);
71 WixAssert.StringEqual("Property:TestTextVersion\tv", queryResults["Property:TestTextVersion"]);
72 Assert.False(queryResults.ContainsKey("Property:TestTextLanguage"));
73 }
74 }
75
76 [Fact]
77 public void CanBuildWithDefaultValue()
78 {
79 var folder = TestData.Get(@"TestData", "BindVariables");
80
81 using (var fs = new DisposableFileSystem())
82 {
83 var baseFolder = fs.GetFolder();
84 var intermediateFolder = Path.Combine(baseFolder, "obj");
85 var wixlibPath = Path.Combine(intermediateFolder, @"test.wixlib");
86
87 var result = WixRunner.Execute(new[]
88 {
89 "build",
90 Path.Combine(folder, "DefaultedVariable.wxs"),
91 "-bf",
92 "-intermediateFolder", intermediateFolder,
93 "-bindpath", folder,
94 "-o", wixlibPath,
95 });
96
97 result.AssertSuccess();
98 }
99 }
100
101 [Fact]
102 public void CannotBuildWixlibWithBinariesFromMissingNamedBindPaths()
103 {
104 var folder = TestData.Get(@"TestData", "WixlibWithBinaries");
105
106 using (var fs = new DisposableFileSystem())
107 {
108 var baseFolder = fs.GetFolder();
109 var intermediateFolder = Path.Combine(baseFolder, "obj");
110 var wixlibPath = Path.Combine(intermediateFolder, @"test.wixlib");
111
112 var result = WixRunner.Execute(new[]
113 {
114 "build",
115 Path.Combine(folder, "PackageComponents.wxs"),
116 "-bf",
117 "-bindpath", Path.Combine(folder, "data"),
118 // Use names that aren't excluded in default .gitignores.
119 "-bindpath", $"AlphaBits={Path.Combine(folder, "data", "alpha")}",
120 "-bindpath", $"PowerBits={Path.Combine(folder, "data", "powerpc")}",
121 "-bindpath", $"{Path.Combine(folder, "data", "alpha")}",
122 "-bindpath", $"{Path.Combine(folder, "data", "powerpc")}",
123 "-intermediateFolder", intermediateFolder,
124 "-o", wixlibPath,
125 });
126
127 Assert.Equal(103, result.ExitCode);
128 }
129 }
130 }
131 }