aboutsummaryrefslogtreecommitdiff
path: root/src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2017-12-22 15:53:01 -0800
committerRob Mensching <rob@firegiant.com>2017-12-22 15:53:01 -0800
commitecf3a0cca5a424a91ab98557d963d2535963d582 (patch)
tree06355e906e5c404480dc6eac342b9b4d2ec9d122 /src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs
parentdc9f4c329e6f55ce7595970463e0caf148096f4b (diff)
downloadwix-ecf3a0cca5a424a91ab98557d963d2535963d582.tar.gz
wix-ecf3a0cca5a424a91ab98557d963d2535963d582.tar.bz2
wix-ecf3a0cca5a424a91ab98557d963d2535963d582.zip
Reintroduce binder extensions and light.exe for binding .wixouts
Diffstat (limited to 'src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs')
-rw-r--r--src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs b/src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs
new file mode 100644
index 00000000..3b8c0e19
--- /dev/null
+++ b/src/test/WixToolsetTest.LightIntegration/Utility/DisposableFileSystem.cs
@@ -0,0 +1,86 @@
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.LightIntegration.Utility
4{
5 using System;
6 using System.Collections.Generic;
7 using System.IO;
8
9 public class DisposableFileSystem : IDisposable
10 {
11 protected bool Disposed { get; private set; }
12
13 private List<string> CleanupPaths { get; } = new List<string>();
14
15 protected string GetFile(bool create = false)
16 {
17 var path = Path.GetTempFileName();
18
19 if (!create)
20 {
21 File.Delete(path);
22 }
23
24 this.CleanupPaths.Add(path);
25
26 return path;
27 }
28
29 public string GetFolder(bool create = false)
30 {
31 var path = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
32
33 if (create)
34 {
35 Directory.CreateDirectory(path);
36 }
37
38 this.CleanupPaths.Add(path);
39
40 return path;
41 }
42
43
44 #region // IDisposable
45
46 public void Dispose()
47 {
48 this.Dispose(true);
49 GC.SuppressFinalize(this);
50 }
51
52 protected virtual void Dispose(bool disposing)
53 {
54 if (this.Disposed)
55 {
56 return;
57 }
58
59 if (disposing)
60 {
61 foreach (var path in this.CleanupPaths)
62 {
63 try
64 {
65 if (File.Exists(path))
66 {
67 File.Delete(path);
68 }
69 else if (Directory.Exists(path))
70 {
71 Directory.Delete(path, true);
72 }
73 }
74 catch
75 {
76 // Best effort delete, so ignore any failures.
77 }
78 }
79 }
80
81 this.Disposed = true;
82 }
83
84 #endregion
85 }
86}