diff --git a/TestingHelpers/MockDirectory.cs b/TestingHelpers/MockDirectory.cs
index fd088dcb3..3e972750c 100644
--- a/TestingHelpers/MockDirectory.cs
+++ b/TestingHelpers/MockDirectory.cs
@@ -32,7 +32,7 @@ public MockDirectory(IMockFileDataAccessor mockFileDataAccessor, FileBase fileBa
public override DirectoryInfoBase CreateDirectory(string path)
{
- return CreateDirectoryInternal(path, new DirectorySecurity());
+ return CreateDirectoryInternal(path, null);
}
#if NET40
@@ -61,7 +61,11 @@ private DirectoryInfoBase CreateDirectoryInternal(string path, DirectorySecurity
}
var created = new MockDirectoryInfo(mockFileDataAccessor, path);
- created.SetAccessControl(directorySecurity);
+ if (directorySecurity != null)
+ {
+ created.SetAccessControl(directorySecurity);
+ }
+
return created;
}
diff --git a/TestingHelpers/MockDirectoryData.cs b/TestingHelpers/MockDirectoryData.cs
index 65cf59700..5c7e441ac 100644
--- a/TestingHelpers/MockDirectoryData.cs
+++ b/TestingHelpers/MockDirectoryData.cs
@@ -6,7 +6,7 @@ namespace System.IO.Abstractions.TestingHelpers
public class MockDirectoryData : MockFileData
{
[NonSerialized]
- private DirectorySecurity accessControl = new DirectorySecurity();
+ private DirectorySecurity accessControl;
public override bool IsDirectory { get { return true; } }
@@ -14,10 +14,15 @@ public MockDirectoryData() : base(string.Empty)
{
Attributes = FileAttributes.Directory;
}
-
+
public new DirectorySecurity AccessControl
{
- get { return accessControl; }
+ get
+ {
+ // DirectorySecurity's constructor will throw PlatformNotSupportedException on non-Windows platform, so we initialize it in lazy way.
+ // This let's us use this class as long as we don't use AccessControl property.
+ return accessControl ?? (accessControl = new DirectorySecurity());
+ }
set { accessControl = value; }
}
}
diff --git a/TestingHelpers/MockFileData.cs b/TestingHelpers/MockFileData.cs
index 0d9945bc4..16209551f 100644
--- a/TestingHelpers/MockFileData.cs
+++ b/TestingHelpers/MockFileData.cs
@@ -60,7 +60,7 @@ public class MockFileData
/// The access control of the .
///
[NonSerialized]
- private FileSecurity accessControl = new FileSecurity();
+ private FileSecurity accessControl;
///
/// Gets a value indicating whether the is a directory or not.
@@ -181,7 +181,12 @@ public FileAttributes Attributes
///
public FileSecurity AccessControl
{
- get { return accessControl; }
+ get
+ {
+ // FileSecurity's constructor will throw PlatformNotSupportedException on non-Windows platform, so we initialize it in lazy way.
+ // This let's us use this class as long as we don't use AccessControl property.
+ return accessControl ?? (accessControl = new FileSecurity());
+ }
set { accessControl = value; }
}
}