Skip to content

Commit 82d5812

Browse files
author
stefan.sz
committed
updated IDirectory interface
1 parent 21647c2 commit 82d5812

6 files changed

Lines changed: 99 additions & 21 deletions

File tree

System.IO.Abstractions.TestingHelpers/MockDirectory.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,18 @@ public override IEnumerable<string> EnumerateDirectories(string path, string sea
494494
.Where(p => !mockFileDataAccessor.StringOperations.Equals(p, path));
495495
}
496496

497+
#if NETSTANDARD2_1
498+
public override IEnumerable<string> EnumerateDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions)
499+
{
500+
var searchOption = enumerationOptions.RecurseSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
501+
mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path");
502+
path = path.TrimSlashes();
503+
path = mockFileDataAccessor.Path.GetFullPath(path);
504+
return GetFilesInternal(mockFileDataAccessor.AllDirectories, path, searchPattern, searchOption)
505+
.Where(p => !mockFileDataAccessor.StringOperations.Equals(p, path));
506+
}
507+
#endif
508+
497509
public override IEnumerable<string> EnumerateFiles(string path)
498510
{
499511
return GetFiles(path);
@@ -509,6 +521,14 @@ public override IEnumerable<string> EnumerateFiles(string path, string searchPat
509521
return GetFiles(path, searchPattern, searchOption);
510522
}
511523

524+
#if NETSTANDARD2_1
525+
public override IEnumerable<string> EnumerateFiles(string path, string searchPattern, EnumerationOptions enumerationOptions)
526+
{
527+
var searchOption = enumerationOptions.RecurseSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
528+
return GetFiles(path, searchPattern, searchOption);
529+
}
530+
#endif
531+
512532
public override IEnumerable<string> EnumerateFileSystemEntries(string path)
513533
{
514534
var fileSystemEntries = new List<string>(GetFiles(path));
@@ -530,6 +550,16 @@ public override IEnumerable<string> EnumerateFileSystemEntries(string path, stri
530550
return fileSystemEntries;
531551
}
532552

553+
#if NETSTANDARD2_1
554+
public override IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern, EnumerationOptions enumerationOptions)
555+
{
556+
var searchOption = enumerationOptions.RecurseSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
557+
var fileSystemEntries = new List<string>(GetFiles(path, searchPattern, searchOption));
558+
fileSystemEntries.AddRange(GetDirectories(path, searchPattern, searchOption));
559+
return fileSystemEntries;
560+
}
561+
#endif
562+
533563
private string EnsureAbsolutePath(string path)
534564
{
535565
return Path.IsPathRooted(path)

System.IO.Abstractions/DirectoryBase.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,11 @@ internal DirectoryBase() { }
135135
/// <inheritdoc cref="Directory.EnumerateDirectories(string,string,SearchOption)"/>
136136
public abstract IEnumerable<string> EnumerateDirectories(string path, string searchPattern, SearchOption searchOption);
137137

138+
#if NETSTANDARD2_1 || NETCOREAPP2_1
139+
/// <inheritdoc cref="Directory.EnumerateDirectories(string,string,EnumerationOptions)"/>
140+
public abstract IEnumerable<string> EnumerateDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions);
141+
#endif
142+
138143
/// <inheritdoc cref="Directory.EnumerateFiles(string)"/>
139144
public abstract IEnumerable<string> EnumerateFiles(string path);
140145

@@ -144,6 +149,11 @@ internal DirectoryBase() { }
144149
/// <inheritdoc cref="Directory.EnumerateFiles(string,string,SearchOption)"/>
145150
public abstract IEnumerable<string> EnumerateFiles(string path, string searchPattern, SearchOption searchOption);
146151

152+
#if NETSTANDARD2_1 || NETCOREAPP2_1
153+
/// <inheritdoc cref="Directory.EnumerateFiles(string,string,EnumerationOptions)"/>
154+
public abstract IEnumerable<string> EnumerateFiles(string path, string searchPattern, EnumerationOptions enumerationOptions);
155+
#endif
156+
147157
/// <inheritdoc cref="Directory.EnumerateFileSystemEntries(string)"/>
148158
public abstract IEnumerable<string> EnumerateFileSystemEntries(string path);
149159

@@ -152,5 +162,10 @@ internal DirectoryBase() { }
152162

153163
/// <inheritdoc cref="Directory.EnumerateFileSystemEntries(string,string,SearchOption)"/>
154164
public abstract IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern, SearchOption searchOption);
165+
166+
#if NETSTANDARD2_1 || NETCOREAPP2_1
167+
/// <inheritdoc cref="Directory.EnumerateFileSystemEntries(string,string,EnumerationOptions)"/>
168+
public abstract IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern, EnumerationOptions enumerationOptions);
169+
#endif
155170
}
156171
}

