Skip to content

Commit 9fad9f1

Browse files
Add methods with EnumerationOptions parameter to IDirectoryInfo (#641)
Co-authored-by: Florian Greinacher <fgreinacher@users.noreply.github.com>
1 parent e6cb8f2 commit 9fad9f1

9 files changed

Lines changed: 197 additions & 1 deletion

File tree

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,13 @@ public override string[] GetDirectories(string path, string searchPattern, Searc
174174
return EnumerateDirectories(path, searchPattern, searchOption).ToArray();
175175
}
176176

177+
#if FEATURE_ENUMERATION_OPTIONS
178+
public override string[] GetDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions)
179+
{
180+
return GetDirectories(path, "*");
181+
}
182+
#endif
183+
177184
public override string GetDirectoryRoot(string path)
178185
{
179186
return Path.GetPathRoot(path);
@@ -196,6 +203,13 @@ public override string[] GetFiles(string path, string searchPattern, SearchOptio
196203
return GetFilesInternal(mockFileDataAccessor.AllFiles, path, searchPattern, searchOption);
197204
}
198205

206+
#if FEATURE_ENUMERATION_OPTIONS
207+
public override string[] GetFiles(string path, string searchPattern, EnumerationOptions enumerationOptions)
208+
{
209+
return GetFiles(path, "*");
210+
}
211+
#endif
212+
199213
private string[] GetFilesInternal(
200214
IEnumerable<string> files,
201215
string path,

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

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,13 @@ public override IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPa
158158
return GetDirectories(searchPattern, searchOption);
159159
}
160160

161+
#if FEATURE_ENUMERATION_OPTIONS
162+
public override IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPattern, EnumerationOptions enumerationOptions)
163+
{
164+
return GetDirectories(searchPattern, enumerationOptions);
165+
}
166+
#endif
167+
161168
public override IEnumerable<IFileInfo> EnumerateFiles()
162169
{
163170
return GetFiles();
@@ -173,6 +180,13 @@ public override IEnumerable<IFileInfo> EnumerateFiles(string searchPattern, Sear
173180
return GetFiles(searchPattern, searchOption);
174181
}
175182

183+
#if FEATURE_ENUMERATION_OPTIONS
184+
public override IEnumerable<IFileInfo> EnumerateFiles(string searchPattern, EnumerationOptions enumerationOptions)
185+
{
186+
return GetFiles(searchPattern, enumerationOptions);
187+
}
188+
#endif
189+
176190
public override IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos()
177191
{
178192
return GetFileSystemInfos();
@@ -188,6 +202,13 @@ public override IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string sea
188202
return GetFileSystemInfos(searchPattern, searchOption);
189203
}
190204

205+
#if FEATURE_ENUMERATION_OPTIONS
206+
public override IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string searchPattern, EnumerationOptions enumerationOptions)
207+
{
208+
return GetFileSystemInfos(searchPattern, enumerationOptions);
209+
}
210+
#endif
211+
191212
public override DirectorySecurity GetAccessControl()
192213
{
193214
return mockFileDataAccessor.Directory.GetAccessControl(directoryPath);
@@ -213,6 +234,13 @@ public override IDirectoryInfo[] GetDirectories(string searchPattern, SearchOpti
213234
return ConvertStringsToDirectories(mockFileDataAccessor.Directory.GetDirectories(directoryPath, searchPattern, searchOption));
214235
}
215236

237+
#if FEATURE_ENUMERATION_OPTIONS
238+
public override IDirectoryInfo[] GetDirectories(string searchPattern, EnumerationOptions enumerationOptions)
239+
{
240+
return ConvertStringsToDirectories(mockFileDataAccessor.Directory.GetDirectories(directoryPath, searchPattern, enumerationOptions));
241+
}
242+
#endif
243+
216244
private DirectoryInfoBase[] ConvertStringsToDirectories(IEnumerable<string> paths)
217245
{
218246
return paths
@@ -236,6 +264,13 @@ public override IFileInfo[] GetFiles(string searchPattern, SearchOption searchOp
236264
return ConvertStringsToFiles(mockFileDataAccessor.Directory.GetFiles(FullName, searchPattern, searchOption));
237265
}
238266

267+
#if FEATURE_ENUMERATION_OPTIONS
268+
public override IFileInfo[] GetFiles(string searchPattern, EnumerationOptions enumerationOptions)
269+
{
270+
return ConvertStringsToFiles(mockFileDataAccessor.Directory.GetFiles(FullName, searchPattern, enumerationOptions));
271+
}
272+
#endif
273+
239274
IFileInfo[] ConvertStringsToFiles(IEnumerable<string> paths)
240275
{
241276
return paths
@@ -258,6 +293,13 @@ public override IFileSystemInfo[] GetFileSystemInfos(string searchPattern, Searc
258293
return GetDirectories(searchPattern, searchOption).OfType<IFileSystemInfo>().Concat(GetFiles(searchPattern, searchOption)).ToArray();
259294
}
260295

296+
#if FEATURE_ENUMERATION_OPTIONS
297+
public override IFileSystemInfo[] GetFileSystemInfos(string searchPattern, EnumerationOptions enumerationOptions)
298+
{
299+
return GetDirectories(searchPattern, enumerationOptions).OfType<IFileSystemInfo>().Concat(GetFiles(searchPattern, enumerationOptions)).ToArray();
300+
}
301+
#endif
302+
261303
public override void MoveTo(string destDirName)
262304
{
263305
mockFileDataAccessor.Directory.Move(directoryPath, destDirName);

src/System.IO.Abstractions/DirectoryBase.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ internal DirectoryBase() { }
5959
/// <inheritdoc cref="Directory.GetDirectories(string,string,SearchOption)"/>
6060
public abstract string[] GetDirectories(string path, string searchPattern, SearchOption searchOption);
6161

62+
#if FEATURE_ENUMERATION_OPTIONS
63+
/// <inheritdoc cref="Directory.GetDirectories(string,string,EnumerationOptions)"/>
64+
public abstract string[] GetDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions);
65+
#endif
66+
6267
/// <inheritdoc cref="Directory.GetDirectoryRoot"/>
6368
public abstract string GetDirectoryRoot(string path);
6469

@@ -71,6 +76,11 @@ internal DirectoryBase() { }
7176
/// <inheritdoc cref="Directory.GetFiles(string,string,SearchOption)"/>
7277
public abstract string[] GetFiles(string path, string searchPattern, SearchOption searchOption);
7378

79+
#if FEATURE_ENUMERATION_OPTIONS
80+
/// <inheritdoc cref="Directory.GetFiles(string,string,EnumerationOptions)"/>
81+
public abstract string[] GetFiles(string path, string searchPattern, EnumerationOptions enumerationOptions);
82+
#endif
83+
7484
/// <inheritdoc cref="Directory.GetFileSystemEntries(string)"/>
7585
public abstract string[] GetFileSystemEntries(string path);
7686

src/System.IO.Abstractions/DirectoryInfoBase.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ internal DirectoryInfoBase() { }
3434
/// <inheritdoc cref="DirectoryInfo.EnumerateDirectories(string,SearchOption)"/>
3535
public abstract IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPattern, SearchOption searchOption);
3636

37+
#if FEATURE_ENUMERATION_OPTIONS
38+
/// <inheritdoc cref="DirectoryInfo.EnumerateDirectories(string,EnumerationOptions)"/>
39+
public abstract IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPattern, EnumerationOptions enumerationOptions);
40+
#endif
41+
3742
/// <inheritdoc cref="DirectoryInfo.EnumerateFiles()"/>
3843
public abstract IEnumerable<IFileInfo> EnumerateFiles();
3944

@@ -43,6 +48,11 @@ internal DirectoryInfoBase() { }
4348
/// <inheritdoc cref="DirectoryInfo.EnumerateFiles(string,SearchOption)"/>
4449
public abstract IEnumerable<IFileInfo> EnumerateFiles(string searchPattern, SearchOption searchOption);
4550

51+
#if FEATURE_ENUMERATION_OPTIONS
52+
/// <inheritdoc cref="DirectoryInfo.EnumerateFiles(string,EnumerationOptions)"/>
53+
public abstract IEnumerable<IFileInfo> EnumerateFiles(string searchPattern, EnumerationOptions enumerationOptions);
54+
#endif
55+
4656
/// <inheritdoc cref="DirectoryInfo.EnumerateFileSystemInfos()"/>
4757
public abstract IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos();
4858

@@ -52,6 +62,11 @@ internal DirectoryInfoBase() { }
5262
/// <inheritdoc cref="DirectoryInfo.EnumerateFileSystemInfos(string,SearchOption)"/>
5363
public abstract IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string searchPattern, SearchOption searchOption);
5464

