Skip to content

Commit dd4a4b8

Browse files
tehmantrafgreinacher
authored andcommitted
Stop calling real IO.Path.GetTempPath() when creating a MockFileSystem (#372)
* Stop calling real IO.Path.GetTempPath() when creating a MockFileSystem * Ensure current directory of MockFileSystem exists on creation * fix failing test on linux Fixes #350
1 parent 0550b00 commit dd4a4b8

3 files changed

Lines changed: 26 additions & 6 deletions

File tree

System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,11 +1184,12 @@ public void MockDirectory_GetCurrentDirectory_ShouldReturnValueFromFileSystemCon
11841184

11851185
Assert.AreEqual(directory, actual);
11861186
}
1187-
1188-
1187+
11891188
[Test]
1190-
public void MockDirectory_GetCurrentDirectory_ShouldReturnDefaultPathWhenNotSet() {
1191-
string directory = Path.GetTempPath();
1189+
public void MockDirectory_GetCurrentDirectory_ShouldReturnDefaultPathWhenNotSet()
1190+
{
1191+
string directory = XFS.Path(@"C:\");
1192+
11921193
var fileSystem = new MockFileSystem();
11931194

11941195
var actual = fileSystem.Directory.GetCurrentDirectory();

System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Collections.Generic;
1+
using System.Collections.Generic;
22
using System.Linq;
33
using System.Reflection;
44
using System.Text;
@@ -292,5 +292,17 @@ public void MockFileSystem_GetFiles_ThrowsArgumentExceptionForInvalidCharacters(
292292
// Assert
293293
Assert.Throws<ArgumentException>(getFilesWithInvalidCharacterInPath);
294294
}
295+
296+
[Test]
297+
[TestCase(null)]
298+
[TestCase(@"C:\somepath")]
299+
public void MockFileSystem_DefaultState_CurrentDirectoryExists(string currentDirectory)
300+
{
301+
var fs = new MockFileSystem(null, currentDirectory);
302+
303+
var actualCurrentDirectory = fs.DirectoryInfo.FromDirectoryName(".");
304+
305+
Assert.IsTrue(actualCurrentDirectory.Exists);
306+
}
295307
}
296308
}

System.IO.Abstractions.TestingHelpers/MockFileSystem.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ namespace System.IO.Abstractions.TestingHelpers
99
[Serializable]
1010
public class MockFileSystem : IFileSystem, IMockFileDataAccessor
1111
{
12+
private const string DEFAULT_CURRENT_DIRECTORY = @"C:\";
13+
1214
private readonly IDictionary<string, MockFileData> files;
1315
[NonSerialized]
1416
private readonly PathVerifier pathVerifier;
@@ -19,7 +21,7 @@ public MockFileSystem(IDictionary<string, MockFileData> files, string currentDir
1921
{
2022
if (string.IsNullOrEmpty(currentDirectory))
2123
{
22-
currentDirectory = IO.Path.GetTempPath();
24+
currentDirectory = XFS.Path(DEFAULT_CURRENT_DIRECTORY);
2325
}
2426

2527
pathVerifier = new PathVerifier(this);
@@ -42,6 +44,11 @@ public MockFileSystem(IDictionary<string, MockFileData> files, string currentDir
4244
AddFile(entry.Key, entry.Value);
4345
}
4446
}
47+
48+
if (!FileExists(currentDirectory))
49+
{
50+
AddDirectory(currentDirectory);
51+
}
4552
}
4653

4754
public FileBase File { get; }

0 commit comments

Comments
 (0)