diff options
Diffstat (limited to 'src/internal/WixInternal.TestSupport/TestDataFolderFileSystem.cs')
| -rw-r--r-- | src/internal/WixInternal.TestSupport/TestDataFolderFileSystem.cs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/internal/WixInternal.TestSupport/TestDataFolderFileSystem.cs b/src/internal/WixInternal.TestSupport/TestDataFolderFileSystem.cs new file mode 100644 index 00000000..38b05101 --- /dev/null +++ b/src/internal/WixInternal.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 | |||
| 3 | namespace WixInternal.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 | public 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 | } | ||
