summaryrefslogtreecommitdiff
path: root/src/test/msi/WixToolsetTest.MsiE2E/RemoveFolderExTests.cs
blob: c6780a1b8a6550377231f37e5bb964288b97e853 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
            {
            }
        }
    }
}