Skip to content

Commit dbf2548

Browse files
Add validation for illegal characters when creating MockDirectory (#549)
1 parent 8f5e6b9 commit dbf2548

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,22 @@ public void MockDirectory_CreateDirectory_ShouldCreateFolderInMemoryFileSystem()
637637
Assert.IsTrue(fileSystem.AllDirectories.Any(d => d == XFS.Path(@"c:\bar")));
638638
}
639639

640+
[Test]
641+
public void MockDirectory_CreateDirectory_ShouldThrowIfIllegalCharacterInPath()
642+
{
643+
// Arrange
644+
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
645+
{
646+
{ XFS.Path(@"c:\foo.txt"), new MockFileData("Demo text content") }
647+
});
648+
649+
// Act
650+
TestDelegate createDelegate = () => fileSystem.Directory.CreateDirectory(XFS.Path(@"c:\bar_?_"));
651+
652+
// Assert
653+
Assert.Throws<ArgumentException>(createDelegate);
654+
}
655+
640656
// Issue #210
641657
[Test]
642658
public void MockDirectory_CreateDirectory_ShouldIgnoreExistingDirectoryRegardlessOfTrailingSlash()

System.IO.Abstractions.TestingHelpers/MockDirectory.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ private IDirectoryInfo CreateDirectoryInternal(string path, DirectorySecurity di
4747
throw new ArgumentException(StringResources.Manager.GetString("PATH_CANNOT_BE_THE_EMPTY_STRING_OR_ALL_WHITESPACE"), "path");
4848
}
4949

50+
if (mockFileDataAccessor.PathVerifier.HasIllegalCharacters(path, true))
51+
{
52+
throw CommonExceptions.IllegalCharactersInPath(nameof(path));
53+
}
54+
5055
path = mockFileDataAccessor.Path.GetFullPath(path).TrimSlashes();
5156
if (XFS.IsWindowsPlatform())
5257
{

0 commit comments

Comments
 (0)