aboutsummaryrefslogtreecommitdiff
path: root/src/internal/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-05-11 07:37:18 -0700
committerRob Mensching <rob@firegiant.com>2021-05-11 07:37:18 -0700
commit985b2683b2717c83a27295b36e09b126083238f9 (patch)
tree622804d279e0ac58366dee62888e6a317a2b9d41 /src/internal/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs
parent3f583916719eeef598d10a5d4e14ef14f008243b (diff)
parent6a24996a2e831cfe402398af65b31fb1ecd575a9 (diff)
downloadwix-985b2683b2717c83a27295b36e09b126083238f9.tar.gz
wix-985b2683b2717c83a27295b36e09b126083238f9.tar.bz2
wix-985b2683b2717c83a27295b36e09b126083238f9.zip
Merge WixBuildTools
Diffstat (limited to 'src/internal/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs')
-rw-r--r--src/internal/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/internal/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs b/src/internal/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs
new file mode 100644
index 00000000..8d670bf0
--- /dev/null
+++ b/src/internal/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs
@@ -0,0 +1,42 @@
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 WixBuildTools.TestSupport
4{
5 using System;
6
7 /// <summary>
8 /// This class builds on top of DisposableFileSystem
9 /// to make it easy to write a test that needs a whole folder of test data copied to a temp location
10 /// that will automatically be cleaned up at the end of the test.
11 /// </summary>
12 public class TestDataFolderFileSystem : IDisposable
13 {
14 private DisposableFileSystem fileSystem;
15
16 public string BaseFolder { get; private set; }
17
18 public void Dispose()
19 {
20 this.fileSystem?.Dispose();
21 }
22
23 public void Initialize(string sourceDirectoryPath)
24 {
25 if (this.fileSystem != null)
26 {
27 throw new InvalidOperationException();
28 }
29 this.fileSystem = new DisposableFileSystem();
30
31 this.BaseFolder = this.fileSystem.GetFolder();
32
33 RobocopyFolder(sourceDirectoryPath, this.BaseFolder);
34 }
35
36 private static ExternalExecutableResult RobocopyFolder(string sourceFolderPath, string destinationFolderPath)
37 {
38 var args = $"\"{sourceFolderPath}\" \"{destinationFolderPath}\" /E /R:1 /W:1";
39 return RobocopyRunner.Execute(args);
40 }
41 }
42}