From fb54576f1d05e82ba47cd718c4c4f8b3bad624c9 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 18 Mar 2022 20:15:33 -0500 Subject: Give BA process id and option to wait for cancelled process to exit. --- .../burn/WixToolsetTest.BurnE2E/FailureTests.cs | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs') diff --git a/src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs index d8428a54..bbc0b387 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/FailureTests.cs @@ -2,7 +2,9 @@ namespace WixToolsetTest.BurnE2E { + using System.Threading; using WixTestTools; + using WixToolset.Mba.Core; using Xunit; using Xunit.Abstractions; @@ -10,6 +12,46 @@ namespace WixToolsetTest.BurnE2E { public FailureTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } + [Fact] + public void CanCancelExePackageAndAbandonIt() + { + var bundleD = this.CreateBundleInstaller("BundleD"); + var testBAController = this.CreateTestBAController(); + + // Cancel package ExeA after it starts. + testBAController.SetPackageCancelExecuteAtProgress("ExeA", 1); + testBAController.SetPackageRecordTestRegistryValue("ExeA"); + + var logPath = bundleD.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT); + bundleD.VerifyUnregisteredAndRemovedFromPackageCache(); + + Assert.True(LogVerifier.MessageInLogFile(logPath, "TestRegistryValue: ExeA, Version, ''")); + + // Make sure ExeA finishes running. + Thread.Sleep(3000); + + bundleD.VerifyExeTestRegistryValue("ExeA", "1.0.0.0"); + } + + [Fact] + public void CanCancelExePackageAndWaitUntilItCompletes() + { + var bundleD = this.CreateBundleInstaller("BundleD"); + var testBAController = this.CreateTestBAController(); + + // Cancel package ExeA after it starts. + testBAController.SetPackageCancelExecuteAtProgress("ExeA", 1); + testBAController.SetPackageProcessCancelAction("ExeA", BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION.Wait); + testBAController.SetPackageRecordTestRegistryValue("ExeA"); + + var logPath = bundleD.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT); + bundleD.VerifyUnregisteredAndRemovedFromPackageCache(); + + Assert.True(LogVerifier.MessageInLogFile(logPath, "TestRegistryValue: ExeA, Version, '1.0.0.0'")); + + bundleD.VerifyExeTestRegistryValue("ExeA", "1.0.0.0"); + } + [Fact] public void CanCancelMsiPackageVeryEarly() { -- cgit v1.2.3-55-g6feb