From 97e2fb014127a390118dd9cbb6b9e0475123a2c9 Mon Sep 17 00:00:00 2001 From: Bevan Weiss Date: Fri, 2 Aug 2024 21:45:46 +1000 Subject: A basic install / uninstall test for RemoveFoldersEx Contains no files etc to verify that Remove action can still occur without other elements bringing in the RemoveFiles Standard Action Signed-off-by: Bevan Weiss --- .../RemoveFolderExTest/Package.wxs | 15 ++++ .../RemoveFolderExTest/RemoveFolderExTest.wixproj | 13 ++++ .../WixToolsetTest.MsiE2E/RemoveFolderExTests.cs | 82 ++++++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/Package.wxs create mode 100644 src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/RemoveFolderExTest.wixproj create mode 100644 src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs (limited to 'src/test') diff --git a/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/Package.wxs b/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/Package.wxs new file mode 100644 index 00000000..3f8cf369 --- /dev/null +++ b/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/Package.wxs @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/RemoveFolderExTest.wixproj b/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/RemoveFolderExTest.wixproj new file mode 100644 index 00000000..1c71388a --- /dev/null +++ b/src/test/msi/TestData/RemoveFolderExTests/RemoveFolderExTest/RemoveFolderExTest.wixproj @@ -0,0 +1,13 @@ + + + + {A75B81F4-3335-4B4D-B766-303E136ED374} + true + + + + + + + + diff --git a/src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs new file mode 100644 index 00000000..c6780a1b --- /dev/null +++ b/src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs @@ -0,0 +1,82 @@ +// 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. + +namespace WixToolsetTest.MsiE2E; + +using System; +using System.IO; +using WixTestTools; +using Xunit; +using Xunit.Abstractions; + +public class RemoveFolderExTests : MsiE2ETests +{ + public RemoveFolderExTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) + { + } + + [Fact] + public void CanRemoveFolderExOnInstallAndUninstall() + { + var removeFolderExTestDir1 = "C:\\RemoveFolderExTest"; + var removeFolderExTestFile1 = Path.Combine(removeFolderExTestDir1, "testfile.txt"); + var removeFolderExTestDir2 = Path.Combine(removeFolderExTestDir1, "TestFolder1"); + var removeFolderExTestFile2 = Path.Combine(removeFolderExTestDir1, "TestFolder1", "testfile"); + + try + { + var product = this.CreatePackageInstaller("RemoveFolderExTest"); + + Directory.CreateDirectory(removeFolderExTestDir1); + File.Create(removeFolderExTestFile1).Dispose(); + Directory.CreateDirectory(removeFolderExTestDir2); + File.Create(removeFolderExTestFile2).Dispose(); + + if( !Directory.Exists(removeFolderExTestDir1) + || !File.Exists(removeFolderExTestFile1) + || !Directory.Exists(removeFolderExTestDir2) + || !File.Exists(removeFolderExTestFile2)) + { + Assert.Fail("Failed to create initial folder and file structure before install test"); + } + + product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); + + Assert.False(Directory.Exists(removeFolderExTestDir1), $"Failed to remove {removeFolderExTestDir1} on install"); + Assert.False(File.Exists(removeFolderExTestFile1), $"Failed to remove {removeFolderExTestFile1} on install"); + Assert.False(Directory.Exists(removeFolderExTestDir2), $"Failed to remove {removeFolderExTestDir2} on install"); + Assert.False(File.Exists(removeFolderExTestFile1), $"Failed to remove {removeFolderExTestFile2} on install"); + + + Directory.CreateDirectory(removeFolderExTestDir1); + File.Create(removeFolderExTestFile1).Dispose(); + Directory.CreateDirectory(removeFolderExTestDir2); + File.Create(removeFolderExTestFile2).Dispose(); + + if (!Directory.Exists(removeFolderExTestDir1) + || !File.Exists(removeFolderExTestFile1) + || !Directory.Exists(removeFolderExTestDir2) + || !File.Exists(removeFolderExTestFile2)) + { + Assert.Fail("Failed to create initial folder and file structure before uninstall test"); + } + + product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); + + Assert.False(Directory.Exists(removeFolderExTestDir1), $"Failed to remove {removeFolderExTestDir1} on uninstall"); + Assert.False(File.Exists(removeFolderExTestFile1), $"Failed to remove {removeFolderExTestFile1} on uninstall"); + Assert.False(Directory.Exists(removeFolderExTestDir2), $"Failed to remove {removeFolderExTestDir2} on uninstall"); + Assert.False(File.Exists(removeFolderExTestFile2), $"Failed to remove {removeFolderExTestFile2} on uninstall"); + + } + finally + { + try + { + Directory.Delete(removeFolderExTestDir1, true); + } + catch + { + } + } + } +} -- cgit v1.2.3-55-g6feb