From 8377e24550d10443f8893deb7310ea965aa20464 Mon Sep 17 00:00:00 2001 From: Michael Wildman Date: Wed, 17 Oct 2018 08:49:22 +1300 Subject: [PATCH 1/3] Stop calling real IO.Path.GetTempPath() when creating a MockFileSystem --- .../MockDirectoryTests.cs | 6 ++++-- System.IO.Abstractions.TestingHelpers/MockFileSystem.cs | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs index 9cd17fa75..5062a9379 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs @@ -1187,8 +1187,10 @@ public void MockDirectory_GetCurrentDirectory_ShouldReturnValueFromFileSystemCon [Test] - public void MockDirectory_GetCurrentDirectory_ShouldReturnDefaultPathWhenNotSet() { - string directory = Path.GetTempPath(); + public void MockDirectory_GetCurrentDirectory_ShouldReturnDefaultPathWhenNotSet() + { + string directory = XFS.Path(@"C:\"); + var fileSystem = new MockFileSystem(); var actual = fileSystem.Directory.GetCurrentDirectory(); diff --git a/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs b/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs index 186dcebbe..6baab2834 100644 --- a/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs +++ b/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs @@ -9,6 +9,8 @@ namespace System.IO.Abstractions.TestingHelpers [Serializable] public class MockFileSystem : IFileSystem, IMockFileDataAccessor { + private const string DEFAULT_CURRENT_DIRECTORY = @"C:\"; + private readonly IDictionary files; [NonSerialized] private readonly PathVerifier pathVerifier; @@ -19,7 +21,7 @@ public MockFileSystem(IDictionary files, string currentDir { if (string.IsNullOrEmpty(currentDirectory)) { - currentDirectory = IO.Path.GetTempPath(); + currentDirectory = XFS.Path(DEFAULT_CURRENT_DIRECTORY); } pathVerifier = new PathVerifier(this); From f09f303b71c4eced4037c061ac114289828d43e4 Mon Sep 17 00:00:00 2001 From: Michael Wildman Date: Mon, 29 Oct 2018 18:40:51 +1300 Subject: [PATCH 2/3] Ensure current directory of MockFileSystem exists on creation --- .../MockDirectoryTests.cs | 3 +-- .../MockFileSystemTests.cs | 12 ++++++++++++ .../MockFileSystem.cs | 5 +++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs index 5062a9379..d7f48234c 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs @@ -1184,8 +1184,7 @@ public void MockDirectory_GetCurrentDirectory_ShouldReturnValueFromFileSystemCon Assert.AreEqual(directory, actual); } - - + [Test] public void MockDirectory_GetCurrentDirectory_ShouldReturnDefaultPathWhenNotSet() { diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs index 170534ad1..b808c9300 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs @@ -277,5 +277,17 @@ public void MockFileSystem_AddDirectory_TrailingSlashAllowedButNotRequired(strin Assert.IsTrue(fileSystem.FileExists(path2)); } + + [Test] + [TestCase(null)] + [TestCase(@"C:\path\")] + public void MockFileSystem_DefaultState_CurrentDirectoryExists(string currentDirectory) + { + var fs = new MockFileSystem(null, currentDirectory); + + var actualCurrentDirectory = fs.DirectoryInfo.FromDirectoryName("."); + + Assert.IsTrue(actualCurrentDirectory.Exists); + } } } diff --git a/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs b/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs index 6baab2834..ca540cd51 100644 --- a/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs +++ b/System.IO.Abstractions.TestingHelpers/MockFileSystem.cs @@ -44,6 +44,11 @@ public MockFileSystem(IDictionary files, string currentDir AddFile(entry.Key, entry.Value); } } + + if (!FileExists(currentDirectory)) + { + AddDirectory(currentDirectory); + } } public FileBase File { get; } From 6c93802b71b39e2beea13df66101870d2257cee1 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 29 Oct 2018 06:28:28 +0000 Subject: [PATCH 3/3] fix failing test on linux --- .../MockFileSystemTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs index 47d26c040..34fc81400 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; @@ -295,7 +295,7 @@ public void MockFileSystem_GetFiles_ThrowsArgumentExceptionForInvalidCharacters( [Test] [TestCase(null)] - [TestCase(@"C:\path\")] + [TestCase(@"C:\somepath")] public void MockFileSystem_DefaultState_CurrentDirectoryExists(string currentDirectory) { var fs = new MockFileSystem(null, currentDirectory);