65+
#if FEATURE_ENUMERATION_OPTIONS
66+
/// <inheritdoc cref="DirectoryInfo.EnumerateFileSystemInfos(string,EnumerationOptions)"/>
67+
public abstract IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string searchPattern, EnumerationOptions enumerationOptions);
68+
#endif
69+
5570
/// <inheritdoc cref="DirectoryInfo.GetAccessControl()"/>
5671
public abstract DirectorySecurity GetAccessControl();
5772

@@ -67,6 +82,11 @@ internal DirectoryInfoBase() { }
6782
/// <inheritdoc cref="DirectoryInfo.GetDirectories(string,SearchOption)"/>
6883
public abstract IDirectoryInfo[] GetDirectories(string searchPattern, SearchOption searchOption);
6984

85+
#if FEATURE_ENUMERATION_OPTIONS
86+
/// <inheritdoc cref="DirectoryInfo.GetDirectories(string,EnumerationOptions)"/>
87+
public abstract IDirectoryInfo[] GetDirectories(string searchPattern, EnumerationOptions enumerationOptions);
88+
#endif
89+
7090
/// <inheritdoc cref="DirectoryInfo.GetFiles(string)"/>
7191
public abstract IFileInfo[] GetFiles();
7292

@@ -76,6 +96,12 @@ internal DirectoryInfoBase() { }
7696
/// <inheritdoc cref="DirectoryInfo.GetFiles(string,SearchOption)"/>
7797
public abstract IFileInfo[] GetFiles(string searchPattern, SearchOption searchOption);
7898

