diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2022-03-13 23:51:36 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-03-14 14:53:29 -0500 |
| commit | 9453eaa9a38f78e248526ddd996485140a5d4d9a (patch) | |
| tree | 8ef6bda85836fd3f1b9c2c6c16cb4a994519e863 /src/burn/test/BurnUnitTest/PlanTest.cpp | |
| parent | 78125b7c4bd59468275d65b63860bdb68b1bc6f1 (diff) | |
| download | wix-9453eaa9a38f78e248526ddd996485140a5d4d9a.tar.gz wix-9453eaa9a38f78e248526ddd996485140a5d4d9a.tar.bz2 wix-9453eaa9a38f78e248526ddd996485140a5d4d9a.zip | |
Make engine skip planning if there are any downgrade related bundles.
Fixes 6677, 6722
Reverts 6537
Diffstat (limited to 'src/burn/test/BurnUnitTest/PlanTest.cpp')
| -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; |
