diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-04-22 16:55:29 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-04-23 15:40:21 -0500 |
commit | 72e20f682c0d64102e86439ba5527dd0d71932ae (patch) | |
tree | c62618b0f6b99d3bffa3c6cd01251a29b84fcc05 /src/burn/test/BurnUnitTest/PlanTest.cpp | |
parent | b82c6a2b7d451212fb0b2e32ca4d5d86c953d81a (diff) | |
download | wix-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.cpp | 95 |
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; |