99+
100+
#if FEATURE_ENUMERATION_OPTIONS
101+
/// <inheritdoc cref="DirectoryInfo.GetFiles(string,EnumerationOptions)"/>
102+
public abstract IFileInfo[] GetFiles(string searchPattern, EnumerationOptions enumerationOptions);
103+
#endif
104+
79105
/// <inheritdoc cref="DirectoryInfo.GetFileSystemInfos()"/>
80106
public abstract IFileSystemInfo[] GetFileSystemInfos();
81107

@@ -85,6 +111,11 @@ internal DirectoryInfoBase() { }
85111
/// <inheritdoc cref="DirectoryInfo.GetFileSystemInfos(string,SearchOption)"/>
86112
public abstract IFileSystemInfo[] GetFileSystemInfos(string searchPattern, SearchOption searchOption);
87113

114+
#if FEATURE_ENUMERATION_OPTIONS
115+
/// <inheritdoc cref="DirectoryInfo.GetFileSystemInfos(string,EnumerationOptions)"/>
116+
public abstract IFileSystemInfo[] GetFileSystemInfos(string searchPattern, EnumerationOptions enumerationOptions);
117+
#endif
118+
88119
/// <inheritdoc cref="DirectoryInfo.MoveTo"/>
89120
public abstract void MoveTo(string destDirName);
90121

src/System.IO.Abstractions/DirectoryInfoWrapper.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,13 @@ public override IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPa
121121
return instance.EnumerateDirectories(searchPattern, searchOption).Select(directoryInfo => new DirectoryInfoWrapper(FileSystem, directoryInfo));
122122
}
123123

