aboutsummaryrefslogtreecommitdiff
path: root/src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs')
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs112
1 files changed, 107 insertions, 5 deletions
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs
index 2a325aa4..f17a92e0 100644
--- a/src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/VersionFixture.cs
@@ -13,6 +13,101 @@ namespace WixToolsetTest.CoreIntegration
13 public class VersionFixture 13 public class VersionFixture
14 { 14 {
15 [Fact] 15 [Fact]
16 public void CanBuildMsiWithPrefixedVersion()
17 {
18 var folder = TestData.Get(@"TestData");
19
20 using (var fs = new DisposableFileSystem())
21 {
22 var baseFolder = fs.GetFolder();
23 var intermediateFolder = Path.Combine(baseFolder, "obj");
24 var msiPath = Path.Combine(baseFolder, "bin", "test1.msi");
25
26 var result = WixRunner.Execute(new[]
27 {
28 "build",
29 Path.Combine(folder, "Version", "PackageWithReplaceableVersion.wxs"),
30 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
31 "-intermediateFolder", intermediateFolder,
32 "-d", "Version=v4.3.2.1",
33 "-o", msiPath
34 });
35
36 result.AssertSuccess();
37
38 var productVersion = GetProductVersionFromMsi(msiPath);
39 Assert.Equal("4.3.2.1", productVersion);
40 }
41 }
42
43 [Fact]
44 public void CanBuildMsiWithPrefixedVersionBindVariable()
45 {
46 var folder = TestData.Get(@"TestData");
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(baseFolder, "bin", "test1.msi");
53
54 var result = WixRunner.Execute(new[]
55 {
56 "build",
57 Path.Combine(folder, "Version", "PackageWithBindVariableVersion.wxs"),
58 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
59 "-intermediateFolder", intermediateFolder,
60 "-o", msiPath
61 });
62
63 result.AssertSuccess();
64
65 var productVersion = GetProductVersionFromMsi(msiPath);
66 Assert.Equal("9.8.7.6", productVersion);
67
68 var directoryTable = Query.QueryDatabase(msiPath, new[] { "Directory" }).OrderBy(s => s).ToArray();
69 WixAssert.CompareLineByLine(new[]
70 {
71 "Directory:DesktopFolder\tTARGETDIR\tDesktop",
72 "Directory:INSTALLFOLDER\tDesktopFolder\tpja2bznq|MsiPackage v9.8.7.6 and 9.8.7.6",
73 "Directory:TARGETDIR\t\tSourceDir"
74 }, directoryTable);
75 }
76 }
77
78 [Fact]
79 public void CannotBuildMsiWithExtendedVersion()
80 {
81 var folder = TestData.Get(@"TestData");
82
83 using (var fs = new DisposableFileSystem())
84 {
85 var baseFolder = fs.GetFolder();
86 var intermediateFolder = Path.Combine(baseFolder, "obj");
87 var msiPath = Path.Combine(baseFolder, "bin", "test1.msi");
88
89 var result = WixRunner.Execute(new[]
90 {
91 "build",
92 Path.Combine(folder, "Version", "PackageWithReplaceableVersion.wxs"),
93 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
94 "-intermediateFolder", intermediateFolder,
95 "-d", "Version=v4.3.2-preview.1",
96 "-o", msiPath
97 });
98
99 var errorMessages = result.Messages.Where(m => m.Level == MessageLevel.Error)
100 .Select(m => m.ToString())
101 .ToArray();
102 WixAssert.CompareLineByLine(new[]
103 {
104 "Invalid product version 'v4.3.2-preview.1'. MSI product versions must have a major version less than 256, a minor version less than 256, and a build version less than 65536. The revision value is ignored but version labels and metadata are not allowed.",
105 }, errorMessages);
106 Assert.Equal(242, result.ExitCode);
107 }
108 }
109
110 [Fact]
16 public void CannotBuildMsiWithInvalidMajorVersion() 111 public void CannotBuildMsiWithInvalidMajorVersion()
17 { 112 {
18 var folder = TestData.Get(@"TestData"); 113 var folder = TestData.Get(@"TestData");
@@ -26,7 +121,7 @@ namespace WixToolsetTest.CoreIntegration
26 var result = WixRunner.Execute(new[] 121 var result = WixRunner.Execute(new[]
27 { 122 {
28 "build", 123 "build",
29 Path.Combine(folder, "Version", "Package.wxs"), 124 Path.Combine(folder, "Version", "PackageWithReplaceableVersion.wxs"),
30 "-bindpath", Path.Combine(folder, "SingleFile", "data"), 125 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
31 "-intermediateFolder", intermediateFolder, 126 "-intermediateFolder", intermediateFolder,
32 "-d", "Version=257.0.0", 127 "-d", "Version=257.0.0",
@@ -38,7 +133,7 @@ namespace WixToolsetTest.CoreIntegration
38 .ToArray(); 133 .ToArray();
39 WixAssert.CompareLineByLine(new[] 134 WixAssert.CompareLineByLine(new[]
40 { 135 {
41 "Invalid product version '257.0.0'. Product version must have a major version less than 256, a minor version less than 256, and a build version less than 65536.", 136 "Invalid product version '257.0.0'. MSI product versions must have a major version less than 256, a minor version less than 256, and a build version less than 65536. The revision value is ignored but version labels and metadata are not allowed.",
42 }, errorMessages); 137 }, errorMessages);
43 Assert.Equal(242, result.ExitCode); 138 Assert.Equal(242, result.ExitCode);
44 } 139 }
@@ -60,7 +155,7 @@ namespace WixToolsetTest.CoreIntegration
60 var result = WixRunner.Execute(new[] 155 var result = WixRunner.Execute(new[]
61 { 156 {
62 "build", 157 "build",
63 Path.Combine(folder, "Version", "Package.wxs"), 158 Path.Combine(folder, "Version", "PackageWithReplaceableVersion.wxs"),
64 "-bindpath", Path.Combine(folder, "SingleFile", "data"), 159 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
65 "-intermediateFolder", intermediateFolder, 160 "-intermediateFolder", intermediateFolder,
66 "-d", "Version=255.255.65535", 161 "-d", "Version=255.255.65535",
@@ -82,8 +177,7 @@ namespace WixToolsetTest.CoreIntegration
82 177
83 result3.AssertSuccess(); 178 result3.AssertSuccess();
84 179
85 var propertyTable = Query.QueryDatabase(msiPath, new[] { "Property" }).Select(r => r.Split('\t')).ToDictionary(r => r[0].Substring("Property:".Length), r => r[1]); 180 var productVersion = GetProductVersionFromMsi(msiPath);
86 Assert.True(propertyTable.TryGetValue("ProductVersion", out var productVersion));
87 WixAssert.StringEqual("255.255.65535", productVersion); 181 WixAssert.StringEqual("255.255.65535", productVersion);
88 182
89 var extractResult = BundleExtractor.ExtractAllContainers(null, bundlePath, Path.Combine(baseFolder, "ba"), Path.Combine(baseFolder, "attached"), Path.Combine(baseFolder, "extract")); 183 var extractResult = BundleExtractor.ExtractAllContainers(null, bundlePath, Path.Combine(baseFolder, "ba"), Path.Combine(baseFolder, "attached"), Path.Combine(baseFolder, "extract"));
@@ -95,5 +189,13 @@ namespace WixToolsetTest.CoreIntegration
95 WixAssert.StringEqual("2022.3.9-preview.0-build.5+0987654321abcdef1234567890", bundleVersion.Value); 189 WixAssert.StringEqual("2022.3.9-preview.0-build.5+0987654321abcdef1234567890", bundleVersion.Value);
96 } 190 }
97 } 191 }
192
193 private static string GetProductVersionFromMsi(string msiPath)
194 {
195 var propertyTable = Query.QueryDatabase(msiPath, new[] { "Property" }).Select(r => r.Split('\t')).ToDictionary(r => r[0].Substring("Property:".Length), r => r[1]);
196 Assert.True(propertyTable.TryGetValue("ProductVersion", out var productVersion));
197
198 return productVersion;
199 }
98 } 200 }
99} 201}