System.IO.Abstractions/DirectoryWrapper.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,13 @@ public override IEnumerable<string> EnumerateDirectories(string path, string sea
198198
return Directory.EnumerateDirectories(path, searchPattern, searchOption);
199199
}
200200

201+
#if NETSTANDARD2_1 || NETCOREAPP2_1
202+
public override IEnumerable<string> EnumerateDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions)
203+
{
204+
return Directory.EnumerateDirectories(path, searchPattern, enumerationOptions);
205+
}
206+
#endif
207+
201208
public override IEnumerable<string> EnumerateFiles(string path)
202209
{
203210
return Directory.EnumerateFiles(path);
@@ -213,6 +220,13 @@ public override IEnumerable<string> EnumerateFiles(string path, string searchPat
213220
return Directory.EnumerateFiles(path, searchPattern, searchOption);
214221
}
215222

223+
#if NETSTANDARD2_1 || NETCOREAPP2_1
224+
public override IEnumerable<string> EnumerateFiles(string path, string searchPattern, EnumerationOptions enumerationOptions)
225+
{
226+
return Directory.EnumerateFiles(path, searchPattern, enumerationOptions);
227+
}
228+
#endif
229+
216230
public override IEnumerable<string> EnumerateFileSystemEntries(string path)
217231
{
218232
return Directory.EnumerateFileSystemEntries(path);
@@ -227,5 +241,12 @@ public override IEnumerable<string> EnumerateFileSystemEntries(string path, stri
227241
{
228242
return Directory.EnumerateFileSystemEntries(path, searchPattern, searchOption);
229243
}
244+
245+
#if NETSTANDARD2_1 || NETCOREAPP2_1
246+
public override IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern, EnumerationOptions enumerationOptions)
247+
{
248+
return Directory.EnumerateFileSystemEntries(path, searchPattern, enumerationOptions);
249+
}
250+
#endif
230251
}
231252
}

System.IO.Abstractions/FileBase.cs

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,11 @@ internal FileBase() { }
411411
/// </remarks>
412412
public abstract void WriteAllBytes(string path, byte[] bytes);
413413

414+
#if NETCOREAPP2_0 || NETSTANDARD2_1
415+
/// <inheritdoc cref="File.WriteAllBytesAsync"/>
416+
public abstract Task WriteAllBytesAsync(string path, byte[] bytes, CancellationToken cancellationToken);
417+
#endif
418+
414419
/// <inheritdoc cref="File.WriteAllLines(string,IEnumerable{string})"/>
415420
/// <summary>
416421
/// Creates a new file, writes a collection of strings to the file, and then closes the file.
@@ -445,12 +450,6 @@ internal FileBase() { }
445450
/// You can use this method to create the contents for a collection class that takes an <see cref="IEnumerable{T}"/> in its constructor, such as a <see cref="List{T}"/>, <see cref="HashSet{T}"/>, or a <see cref="SortedSet{T}"/> class.
446451
/// </para>
447452
/// </remarks>
448-
449-
#if NETCOREAPP2_0 || NETSTANDARD2_1
450-
/// <inheritdoc cref="File.WriteAllBytesAsync"/>
451-
public abstract Task WriteAllBytesAsync(string path, byte[] bytes, CancellationToken cancellationToken);
452-
#endif
453-
454453
public abstract void WriteAllLines(string path, IEnumerable<string> contents);
455454

456455
/// <inheritdoc cref="File.WriteAllLines(string,IEnumerable{string},Encoding)"/>
@@ -576,6 +575,20 @@ internal FileBase() { }
576575
/// </remarks>
577576
public abstract void WriteAllLines(string path, string[] contents, Encoding encoding);
578577

