aboutsummaryrefslogtreecommitdiff
path: root/src/burn/test/BurnUnitTest/PlanTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/test/BurnUnitTest/PlanTest.cpp')
-rw-r--r--src/burn/test/BurnUnitTest/PlanTest.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp
index 81484234..ba28713f 100644
--- a/src/burn/test/BurnUnitTest/PlanTest.cpp
+++ b/src/burn/test/BurnUnitTest/PlanTest.cpp
@@ -993,6 +993,84 @@ namespace Bootstrapper
993 } 993 }
994 994
995 [Fact] 995 [Fact]
996 void SingleMsiUnsafeUninstallTest()
997 {
998 HRESULT hr = S_OK;
999 BURN_ENGINE_STATE engineState = { };
1000 BURN_ENGINE_STATE* pEngineState = &engineState;
1001 BURN_PLAN* pPlan = &engineState.plan;
1002
1003 InitializeEngineStateForCorePlan(wzSingleMsiManifestFileName, pEngineState);
1004 DetectPackagesAsPresentAndCached(pEngineState);
1005
1006 hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL);
1007 NativeAssert::Succeeded(hr, "CorePlan failed");
1008
1009 Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL, pPlan->action);
1010 Assert::Equal<BOOL>(TRUE, pPlan->fPerMachine);
1011 Assert::Equal<BOOL>(TRUE, pPlan->fDisableRollback);
1012
1013 BOOL fRollback = FALSE;
1014 DWORD dwIndex = 0;
1015 Assert::Equal(dwIndex, pPlan->cCacheActions);
1016
1017 fRollback = TRUE;
1018 dwIndex = 0;
1019 Assert::Equal(dwIndex, pPlan->cRollbackCacheActions);
1020
1021 Assert::Equal(0ull, pPlan->qwEstimatedSize);
1022 Assert::Equal(0ull, pPlan->qwCacheSizeTotal);
1023
1024 fRollback = FALSE;
1025 dwIndex = 0;
1026 DWORD dwExecuteCheckpointId = 1;
1027 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
1028 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1029 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", unregisterActions1, 1);
1030 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1031 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", unregisterActions1, 1);
1032 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1033 ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0);
1034 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1035 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1036 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++);
1037 Assert::Equal(dwIndex, pPlan->cExecuteActions);
1038
1039 fRollback = TRUE;
1040 dwIndex = 0;
1041 dwExecuteCheckpointId = 1;
1042 ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE);
1043 ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", registerActions1, 1);
1044 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1045 ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", registerActions1, 1);
1046 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1047 ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_INSTALL, BURN_MSI_PROPERTY_INSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0);
1048 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1049 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1050 ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++);
1051 ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++);
1052 Assert::Equal(dwIndex, pPlan->cRollbackActions);
1053
1054 Assert::Equal(1ul, pPlan->cExecutePackagesTotal);
1055 Assert::Equal(1ul, pPlan->cOverallProgressTicksTotal);
1056
1057 dwIndex = 0;
1058 Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions);
1059
1060 dwIndex = 0;
1061 ValidateCleanAction(pPlan, dwIndex++, L"PackageA");
1062 Assert::Equal(dwIndex, pPlan->cCleanActions);
1063
1064 UINT uIndex = 0;
1065 ValidatePlannedProvider(pPlan, uIndex++, L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", NULL);
1066 ValidatePlannedProvider(pPlan, uIndex++, L"{64633047-D172-4BBB-B202-64337D15C952}", NULL);
1067 Assert::Equal(uIndex, pPlan->cPlannedProviders);
1068
1069 Assert::Equal(1ul, pEngineState->packages.cPackages);
1070 ValidateNonPermanentPackageExpectedStates(&pEngineState->packages.rgPackages[0], L"PackageA", BURN_PACKAGE_REGISTRATION_STATE_ABSENT, BURN_PACKAGE_REGISTRATION_STATE_ABSENT);
1071 }
1072
1073 [Fact]
996 void SlipstreamInstallTest() 1074 void SlipstreamInstallTest()
997 { 1075 {
998 HRESULT hr = S_OK; 1076 HRESULT hr = S_OK;