diff --git a/System.IO.Abstractions/DirectoryBase.cs b/System.IO.Abstractions/DirectoryBase.cs index 71a44fddb..0a34c8def 100644 --- a/System.IO.Abstractions/DirectoryBase.cs +++ b/System.IO.Abstractions/DirectoryBase.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +#if NET40 using System.Security.AccessControl; +#endif namespace System.IO.Abstractions { @@ -13,8 +15,10 @@ public abstract class DirectoryBase public abstract void Delete(string path); public abstract void Delete(string path, bool recursive); public abstract bool Exists(string path); +#if NET40 public abstract DirectorySecurity GetAccessControl(string path); public abstract DirectorySecurity GetAccessControl(string path, AccessControlSections includeSections); +#endif public abstract DateTime GetCreationTime(string path); public abstract DateTime GetCreationTimeUtc(string path); public abstract string GetCurrentDirectory(); @@ -36,7 +40,9 @@ public abstract class DirectoryBase #endif public abstract DirectoryInfoBase GetParent(string path); public abstract void Move(string sourceDirName, string destDirName); +#if NET40 public abstract void SetAccessControl(string path, DirectorySecurity directorySecurity); +#endif public abstract void SetCreationTime(string path, DateTime creationTime); public abstract void SetCreationTimeUtc(string path, DateTime creationTimeUtc); public abstract void SetCurrentDirectory(string path); diff --git a/System.IO.Abstractions/DirectoryInfoBase.cs b/System.IO.Abstractions/DirectoryInfoBase.cs index 63a505cd6..1c6d164e2 100644 --- a/System.IO.Abstractions/DirectoryInfoBase.cs +++ b/System.IO.Abstractions/DirectoryInfoBase.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +#if NET40 using System.Security.AccessControl; +#endif namespace System.IO.Abstractions { @@ -24,8 +26,10 @@ public abstract class DirectoryInfoBase : FileSystemInfoBase public abstract IEnumerable EnumerateFileSystemInfos(); public abstract IEnumerable EnumerateFileSystemInfos(string searchPattern); public abstract IEnumerable EnumerateFileSystemInfos(string searchPattern, SearchOption searchOption); +#if NET40 public abstract DirectorySecurity GetAccessControl(); public abstract DirectorySecurity GetAccessControl(AccessControlSections includeSections); +#endif public abstract DirectoryInfoBase[] GetDirectories(); public abstract DirectoryInfoBase[] GetDirectories(string searchPattern); public abstract DirectoryInfoBase[] GetDirectories(string searchPattern, SearchOption searchOption); @@ -36,7 +40,9 @@ public abstract class DirectoryInfoBase : FileSystemInfoBase public abstract FileSystemInfoBase[] GetFileSystemInfos(string searchPattern); public abstract FileSystemInfoBase[] GetFileSystemInfos(string searchPattern, SearchOption searchOption); public abstract void MoveTo(string destDirName); +#if NET40 public abstract void SetAccessControl(DirectorySecurity directorySecurity); +#endif public abstract DirectoryInfoBase Parent { get; } public abstract DirectoryInfoBase Root { get; } diff --git a/System.IO.Abstractions/DirectoryInfoWrapper.cs b/System.IO.Abstractions/DirectoryInfoWrapper.cs index da1c91253..fdc9ac523 100644 --- a/System.IO.Abstractions/DirectoryInfoWrapper.cs +++ b/System.IO.Abstractions/DirectoryInfoWrapper.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using System.Linq; +#if NET40 using System.Security.AccessControl; +#endif namespace System.IO.Abstractions { @@ -165,6 +167,7 @@ public override IEnumerable EnumerateFileSystemInfos(string return instance.EnumerateFileSystemInfos(searchPattern, searchOption).WrapFileSystemInfos(); } +#if NET40 public override DirectorySecurity GetAccessControl() { return instance.GetAccessControl(); @@ -174,6 +177,7 @@ public override DirectorySecurity GetAccessControl(AccessControlSections include { return instance.GetAccessControl(includeSections); } +#endif public override DirectoryInfoBase[] GetDirectories() { @@ -225,10 +229,12 @@ public override void MoveTo(string destDirName) instance.MoveTo(destDirName); } +#if NET40 public override void SetAccessControl(DirectorySecurity directorySecurity) { instance.SetAccessControl(directorySecurity); } +#endif public override DirectoryInfoBase Parent { diff --git a/System.IO.Abstractions/DirectoryWrapper.cs b/System.IO.Abstractions/DirectoryWrapper.cs index e26a5a6f7..a697e1ca5 100644 --- a/System.IO.Abstractions/DirectoryWrapper.cs +++ b/System.IO.Abstractions/DirectoryWrapper.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +#if NET40 using System.Security.AccessControl; +#endif namespace System.IO.Abstractions { @@ -32,6 +34,7 @@ public override bool Exists(string path) return Directory.Exists(path); } +#if NET40 public override DirectorySecurity GetAccessControl(string path) { return new DirectoryInfo(path).GetAccessControl(); @@ -41,6 +44,7 @@ public override DirectorySecurity GetAccessControl(string path, AccessControlSec { return new DirectoryInfo(path).GetAccessControl(includeSections); } +#endif public override DateTime GetCreationTime(string path) { @@ -139,10 +143,12 @@ public override void Move(string sourceDirName, string destDirName) Directory.Move(sourceDirName, destDirName); } +#if NET40 public override void SetAccessControl(string path, DirectorySecurity directorySecurity) { new DirectoryInfo(path).SetAccessControl(directorySecurity); } +#endif public override void SetCreationTime(string path, DateTime creationTime) { diff --git a/System.IO.Abstractions/FileBase.cs b/System.IO.Abstractions/FileBase.cs index 70e8a05de..c66d74b54 100644 --- a/System.IO.Abstractions/FileBase.cs +++ b/System.IO.Abstractions/FileBase.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +#if NET40 using System.Security.AccessControl; +#endif using System.Text; namespace System.IO.Abstractions @@ -57,9 +59,10 @@ public abstract class FileBase /// /// public abstract bool Exists(string path); +#if NET40 public abstract FileSecurity GetAccessControl(string path); public abstract FileSecurity GetAccessControl(string path, AccessControlSections includeSections); - +#endif /// /// Gets the of the file on the path. /// @@ -229,7 +232,9 @@ public abstract class FileBase public abstract void Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName); public abstract void Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors); #endif +#if NET40 public abstract void SetAccessControl(string path, FileSecurity fileSecurity); +#endif public abstract void SetAttributes(string path, FileAttributes fileAttributes); public abstract void SetCreationTime(string path, DateTime creationTime); public abstract void SetCreationTimeUtc(string path, DateTime creationTimeUtc); diff --git a/System.IO.Abstractions/FileInfoBase.cs b/System.IO.Abstractions/FileInfoBase.cs index 5c18dd03c..36ee47b01 100644 --- a/System.IO.Abstractions/FileInfoBase.cs +++ b/System.IO.Abstractions/FileInfoBase.cs @@ -1,4 +1,6 @@ -using System.Security.AccessControl; +#if NET40 +using System.Security.AccessControl; +#endif namespace System.IO.Abstractions { @@ -13,9 +15,10 @@ public abstract class FileInfoBase : FileSystemInfoBase #if NET40 public abstract void Decrypt(); public abstract void Encrypt(); -#endif + public abstract FileSecurity GetAccessControl(); public abstract FileSecurity GetAccessControl(AccessControlSections includeSections); +#endif public abstract void MoveTo(string destFileName); public abstract Stream Open(FileMode mode); public abstract Stream Open(FileMode mode, FileAccess access); @@ -26,8 +29,9 @@ public abstract class FileInfoBase : FileSystemInfoBase #if NET40 public abstract FileInfoBase Replace(string destinationFileName, string destinationBackupFileName); public abstract FileInfoBase Replace(string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors); -#endif + public abstract void SetAccessControl(FileSecurity fileSecurity); +#endif public abstract DirectoryInfoBase Directory { get; } public abstract string DirectoryName { get; } public abstract bool IsReadOnly { get; set; } diff --git a/System.IO.Abstractions/FileInfoWrapper.cs b/System.IO.Abstractions/FileInfoWrapper.cs index b8a2c3c01..09757762e 100644 --- a/System.IO.Abstractions/FileInfoWrapper.cs +++ b/System.IO.Abstractions/FileInfoWrapper.cs @@ -1,4 +1,6 @@ -using System.Security.AccessControl; +#if NET40 +using System.Security.AccessControl; +#endif namespace System.IO.Abstractions { @@ -126,6 +128,7 @@ public override void Encrypt() } #endif +#if NET40 public override FileSecurity GetAccessControl() { return instance.GetAccessControl(); @@ -135,7 +138,7 @@ public override FileSecurity GetAccessControl(AccessControlSections includeSecti { return instance.GetAccessControl(includeSections); } - +#endif public override void MoveTo(string destFileName) { instance.MoveTo(destFileName); @@ -183,10 +186,12 @@ public override FileInfoBase Replace(string destinationFileName, string destinat } #endif +#if NET40 public override void SetAccessControl(FileSecurity fileSecurity) { instance.SetAccessControl(fileSecurity); } +#endif public override DirectoryInfoBase Directory { diff --git a/System.IO.Abstractions/FileWrapper.cs b/System.IO.Abstractions/FileWrapper.cs index c45d85695..5f6356bbb 100644 --- a/System.IO.Abstractions/FileWrapper.cs +++ b/System.IO.Abstractions/FileWrapper.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +#if NET40 using System.Security.AccessControl; +#endif using System.Text; using System.IO; @@ -94,6 +96,7 @@ public override bool Exists(string path) return File.Exists(path); } + #if NET40 public override FileSecurity GetAccessControl(string path) { return new FileInfo(path).GetAccessControl(); @@ -103,6 +106,7 @@ public override FileSecurity GetAccessControl(string path, AccessControlSections { return new FileInfo(path).GetAccessControl(includeSections); } +#endif /// /// Gets the of the file on the path. @@ -233,10 +237,12 @@ public override void Replace(string sourceFileName, string destinationFileName, } #endif +#if NET40 public override void SetAccessControl(string path, FileSecurity fileSecurity) { new FileInfo(path).SetAccessControl(fileSecurity); } +#endif public override void SetAttributes(string path, FileAttributes fileAttributes) { diff --git a/System.IO.Abstractions/System.IO.Abstractions.csproj b/System.IO.Abstractions/System.IO.Abstractions.csproj index 7aea7d594..69df1105f 100644 --- a/System.IO.Abstractions/System.IO.Abstractions.csproj +++ b/System.IO.Abstractions/System.IO.Abstractions.csproj @@ -22,9 +22,6 @@ - - 4.3.0 - 4.3.0 diff --git a/TestHelpers.Tests/TestHelpers.Tests.csproj b/TestHelpers.Tests/TestHelpers.Tests.csproj index e8c2751e3..749f0210d 100644 --- a/TestHelpers.Tests/TestHelpers.Tests.csproj +++ b/TestHelpers.Tests/TestHelpers.Tests.csproj @@ -1,7 +1,7 @@  net40 - 0.0.0.1 + 0.0.0.2 The unit tests for our pre-built mocks System.IO.Abstractions diff --git a/TestingHelpers/MockDirectory.cs b/TestingHelpers/MockDirectory.cs index fd088dcb3..3dcfbdf30 100644 --- a/TestingHelpers/MockDirectory.cs +++ b/TestingHelpers/MockDirectory.cs @@ -2,7 +2,9 @@ using System.Globalization; using System.IO; using System.Linq; +#if NET40 using System.Security.AccessControl; +#endif using System.Text.RegularExpressions; namespace System.IO.Abstractions.TestingHelpers @@ -30,18 +32,31 @@ public MockDirectory(IMockFileDataAccessor mockFileDataAccessor, FileBase fileBa this.fileBase = fileBase; } + public override DirectoryInfoBase CreateDirectory(string path) { - return CreateDirectoryInternal(path, new DirectorySecurity()); + return CreateDirectoryInternal(path +#if NET40 + , + new DirectorySecurity() +#endif + ); } #if NET40 - public override DirectoryInfoBase CreateDirectory(string path, DirectorySecurity directorySecurity) + public override DirectoryInfoBase CreateDirectory(string path + , DirectorySecurity directorySecurity + ) { return CreateDirectoryInternal(path, directorySecurity); } #endif - private DirectoryInfoBase CreateDirectoryInternal(string path, DirectorySecurity directorySecurity) + private DirectoryInfoBase CreateDirectoryInternal(string path +#if NET40 + , + DirectorySecurity directorySecurity +#endif + ) { if (path == null) { @@ -61,10 +76,13 @@ private DirectoryInfoBase CreateDirectoryInternal(string path, DirectorySecurity } var created = new MockDirectoryInfo(mockFileDataAccessor, path); +#if NET40 created.SetAccessControl(directorySecurity); +#endif return created; } + public override void Delete(string path) { Delete(path, false); @@ -103,6 +121,7 @@ public override bool Exists(string path) } } +#if NET40 public override DirectorySecurity GetAccessControl(string path) { mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path"); @@ -121,6 +140,7 @@ public override DirectorySecurity GetAccessControl(string path, AccessControlSec { return GetAccessControl(path); } +#endif public override DateTime GetCreationTime(string path) { @@ -376,6 +396,7 @@ public override void Move(string sourceDirName, string destDirName) Delete(fullSourcePath); } +#if NET40 public override void SetAccessControl(string path, DirectorySecurity directorySecurity) { mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path"); @@ -389,6 +410,7 @@ public override void SetAccessControl(string path, DirectorySecurity directorySe var directoryData = (MockDirectoryData)mockFileDataAccessor.GetFile(path); directoryData.AccessControl = directorySecurity; } +#endif public override void SetCreationTime(string path, DateTime creationTime) { diff --git a/TestingHelpers/MockDirectoryData.cs b/TestingHelpers/MockDirectoryData.cs index 65cf59700..70f0aa8aa 100644 --- a/TestingHelpers/MockDirectoryData.cs +++ b/TestingHelpers/MockDirectoryData.cs @@ -1,24 +1,29 @@ -using System.Security.AccessControl; +#if NET40 +using System.Security.AccessControl; +#endif namespace System.IO.Abstractions.TestingHelpers { [Serializable] public class MockDirectoryData : MockFileData { +#if NET40 [NonSerialized] + private DirectorySecurity accessControl = new DirectorySecurity(); - +#endif public override bool IsDirectory { get { return true; } } public MockDirectoryData() : base(string.Empty) { Attributes = FileAttributes.Directory; } - +#if NET40 public new DirectorySecurity AccessControl { get { return accessControl; } set { accessControl = value; } } +#endif } } \ No newline at end of file diff --git a/TestingHelpers/MockDirectoryInfo.cs b/TestingHelpers/MockDirectoryInfo.cs index 20818aff8..2bf738cc2 100644 --- a/TestingHelpers/MockDirectoryInfo.cs +++ b/TestingHelpers/MockDirectoryInfo.cs @@ -1,7 +1,9 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +#if NET40 using System.Security.AccessControl; +#endif namespace System.IO.Abstractions.TestingHelpers { @@ -200,15 +202,18 @@ public override IEnumerable EnumerateFileSystemInfos(string return GetFileSystemInfos(searchPattern, searchOption); } +#if NET40 public override DirectorySecurity GetAccessControl() { return mockFileDataAccessor.Directory.GetAccessControl(directoryPath); } + public override DirectorySecurity GetAccessControl(AccessControlSections includeSections) { return mockFileDataAccessor.Directory.GetAccessControl(directoryPath, includeSections); } +#endif public override DirectoryInfoBase[] GetDirectories() { @@ -275,10 +280,12 @@ public override void MoveTo(string destDirName) mockFileDataAccessor.Directory.Move(directoryPath, destDirName); } +#if NET40 public override void SetAccessControl(DirectorySecurity directorySecurity) { mockFileDataAccessor.Directory.SetAccessControl(directoryPath, directorySecurity); } +#endif public override DirectoryInfoBase Parent { diff --git a/TestingHelpers/MockFile.cs b/TestingHelpers/MockFile.cs index ac219c693..f8e1ce83f 100644 --- a/TestingHelpers/MockFile.cs +++ b/TestingHelpers/MockFile.cs @@ -1,7 +1,9 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +#if NET40 using System.Security.AccessControl; +#endif using System.Text; namespace System.IO.Abstractions.TestingHelpers @@ -197,6 +199,7 @@ public override bool Exists(string path) return mockFileDataAccessor.FileExists(path) && !mockFileDataAccessor.AllDirectories.Any(d => d.Equals(path, StringComparison.OrdinalIgnoreCase)); } +#if NET40 public override FileSecurity GetAccessControl(string path) { mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path"); @@ -214,6 +217,7 @@ public override FileSecurity GetAccessControl(string path, AccessControlSections { return GetAccessControl(path); } +#endif /// /// Gets the of the file on the path. @@ -507,6 +511,7 @@ public override void Replace(string sourceFileName, string destinationFileName, } #endif +#if NET40 public override void SetAccessControl(string path, FileSecurity fileSecurity) { mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path"); @@ -519,6 +524,7 @@ public override void SetAccessControl(string path, FileSecurity fileSecurity) var fileData = mockFileDataAccessor.GetFile(path); fileData.AccessControl = fileSecurity; } +#endif public override void SetAttributes(string path, FileAttributes fileAttributes) { diff --git a/TestingHelpers/MockFileData.cs b/TestingHelpers/MockFileData.cs index 0d9945bc4..d13f5c793 100644 --- a/TestingHelpers/MockFileData.cs +++ b/TestingHelpers/MockFileData.cs @@ -1,5 +1,7 @@ using System.Linq; +#if NET40 using System.Security.AccessControl; +#endif using System.Text; namespace System.IO.Abstractions.TestingHelpers @@ -56,11 +58,13 @@ public class MockFileData /// private FileAttributes attributes = FileAttributes.Normal; +#if NET40 /// /// The access control of the . /// [NonSerialized] private FileSecurity accessControl = new FileSecurity(); +#endif /// /// Gets a value indicating whether the is a directory or not. @@ -176,6 +180,7 @@ public FileAttributes Attributes set { attributes = value; } } +#if NET40 /// /// Gets or sets of the . This is the object that is returned for this when calling . /// @@ -184,5 +189,6 @@ public FileSecurity AccessControl get { return accessControl; } set { accessControl = value; } } +#endif } } \ No newline at end of file diff --git a/TestingHelpers/MockFileInfo.cs b/TestingHelpers/MockFileInfo.cs index d7d4d3e5f..3be1fbb72 100644 --- a/TestingHelpers/MockFileInfo.cs +++ b/TestingHelpers/MockFileInfo.cs @@ -1,4 +1,6 @@ -using System.Security.AccessControl; +#if NET40 +using System.Security.AccessControl; +#endif namespace System.IO.Abstractions.TestingHelpers { @@ -199,6 +201,7 @@ public override void Encrypt() } #endif +#if NET40 public override FileSecurity GetAccessControl() { throw new NotImplementedException(StringResources.Manager.GetString("NOT_IMPLEMENTED_EXCEPTION")); @@ -208,6 +211,7 @@ public override FileSecurity GetAccessControl(AccessControlSections includeSecti { throw new NotImplementedException(StringResources.Manager.GetString("NOT_IMPLEMENTED_EXCEPTION")); } +#endif public override void MoveTo(string destFileName) { @@ -258,11 +262,12 @@ public override FileInfoBase Replace(string destinationFileName, string destinat throw new NotImplementedException(StringResources.Manager.GetString("NOT_IMPLEMENTED_EXCEPTION")); } #endif - +#if NET40 public override void SetAccessControl(FileSecurity fileSecurity) { throw new NotImplementedException(StringResources.Manager.GetString("NOT_IMPLEMENTED_EXCEPTION")); } +#endif public override DirectoryInfoBase Directory { diff --git a/TestingHelpers/TestingHelpers.csproj b/TestingHelpers/TestingHelpers.csproj index 073976f2c..fe47fc926 100644 --- a/TestingHelpers/TestingHelpers.csproj +++ b/TestingHelpers/TestingHelpers.csproj @@ -34,6 +34,5 @@ -