diff options
Diffstat (limited to 'src/burn/test')
-rw-r--r-- | src/burn/test/BurnUnitTest/PlanTest.cpp | 123 |
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; |