diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-03-30 17:07:12 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-04-01 22:06:11 -0500 |
commit | d97c0d1685ef4c3840776327e76ce25d4dbdbeb1 (patch) | |
tree | 03df42379fb670389ce5c2d67f56907617072a18 | |
parent | fec789e9645a0f1dc1d91143bf7592cba8c4f0a2 (diff) | |
download | wix-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.cs | 43 | ||||
-rw-r--r-- | src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs | 12 |
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}"); |