diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2020-05-30 12:17:13 +1000 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2020-05-30 23:06:26 +1000 |
| commit | c70de8284987e4977ee40133180a1b220a68da71 (patch) | |
| tree | 609593f7dd9c8199eb38d2f2490b03240ec310ca /src | |
| parent | 223b2845955d4d6604cfd014cf9aa536ca1eb0a2 (diff) | |
| download | wix-c70de8284987e4977ee40133180a1b220a68da71.tar.gz wix-c70de8284987e4977ee40133180a1b220a68da71.tar.bz2 wix-c70de8284987e4977ee40133180a1b220a68da71.zip | |
Add TestDataFolderFileSystem.
Diffstat (limited to 'src')
| -rw-r--r-- | src/WixBuildTools.TestSupport/RobocopyRunner.cs | 16 | ||||
| -rw-r--r-- | src/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs | 42 |
2 files changed, 58 insertions, 0 deletions
diff --git a/src/WixBuildTools.TestSupport/RobocopyRunner.cs b/src/WixBuildTools.TestSupport/RobocopyRunner.cs new file mode 100644 index 00000000..49d53351 --- /dev/null +++ b/src/WixBuildTools.TestSupport/RobocopyRunner.cs | |||
| @@ -0,0 +1,16 @@ | |||
| 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 WixBuildTools.TestSupport | ||
| 4 | { | ||
| 5 | public class RobocopyRunner : ExternalExecutable | ||
| 6 | { | ||
| 7 | private static readonly RobocopyRunner Instance = new RobocopyRunner(); | ||
| 8 | |||
| 9 | private RobocopyRunner() : base("robocopy") { } | ||
| 10 | |||
| 11 | public static ExternalExecutableResult Execute(string args) | ||
| 12 | { | ||
| 13 | return Instance.Run(args); | ||
| 14 | } | ||
| 15 | } | ||
| 16 | } | ||
diff --git a/src/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs b/src/WixBuildTools.TestSupport/TestDataFolderFileSystem.cs new file mode 100644 index 00000000..8d670bf0 --- /dev/null +++ b/src/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 | |||
| 3 | namespace 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 | } | ||
