| 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 | } |