aboutsummaryrefslogtreecommitdiff
path: root/src/burn/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/test')
-rw-r--r--src/burn/test/BurnUnitTest/PlanTest.cpp123
1 files changed, 121 insertions, 2 deletions
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp
index 37027ada..7998f837 100644
--- a/src/burn/test/BurnUnitTest/PlanTest.cpp
+++ b/src/burn/test/BurnUnitTest/PlanTest.cpp
@@ -654,10 +654,10 @@ namespace Bootstrapper
654 fRollback = FALSE; 654 fRollback = FALSE;
655 dwIndex = 0; 655 dwIndex = 0;
656 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1); 656 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
657 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_REQUIRED); 657 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_OPTIONAL);
658 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA"); 658 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
659 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 6); 659 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 6);
660 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_REQUIRED); 660 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB", TRUE, BURN_CACHE_PACKAGE_TYPE_REQUIRED, BURN_CACHE_PACKAGE_TYPE_OPTIONAL);
661 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageB"); 661 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageB");
662 Assert::Equal(dwIndex, pPlan->cCacheActions); 662 Assert::Equal(dwIndex, pPlan->cCacheActions);
663 663
@@ -825,6 +825,125 @@ namespace Bootstrapper
825 } 825 }
826 826
827 [Fact] 827 [Fact]
828 void MultipleBundlePackageUninstallTest()
829 {
830 HRESULT hr = S_OK;
831 BURN_ENGINE_STATE engineState = { };
832 BURN_ENGINE_STATE* pEngineState = &engineState;
833 BURN_PLAN* pPlan = &engineState.plan;
834
835 InitializeEngineStateForCorePlan(wzMultipleBundlePackageManifestFileName, pEngineState);
836 DetectAttachedContainerAsAttached(pEngineState);
837 DetectPackagesAsPresentAndCached(pEngineState);
838
839 hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNINSTALL);
840 NativeAssert::Succeeded(hr, "CorePlan failed");
841
842 Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNINSTALL, pPlan->action);
843 NativeAssert::StringEqual(L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", pPlan->wzBundleId);
844 NativeAssert::StringEqual(L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", pPlan->wzBundleProviderKey);
845 Assert::Equal<BOOL>(FALSE, pPlan->fEnabledForwardCompatibleBundle);
846 Assert::Equal<BOOL>(TRUE, pPlan->fPerMachine);
847 Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState);
848 Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback);
849 Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval);
850 Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade);
851 Assert::Equal<DWORD>(BURN_REGISTRATION_ACTION_OPERATIONS_CACHE_BUNDLE | BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_PROVIDER_KEY, pPlan->dwRegistrationOperations);
852
853 BOOL fRollback = FALSE;
854 DWORD dwIndex = 0;
855 ValidateDependentRegistrationAction(pPlan, fRollback, dwIndex++, FALSE, L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}");
856 Assert::Equal(dwIndex, pPlan->cRegistrationActions);
857
858 fRollback = TRUE;
859 dwIndex = 0;
860 ValidateDependentRegistrationAction(pPlan, fRollback, dwIndex++, TRUE, L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}");
861 Assert::Equal(dwIndex, pPlan->cRollbackRegistrationActions);
862
863 fRollback = FALSE;
864 dwIndex = 0;
865 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 1);
866 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageB", FALSE, BURN_CACHE_PACKAGE_TYPE_OPTIONAL, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
867 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageB");
868 ValidateCacheCheckpoint(pPlan, fRollback, dwIndex++, 6);
869 ValidateCachePackage(pPlan, fRollback, dwIndex++, L"PackageA", FALSE, BURN_CACHE_PACKAGE_TYPE_OPTIONAL, BURN_CACHE_PACKAGE_TYPE_REQUIRED);
870 ValidateCacheSignalSyncpoint(pPlan, fRollback, dwIndex++, L"PackageA");
871 Assert::Equal(dwIndex, pPlan->cCacheActions);
872
873 fRollback = TRUE;
874 dwIndex = 0;
875 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
876
877 Assert::Equal(78462280ull, pPlan->qwCacheSizeTotal);
878
879 fRollback = FALSE;
880 dwIndex = 0;
881 DWORD dwExecuteCheckpointId = 2;
882 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
883 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
884 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageB");
885 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
886 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", unregisterActions1, 1);
887 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
888 ValidateExecuteBundlePackage(pPlan, fRollback, dwIndex++, L"PackageB", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}");
889 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
890 dwExecuteCheckpointId += 1; // cache checkpoints
891 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
892 ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA");
893 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
894 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", unregisterActions1, 1);
895 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
896 ValidateExecuteBundlePackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}");
897 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
898 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
899 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++);
900 Assert::Equal(dwIndex, pPlan->cExecuteActions);
901
902 fRollback = TRUE;
903 dwIndex = 0;
904 dwExecuteCheckpointId = 2;
905 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
906 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
907 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageB", L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", registerActions1, 1);
908 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
909 ValidateExecuteBundlePackage(pPlan, fRollback, dwIndex++, L"PackageB", BOOTSTRAPPER_ACTION_STATE_INSTALL, L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}");
910 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
911 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
912 dwExecuteCheckpointId += 1; // cache checkpoints
913 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
914 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", registerActions1, 1);
915 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
916 ValidateExecuteBundlePackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}");
917 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
918 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
919 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
920 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++);
921 Assert::Equal(dwIndex, pPlan->cRollbackActions);
922
923 Assert::Equal(2ul, pPlan->cExecutePackagesTotal);
924 Assert::Equal(4ul, pPlan->cOverallProgressTicksTotal);
925
926 dwIndex = 0;
927 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
928
929 dwIndex = 0;
930 ValidateCleanAction(pPlan, dwIndex++, L"PackageB");
931 ValidateCleanAction(pPlan, dwIndex++, L"PackageA");
932 ValidateCleanAction(pPlan, dwIndex++, L"NetFx48Web");
933 Assert::Equal(dwIndex, pPlan->cCleanActions);
934
935 UINT uIndex = 0;
936 ValidatePlannedProvider(pPlan, uIndex++, L"{35192ED0-C70A-49B2-9D12-3B1FA39B5E6F}", NULL);
937 ValidatePlannedProvider(pPlan, uIndex++, L"{7506235A-7C59-4750-82C7-EB460A87ED3A}", NULL);
938 ValidatePlannedProvider(pPlan, uIndex++, L"{B39CEE4D-CCD7-4797-BE3A-6613BD1DC4BE}", NULL);
939 Assert::Equal(uIndex, pPlan->cPlannedProviders);
940
941 Assert::Equal(3ul, pEngineState->packages.cPackages);
942 ValidateNonPermanentPackageExpectedStates(&pEngineState->packages.rgPackages[1], L"PackageA", BURN_PACKAGE_REGISTRATION_STATE_ABSENT, BURN_PACKAGE_REGISTRATION_STATE_ABSENT);
943 ValidateNonPermanentPackageExpectedStates(&pEngineState->packages.rgPackages[2], L"PackageB", BURN_PACKAGE_REGISTRATION_STATE_ABSENT, BURN_PACKAGE_REGISTRATION_STATE_ABSENT);
944 }
945
946 [Fact]
828 void OrphanCompatiblePackageTest() 947 void OrphanCompatiblePackageTest()
829 { 948 {
830 HRESULT hr = S_OK; 949 HRESULT hr = S_OK;