aboutsummaryrefslogtreecommitdiff
path: root/src/burn/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/test')
-rw-r--r--src/burn/test/BurnUnitTest/CacheTest.cpp7
-rw-r--r--src/burn/test/BurnUnitTest/ManifestTest.cpp3
-rw-r--r--src/burn/test/BurnUnitTest/PlanTest.cpp6
-rw-r--r--src/burn/test/BurnUnitTest/RegistrationTest.cpp78
-rw-r--r--src/burn/test/BurnUnitTest/precomp.h2
5 files changed, 70 insertions, 26 deletions
diff --git a/src/burn/test/BurnUnitTest/CacheTest.cpp b/src/burn/test/BurnUnitTest/CacheTest.cpp
index e9ad555b..6979ec1a 100644
--- a/src/burn/test/BurnUnitTest/CacheTest.cpp
+++ b/src/burn/test/BurnUnitTest/CacheTest.cpp
@@ -48,6 +48,8 @@ namespace Bootstrapper
48 void CacheSignatureTest() 48 void CacheSignatureTest()
49 { 49 {
50 HRESULT hr = S_OK; 50 HRESULT hr = S_OK;
51 BURN_CACHE cache = { };
52 BURN_ENGINE_COMMAND internalCommand = { };
51 BURN_PACKAGE package = { }; 53 BURN_PACKAGE package = { };
52 BURN_PAYLOAD payload = { }; 54 BURN_PAYLOAD payload = { };
53 LPWSTR sczPayloadPath = NULL; 55 LPWSTR sczPayloadPath = NULL;
@@ -74,7 +76,10 @@ namespace Bootstrapper
74 payload.qwFileSize = 27; 76 payload.qwFileSize = 27;
75 payload.verification = BURN_PAYLOAD_VERIFICATION_HASH; 77 payload.verification = BURN_PAYLOAD_VERIFICATION_HASH;
76 78
77 hr = CacheCompletePayload(package.fPerMachine, &payload, package.sczCacheId, sczPayloadPath, FALSE, CacheTestEventRoutine, CacheTestProgressRoutine, &context); 79 hr = CacheInitialize(&cache, &internalCommand);
80 TestThrowOnFailure(hr, L"Failed initialize cache.");
81
82 hr = CacheCompletePayload(&cache, package.fPerMachine, &payload, package.sczCacheId, sczPayloadPath, FALSE, CacheTestEventRoutine, CacheTestProgressRoutine, &context);
78 Assert::Equal(S_OK, hr); 83 Assert::Equal(S_OK, hr);
79 } 84 }
80 finally 85 finally
diff --git a/src/burn/test/BurnUnitTest/ManifestTest.cpp b/src/burn/test/BurnUnitTest/ManifestTest.cpp
index 345ddfd9..6973c772 100644
--- a/src/burn/test/BurnUnitTest/ManifestTest.cpp
+++ b/src/burn/test/BurnUnitTest/ManifestTest.cpp
@@ -40,6 +40,9 @@ namespace Bootstrapper
40 " <CommandLine Variables='upperCase' />" 40 " <CommandLine Variables='upperCase' />"
41 "</Bundle>"; 41 "</Bundle>";
42 42
43 hr = CacheInitialize(&engineState.cache, &engineState.internalCommand);
44 TestThrowOnFailure(hr, L"Failed initialize cache.");
45
43 hr = VariableInitialize(&engineState.variables); 46 hr = VariableInitialize(&engineState.variables);
44 TestThrowOnFailure(hr, L"Failed to initialize variables."); 47 TestThrowOnFailure(hr, L"Failed to initialize variables.");
45 48
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp
index 7909d747..2e3b1092 100644
--- a/src/burn/test/BurnUnitTest/PlanTest.cpp
+++ b/src/burn/test/BurnUnitTest/PlanTest.cpp
@@ -925,6 +925,9 @@ namespace Bootstrapper
925 925
926 ::InitializeCriticalSection(&pEngineState->userExperience.csEngineActive); 926 ::InitializeCriticalSection(&pEngineState->userExperience.csEngineActive);
927 927
928 hr = CacheInitialize(&pEngineState->cache, &pEngineState->internalCommand);
929 NativeAssert::Succeeded(hr, "Failed to initialize cache.");
930
928 hr = VariableInitialize(&pEngineState->variables); 931 hr = VariableInitialize(&pEngineState->variables);
929 NativeAssert::Succeeded(hr, "Failed to initialize variables."); 932 NativeAssert::Succeeded(hr, "Failed to initialize variables.");
930 933
@@ -948,6 +951,9 @@ namespace Bootstrapper
948 hr = CoreInitializeConstants(pEngineState); 951 hr = CoreInitializeConstants(pEngineState);
949 NativeAssert::Succeeded(hr, "Failed to initialize core constants"); 952 NativeAssert::Succeeded(hr, "Failed to initialize core constants");
950 953
954 hr = CacheInitializeSources(&pEngineState->cache, &pEngineState->registration, &pEngineState->variables, &pEngineState->internalCommand);
955 NativeAssert::Succeeded(hr, "Failed to initialize cache sources.");
956
951 pEngineState->userExperience.pfnBAProc = PlanTestBAProc; 957 pEngineState->userExperience.pfnBAProc = PlanTestBAProc;
952 } 958 }
953 959
diff --git a/src/burn/test/BurnUnitTest/RegistrationTest.cpp b/src/burn/test/BurnUnitTest/RegistrationTest.cpp
index b1c911f7..7c0dde5a 100644
--- a/src/burn/test/BurnUnitTest/RegistrationTest.cpp
+++ b/src/burn/test/BurnUnitTest/RegistrationTest.cpp
@@ -75,6 +75,8 @@ namespace Bootstrapper
75 BURN_REGISTRATION registration = { }; 75 BURN_REGISTRATION registration = { };
76 BURN_LOGGING logging = { }; 76 BURN_LOGGING logging = { };
77 BURN_PACKAGES packages = { }; 77 BURN_PACKAGES packages = { };
78 BURN_CACHE cache = { };
79 BURN_ENGINE_COMMAND internalCommand = { };
78 String^ cacheDirectory = Path::Combine(Path::Combine(Environment::GetFolderPath(Environment::SpecialFolder::LocalApplicationData), gcnew String(L"Package Cache")), gcnew String(TEST_BUNDLE_ID)); 80 String^ cacheDirectory = Path::Combine(Path::Combine(Environment::GetFolderPath(Environment::SpecialFolder::LocalApplicationData), gcnew String(L"Package Cache")), gcnew String(TEST_BUNDLE_ID));
79 81
80 try 82 try
@@ -99,13 +101,16 @@ namespace Bootstrapper
99 // load XML document 101 // load XML document
100 LoadBundleXmlHelper(wzDocument, &pixeBundle); 102 LoadBundleXmlHelper(wzDocument, &pixeBundle);
101 103
104 hr = CacheInitialize(&cache, &internalCommand);
105 TestThrowOnFailure(hr, L"Failed initialize cache.");
106
102 hr = VariableInitialize(&variables); 107 hr = VariableInitialize(&variables);
103 TestThrowOnFailure(hr, L"Failed to initialize variables."); 108 TestThrowOnFailure(hr, L"Failed to initialize variables.");
104 109
105 hr = UserExperienceParseFromXml(&userExperience, pixeBundle); 110 hr = UserExperienceParseFromXml(&userExperience, pixeBundle);
106 TestThrowOnFailure(hr, L"Failed to parse UX from XML."); 111 TestThrowOnFailure(hr, L"Failed to parse UX from XML.");
107 112
108 hr = RegistrationParseFromXml(&registration, pixeBundle); 113 hr = RegistrationParseFromXml(&registration, &cache, pixeBundle);
109 TestThrowOnFailure(hr, L"Failed to parse registration from XML."); 114 TestThrowOnFailure(hr, L"Failed to parse registration from XML.");
110 115
111 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging); 116 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging);
@@ -115,7 +120,7 @@ namespace Bootstrapper
115 TestThrowOnFailure(hr, L"Failed to get current process path."); 120 TestThrowOnFailure(hr, L"Failed to get current process path.");
116 121
117 // write registration 122 // write registration
118 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_CACHE_BUNDLE | BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 123 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &cache, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_CACHE_BUNDLE | BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
119 TestThrowOnFailure(hr, L"Failed to register bundle."); 124 TestThrowOnFailure(hr, L"Failed to register bundle.");
120 125
121 // verify that registration was created 126 // verify that registration was created
@@ -126,7 +131,7 @@ namespace Bootstrapper
126 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)(Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr))); 131 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)(Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr)));
127 132
128 // end session 133 // end session
129 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE); 134 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE);
130 TestThrowOnFailure(hr, L"Failed to unregister bundle."); 135 TestThrowOnFailure(hr, L"Failed to unregister bundle.");
131 136
132 // verify that registration was removed 137 // verify that registration was removed
@@ -165,6 +170,8 @@ namespace Bootstrapper
165 BURN_REGISTRATION registration = { }; 170 BURN_REGISTRATION registration = { };
166 BURN_LOGGING logging = { }; 171 BURN_LOGGING logging = { };
167 BURN_PACKAGES packages = { }; 172 BURN_PACKAGES packages = { };
173 BURN_CACHE cache = { };
174 BURN_ENGINE_COMMAND internalCommand = { };
168 String^ cacheDirectory = Path::Combine(Path::Combine(Environment::GetFolderPath(Environment::SpecialFolder::LocalApplicationData), gcnew String(L"Package Cache")), gcnew String(TEST_BUNDLE_ID)); 175 String^ cacheDirectory = Path::Combine(Path::Combine(Environment::GetFolderPath(Environment::SpecialFolder::LocalApplicationData), gcnew String(L"Package Cache")), gcnew String(TEST_BUNDLE_ID));
169 try 176 try
170 { 177 {
@@ -188,13 +195,16 @@ namespace Bootstrapper
188 // load XML document 195 // load XML document
189 LoadBundleXmlHelper(wzDocument, &pixeBundle); 196 LoadBundleXmlHelper(wzDocument, &pixeBundle);
190 197
198 hr = CacheInitialize(&cache, &internalCommand);
199 TestThrowOnFailure(hr, L"Failed initialize cache.");
200
191 hr = VariableInitialize(&variables); 201 hr = VariableInitialize(&variables);
192 TestThrowOnFailure(hr, L"Failed to initialize variables."); 202 TestThrowOnFailure(hr, L"Failed to initialize variables.");
193 203
194 hr = UserExperienceParseFromXml(&userExperience, pixeBundle); 204 hr = UserExperienceParseFromXml(&userExperience, pixeBundle);
195 TestThrowOnFailure(hr, L"Failed to parse UX from XML."); 205 TestThrowOnFailure(hr, L"Failed to parse UX from XML.");
196 206
197 hr = RegistrationParseFromXml(&registration, pixeBundle); 207 hr = RegistrationParseFromXml(&registration, &cache, pixeBundle);
198 TestThrowOnFailure(hr, L"Failed to parse registration from XML."); 208 TestThrowOnFailure(hr, L"Failed to parse registration from XML.");
199 209
200 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging); 210 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging);
@@ -208,7 +218,7 @@ namespace Bootstrapper
208 // 218 //
209 219
210 // write registration 220 // write registration
211 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 221 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &cache, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
212 TestThrowOnFailure(hr, L"Failed to register bundle."); 222 TestThrowOnFailure(hr, L"Failed to register bundle.");
213 223
214 // verify that registration was created 224 // verify that registration was created
@@ -217,7 +227,7 @@ namespace Bootstrapper
217 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr)); 227 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr));
218 228
219 // complete registration 229 // complete registration
220 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_ARP, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 230 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_ARP, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
221 TestThrowOnFailure(hr, L"Failed to unregister bundle."); 231 TestThrowOnFailure(hr, L"Failed to unregister bundle.");
222 232
223 // verify that registration was updated 233 // verify that registration was updated
@@ -230,7 +240,7 @@ namespace Bootstrapper
230 // 240 //
231 241
232 // write registration 242 // write registration
233 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 243 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &cache, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
234 TestThrowOnFailure(hr, L"Failed to register bundle."); 244 TestThrowOnFailure(hr, L"Failed to register bundle.");
235 245
236 // verify that registration was updated 246 // verify that registration was updated
@@ -239,7 +249,7 @@ namespace Bootstrapper
239 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr)); 249 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr));
240 250
241 // delete registration 251 // delete registration
242 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE); 252 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE);
243 TestThrowOnFailure(hr, L"Failed to unregister bundle."); 253 TestThrowOnFailure(hr, L"Failed to unregister bundle.");
244 254
245 // verify that registration was removed 255 // verify that registration was removed
@@ -277,6 +287,8 @@ namespace Bootstrapper
277 BURN_REGISTRATION registration = { }; 287 BURN_REGISTRATION registration = { };
278 BURN_LOGGING logging = { }; 288 BURN_LOGGING logging = { };
279 BURN_PACKAGES packages = { }; 289 BURN_PACKAGES packages = { };
290 BURN_CACHE cache = { };
291 BURN_ENGINE_COMMAND internalCommand = { };
280 String^ cacheDirectory = Path::Combine(Path::Combine(Environment::GetFolderPath(Environment::SpecialFolder::LocalApplicationData), gcnew String(L"Package Cache")), gcnew String(TEST_BUNDLE_ID)); 292 String^ cacheDirectory = Path::Combine(Path::Combine(Environment::GetFolderPath(Environment::SpecialFolder::LocalApplicationData), gcnew String(L"Package Cache")), gcnew String(TEST_BUNDLE_ID));
281 try 293 try
282 { 294 {
@@ -300,13 +312,16 @@ namespace Bootstrapper
300 // load XML document 312 // load XML document
301 LoadBundleXmlHelper(wzDocument, &pixeBundle); 313 LoadBundleXmlHelper(wzDocument, &pixeBundle);
302 314
315 hr = CacheInitialize(&cache, &internalCommand);
316 TestThrowOnFailure(hr, L"Failed initialize cache.");
317
303 hr = VariableInitialize(&variables); 318 hr = VariableInitialize(&variables);
304 TestThrowOnFailure(hr, L"Failed to initialize variables."); 319 TestThrowOnFailure(hr, L"Failed to initialize variables.");
305 320
306 hr = UserExperienceParseFromXml(&userExperience, pixeBundle); 321 hr = UserExperienceParseFromXml(&userExperience, pixeBundle);
307 TestThrowOnFailure(hr, L"Failed to parse UX from XML."); 322 TestThrowOnFailure(hr, L"Failed to parse UX from XML.");
308 323
309 hr = RegistrationParseFromXml(&registration, pixeBundle); 324 hr = RegistrationParseFromXml(&registration, &cache, pixeBundle);
310 TestThrowOnFailure(hr, L"Failed to parse registration from XML."); 325 TestThrowOnFailure(hr, L"Failed to parse registration from XML.");
311 326
312 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging); 327 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging);
@@ -320,7 +335,7 @@ namespace Bootstrapper
320 // 335 //
321 336
322 // write registration 337 // write registration
323 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 338 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &cache, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
324 TestThrowOnFailure(hr, L"Failed to register bundle."); 339 TestThrowOnFailure(hr, L"Failed to register bundle.");
325 340
326 // verify that registration was created 341 // verify that registration was created
@@ -328,7 +343,7 @@ namespace Bootstrapper
328 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr)); 343 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr));
329 344
330 // complete registration 345 // complete registration
331 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_ARP, BOOTSTRAPPER_APPLY_RESTART_REQUIRED, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_FULL); 346 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_ARP, BOOTSTRAPPER_APPLY_RESTART_REQUIRED, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_FULL);
332 TestThrowOnFailure(hr, L"Failed to unregister bundle."); 347 TestThrowOnFailure(hr, L"Failed to unregister bundle.");
333 348
334 // verify that registration variables were updated 349 // verify that registration variables were updated
@@ -349,7 +364,7 @@ namespace Bootstrapper
349 // 364 //
350 365
351 // delete registration 366 // delete registration
352 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE); 367 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE);
353 TestThrowOnFailure(hr, L"Failed to unregister bundle."); 368 TestThrowOnFailure(hr, L"Failed to unregister bundle.");
354 369
355 // verify that registration was removed 370 // verify that registration was removed
@@ -387,6 +402,8 @@ namespace Bootstrapper
387 BURN_REGISTRATION registration = { }; 402 BURN_REGISTRATION registration = { };
388 BURN_LOGGING logging = { }; 403 BURN_LOGGING logging = { };
389 BURN_PACKAGES packages = { }; 404 BURN_PACKAGES packages = { };
405 BURN_CACHE cache = { };
406 BURN_ENGINE_COMMAND internalCommand = { };
390 String^ cacheDirectory = Path::Combine(Path::Combine(Environment::GetFolderPath(Environment::SpecialFolder::LocalApplicationData), gcnew String(L"Package Cache")), gcnew String(TEST_BUNDLE_ID)); 407 String^ cacheDirectory = Path::Combine(Path::Combine(Environment::GetFolderPath(Environment::SpecialFolder::LocalApplicationData), gcnew String(L"Package Cache")), gcnew String(TEST_BUNDLE_ID));
391 try 408 try
392 { 409 {
@@ -412,13 +429,16 @@ namespace Bootstrapper
412 // load XML document 429 // load XML document
413 LoadBundleXmlHelper(wzDocument, &pixeBundle); 430 LoadBundleXmlHelper(wzDocument, &pixeBundle);
414 431
432 hr = CacheInitialize(&cache, &internalCommand);
433 TestThrowOnFailure(hr, L"Failed initialize cache.");
434
415 hr = VariableInitialize(&variables); 435 hr = VariableInitialize(&variables);
416 TestThrowOnFailure(hr, L"Failed to initialize variables."); 436 TestThrowOnFailure(hr, L"Failed to initialize variables.");
417 437
418 hr = UserExperienceParseFromXml(&userExperience, pixeBundle); 438 hr = UserExperienceParseFromXml(&userExperience, pixeBundle);
419 TestThrowOnFailure(hr, L"Failed to parse UX from XML."); 439 TestThrowOnFailure(hr, L"Failed to parse UX from XML.");
420 440
421 hr = RegistrationParseFromXml(&registration, pixeBundle); 441 hr = RegistrationParseFromXml(&registration, &cache, pixeBundle);
422 TestThrowOnFailure(hr, L"Failed to parse registration from XML."); 442 TestThrowOnFailure(hr, L"Failed to parse registration from XML.");
423 443
424 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging); 444 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging);
@@ -432,7 +452,7 @@ namespace Bootstrapper
432 // 452 //
433 453
434 // write registration 454 // write registration
435 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 455 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &cache, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
436 TestThrowOnFailure(hr, L"Failed to register bundle."); 456 TestThrowOnFailure(hr, L"Failed to register bundle.");
437 457
438 // verify that registration was created 458 // verify that registration was created
@@ -440,7 +460,7 @@ namespace Bootstrapper
440 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr)); 460 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr));
441 461
442 // finish registration 462 // finish registration
443 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_ARP, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_FULL); 463 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_ARP, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_FULL);
444 TestThrowOnFailure(hr, L"Failed to register bundle."); 464 TestThrowOnFailure(hr, L"Failed to register bundle.");
445 465
446 // verify that registration was updated 466 // verify that registration was updated
@@ -465,7 +485,7 @@ namespace Bootstrapper
465 // 485 //
466 486
467 // write registration 487 // write registration
468 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 488 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &cache, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
469 TestThrowOnFailure(hr, L"Failed to register bundle."); 489 TestThrowOnFailure(hr, L"Failed to register bundle.");
470 490
471 // verify that registration was updated 491 // verify that registration was updated
@@ -473,7 +493,7 @@ namespace Bootstrapper
473 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr)); 493 Assert::Equal<String^>(String::Concat(L"\"", Path::Combine(cacheDirectory, gcnew String(L"setup.exe")), L"\" /burn.runonce"), (String^)Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr));
474 494
475 // delete registration 495 // delete registration
476 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE); 496 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE);
477 TestThrowOnFailure(hr, L"Failed to unregister bundle."); 497 TestThrowOnFailure(hr, L"Failed to unregister bundle.");
478 498
479 // verify that registration was removed 499 // verify that registration was removed
@@ -514,6 +534,8 @@ namespace Bootstrapper
514 BURN_REGISTRATION registration = { }; 534 BURN_REGISTRATION registration = { };
515 BURN_LOGGING logging = { }; 535 BURN_LOGGING logging = { };
516 BURN_PACKAGES packages = { }; 536 BURN_PACKAGES packages = { };
537 BURN_CACHE cache = { };
538 BURN_ENGINE_COMMAND internalCommand = { };
517 BYTE* pbBuffer = NULL; 539 BYTE* pbBuffer = NULL;
518 SIZE_T cbBuffer = 0; 540 SIZE_T cbBuffer = 0;
519 541
@@ -546,6 +568,9 @@ namespace Bootstrapper
546 // load XML document 568 // load XML document
547 LoadBundleXmlHelper(wzDocument, &pixeBundle); 569 LoadBundleXmlHelper(wzDocument, &pixeBundle);
548 570
571 hr = CacheInitialize(&cache, &internalCommand);
572 TestThrowOnFailure(hr, L"Failed initialize cache.");
573
549 hr = VariableInitialize(&variables); 574 hr = VariableInitialize(&variables);
550 TestThrowOnFailure(hr, L"Failed to initialize variables."); 575 TestThrowOnFailure(hr, L"Failed to initialize variables.");
551 576
@@ -555,7 +580,7 @@ namespace Bootstrapper
555 hr = UserExperienceParseFromXml(&userExperience, pixeBundle); 580 hr = UserExperienceParseFromXml(&userExperience, pixeBundle);
556 TestThrowOnFailure(hr, L"Failed to parse UX from XML."); 581 TestThrowOnFailure(hr, L"Failed to parse UX from XML.");
557 582
558 hr = RegistrationParseFromXml(&registration, pixeBundle); 583 hr = RegistrationParseFromXml(&registration, &cache, pixeBundle);
559 TestThrowOnFailure(hr, L"Failed to parse registration from XML."); 584 TestThrowOnFailure(hr, L"Failed to parse registration from XML.");
560 585
561 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging); 586 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging);
@@ -565,7 +590,7 @@ namespace Bootstrapper
565 TestThrowOnFailure(hr, L"Failed to get current process path."); 590 TestThrowOnFailure(hr, L"Failed to get current process path.");
566 591
567 // begin session 592 // begin session
568 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 593 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &cache, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
569 TestThrowOnFailure(hr, L"Failed to register bundle."); 594 TestThrowOnFailure(hr, L"Failed to register bundle.");
570 595
571 VariableSetNumericHelper(&variables, L"MyBurnVariable1", 42); 596 VariableSetNumericHelper(&variables, L"MyBurnVariable1", 42);
@@ -608,7 +633,7 @@ namespace Bootstrapper
608 NativeAssert::StringEqual(L"42", sczValue); 633 NativeAssert::StringEqual(L"42", sczValue);
609 634
610 // end session 635 // end session
611 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE); 636 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE);
612 TestThrowOnFailure(hr, L"Failed to unregister bundle."); 637 TestThrowOnFailure(hr, L"Failed to unregister bundle.");
613 } 638 }
614 finally 639 finally
@@ -643,6 +668,8 @@ namespace Bootstrapper
643 BURN_REGISTRATION registration = { }; 668 BURN_REGISTRATION registration = { };
644 BURN_LOGGING logging = { }; 669 BURN_LOGGING logging = { };
645 BURN_PACKAGES packages = { }; 670 BURN_PACKAGES packages = { };
671 BURN_CACHE cache = { };
672 BURN_ENGINE_COMMAND internalCommand = { };
646 BOOTSTRAPPER_RESUME_TYPE resumeType = BOOTSTRAPPER_RESUME_TYPE_NONE; 673 BOOTSTRAPPER_RESUME_TYPE resumeType = BOOTSTRAPPER_RESUME_TYPE_NONE;
647 BYTE* pbBuffer = NULL; 674 BYTE* pbBuffer = NULL;
648 SIZE_T cbBuffer = 0; 675 SIZE_T cbBuffer = 0;
@@ -674,6 +701,9 @@ namespace Bootstrapper
674 // load XML document 701 // load XML document
675 LoadBundleXmlHelper(wzDocument, &pixeBundle); 702 LoadBundleXmlHelper(wzDocument, &pixeBundle);
676 703
704 hr = CacheInitialize(&cache, &internalCommand);
705 TestThrowOnFailure(hr, L"Failed initialize cache.");
706
677 hr = VariableInitialize(&variables); 707 hr = VariableInitialize(&variables);
678 TestThrowOnFailure(hr, L"Failed to initialize variables."); 708 TestThrowOnFailure(hr, L"Failed to initialize variables.");
679 709
@@ -683,7 +713,7 @@ namespace Bootstrapper
683 hr = UserExperienceParseFromXml(&userExperience, pixeBundle); 713 hr = UserExperienceParseFromXml(&userExperience, pixeBundle);
684 TestThrowOnFailure(hr, L"Failed to parse UX from XML."); 714 TestThrowOnFailure(hr, L"Failed to parse UX from XML.");
685 715
686 hr = RegistrationParseFromXml(&registration, pixeBundle); 716 hr = RegistrationParseFromXml(&registration, &cache, pixeBundle);
687 TestThrowOnFailure(hr, L"Failed to parse registration from XML."); 717 TestThrowOnFailure(hr, L"Failed to parse registration from XML.");
688 718
689 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging); 719 hr = PlanSetResumeCommand(&registration, BOOTSTRAPPER_ACTION_INSTALL, &command, &logging);
@@ -699,7 +729,7 @@ namespace Bootstrapper
699 Assert::Equal((int)BOOTSTRAPPER_RESUME_TYPE_NONE, (int)resumeType); 729 Assert::Equal((int)BOOTSTRAPPER_RESUME_TYPE_NONE, (int)resumeType);
700 730
701 // begin session 731 // begin session
702 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 732 hr = RegistrationSessionBegin(sczCurrentProcess, &registration, &cache, &variables, BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, 0, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
703 TestThrowOnFailure(hr, L"Failed to register bundle."); 733 TestThrowOnFailure(hr, L"Failed to register bundle.");
704 734
705 VariableSetNumericHelper(&variables, L"MyBurnVariable1", 42); 735 VariableSetNumericHelper(&variables, L"MyBurnVariable1", 42);
@@ -738,7 +768,7 @@ namespace Bootstrapper
738 Assert::Equal((int)BOOTSTRAPPER_RESUME_TYPE_INTERRUPTED, (int)resumeType); 768 Assert::Equal((int)BOOTSTRAPPER_RESUME_TYPE_INTERRUPTED, (int)resumeType);
739 769
740 // suspend session 770 // suspend session
741 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_SUSPEND, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS); 771 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_SUSPEND, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_REGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS);
742 TestThrowOnFailure(hr, L"Failed to suspend session."); 772 TestThrowOnFailure(hr, L"Failed to suspend session.");
743 773
744 // verify that run key was removed 774 // verify that run key was removed
@@ -765,7 +795,7 @@ namespace Bootstrapper
765 Assert::NotEqual((Object^)nullptr, Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr)); 795 Assert::NotEqual((Object^)nullptr, Registry::GetValue(gcnew String(TEST_RUN_KEY), gcnew String(TEST_BUNDLE_ID), nullptr));
766 796
767 // end session 797 // end session
768 hr = RegistrationSessionEnd(&registration, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE); 798 hr = RegistrationSessionEnd(&registration, &cache, &variables, &packages, BURN_RESUME_MODE_NONE, BOOTSTRAPPER_APPLY_RESTART_NONE, BURN_DEPENDENCY_REGISTRATION_ACTION_UNREGISTER, BOOTSTRAPPER_REGISTRATION_TYPE_NONE);
769 TestThrowOnFailure(hr, L"Failed to unregister bundle."); 799 TestThrowOnFailure(hr, L"Failed to unregister bundle.");
770 800
771 // read resume type after session 801 // read resume type after session
diff --git a/src/burn/test/BurnUnitTest/precomp.h b/src/burn/test/BurnUnitTest/precomp.h
index 78c44d39..a77dfe32 100644
--- a/src/burn/test/BurnUnitTest/precomp.h
+++ b/src/burn/test/BurnUnitTest/precomp.h
@@ -56,8 +56,8 @@
56#include "plan.h" 56#include "plan.h"
57#include "pipe.h" 57#include "pipe.h"
58#include "logging.h" 58#include "logging.h"
59#include "core.h"
60#include "cache.h" 59#include "cache.h"
60#include "core.h"
61#include "apply.h" 61#include "apply.h"
62#include "exeengine.h" 62#include "exeengine.h"
63#include "msiengine.h" 63#include "msiengine.h"