Skip to content

Commit c0cd28d

Browse files
P-Stormp-storm
andauthored
EnumerationOptions With recursion (#652)
Co-authored-by: p-storm <paul.de.man@gmail.com>
1 parent cf626f8 commit c0cd28d

2 files changed

Lines changed: 47 additions & 2 deletions

File tree

src/System.IO.Abstractions.TestingHelpers/MockDirectory.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public override string[] GetDirectories(string path, string searchPattern, Searc
177177
#if FEATURE_ENUMERATION_OPTIONS
178178
public override string[] GetDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions)
179179
{
180-
return GetDirectories(path, "*");
180+
return GetDirectories(path, "*", enumerationOptions.RecurseSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
181181
}
182182
#endif
183183

@@ -206,7 +206,7 @@ public override string[] GetFiles(string path, string searchPattern, SearchOptio
206206
#if FEATURE_ENUMERATION_OPTIONS
207207
public override string[] GetFiles(string path, string searchPattern, EnumerationOptions enumerationOptions)
208208
{
209-
return GetFiles(path, "*");
209+
return GetFiles(path, "*", enumerationOptions.RecurseSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
210210
}
211211
#endif
212212

tests/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,51 @@ public void MockDirectoryInfo_EnumerateFileSystemInfos_ShouldReturnDirectoriesAn
157157
Assert.That(result.Length, Is.EqualTo(2));
158158
}
159159

160+
[Test]
161+
public void MockDirectoryInfo_EnumerateFileSystemInfos_ShouldReturnDirectoriesAndNamesWithSearchPatternRecursive()
162+
{
163+
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
164+
{
165+
{ XFS.Path(@"c:\temp\folder\file.txt"), new MockFileData("") },
166+
{ XFS.Path(@"c:\temp\folder\folder"), new MockDirectoryData() },
167+
{ XFS.Path(@"c:\temp\folder\older"), new MockDirectoryData() }
168+
});
169+
170+
var directoryInfo = new MockDirectoryInfo(fileSystem, XFS.Path(@"c:\"));
171+
var result = directoryInfo.EnumerateFileSystemInfos("*", SearchOption.AllDirectories).ToArray();
172+
173+
Assert.That(result.Length, Is.EqualTo(5));
174+
}
175+
176+
#if FEATURE_ENUMERATION_OPTIONS
177+
[Test]
178+
public void MockDirectoryInfo_EnumerateFileSystemInfos_ShouldReturnDirectoriesAndNamesWithSearchPatternRecursiveEnumerateOptions()
179+
{
180+
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
181+
{
182+
{ XFS.Path(@"c:\temp\folder\file.txt"), new MockFileData("") },
183+
{ XFS.Path(@"c:\temp\folder\folder"), new MockDirectoryData() },
184+
{ XFS.Path(@"c:\temp\folder\older"), new MockDirectoryData() }
185+
});
186+
187+
var directoryInfo = new MockDirectoryInfo(fileSystem, XFS.Path(@"c:\"));
188+
189+
var enumerationOptions = new EnumerationOptions()
190+
{
191+
MatchType = MatchType.Win32,
192+
RecurseSubdirectories = true,
193+
IgnoreInaccessible = true,
194+
ReturnSpecialDirectories = false,
195+
AttributesToSkip = FileAttributes.Hidden,
196+
MatchCasing = MatchCasing.PlatformDefault,
197+
};
198+
199+
var result = directoryInfo.EnumerateFileSystemInfos("*", enumerationOptions).ToArray();
200+
201+
Assert.That(result.Length, Is.EqualTo(5));
202+
}
203+
#endif
204+
160205
[Test]
161206
public void MockDirectoryInfo_GetParent_ShouldReturnDirectoriesAndNamesWithSearchPattern()
162207
{

0 commit comments

Comments
 (0)