Skip to content

Commit 86a06ed

Browse files
authored
Merge pull request #258 from tathamoddie/issue-169
Fix relative directory path issue
2 parents 1bf8b19 + ee897e0 commit 86a06ed

2 files changed

Lines changed: 65 additions & 1 deletion

File tree

TestHelpers.Tests/MockDirectoryTests.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,70 @@ public void MockDirectory_GetDirectories_WithTopDirectories_ShouldOnlyReturnTopD
877877
Assert.That(actualResult, Is.EquivalentTo(new []{XFS.Path(@"C:\Folder\.foo\"), XFS.Path(@"C:\Folder\foo.foo\")}));
878878
}
879879

880+
[Test]
881+
public void MockDirectory_GetDirectories_RelativeWithNoSubDirectories_ShouldReturnDirectories()
882+
{
883+
// Arrange
884+
var fileSystem = new MockFileSystem();
885+
fileSystem.Directory.CreateDirectory("Folder");
886+
887+
// Act
888+
var actualResult = fileSystem.Directory.GetDirectories("Folder");
889+
890+
// Assert
891+
Assert.That(actualResult, Is.Empty);
892+
}
893+
894+
[TestCase(@"Folder\SubFolder")]
895+
[TestCase(@"Folder")]
896+
public void MockDirectory_GetDirectories_RelativeDirectory_WithoutChildren_ShouldReturnNoChildDirectories(string relativeDirPath)
897+
{
898+
// Arrange
899+
var fileSystem = new MockFileSystem();
900+
fileSystem.Directory.CreateDirectory(relativeDirPath);
901+
902+
// Act
903+
var actualResult = fileSystem.Directory.GetDirectories(relativeDirPath);
904+
905+
// Assert
906+
Assert.That(actualResult, Is.Empty);
907+
}
908+
909+
[TestCase(@"Folder\SubFolder")]
910+
[TestCase(@"Folder")]
911+
public void MockDirectory_GetDirectories_RelativeDirectory_WithChildren_ShouldReturnChildDirectories(string relativeDirPath)
912+
{
913+
// Arrange
914+
const string currentDirectory = @"T:\foo";
915+
var fileSystem = new MockFileSystem(null, currentDirectory: currentDirectory);
916+
fileSystem.Directory.CreateDirectory(relativeDirPath);
917+
fileSystem.Directory.CreateDirectory(relativeDirPath + @"\child");
918+
919+
// Act
920+
var actualResult = fileSystem.Directory.GetDirectories(relativeDirPath);
921+
922+
// Assert
923+
CollectionAssert.AreEqual(
924+
new[] { currentDirectory + @"\" + relativeDirPath + @"\child\" },
925+
actualResult
926+
);
927+
}
928+
929+
[Test]
930+
public void MockDirectory_GetDirectories_AbsoluteWithNoSubDirectories_ShouldReturnDirectories()
931+
{
932+
// Arrange
933+
var fileSystem = new MockFileSystem();
934+
fileSystem.Directory.CreateDirectory("Folder");
935+
936+
// Act
937+
var fullPath = fileSystem.Path.GetFullPath("Folder");
938+
var actualResult = fileSystem.Directory.GetDirectories(fullPath);
939+
940+
// Assert
941+
Assert.That(actualResult, Is.Empty);
942+
}
943+
880944
[Test]
881945
public void MockDirectory_GetDirectories_WithAllDirectories_ShouldReturnsAllMatchingSubFolders()
882946
{

TestingHelpers/MockDirectory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,6 @@ private string[] GetFilesInternal(IEnumerable<string> files, string path, string
184184
{
185185
CheckSearchPattern(searchPattern);
186186
path = EnsurePathEndsWithDirectorySeparator(path);
187-
path = mockFileDataAccessor.Path.GetFullPath(path);
188187

189188
bool isUnix = XFS.IsUnixPlatform();
190189

@@ -434,6 +433,7 @@ public override IEnumerable<string> EnumerateDirectories(string path, string sea
434433
mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path");
435434

436435
path = EnsurePathEndsWithDirectorySeparator(path);
436+
path = mockFileDataAccessor.Path.GetFullPath(path);
437437

438438
if (!Exists(path))
439439
{

0 commit comments

Comments
 (0)