aboutsummaryrefslogtreecommitdiff
path: root/src/test/burn/WixToolsetTest.BurnE2E/FilesInUseTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/burn/WixToolsetTest.BurnE2E/FilesInUseTests.cs')
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/FilesInUseTests.cs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/FilesInUseTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/FilesInUseTests.cs
new file mode 100644
index 00000000..6ad68d22
--- /dev/null
+++ b/src/test/burn/WixToolsetTest.BurnE2E/FilesInUseTests.cs
@@ -0,0 +1,38 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolsetTest.BurnE2E
4{
5 using System.IO;
6 using WixTestTools;
7 using Xunit;
8 using Xunit.Abstractions;
9
10 public class FilesInUseTests : BurnE2ETests
11 {
12 public FilesInUseTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { }
13
14 [Fact]
15 public void CanCancelInstallAfterRetryingLockedFile()
16 {
17 var packageA = this.CreatePackageInstaller("PackageA");
18 var bundleA = this.CreateBundleInstaller("BundleA");
19 var testBAController = this.CreateTestBAController();
20
21 testBAController.SetPackageRetryExecuteFilesInUse("PackageA", 1);
22
23 packageA.VerifyInstalled(false);
24
25 // Lock the file that will be installed.
26 string targetInstallFile = packageA.GetInstalledFilePath("Package.wxs");
27 Directory.CreateDirectory(Path.GetDirectoryName(targetInstallFile));
28 using (FileStream lockTargetFile = new FileStream(targetInstallFile, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None, 4096, FileOptions.DeleteOnClose))
29 {
30 bundleA.Install(expectedExitCode: (int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT);
31 }
32
33 bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
34
35 packageA.VerifyInstalled(false);
36 }
37 }
38}