578+
#if NETCOREAPP2_0 || NETSTANDARD2_1
579+
/// <inheritdoc cref="File.WriteAllLinesAsync(string,IEnumerable{string},CancellationToken)"/>
580+
public abstract Task WriteAllLinesAsync(string path, IEnumerable<string> contents, CancellationToken cancellationToken);
581+
582+
/// <inheritdoc cref="File.WriteAllLinesAsync(string,IEnumerable{string},Encoding,CancellationToken)"/>
583+
public abstract Task WriteAllLinesAsync(string path, IEnumerable<string> contents, Encoding encoding, CancellationToken cancellationToken);
584+
585+
/// <inheritdoc cref="File.WriteAllLinesAsync(string,string[],CancellationToken)"/>
586+
public abstract Task WriteAllLinesAsync(string path, string[] contents, CancellationToken cancellationToken);
587+
588+
/// <inheritdoc cref="File.WriteAllLinesAsync(string,string[],Encoding,CancellationToken)"/>
589+
public abstract Task WriteAllLinesAsync(string path, string[] contents, Encoding encoding, CancellationToken cancellationToken);
590+
#endif
591+
579592
/// <inheritdoc cref="File.WriteAllText(string,string)"/>
580593
/// <summary>
581594
/// Creates a new file, writes the specified string to the file using the specified encoding, and then closes the file. If the target file already exists, it is overwritten.
@@ -609,20 +622,6 @@ internal FileBase() { }
609622
/// Given a string and a file path, this method opens the specified file, writes the string to the file, and then closes the file.
610623
/// </para>
611624
/// </remarks>
612-
613-
#if NETCOREAPP2_0 || NETSTANDARD2_1
614-
/// <inheritdoc cref="File.WriteAllLinesAsync(string,IEnumerable{string},CancellationToken)"/>
615-
public abstract Task WriteAllLinesAsync(string path, IEnumerable<string> contents, CancellationToken cancellationToken);
616-
617-
/// <inheritdoc cref="File.WriteAllLinesAsync(string,IEnumerable{string},Encoding,CancellationToken)"/>
618-
public abstract Task WriteAllLinesAsync(string path, IEnumerable<string> contents, Encoding encoding, CancellationToken cancellationToken);
619-
620-
/// <inheritdoc cref="File.WriteAllLinesAsync(string,string[],CancellationToken)"/>
621-
public abstract Task WriteAllLinesAsync(string path, string[] contents, CancellationToken cancellationToken);
622-
623-
/// <inheritdoc cref="File.WriteAllLinesAsync(string,string[],Encoding,CancellationToken)"/>
624-
public abstract Task WriteAllLinesAsync(string path, string[] contents, Encoding encoding, CancellationToken cancellationToken);
625-
#endif
626625
public abstract void WriteAllText(string path, string contents);
627626

628627
/// <inheritdoc cref="File.WriteAllText(string,string,Encoding)"/>

System.IO.Abstractions/IDirectory.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,30 @@ public interface IDirectory
8989
IEnumerable<string> EnumerateDirectories(string path, string searchPattern);
9090
/// <inheritdoc cref="Directory.EnumerateDirectories(string,string,SearchOption)"/>
9191
IEnumerable<string> EnumerateDirectories(string path, string searchPattern, SearchOption searchOption);
92+
93+
#if NETSTANDARD2_1 || NETCOREAPP2_1
94+
/// <inheritdoc cref="Directory.EnumerateDirectories(string,string,EnumerationOptions)"/>
95+
IEnumerable<string> EnumerateDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions);
96+
#endif
9297
/// <inheritdoc cref="Directory.EnumerateFiles(string)"/>
9398
IEnumerable<string> EnumerateFiles(string path);
9499
/// <inheritdoc cref="Directory.EnumerateFiles(string,string)"/>
95100
IEnumerable<string> EnumerateFiles(string path, string searchPattern);
96101
/// <inheritdoc cref="Directory.EnumerateFiles(string,string,SearchOption)"/>
97102
IEnumerable<string> EnumerateFiles(string path, string searchPattern, SearchOption searchOption);
103+
#if NETSTANDARD2_1 || NETCOREAPP2_1
104+
/// <inheritdoc cref="Directory.EnumerateFiles(string,string,EnumerationOptions)"/>
105+
IEnumerable<string> EnumerateFiles(string path, string searchPattern, EnumerationOptions enumerationOptions);
106+
#endif
98107
/// <inheritdoc cref="Directory.EnumerateFileSystemEntries(string)"/>
99108
IEnumerable<string> EnumerateFileSystemEntries(string path);
100109
/// <inheritdoc cref="Directory.EnumerateFileSystemEntries(string,string)"/>
101110
IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern);
102111
/// <inheritdoc cref="Directory.EnumerateFileSystemEntries(string,string,SearchOption)"/>
103112
IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern, SearchOption searchOption);
113+
#if NETSTANDARD2_1 || NETCOREAPP2_1
114+
/// <inheritdoc cref="Directory.EnumerateFileSystemEntries(string,string,EnumerationOptions)"/>
115+
IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern, EnumerationOptions enumerationOptions);
116+
#endif
104117
}
105118
}

System.IO.Abstractions/System.IO.Abstractions.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>netstandard1.4;netstandard2.0;netcoreapp2.0;netstandard2.1</TargetFrameworks>
4+
<TargetFrameworks>netstandard1.4;netcoreapp2.0;netstandard2.0;netstandard2.1</TargetFrameworks>
55
<TargetFrameworks Condition="!$([MSBuild]::IsOsUnixLike())">$(TargetFrameworks);net40</TargetFrameworks>
66
<Authors>Tatham Oddie</Authors>
77
<Company />

0 commit comments

Comments
 (0)