diff --git a/src/System.IO.Abstractions.TestingHelpers/MockDirectory.cs b/src/System.IO.Abstractions.TestingHelpers/MockDirectory.cs
index 39eb41947..bc845c1e1 100644
--- a/src/System.IO.Abstractions.TestingHelpers/MockDirectory.cs
+++ b/src/System.IO.Abstractions.TestingHelpers/MockDirectory.cs
@@ -177,7 +177,7 @@ public override string[] GetDirectories(string path, string searchPattern, Searc
#if FEATURE_ENUMERATION_OPTIONS
public override string[] GetDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions)
{
- return GetDirectories(path, "*", enumerationOptions.RecurseSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
+ return GetDirectories(path, "*", EnumerationOptionsToSearchOption(enumerationOptions));
}
#endif
@@ -206,7 +206,7 @@ public override string[] GetFiles(string path, string searchPattern, SearchOptio
#if FEATURE_ENUMERATION_OPTIONS
public override string[] GetFiles(string path, string searchPattern, EnumerationOptions enumerationOptions)
{
- return GetFiles(path, "*", enumerationOptions.RecurseSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
+ return GetFiles(path, "*", EnumerationOptionsToSearchOption(enumerationOptions));
}
#endif
@@ -638,5 +638,42 @@ private string ReplaceLastOccurrence(string source, string find, string replace)
var result = source.Remove(place, find.Length).Insert(place, replace);
return result;
}
+
+#if FEATURE_ENUMERATION_OPTIONS
+ private SearchOption EnumerationOptionsToSearchOption(EnumerationOptions enumerationOptions)
+ {
+ static Exception CreateExceptionForUnsupportedProperty(string propertyName)
+ {
+ return new NotSupportedException(
+ $"Changing EnumerationOptions.{propertyName} is not yet implemented for the mock file system."
+ );
+ }
+
+ if (enumerationOptions.AttributesToSkip != (FileAttributes.System | FileAttributes.Hidden))
+ {
+ throw CreateExceptionForUnsupportedProperty("AttributesToSkip");
+ }
+ if (!enumerationOptions.IgnoreInaccessible)
+ {
+ throw CreateExceptionForUnsupportedProperty("IgnoreInaccessible");
+ }
+ if (enumerationOptions.MatchCasing != MatchCasing.PlatformDefault)
+ {
+ throw CreateExceptionForUnsupportedProperty("MatchCasing");
+ }
+ if (enumerationOptions.MatchType != MatchType.Simple)
+ {
+ throw CreateExceptionForUnsupportedProperty("MatchType");
+ }
+ if (enumerationOptions.ReturnSpecialDirectories)
+ {
+ throw CreateExceptionForUnsupportedProperty("ReturnSpecialDirectories");
+ }
+
+ return enumerationOptions.RecurseSubdirectories
+ ? SearchOption.AllDirectories
+ : SearchOption.TopDirectoryOnly;
+ }
+#endif
}
}
diff --git a/src/System.IO.Abstractions.TestingHelpers/System.IO.Abstractions.TestingHelpers.csproj b/src/System.IO.Abstractions.TestingHelpers/System.IO.Abstractions.TestingHelpers.csproj
index 819264659..ce27c683d 100644
--- a/src/System.IO.Abstractions.TestingHelpers/System.IO.Abstractions.TestingHelpers.csproj
+++ b/src/System.IO.Abstractions.TestingHelpers/System.IO.Abstractions.TestingHelpers.csproj
@@ -3,7 +3,7 @@
System.IO.Abstractions.TestingHelpers
System.IO.Abstractions.TestingHelpers
A set of pre-built mocks to help when testing file system interactions.
- netstandard2.0;netstandard2.1;net461
+ netstandard2.1;netstandard2.0;net461
https://github.com/System-IO-Abstractions/System.IO.Abstractions
MIT
testing
diff --git a/tests/System.IO.Abstractions.TestingHelpers.Tests/System.IO.Abstractions.TestingHelpers.Tests.csproj b/tests/System.IO.Abstractions.TestingHelpers.Tests/System.IO.Abstractions.TestingHelpers.Tests.csproj
index 2f195e99f..53c87c6a7 100644
--- a/tests/System.IO.Abstractions.TestingHelpers.Tests/System.IO.Abstractions.TestingHelpers.Tests.csproj
+++ b/tests/System.IO.Abstractions.TestingHelpers.Tests/System.IO.Abstractions.TestingHelpers.Tests.csproj
@@ -1,6 +1,6 @@
- netcoreapp2.1;netcoreapp3.0
+ netcoreapp3.0;netcoreapp2.1
$(TargetFrameworks);net461
The unit tests for our pre-built mocks
System.IO.Abstractions.TestingHelpers.Tests