diff options
Diffstat (limited to 'src/burn/test')
-rw-r--r-- | src/burn/test/BurnUnitTest/PlanTest.cpp | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp index a3b58426..0a8ac369 100644 --- a/src/burn/test/BurnUnitTest/PlanTest.cpp +++ b/src/burn/test/BurnUnitTest/PlanTest.cpp | |||
@@ -67,6 +67,7 @@ namespace Bootstrapper | |||
67 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 67 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
68 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 68 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
69 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 69 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
70 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
70 | 71 | ||
71 | BOOL fRollback = FALSE; | 72 | BOOL fRollback = FALSE; |
72 | DWORD dwIndex = 0; | 73 | DWORD dwIndex = 0; |
@@ -226,6 +227,7 @@ namespace Bootstrapper | |||
226 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 227 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
227 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 228 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
228 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 229 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
230 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
229 | 231 | ||
230 | BOOL fRollback = FALSE; | 232 | BOOL fRollback = FALSE; |
231 | DWORD dwIndex = 0; | 233 | DWORD dwIndex = 0; |
@@ -358,6 +360,7 @@ namespace Bootstrapper | |||
358 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 360 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
359 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 361 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
360 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 362 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
363 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
361 | 364 | ||
362 | BOOL fRollback = FALSE; | 365 | BOOL fRollback = FALSE; |
363 | DWORD dwIndex = 0; | 366 | DWORD dwIndex = 0; |
@@ -457,6 +460,7 @@ namespace Bootstrapper | |||
457 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 460 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
458 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 461 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
459 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 462 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
463 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
460 | 464 | ||
461 | BOOL fRollback = FALSE; | 465 | BOOL fRollback = FALSE; |
462 | DWORD dwIndex = 0; | 466 | DWORD dwIndex = 0; |
@@ -575,6 +579,7 @@ namespace Bootstrapper | |||
575 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 579 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
576 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 580 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
577 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 581 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
582 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
578 | 583 | ||
579 | BOOL fRollback = FALSE; | 584 | BOOL fRollback = FALSE; |
580 | DWORD dwIndex = 0; | 585 | DWORD dwIndex = 0; |
@@ -677,6 +682,7 @@ namespace Bootstrapper | |||
677 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 682 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
678 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 683 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
679 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 684 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
685 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
680 | 686 | ||
681 | BOOL fRollback = FALSE; | 687 | BOOL fRollback = FALSE; |
682 | DWORD dwIndex = 0; | 688 | DWORD dwIndex = 0; |
@@ -742,6 +748,76 @@ namespace Bootstrapper | |||
742 | } | 748 | } |
743 | 749 | ||
744 | [Fact] | 750 | [Fact] |
751 | void SingleMsiDowngradeTest() | ||
752 | { | ||
753 | HRESULT hr = S_OK; | ||
754 | BURN_ENGINE_STATE engineState = { }; | ||
755 | BURN_ENGINE_STATE* pEngineState = &engineState; | ||
756 | BURN_PLAN* pPlan = &engineState.plan; | ||
757 | |||
758 | InitializeEngineStateForCorePlan(wzSingleMsiManifestFileName, pEngineState); | ||
759 | DetectAttachedContainerAsAttached(pEngineState); | ||
760 | DetectPackagesAsAbsent(pEngineState); | ||
761 | DetectRelatedBundle(pEngineState, L"{AF8355C9-CCDD-4D61-BF5F-EA5F948D8F01}", L"1.1.0.0", BOOTSTRAPPER_RELATION_UPGRADE); | ||
762 | |||
763 | hr = CorePlan(pEngineState, BOOTSTRAPPER_ACTION_INSTALL); | ||
764 | NativeAssert::Succeeded(hr, "CorePlan failed"); | ||
765 | |||
766 | Assert::Equal<DWORD>(BOOTSTRAPPER_ACTION_INSTALL, pPlan->action); | ||
767 | NativeAssert::StringEqual(L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", pPlan->wzBundleId); | ||
768 | NativeAssert::StringEqual(L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", pPlan->wzBundleProviderKey); | ||
769 | Assert::Equal<BOOL>(FALSE, pPlan->fEnabledForwardCompatibleBundle); | ||
770 | Assert::Equal<BOOL>(TRUE, pPlan->fPerMachine); | ||
771 | Assert::Equal<BOOL>(FALSE, pPlan->fCanAffectMachineState); | ||
772 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | ||
773 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | ||
774 | Assert::Equal<BOOL>(TRUE, pPlan->fDowngrade); | ||
775 | |||
776 | BOOL fRollback = FALSE; | ||
777 | DWORD dwIndex = 0; | ||
778 | Assert::Equal(dwIndex, pPlan->cRegistrationActions); | ||
779 | |||
780 | fRollback = TRUE; | ||
781 | dwIndex = 0; | ||
782 | Assert::Equal(dwIndex, pPlan->cRollbackRegistrationActions); | ||
783 | |||
784 | fRollback = FALSE; | ||
785 | dwIndex = 0; | ||
786 | Assert::Equal(dwIndex, pPlan->cCacheActions); | ||
787 | |||
788 | fRollback = TRUE; | ||
789 | dwIndex = 0; | ||
790 | Assert::Equal(dwIndex, pPlan->cRollbackCacheActions); | ||
791 | |||
792 | Assert::Equal(0ull, pPlan->qwEstimatedSize); | ||
793 | Assert::Equal(0ull, pPlan->qwCacheSizeTotal); | ||
794 | |||
795 | fRollback = FALSE; | ||
796 | dwIndex = 0; | ||
797 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | ||
798 | |||
799 | fRollback = TRUE; | ||
800 | dwIndex = 0; | ||
801 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | ||
802 | |||
803 | Assert::Equal(0ul, pPlan->cExecutePackagesTotal); | ||
804 | Assert::Equal(0ul, pPlan->cOverallProgressTicksTotal); | ||
805 | |||
806 | dwIndex = 0; | ||
807 | Assert::Equal(dwIndex, pPlan->cRestoreRelatedBundleActions); | ||
808 | |||
809 | dwIndex = 0; | ||
810 | Assert::Equal(dwIndex, pPlan->cCleanActions); | ||
811 | |||
812 | UINT uIndex = 0; | ||
813 | ValidatePlannedProvider(pPlan, uIndex++, L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", NULL); | ||
814 | Assert::Equal(uIndex, pPlan->cPlannedProviders); | ||
815 | |||
816 | Assert::Equal(1ul, pEngineState->packages.cPackages); | ||
817 | ValidateNonPermanentPackageExpectedStates(&pEngineState->packages.rgPackages[0], L"PackageA", BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN, BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN); | ||
818 | } | ||
819 | |||
820 | [Fact] | ||
745 | void SingleMsiForceAbsentTest() | 821 | void SingleMsiForceAbsentTest() |
746 | { | 822 | { |
747 | HRESULT hr = S_OK; | 823 | HRESULT hr = S_OK; |
@@ -770,6 +846,7 @@ namespace Bootstrapper | |||
770 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 846 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
771 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 847 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
772 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 848 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
849 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
773 | 850 | ||
774 | BOOL fRollback = FALSE; | 851 | BOOL fRollback = FALSE; |
775 | DWORD dwIndex = 0; | 852 | DWORD dwIndex = 0; |
@@ -858,6 +935,7 @@ namespace Bootstrapper | |||
858 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 935 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
859 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 936 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
860 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 937 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
938 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
861 | 939 | ||
862 | BOOL fRollback = FALSE; | 940 | BOOL fRollback = FALSE; |
863 | DWORD dwIndex = 0; | 941 | DWORD dwIndex = 0; |
@@ -948,6 +1026,7 @@ namespace Bootstrapper | |||
948 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1026 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
949 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 1027 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
950 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 1028 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
1029 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
951 | 1030 | ||
952 | BOOL fRollback = FALSE; | 1031 | BOOL fRollback = FALSE; |
953 | DWORD dwIndex = 0; | 1032 | DWORD dwIndex = 0; |
@@ -1053,6 +1132,7 @@ namespace Bootstrapper | |||
1053 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1132 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
1054 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 1133 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
1055 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 1134 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
1135 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
1056 | 1136 | ||
1057 | BOOL fRollback = FALSE; | 1137 | BOOL fRollback = FALSE; |
1058 | DWORD dwIndex = 0; | 1138 | DWORD dwIndex = 0; |
@@ -1131,6 +1211,7 @@ namespace Bootstrapper | |||
1131 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1211 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
1132 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 1212 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
1133 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 1213 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
1214 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
1134 | 1215 | ||
1135 | BOOL fRollback = FALSE; | 1216 | BOOL fRollback = FALSE; |
1136 | DWORD dwIndex = 0; | 1217 | DWORD dwIndex = 0; |
@@ -1225,6 +1306,7 @@ namespace Bootstrapper | |||
1225 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1306 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
1226 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 1307 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
1227 | Assert::Equal<BOOL>(TRUE, pPlan->fDisallowRemoval); | 1308 | Assert::Equal<BOOL>(TRUE, pPlan->fDisallowRemoval); |
1309 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
1228 | 1310 | ||
1229 | BOOL fRollback = FALSE; | 1311 | BOOL fRollback = FALSE; |
1230 | DWORD dwIndex = 0; | 1312 | DWORD dwIndex = 0; |
@@ -1294,6 +1376,7 @@ namespace Bootstrapper | |||
1294 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1376 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
1295 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 1377 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
1296 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 1378 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
1379 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
1297 | 1380 | ||
1298 | BOOL fRollback = FALSE; | 1381 | BOOL fRollback = FALSE; |
1299 | DWORD dwIndex = 0; | 1382 | DWORD dwIndex = 0; |
@@ -1377,6 +1460,7 @@ namespace Bootstrapper | |||
1377 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1460 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
1378 | Assert::Equal<BOOL>(TRUE, pPlan->fDisableRollback); | 1461 | Assert::Equal<BOOL>(TRUE, pPlan->fDisableRollback); |
1379 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 1462 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
1463 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
1380 | 1464 | ||
1381 | BOOL fRollback = FALSE; | 1465 | BOOL fRollback = FALSE; |
1382 | DWORD dwIndex = 0; | 1466 | DWORD dwIndex = 0; |
@@ -1471,6 +1555,7 @@ namespace Bootstrapper | |||
1471 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1555 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
1472 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 1556 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
1473 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 1557 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
1558 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
1474 | 1559 | ||
1475 | BOOL fRollback = FALSE; | 1560 | BOOL fRollback = FALSE; |
1476 | DWORD dwIndex = 0; | 1561 | DWORD dwIndex = 0; |
@@ -1601,6 +1686,7 @@ namespace Bootstrapper | |||
1601 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1686 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
1602 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 1687 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
1603 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 1688 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
1689 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
1604 | 1690 | ||
1605 | BOOL fRollback = FALSE; | 1691 | BOOL fRollback = FALSE; |
1606 | DWORD dwIndex = 0; | 1692 | DWORD dwIndex = 0; |
@@ -1716,6 +1802,7 @@ namespace Bootstrapper | |||
1716 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1802 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
1717 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 1803 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
1718 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 1804 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
1805 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
1719 | 1806 | ||
1720 | BOOL fRollback = FALSE; | 1807 | BOOL fRollback = FALSE; |
1721 | DWORD dwIndex = 0; | 1808 | DWORD dwIndex = 0; |
@@ -1810,6 +1897,7 @@ namespace Bootstrapper | |||
1810 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); | 1897 | Assert::Equal<BOOL>(TRUE, pPlan->fCanAffectMachineState); |
1811 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); | 1898 | Assert::Equal<BOOL>(FALSE, pPlan->fDisableRollback); |
1812 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); | 1899 | Assert::Equal<BOOL>(FALSE, pPlan->fDisallowRemoval); |
1900 | Assert::Equal<BOOL>(FALSE, pPlan->fDowngrade); | ||
1813 | 1901 | ||
1814 | BOOL fRollback = FALSE; | 1902 | BOOL fRollback = FALSE; |
1815 | DWORD dwIndex = 0; | 1903 | DWORD dwIndex = 0; |