summaryrefslogtreecommitdiff
path: root/src/burn/test/BurnUnitTest/PlanTest.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-04-22 16:55:29 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-04-23 15:40:21 -0500
commit72e20f682c0d64102e86439ba5527dd0d71932ae (patch)
treec62618b0f6b99d3bffa3c6cd01251a29b84fcc05 /src/burn/test/BurnUnitTest/PlanTest.cpp
parentb82c6a2b7d451212fb0b2e32ca4d5d86c953d81a (diff)
downloadwix-72e20f682c0d64102e86439ba5527dd0d71932ae.tar.gz
wix-72e20f682c0d64102e86439ba5527dd0d71932ae.tar.bz2
wix-72e20f682c0d64102e86439ba5527dd0d71932ae.zip
Add RepairCondition.
Fixes 6758
Diffstat (limited to 'src/burn/test/BurnUnitTest/PlanTest.cpp')
-rw-r--r--src/burn/test/BurnUnitTest/PlanTest.cpp95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp
index 87bbbffd..f69606a0 100644
--- a/src/burn/test/BurnUnitTest/PlanTest.cpp
+++ b/src/burn/test/BurnUnitTest/PlanTest.cpp
@@ -459,6 +459,101 @@ namespace Bootstrapper
459 } 459 }
460 460
461 [Fact] 461 [Fact]
462 void MultipleBundlePackageRepairTest()
463 {
464 HRESULT hr = S_OK;
465 BURN_ENGINE_STATE engineState = { };
466 BURN_ENGINE_STATE* pEngineState = &engineState;
467 BURN_PLAN* pPlan = &engineState.plan;
468
469 InitializeEngineStateForCorePlan(wzMultipleBundlePackageManifestFileName, pEngineState);
470 DetectAttachedContainerAsAttached(pEngineState);
471 DetectPackagesAsPresentAndCached(pEngineState);
472
473 hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_REPAIR);
474 NativeAssert::Succeeded(hr, "CorePlan failed");
475
476 Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_REPAIR, pPlan->action);
477 NativeAssert::StringEqual(L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", pPlan->wzBundleId);
478 NativeAssert::StringEqual(L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", pPlan->wzBundleProviderKey);
479 Assert::Equal<BOOL>(FALSE, pPlan->fEnabledForwardCompatibleBundle);
480 Assert::Equal<BOOL>(TRUE, pPlan->fPerMachine);
481 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
482 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
483 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
484 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
485 Assert::Equal<DWORD>(BURN_REGISTRATION_ACTION_OPERATIONS_CACHE_BUNDLE | BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_PROVIDER_KEY, pPlan->dwRegistrationOperations);
486
487 BOOL fRollback = FALSE;
488 DWORD dwIndex = 0;
489 Assert::Equal(dwIndex, pPlan->cRegistrationActions);
490
491 fRollback = TRUE;
492 dwIndex = 0;
493 Assert::Equal(dwIndex, pPlan->cRollbackRegistrationActions);
494
495 fRollback = FALSE;
496 dwIndex = 0;
497 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 2);
498 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB");
499 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++);
500 Assert::Equal(dwIndex, pPlan->cCacheActions);
501
502 fRollback = TRUE;
503 dwIndex = 0;
504 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
505
506 Assert::Equal(18575450ull, pPlan->qwEstimatedSize);
507 Assert::Equal(52254105ull, pPlan->qwCacheSizeTotal);
508
509 fRollback = FALSE;
510 dwIndex = 0;
511 DWORD dwExecuteCheckpointId = 1;
512 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
513 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", registerActions1, 1);
514 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
515 dwExecuteCheckpointId += 1; // cache checkpoints
516 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
517 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageB");
518 ValidateExecuteBundlePackage(pPlan, fRollback, dwIndex++, L"PackageB", BOOTSTRAPPER_ACTION_STATE_REPAIR, L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}");
519 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", registerActions1, 1);
520 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
521 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
522 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++);
523 Assert::Equal(dwIndex, pPlan->cExecuteActions);
524
525 fRollback = TRUE;
526 dwIndex = 0;
527 dwExecuteCheckpointId = 1;
528 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
529 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
530 dwExecuteCheckpointId += 1; // cache checkpoints
531 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
532 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
533 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
534 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++);
535 Assert::Equal(dwIndex, pPlan->cRollbackActions);
536
537 Assert::Equal(1ul, pPlan->cExecutePackagesTotal);
538 Assert::Equal(2ul, pPlan->cOverallProgressTicksTotal);
539
540 dwIndex = 0;
541 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
542
543 dwIndex = 0;
544 ValidateCleanAction(pPlan, dwIndex++, L"NetFx48Web");
545 Assert::Equal(dwIndex, pPlan->cCleanActions);
546
547 UINT uIndex = 0;
548 ValidatePlannedProvider(pPlan, uIndex++, L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", NULL);
549 Assert::Equal(uIndex, pPlan->cPlannedProviders);
550
551 Assert::Equal(3ul, pEngineState->packages.cPackages);
552 ValidateNonPermanentPackageExpectedStates(&pEngineState->packages.rgPackages[1], L"PackageA", BURN_PACKAGE_REGISTRATION_STATE_PRESENT, BURN_PACKAGE_REGISTRATION_STATE_PRESENT);
553 ValidateNonPermanentPackageExpectedStates(&pEngineState->packages.rgPackages[2], L"PackageB", BURN_PACKAGE_REGISTRATION_STATE_PRESENT, BURN_PACKAGE_REGISTRATION_STATE_PRESENT);
554 }
555
556 [Fact]
462 void OrphanCompatiblePackageTest() 557 void OrphanCompatiblePackageTest()
463 { 558 {
464 HRESULT hr = S_OK; 559 HRESULT hr = S_OK;