aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-02-28 18:41:14 -0600
committerSean Hall <r.sean.hall@gmail.com>2022-03-01 11:37:00 -0600
commit3f658fa2b4bd80619fcf89e1e87ae12b48effb7a (patch)
treee10e352d4e5197f6dba708f098a7588ef55b78f4
parent7e61f48f6be0849cb0c0da796ec77603c14532e5 (diff)
downloadwix-3f658fa2b4bd80619fcf89e1e87ae12b48effb7a.tar.gz
wix-3f658fa2b4bd80619fcf89e1e87ae12b48effb7a.tar.bz2
wix-3f658fa2b4bd80619fcf89e1e87ae12b48effb7a.zip
Fix and run Burn 64-bit unit tests.
-rw-r--r--src/burn/burn.cmd3
-rw-r--r--src/burn/burn_t.proj1
-rw-r--r--src/burn/test/BurnUnitTest/RegistrationTest.cpp4
-rw-r--r--src/burn/test/BurnUnitTest/TestRegistryFixture.cpp208
-rw-r--r--src/burn/test/BurnUnitTest/TestRegistryFixture.h6
-rw-r--r--src/burn/test/BurnUnitTest/VariableTest.cpp8
-rw-r--r--src/internal/WixBuildTools.TestSupport.Native/build/WixBuildTools.TestSupport.Native.targets3
-rw-r--r--src/testresultfilelist.txt3
8 files changed, 157 insertions, 79 deletions
diff --git a/src/burn/burn.cmd b/src/burn/burn.cmd
index bd872bad..60640b08 100644
--- a/src/burn/burn.cmd
+++ b/src/burn/burn.cmd
@@ -15,7 +15,8 @@ nuget restore || exit /b
15 15
16msbuild burn_t.proj -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L%\burn_build.binlog || exit /b 16msbuild burn_t.proj -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L%\burn_build.binlog || exit /b
17 17
18msbuild test\BurnUnitTest -t:Test -p:Configuration=%_C% -nologo -p:CppCliTestResultsFile="%_L%\TestResults\BurnUnitTest.xunit2.xml" || exit /b 18msbuild test\BurnUnitTest -t:Test -p:Configuration=%_C% -p:Platform=Win32 -nologo -p:CppCliTestResultsFile="%_L%\TestResults\BurnUnitTest32.xunit2.xml" || exit /b
19msbuild test\BurnUnitTest -t:Test -p:Configuration=%_C% -p:Platform=x64 -nologo -p:CppCliTestResultsFile="%_L%\TestResults\BurnUnitTest64.xunit2.xml" || exit /b
19 20
20@popd 21@popd
21@endlocal 22@endlocal
diff --git a/src/burn/burn_t.proj b/src/burn/burn_t.proj
index ffc0c780..d7902fe1 100644
--- a/src/burn/burn_t.proj
+++ b/src/burn/burn_t.proj
@@ -1,6 +1,7 @@
1<Project Sdk="Microsoft.Build.Traversal"> 1<Project Sdk="Microsoft.Build.Traversal">
2 <ItemGroup> 2 <ItemGroup>
3 <ProjectReference Include="test\BurnUnitTest\BurnUnitTest.vcxproj" Properties="Platform=x86" BuildInParallel="false" /> 3 <ProjectReference Include="test\BurnUnitTest\BurnUnitTest.vcxproj" Properties="Platform=x86" BuildInParallel="false" />
4 <ProjectReference Include="test\BurnUnitTest\BurnUnitTest.vcxproj" Properties="Platform=x64" BuildInParallel="false" />
4 5
5 <ProjectReference Include="stub\stub.vcxproj" Properties="Platform=x86" /> 6 <ProjectReference Include="stub\stub.vcxproj" Properties="Platform=x86" />
6 <ProjectReference Include="stub\stub.vcxproj" Properties="Platform=x64" /> 7 <ProjectReference Include="stub\stub.vcxproj" Properties="Platform=x64" />
diff --git a/src/burn/test/BurnUnitTest/RegistrationTest.cpp b/src/burn/test/BurnUnitTest/RegistrationTest.cpp
index f3645893..6a10961d 100644
--- a/src/burn/test/BurnUnitTest/RegistrationTest.cpp
+++ b/src/burn/test/BurnUnitTest/RegistrationTest.cpp
@@ -37,8 +37,8 @@ namespace Bootstrapper
37 { 37 {
38 this->testRegistry = registryFixture; 38 this->testRegistry = registryFixture;
39 39
40 this->testRunKeyPath = this->testRegistry->GetDirectHkcuPath(gcnew String(REGISTRY_RUN_KEY)); 40 this->testRunKeyPath = this->testRegistry->GetDirectHkcuPath(REG_KEY_DEFAULT, gcnew String(REGISTRY_RUN_KEY));
41 this->testUninstallKeyPath = this->testRegistry->GetDirectHkcuPath(gcnew String(REGISTRY_UNINSTALL_KEY), gcnew String(TEST_BUNDLE_ID)); 41 this->testUninstallKeyPath = this->testRegistry->GetDirectHkcuPath(REG_KEY_DEFAULT, gcnew String(REGISTRY_UNINSTALL_KEY), gcnew String(TEST_BUNDLE_ID));
42 this->testVariableKeyPath = Path::Combine(this->testUninstallKeyPath, gcnew String(L"variables")); 42 this->testVariableKeyPath = Path::Combine(this->testUninstallKeyPath, gcnew String(L"variables"));
43 } 43 }
44 44
diff --git a/src/burn/test/BurnUnitTest/TestRegistryFixture.cpp b/src/burn/test/BurnUnitTest/TestRegistryFixture.cpp
index 3e78c6f5..1f3d7680 100644
--- a/src/burn/test/BurnUnitTest/TestRegistryFixture.cpp
+++ b/src/burn/test/BurnUnitTest/TestRegistryFixture.cpp
@@ -4,50 +4,108 @@
4 4
5#define TEST_REGISTRY_FIXTURE_ROOT_PATH L"SOFTWARE\\WiX_Burn_UnitTest" 5#define TEST_REGISTRY_FIXTURE_ROOT_PATH L"SOFTWARE\\WiX_Burn_UnitTest"
6#define TEST_REGISTRY_FIXTURE_HKLM_PATH TEST_REGISTRY_FIXTURE_ROOT_PATH L"\\HKLM" 6#define TEST_REGISTRY_FIXTURE_HKLM_PATH TEST_REGISTRY_FIXTURE_ROOT_PATH L"\\HKLM"
7#define TEST_REGISTRY_FIXTURE_HKLM32_PATH TEST_REGISTRY_FIXTURE_ROOT_PATH L"\\Wow6432Node\\HKLM"
7#define TEST_REGISTRY_FIXTURE_HKCU_PATH TEST_REGISTRY_FIXTURE_ROOT_PATH L"\\HKCU" 8#define TEST_REGISTRY_FIXTURE_HKCU_PATH TEST_REGISTRY_FIXTURE_ROOT_PATH L"\\HKCU"
9#define TEST_REGISTRY_FIXTURE_HKCU32_PATH TEST_REGISTRY_FIXTURE_ROOT_PATH L"\\Wow6432Node\\HKCU"
8 10
9static LSTATUS APIENTRY TestRegistryFixture_RegCreateKeyExW( 11static REG_KEY_BITNESS GetDesiredBitness(
12 __in REGSAM samDesired
13 )
14{
15 REG_KEY_BITNESS desiredBitness = REG_KEY_DEFAULT;
16
17 switch (KEY_WOW64_RES & samDesired)
18 {
19 case KEY_WOW64_32KEY:
20 desiredBitness = REG_KEY_32BIT;
21 break;
22 case KEY_WOW64_64KEY:
23 desiredBitness = REG_KEY_64BIT;
24 break;
25 default:
26#if defined(_WIN64)
27 desiredBitness = REG_KEY_64BIT;
28#else
29 desiredBitness = REG_KEY_32BIT;
30#endif
31 break;
32 }
33
34 return desiredBitness;
35}
36
37static LSTATUS GetRootKey(
10 __in HKEY hKey, 38 __in HKEY hKey,
11 __in LPCWSTR lpSubKey,
12 __reserved DWORD Reserved,
13 __in_opt LPWSTR lpClass,
14 __in DWORD dwOptions,
15 __in REGSAM samDesired, 39 __in REGSAM samDesired,
16 __in_opt CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, 40 __in ACCESS_MASK accessDesired,
17 __out PHKEY phkResult, 41 __inout HKEY* phkRoot)
18 __out_opt LPDWORD lpdwDisposition
19 )
20{ 42{
21 LSTATUS ls = ERROR_SUCCESS; 43 LSTATUS ls = ERROR_SUCCESS;
22 LPCWSTR wzRoot = NULL; 44 LPCWSTR wzRoot = NULL;
23 HKEY hkRoot = NULL;
24 45
25 if (HKEY_LOCAL_MACHINE == hKey) 46 if (HKEY_LOCAL_MACHINE == hKey)
26 { 47 {
27 wzRoot = TEST_REGISTRY_FIXTURE_HKLM_PATH; 48 if (REG_KEY_32BIT == GetDesiredBitness(samDesired))
49 {
50 wzRoot = TEST_REGISTRY_FIXTURE_HKLM32_PATH;
51 }
52 else
53 {
54 wzRoot = TEST_REGISTRY_FIXTURE_HKLM_PATH;
55 }
28 } 56 }
29 else if (HKEY_CURRENT_USER == hKey) 57 else if (HKEY_CURRENT_USER == hKey)
30 { 58 {
31 wzRoot = TEST_REGISTRY_FIXTURE_HKCU_PATH; 59 if (REG_KEY_32BIT == GetDesiredBitness(samDesired))
60 {
61 wzRoot = TEST_REGISTRY_FIXTURE_HKCU32_PATH;
62 }
63 else
64 {
65 wzRoot = TEST_REGISTRY_FIXTURE_HKCU_PATH;
66 }
67 }
68
69 if (wzRoot)
70 {
71 ls = ::RegOpenKeyExW(HKEY_CURRENT_USER, wzRoot, 0, KEY_WRITE | accessDesired, phkRoot);
32 } 72 }
33 else 73 else
34 { 74 {
35 hkRoot = hKey; 75 *phkRoot = hKey;
36 } 76 }
37 77
38 if (wzRoot) 78 return ls;
79}
80
81static LSTATUS APIENTRY TestRegistryFixture_RegCreateKeyExW(
82 __in HKEY hKey,
83 __in LPCWSTR lpSubKey,
84 __reserved DWORD Reserved,
85 __in_opt LPWSTR lpClass,
86 __in DWORD dwOptions,
87 __in REGSAM samDesired,
88 __in_opt CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
89 __out PHKEY phkResult,
90 __out_opt LPDWORD lpdwDisposition
91 )
92{
93 LSTATUS ls = ERROR_SUCCESS;
94 HKEY hkRoot = NULL;
95
96 ls = GetRootKey(hKey, samDesired, 0, &hkRoot);
97 if (ERROR_SUCCESS != ls)
39 { 98 {
40 ls = ::RegOpenKeyExW(HKEY_CURRENT_USER, wzRoot, 0, KEY_WRITE, &hkRoot); 99 ExitFunction();
41 if (ERROR_SUCCESS != ls)
42 {
43 ExitFunction();
44 }
45 } 100 }
46 101
47 ls = ::RegCreateKeyExW(hkRoot, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition); 102 ls = ::RegCreateKeyExW(hkRoot, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition);
48 103
49LExit: 104LExit:
50 ReleaseRegKey(hkRoot); 105 if (hkRoot != hKey)
106 {
107 ReleaseRegKey(hkRoot);
108 }
51 109
52 return ls; 110 return ls;
53} 111}
@@ -61,35 +119,21 @@ static LSTATUS APIENTRY TestRegistryFixture_RegOpenKeyExW(
61 ) 119 )
62{ 120{
63 LSTATUS ls = ERROR_SUCCESS; 121 LSTATUS ls = ERROR_SUCCESS;
64 LPCWSTR wzRoot = NULL;
65 HKEY hkRoot = NULL; 122 HKEY hkRoot = NULL;
66 123
67 if (HKEY_LOCAL_MACHINE == hKey) 124 ls = GetRootKey(hKey, samDesired, 0, &hkRoot);
68 { 125 if (ERROR_SUCCESS != ls)
69 wzRoot = TEST_REGISTRY_FIXTURE_HKLM_PATH;
70 }
71 else if (HKEY_CURRENT_USER == hKey)
72 {
73 wzRoot = TEST_REGISTRY_FIXTURE_HKCU_PATH;
74 }
75 else
76 {
77 hkRoot = hKey;
78 }
79
80 if (wzRoot)
81 { 126 {
82 ls = ::RegOpenKeyExW(HKEY_CURRENT_USER, wzRoot, 0, KEY_WRITE, &hkRoot); 127 ExitFunction();
83 if (ERROR_SUCCESS != ls)
84 {
85 ExitFunction();
86 }
87 } 128 }
88 129
89 ls = ::RegOpenKeyExW(hkRoot, lpSubKey, ulOptions, samDesired, phkResult); 130 ls = ::RegOpenKeyExW(hkRoot, lpSubKey, ulOptions, samDesired, phkResult);
90 131
91LExit: 132LExit:
92 ReleaseRegKey(hkRoot); 133 if (hkRoot != hKey)
134 {
135 ReleaseRegKey(hkRoot);
136 }
93 137
94 return ls; 138 return ls;
95} 139}
@@ -102,35 +146,21 @@ static LSTATUS APIENTRY TestRegistryFixture_RegDeleteKeyExW(
102 ) 146 )
103{ 147{
104 LSTATUS ls = ERROR_SUCCESS; 148 LSTATUS ls = ERROR_SUCCESS;
105 LPCWSTR wzRoot = NULL;
106 HKEY hkRoot = NULL; 149 HKEY hkRoot = NULL;
107 150
108 if (HKEY_LOCAL_MACHINE == hKey) 151 ls = GetRootKey(hKey, samDesired, samDesired, &hkRoot);
152 if (ERROR_SUCCESS != ls)
109 { 153 {
110 wzRoot = TEST_REGISTRY_FIXTURE_HKLM_PATH; 154 ExitFunction();
111 }
112 else if (HKEY_CURRENT_USER == hKey)
113 {
114 wzRoot = TEST_REGISTRY_FIXTURE_HKCU_PATH;
115 }
116 else
117 {
118 hkRoot = hKey;
119 }
120
121 if (wzRoot)
122 {
123 ls = ::RegOpenKeyExW(HKEY_CURRENT_USER, wzRoot, 0, KEY_WRITE | samDesired, &hkRoot);
124 if (ERROR_SUCCESS != ls)
125 {
126 ExitFunction();
127 }
128 } 155 }
129 156
130 ls = ::RegDeleteKeyExW(hkRoot, lpSubKey, samDesired, Reserved); 157 ls = ::RegDeleteKeyExW(hkRoot, lpSubKey, samDesired, Reserved);
131 158
132LExit: 159LExit:
133 ReleaseRegKey(hkRoot); 160 if (hkRoot != hKey)
161 {
162 ReleaseRegKey(hkRoot);
163 }
134 164
135 return ls; 165 return ls;
136} 166}
@@ -146,8 +176,6 @@ namespace WixBuildTools
146 TestRegistryFixture::TestRegistryFixture() 176 TestRegistryFixture::TestRegistryFixture()
147 { 177 {
148 this->rootPath = gcnew String(TEST_REGISTRY_FIXTURE_ROOT_PATH); 178 this->rootPath = gcnew String(TEST_REGISTRY_FIXTURE_ROOT_PATH);
149 this->hkcuPath = gcnew String(TEST_REGISTRY_FIXTURE_HKCU_PATH);
150 this->hklmPath = gcnew String(TEST_REGISTRY_FIXTURE_HKLM_PATH);
151 } 179 }
152 180
153 TestRegistryFixture::~TestRegistryFixture() 181 TestRegistryFixture::~TestRegistryFixture()
@@ -160,8 +188,10 @@ namespace WixBuildTools
160 // set mock API's 188 // set mock API's
161 RegFunctionOverride(TestRegistryFixture_RegCreateKeyExW, TestRegistryFixture_RegOpenKeyExW, TestRegistryFixture_RegDeleteKeyExW, NULL, NULL, NULL, NULL, NULL, NULL); 189 RegFunctionOverride(TestRegistryFixture_RegCreateKeyExW, TestRegistryFixture_RegOpenKeyExW, TestRegistryFixture_RegDeleteKeyExW, NULL, NULL, NULL, NULL, NULL, NULL);
162 190
163 Registry::CurrentUser->CreateSubKey(this->hkcuPath); 191 Registry::CurrentUser->CreateSubKey(TEST_REGISTRY_FIXTURE_HKCU_PATH);
164 Registry::CurrentUser->CreateSubKey(this->hklmPath); 192 Registry::CurrentUser->CreateSubKey(TEST_REGISTRY_FIXTURE_HKCU32_PATH);
193 Registry::CurrentUser->CreateSubKey(TEST_REGISTRY_FIXTURE_HKLM_PATH);
194 Registry::CurrentUser->CreateSubKey(TEST_REGISTRY_FIXTURE_HKLM32_PATH);
165 } 195 }
166 196
167 void TestRegistryFixture::TearDown() 197 void TestRegistryFixture::TearDown()
@@ -171,14 +201,52 @@ namespace WixBuildTools
171 RegFunctionOverride(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); 201 RegFunctionOverride(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
172 } 202 }
173 203
174 String^ TestRegistryFixture::GetDirectHkcuPath(... array<String^>^ paths) 204 String^ TestRegistryFixture::GetDirectHkcuPath(REG_KEY_BITNESS bitness, ... array<String^>^ paths)
175 { 205 {
176 return Path::Combine(Registry::CurrentUser->Name, this->hkcuPath, Path::Combine(paths)); 206 String^ hkcuPath;
207
208 switch (bitness)
209 {
210 case REG_KEY_32BIT:
211 hkcuPath = TEST_REGISTRY_FIXTURE_HKCU32_PATH;
212 break;
213 case REG_KEY_64BIT:
214 hkcuPath = TEST_REGISTRY_FIXTURE_HKCU_PATH;
215 break;
216 default:
217#if defined(_WIN64)
218 hkcuPath = TEST_REGISTRY_FIXTURE_HKCU_PATH;
219#else
220 hkcuPath = TEST_REGISTRY_FIXTURE_HKCU32_PATH;
221#endif
222 break;
223 }
224
225 return Path::Combine(Registry::CurrentUser->Name, hkcuPath, Path::Combine(paths));
177 } 226 }
178 227
179 String^ TestRegistryFixture::GetDirectHklmPath(... array<String^>^ paths) 228 String^ TestRegistryFixture::GetDirectHklmPath(REG_KEY_BITNESS bitness, ... array<String^>^ paths)
180 { 229 {
181 return Path::Combine(Registry::CurrentUser->Name, this->hklmPath, Path::Combine(paths)); 230 String^ hklmPath;
231
232 switch (bitness)
233 {
234 case REG_KEY_32BIT:
235 hklmPath = TEST_REGISTRY_FIXTURE_HKLM32_PATH;
236 break;
237 case REG_KEY_64BIT:
238 hklmPath = TEST_REGISTRY_FIXTURE_HKLM_PATH;
239 break;
240 default:
241#if defined(_WIN64)
242 hklmPath = TEST_REGISTRY_FIXTURE_HKLM_PATH;
243#else
244 hklmPath = TEST_REGISTRY_FIXTURE_HKLM32_PATH;
245#endif
246 break;
247 }
248
249 return Path::Combine(Registry::CurrentUser->Name, hklmPath, Path::Combine(paths));
182 } 250 }
183 } 251 }
184} 252}
diff --git a/src/burn/test/BurnUnitTest/TestRegistryFixture.h b/src/burn/test/BurnUnitTest/TestRegistryFixture.h
index 283efe42..2f283f3e 100644
--- a/src/burn/test/BurnUnitTest/TestRegistryFixture.h
+++ b/src/burn/test/BurnUnitTest/TestRegistryFixture.h
@@ -11,8 +11,6 @@ namespace TestSupport
11 { 11 {
12 private: 12 private:
13 String^ rootPath; 13 String^ rootPath;
14 String^ hkcuPath;
15 String^ hklmPath;
16 public: 14 public:
17 TestRegistryFixture(); 15 TestRegistryFixture();
18 16
@@ -22,9 +20,9 @@ namespace TestSupport
22 20
23 void TearDown(); 21 void TearDown();
24 22
25 String^ GetDirectHkcuPath(... array<String^>^ paths); 23 String^ GetDirectHkcuPath(REG_KEY_BITNESS bitness, ... array<String^>^ paths);
26 24
27 String^ GetDirectHklmPath(... array<String^>^ paths); 25 String^ GetDirectHklmPath(REG_KEY_BITNESS bitness, ... array<String^>^ paths);
28 }; 26 };
29} 27}
30} 28}
diff --git a/src/burn/test/BurnUnitTest/VariableTest.cpp b/src/burn/test/BurnUnitTest/VariableTest.cpp
index 2ae829dc..53105e69 100644
--- a/src/burn/test/BurnUnitTest/VariableTest.cpp
+++ b/src/burn/test/BurnUnitTest/VariableTest.cpp
@@ -497,7 +497,11 @@ namespace Bootstrapper
497 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::ApplicationData) + "\\", VariableGetStringHelper(&variables, L"AppDataFolder")); 497 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::ApplicationData) + "\\", VariableGetStringHelper(&variables, L"AppDataFolder"));
498 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::CommonApplicationData) + "\\", VariableGetStringHelper(&variables, L"CommonAppDataFolder")); 498 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::CommonApplicationData) + "\\", VariableGetStringHelper(&variables, L"CommonAppDataFolder"));
499 499
500#if defined(_WIN64)
501 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::ProgramFiles) + "\\", VariableGetStringHelper(&variables, L"ProgramFiles64Folder"));
502#else
500 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::ProgramFiles) + "\\", VariableGetStringHelper(&variables, L"ProgramFilesFolder")); 503 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::ProgramFiles) + "\\", VariableGetStringHelper(&variables, L"ProgramFilesFolder"));
504#endif
501 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::DesktopDirectory) + "\\", VariableGetStringHelper(&variables, L"DesktopFolder")); 505 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::DesktopDirectory) + "\\", VariableGetStringHelper(&variables, L"DesktopFolder"));
502 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::Favorites) + "\\", VariableGetStringHelper(&variables, L"FavoritesFolder")); 506 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::Favorites) + "\\", VariableGetStringHelper(&variables, L"FavoritesFolder"));
503 VariableGetStringHelper(&variables, L"FontsFolder"); 507 VariableGetStringHelper(&variables, L"FontsFolder");
@@ -514,7 +518,11 @@ namespace Bootstrapper
514 Assert::Equal<String^>(System::IO::Path::GetTempPath(), System::IO::Path::GetFullPath(VariableGetStringHelper(&variables, L"TempFolder"))); 518 Assert::Equal<String^>(System::IO::Path::GetTempPath(), System::IO::Path::GetFullPath(VariableGetStringHelper(&variables, L"TempFolder")));
515 519
516 VariableGetStringHelper(&variables, L"AdminToolsFolder"); 520 VariableGetStringHelper(&variables, L"AdminToolsFolder");
521#if defined(_WIN64)
522 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::CommonProgramFiles) + "\\", VariableGetStringHelper(&variables, L"CommonFiles64Folder"));
523#else
517 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::CommonProgramFiles) + "\\", VariableGetStringHelper(&variables, L"CommonFilesFolder")); 524 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::CommonProgramFiles) + "\\", VariableGetStringHelper(&variables, L"CommonFilesFolder"));
525#endif
518 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::MyPictures) + "\\", VariableGetStringHelper(&variables, L"MyPicturesFolder")); 526 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::MyPictures) + "\\", VariableGetStringHelper(&variables, L"MyPicturesFolder"));
519 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::Templates) + "\\", VariableGetStringHelper(&variables, L"TemplateFolder")); 527 Assert::Equal<String^>(Environment::GetFolderPath(Environment::SpecialFolder::Templates) + "\\", VariableGetStringHelper(&variables, L"TemplateFolder"));
520 528
diff --git a/src/internal/WixBuildTools.TestSupport.Native/build/WixBuildTools.TestSupport.Native.targets b/src/internal/WixBuildTools.TestSupport.Native/build/WixBuildTools.TestSupport.Native.targets
index 58475559..8a171331 100644
--- a/src/internal/WixBuildTools.TestSupport.Native/build/WixBuildTools.TestSupport.Native.targets
+++ b/src/internal/WixBuildTools.TestSupport.Native/build/WixBuildTools.TestSupport.Native.targets
@@ -42,7 +42,8 @@
42 <Error Condition="!Exists('$(RootPackagesFolder)xunit.runner.visualstudio.2.4.1\build\net20\xunit.runner.visualstudio.props')" Text="$([System.String]::Format('$(ErrorText)', '$(RootPackagesFolder)xunit.runner.visualstudio.2.4.1\build\net20\xunit.runner.visualstudio.props'))" /> 42 <Error Condition="!Exists('$(RootPackagesFolder)xunit.runner.visualstudio.2.4.1\build\net20\xunit.runner.visualstudio.props')" Text="$([System.String]::Format('$(ErrorText)', '$(RootPackagesFolder)xunit.runner.visualstudio.2.4.1\build\net20\xunit.runner.visualstudio.props'))" />
43 </Target> 43 </Target>
44 44
45 <UsingTask AssemblyFile="$(RootPackagesFolder)xunit.runner.msbuild.2.4.1\build\net452\xunit.runner.msbuild.net452.dll" TaskName="Xunit.Runner.MSBuild.xunit" Architecture="x86" /> 45 <UsingTask AssemblyFile="$(RootPackagesFolder)xunit.runner.msbuild.2.4.1\build\net452\xunit.runner.msbuild.net452.dll" TaskName="Xunit.Runner.MSBuild.xunit" Architecture="x86" Condition=" '$(Platform)'!='x64' " />
46 <UsingTask AssemblyFile="$(RootPackagesFolder)xunit.runner.msbuild.2.4.1\build\net452\xunit.runner.msbuild.net452.dll" TaskName="Xunit.Runner.MSBuild.xunit" Architecture="x64" Condition=" '$(Platform)'=='x64' " />
46 <Target Name="Test"> 47 <Target Name="Test">
47 <!-- https://xunit.net/docs/running-tests-in-msbuild --> 48 <!-- https://xunit.net/docs/running-tests-in-msbuild -->
48 <!-- https://github.com/xunit/xunit/issues/2188 --> 49 <!-- https://github.com/xunit/xunit/issues/2188 -->
diff --git a/src/testresultfilelist.txt b/src/testresultfilelist.txt
index aa8d93e9..a78682d2 100644
--- a/src/testresultfilelist.txt
+++ b/src/testresultfilelist.txt
@@ -1,7 +1,8 @@
1build/logs/TestResults/api_wix.trx 1build/logs/TestResults/api_wix.trx
2build/logs/TestResults/BalUtilUnitTest.xunit2.xml 2build/logs/TestResults/BalUtilUnitTest.xunit2.xml
3build/logs/TestResults/BextUtilUnitTest.xunit2.xml 3build/logs/TestResults/BextUtilUnitTest.xunit2.xml
4build/logs/TestResults/BurnUnitTest.xunit2.xml 4build/logs/TestResults/BurnUnitTest32.xunit2.xml
5build/logs/TestResults/BurnUnitTest64.xunit2.xml
5build/logs/TestResults/DutilUnitTest.xunit2.xml 6build/logs/TestResults/DutilUnitTest.xunit2.xml
6build/logs/TestResults/WixToolsetTest.BuildTasks.trx 7build/logs/TestResults/WixToolsetTest.BuildTasks.trx
7build/logs/TestResults/WixToolsetTest.BurnE2E.trx 8build/logs/TestResults/WixToolsetTest.BurnE2E.trx