124+
#if FEATURE_ENUMERATION_OPTIONS
125+
public override IEnumerable<IDirectoryInfo> EnumerateDirectories(string searchPattern, EnumerationOptions enumerationOptions)
126+
{
127+
return instance.EnumerateDirectories(searchPattern, enumerationOptions).Select(directoryInfo => new DirectoryInfoWrapper(FileSystem, directoryInfo));
128+
}
129+
#endif
130+
124131
public override IEnumerable<IFileInfo> EnumerateFiles()
125132
{
126133
return instance.EnumerateFiles().Select(fileInfo => new FileInfoWrapper(FileSystem, fileInfo));
@@ -136,6 +143,13 @@ public override IEnumerable<IFileInfo> EnumerateFiles(string searchPattern, Sear
136143
return instance.EnumerateFiles(searchPattern, searchOption).Select(fileInfo => new FileInfoWrapper(FileSystem, fileInfo));
137144
}
138145

146+
#if FEATURE_ENUMERATION_OPTIONS
147+
public override IEnumerable<IFileInfo> EnumerateFiles(string searchPattern, EnumerationOptions enumerationOptions)
148+
{
149+
return instance.EnumerateFiles(searchPattern, enumerationOptions).Select(fileInfo => new FileInfoWrapper(FileSystem, fileInfo));
150+
}
151+
#endif
152+
139153
public override IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos()
140154
{
141155
return instance.EnumerateFileSystemInfos().WrapFileSystemInfos(FileSystem);
@@ -151,6 +165,13 @@ public override IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string sea
151165
return instance.EnumerateFileSystemInfos(searchPattern, searchOption).WrapFileSystemInfos(FileSystem);
152166
}
153167

168+
#if FEATURE_ENUMERATION_OPTIONS
169+
public override IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string searchPattern, EnumerationOptions enumerationOptions)
170+
{
171+
return instance.EnumerateFileSystemInfos(searchPattern, enumerationOptions).WrapFileSystemInfos(FileSystem);
172+
}
173+
#endif
174+
154175
public override DirectorySecurity GetAccessControl()
155176
{
156177
return instance.GetAccessControl();
@@ -176,6 +197,13 @@ public override IDirectoryInfo[] GetDirectories(string searchPattern, SearchOpti
176197
return instance.GetDirectories(searchPattern, searchOption).WrapDirectories(FileSystem);
177198
}
178199

200+
#if FEATURE_ENUMERATION_OPTIONS
201+
public override IDirectoryInfo[] GetDirectories(string searchPattern, EnumerationOptions enumerationOptions)
202+
{
203+
return instance.GetDirectories(searchPattern, enumerationOptions).WrapDirectories(FileSystem);
204+
}
205+
#endif
206+
179207
public override IFileInfo[] GetFiles()
180208
{
181209
return instance.GetFiles().WrapFiles(FileSystem);
@@ -191,6 +219,13 @@ public override IFileInfo[] GetFiles(string searchPattern, SearchOption searchOp
191219
return instance.GetFiles(searchPattern, searchOption).WrapFiles(FileSystem);
192220
}
193221

222+
#if FEATURE_ENUMERATION_OPTIONS
223+
public override IFileInfo[] GetFiles(string searchPattern, EnumerationOptions enumerationOptions)
224+
{
225+
return instance.GetFiles(searchPattern, enumerationOptions).WrapFiles(FileSystem);
226+
}
227+
#endif
228+
194229
public override IFileSystemInfo[] GetFileSystemInfos()
195230
{
196231
return instance.GetFileSystemInfos().WrapFileSystemInfos(FileSystem);
@@ -206,6 +241,13 @@ public override IFileSystemInfo[] GetFileSystemInfos(string searchPattern, Searc
206241
return instance.GetFileSystemInfos(searchPattern, searchOption).WrapFileSystemInfos(FileSystem);
207242
}
208243

244+
#if FEATURE_ENUMERATION_OPTIONS
245+
public override IFileSystemInfo[] GetFileSystemInfos(string searchPattern, EnumerationOptions enumerationOptions)
246+
{
247+
return instance.GetFileSystemInfos(searchPattern, enumerationOptions).WrapFileSystemInfos(FileSystem);
248+
}
249+
#endif
250+
209251
public override void MoveTo(string destDirName)
210252
{
211253
instance.MoveTo(destDirName);

src/System.IO.Abstractions/DirectoryWrapper.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,13 @@ public override string[] GetDirectories(string path, string searchPattern, Searc
7979
return Directory.GetDirectories(path, searchPattern, searchOption);
8080
}
8181

82+
#if FEATURE_ENUMERATION_OPTIONS
83+
public override string[] GetDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions)
84+
{
85+
return Directory.GetDirectories(path, searchPattern, enumerationOptions);
86+
}
87+
#endif
88+
8289
public override string GetDirectoryRoot(string path)
8390
{
8491
return Directory.GetDirectoryRoot(path);
@@ -99,6 +106,13 @@ public override string[] GetFiles(string path, string searchPattern, SearchOptio
99106
return Directory.GetFiles(path, searchPattern, searchOption);
100107
}
101108

109+
#if FEATURE_ENUMERATION_OPTIONS
110+
public override string[] GetFiles(string path, string searchPattern, EnumerationOptions enumerationOptions)
111+
{
112+
return Directory.GetFiles(path, searchPattern, enumerationOptions);
113+
}
114+
#endif
115+
102116
public override string[] GetFileSystemEntries(string path)
103117
{
104118
return Directory.GetFileSystemEntries(path);

src/System.IO.Abstractions/IDirectory.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ public interface IDirectory
3939
string[] GetDirectories(string path, string searchPattern);
4040
/// <inheritdoc cref="Directory.GetDirectories(string,string,SearchOption)"/>
4141
string[] GetDirectories(string path, string searchPattern, SearchOption searchOption);
42+
#if FEATURE_ENUMERATION_OPTIONS
43+
/// <inheritdoc cref="Directory.GetDirectories(string,string,EnumerationOptions)"/>
44+
string[] GetDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions);
45+
#endif
4246
/// <inheritdoc cref="Directory.GetDirectoryRoot"/>
4347
string GetDirectoryRoot(string path);
4448
/// <inheritdoc cref="Directory.GetFiles(string)"/>
@@ -47,6 +51,10 @@ public interface IDirectory
4751
string[] GetFiles(string path, string searchPattern);
4852
/// <inheritdoc cref="Directory.GetFiles(string,string,SearchOption)"/>
4953
string[] GetFiles(string path, string searchPattern, SearchOption searchOption);
54+
#if FEATURE_ENUMERATION_OPTIONS
55+
/// <inheritdoc cref="Directory.GetFiles(string,string,EnumerationOptions)"/>
56+
string[] GetFiles(string path, string searchPattern, EnumerationOptions enumerationOptions);
57+
#endif
5058
/// <inheritdoc cref="Directory.GetFileSystemEntries(string)"/>
5159
string[] GetFileSystemEntries(string path);
5260
/// <inheritdoc cref="Directory.GetFileSystemEntries(string,string)"/>

0 commit comments

Comments
 (0)