aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-03-30 17:07:12 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-04-01 22:06:11 -0500
commitd97c0d1685ef4c3840776327e76ce25d4dbdbeb1 (patch)
tree03df42379fb670389ce5c2d67f56907617072a18
parentfec789e9645a0f1dc1d91143bf7592cba8c4f0a2 (diff)
downloadwix-d97c0d1685ef4c3840776327e76ce25d4dbdbeb1.tar.gz
wix-d97c0d1685ef4c3840776327e76ce25d4dbdbeb1.tar.bz2
wix-d97c0d1685ef4c3840776327e76ce25d4dbdbeb1.zip
Update PackageVerifier to calculate installed path of file.
Fixes 6676
-rw-r--r--src/test/burn/WixTestTools/PackageVerifier.cs43
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs12
2 files changed, 41 insertions, 14 deletions
diff --git a/src/test/burn/WixTestTools/PackageVerifier.cs b/src/test/burn/WixTestTools/PackageVerifier.cs
index 2f42dd21..fd8378e0 100644
--- a/src/test/burn/WixTestTools/PackageVerifier.cs
+++ b/src/test/burn/WixTestTools/PackageVerifier.cs
@@ -19,19 +19,42 @@ namespace WixTestTools
19 19
20 public string GetInstalledFilePath(string filename) 20 public string GetInstalledFilePath(string filename)
21 { 21 {
22 return this.TestContext.GetTestInstallFolder(this.IsX64, Path.Combine(this.GetInstallFolderName(), filename)); 22 var fileRow = this.WiData.Tables["File"].Rows.Single(r => r.FieldAsString(2).Contains(filename));
23 } 23 var componentRow = this.WiData.Tables["Component"].Rows.Single(r => r.FieldAsString(0) == fileRow.FieldAsString(1));
24 var directoryId = componentRow.FieldAsString(2);
25 var path = filename;
24 26
25 public string GetInstallFolderName() 27 while (directoryId != null)
26 {
27 var row = this.WiData.Tables["Directory"].Rows.Single(r => r.FieldAsString(0) == "INSTALLFOLDER");
28 var value = row.FieldAsString(2);
29 var longNameIndex = value.IndexOf('|') + 1;
30 if (longNameIndex > 0)
31 { 28 {
32 return value.Substring(longNameIndex); 29 string directoryName;
30
31 if (directoryId == "ProgramFiles6432Folder")
32 {
33 var baseDirectory = this.IsX64 ? Environment.SpecialFolder.ProgramFiles : Environment.SpecialFolder.ProgramFilesX86;
34 directoryName = Environment.GetFolderPath(baseDirectory);
35
36 directoryId = null;
37 }
38 else if (directoryId == "LocalAppDataFolder")
39 {
40 directoryName = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
41
42 directoryId = null;
43 }
44 else
45 {
46 var directoryRow = this.WiData.Tables["Directory"].Rows.Single(r => r.FieldAsString(0) == directoryId);
47 var value = directoryRow.FieldAsString(2);
48 var longNameIndex = value.IndexOf('|') + 1;
49 directoryName = longNameIndex > 0 ? value.Substring(longNameIndex) : value;
50
51 directoryId = directoryRow.FieldAsString(1);
52 }
53
54 path = Path.Combine(directoryName, path);
33 } 55 }
34 return value; 56
57 return path;
35 } 58 }
36 59
37 public string GetProperty(string name) 60 public string GetProperty(string name)
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs
index b3b06995..89c5be9b 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs
@@ -41,10 +41,14 @@ namespace WixToolsetTest.BurnE2E
41 this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleA_x64"); 41 this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleA_x64");
42 } 42 }
43 43
44 [Fact(Skip = "Need to update assertions for per-user-ness.")] 44#if DEBUG
45 [Fact(Skip = "0xc0000005 during shutdown from tiptsf.dll")]
46#else
47 [Fact]
48#endif
45 public void CanInstallAndUninstallSimplePerUserBundle_x64_wixstdba() 49 public void CanInstallAndUninstallSimplePerUserBundle_x64_wixstdba()
46 { 50 {
47 this.CanInstallAndUninstallSimpleBundle("PackageApu_x64", "BundleApu_x64"); 51 this.CanInstallAndUninstallSimpleBundle("PackageApu_x64", "BundleApu_x64", "PackagePerUser.wxs");
48 } 52 }
49 53
50 [Fact] 54 [Fact]
@@ -65,13 +69,13 @@ namespace WixToolsetTest.BurnE2E
65 this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleD_x64"); 69 this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleD_x64");
66 } 70 }
67 71
68 private void CanInstallAndUninstallSimpleBundle(string packageName, string bundleName) 72 private void CanInstallAndUninstallSimpleBundle(string packageName, string bundleName, string fileName = "Package.wxs")
69 { 73 {
70 var package = this.CreatePackageInstaller(packageName); 74 var package = this.CreatePackageInstaller(packageName);
71 75
72 var bundle = this.CreateBundleInstaller(bundleName); 76 var bundle = this.CreateBundleInstaller(bundleName);
73 77
74 var packageSourceCodeInstalled = package.GetInstalledFilePath("Package.wxs"); 78 var packageSourceCodeInstalled = package.GetInstalledFilePath(fileName);
75 79
76 // Source file should *not* be installed 80 // Source file should *not* be installed
77 Assert.False(File.Exists(packageSourceCodeInstalled), $"{packageName} payload should not be there on test start: {packageSourceCodeInstalled}"); 81 Assert.False(File.Exists(packageSourceCodeInstalled), $"{packageName} payload should not be there on test start: {packageSourceCodeInstalled}");