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; |
