Skip to content

Commit

Permalink
fix: add missing OS platform attributes
Browse files Browse the repository at this point in the history
  • Loading branch information
fgreinacher committed Nov 25, 2020
1 parent 566afec commit d0e1781
Show file tree
Hide file tree
Showing 19 changed files with 81 additions and 28 deletions.
1 change: 1 addition & 0 deletions Directory.Build.props
Expand Up @@ -13,6 +13,7 @@
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<DefineConstants Condition="'$(TargetFramework)' == 'net5.0' OR '$(TargetFramework)' == 'netcoreapp3.1' OR '$(TargetFramework)' == 'netstandard2.1'">$(DefineConstants);FEATURE_ASYNC_FILE;FEATURE_ENUMERATION_OPTIONS;FEATURE_ADVANCED_PATH_OPERATIONSFEATURE_PATH_JOIN_WITH_SPAN</DefineConstants>
<DefineConstants Condition="'$(TargetFramework)' == 'net5.0'">$(DefineConstants);FEATURE_FILE_MOVE_WITH_OVERWRITE</DefineConstants>
<DefineConstants Condition="'$(TargetFramework)' == 'net5.0'">$(DefineConstants);FEATURE_SUPPORTED_OS_ATTRIBUTE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Nerdbank.GitVersioning" Version="3.3.37">
Expand Down
Expand Up @@ -36,15 +36,8 @@ private string GetRandomTempDirectory()
public string CreateRandomDirectory()
{
var randomPath = this.GetRandomTempDirectory();
try
{
_fileSystem.Directory.CreateDirectory(randomPath);
return randomPath;
}
catch (Exception ex)
{
throw (ex);
}
_fileSystem.Directory.CreateDirectory(randomPath);
return randomPath;
}

private void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs = true, bool overwrite = true)
Expand Down
Expand Up @@ -16,15 +16,8 @@ private static string GetRandomTempDirectory()
public static string CreateDirectory()
{
var randomPath = GetRandomTempDirectory();
try
{
Directory.CreateDirectory(randomPath);
return randomPath;
}
catch (Exception ex)
{
throw (ex);
}
Directory.CreateDirectory(randomPath);
return randomPath;
}

private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs = true, bool overwrite = true)
Expand Down
4 changes: 4 additions & 0 deletions src/System.IO.Abstractions.TestingHelpers/MockDirectory.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Runtime.Versioning;
using System.Security.AccessControl;
using System.Text.RegularExpressions;

Expand Down Expand Up @@ -125,6 +126,7 @@ public override bool Exists(string path)
}
}

[SupportedOSPlatform("windows")]
public override DirectorySecurity GetAccessControl(string path)
{
mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path");
Expand All @@ -139,6 +141,7 @@ public override DirectorySecurity GetAccessControl(string path)
return directoryData.AccessControl;
}

[SupportedOSPlatform("windows")]
public override DirectorySecurity GetAccessControl(string path, AccessControlSections includeSections)
{
return GetAccessControl(path);
Expand Down Expand Up @@ -442,6 +445,7 @@ public override void Move(string sourceDirName, string destDirName)
mockFileDataAccessor.MoveDirectory(fullSourcePath, fullDestPath);
}

[SupportedOSPlatform("windows")]
public override void SetAccessControl(string path, DirectorySecurity directorySecurity)
{
mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path");
Expand Down
@@ -1,4 +1,5 @@
using System.Security.AccessControl;
using System.Runtime.Versioning;
using System.Security.AccessControl;

namespace System.IO.Abstractions.TestingHelpers
{
Expand All @@ -16,6 +17,7 @@ public MockDirectoryData() : base(string.Empty)
Attributes = FileAttributes.Directory;
}

[SupportedOSPlatform("windows")]
public new DirectorySecurity AccessControl
{
get
Expand Down
13 changes: 7 additions & 6 deletions src/System.IO.Abstractions.TestingHelpers/MockFile.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Runtime.Versioning;
using System.Security.AccessControl;
using System.Text;
using System.Threading;
Expand Down Expand Up @@ -125,9 +126,9 @@ public override void Copy(string sourceFileName, string destFileName, bool overw
Create(path, bufferSize, FileOptions.None);

public override Stream Create(string path, int bufferSize, FileOptions options) =>
CreateInternal(path, options, null);
CreateInternal(path, options);

private Stream CreateInternal(string path, FileOptions options, FileSecurity fileSecurity)
private Stream CreateInternal(string path, FileOptions options)
{
if (path == null)
{
Expand All @@ -137,10 +138,7 @@ private Stream CreateInternal(string path, FileOptions options, FileSecurity fil
mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, nameof(path));
VerifyDirectoryExists(path);

var mockFileData = new MockFileData(new byte[0])
{
AccessControl = fileSecurity
};
var mockFileData = new MockFileData(new byte[0]);
mockFileDataAccessor.AddFile(path, mockFileData);
return OpenWriteInternal(path, options);
}
Expand Down Expand Up @@ -192,6 +190,7 @@ public override bool Exists(string path)
return file != null && !file.IsDirectory;
}

[SupportedOSPlatform("windows")]
public override FileSecurity GetAccessControl(string path)
{
mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path");
Expand All @@ -205,6 +204,7 @@ public override FileSecurity GetAccessControl(string path)
return fileData.AccessControl;
}

[SupportedOSPlatform("windows")]
public override FileSecurity GetAccessControl(string path, AccessControlSections includeSections)
{
return GetAccessControl(path);
Expand Down Expand Up @@ -603,6 +603,7 @@ public override void Replace(string sourceFileName, string destinationFileName,
Move(sourceFileName, destinationFileName);
}

[SupportedOSPlatform("windows")]
public override void SetAccessControl(string path, FileSecurity fileSecurity)
{
mockFileDataAccessor.PathVerifier.IsLegalAbsoluteOrRelative(path, "path");
Expand Down
2 changes: 2 additions & 0 deletions src/System.IO.Abstractions.TestingHelpers/MockFileData.cs
@@ -1,4 +1,5 @@
using System.Linq;
using System.Runtime.Versioning;
using System.Security.AccessControl;
using System.Text;

Expand Down Expand Up @@ -151,6 +152,7 @@ public string TextContents
/// <summary>
/// Gets or sets <see cref="FileSecurity"/> of the <see cref="MockFileData"/>. This is the object that is returned for this <see cref="MockFileData"/> when calling <see cref="FileBase.GetAccessControl(string)"/>.
/// </summary>
[SupportedOSPlatform("windows")]
public FileSecurity AccessControl
{
get
Expand Down
6 changes: 5 additions & 1 deletion src/System.IO.Abstractions.TestingHelpers/MockFileInfo.cs
@@ -1,4 +1,5 @@
using System.Security.AccessControl;
using System.Runtime.Versioning;
using System.Security.AccessControl;

namespace System.IO.Abstractions.TestingHelpers
{
Expand Down Expand Up @@ -215,11 +216,13 @@ public override void Encrypt()
MockFileData.Attributes |= FileAttributes.Encrypted;
}

[SupportedOSPlatform("windows")]
public override FileSecurity GetAccessControl()
{
return mockFileSystem.File.GetAccessControl(this.path);
}

[SupportedOSPlatform("windows")]
public override FileSecurity GetAccessControl(AccessControlSections includeSections)
{
return mockFileSystem.File.GetAccessControl(this.path, includeSections);
Expand Down Expand Up @@ -281,6 +284,7 @@ public override IFileInfo Replace(string destinationFileName, string destination
return mockFileSystem.FileInfo.FromFileName(destinationFileName);
}

[SupportedOSPlatform("windows")]
public override void SetAccessControl(FileSecurity fileSecurity)
{
mockFileSystem.File.SetAccessControl(this.path, fileSecurity);
Expand Down
4 changes: 4 additions & 0 deletions src/System.IO.Abstractions/DirectoryBase.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Runtime.Versioning;
using System.Security.AccessControl;

namespace System.IO.Abstractions
Expand All @@ -24,6 +25,7 @@ protected DirectoryBase(IFileSystem fileSystem)
public abstract IDirectoryInfo CreateDirectory(string path);

/// <inheritdoc cref="Directory.CreateDirectory(string,DirectorySecurity)"/>
[SupportedOSPlatform("windows")]
public abstract IDirectoryInfo CreateDirectory(string path, DirectorySecurity directorySecurity);

/// <inheritdoc cref="Directory.Delete(string)"/>
Expand All @@ -36,9 +38,11 @@ protected DirectoryBase(IFileSystem fileSystem)
public abstract bool Exists(string path);

/// <inheritdoc cref="Directory.GetAccessControl(string)"/>
[SupportedOSPlatform("windows")]
public abstract DirectorySecurity GetAccessControl(string path);

/// <inheritdoc cref="Directory.GetAccessControl(string,AccessControlSections)"/>
[SupportedOSPlatform("windows")]
public abstract DirectorySecurity GetAccessControl(string path, AccessControlSections includeSections);

/// <inheritdoc cref="Directory.GetCreationTime"/>
Expand Down
5 changes: 5 additions & 0 deletions src/System.IO.Abstractions/DirectoryInfoWrapper.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Versioning;
using System.Security.AccessControl;

namespace System.IO.Abstractions
Expand Down Expand Up @@ -91,6 +92,7 @@ public override void Create()
instance.Create();
}

[SupportedOSPlatform("windows")]
public override void Create(DirectorySecurity directorySecurity)
{
instance.Create(directorySecurity);
Expand Down Expand Up @@ -172,11 +174,13 @@ public override IEnumerable<IFileSystemInfo> EnumerateFileSystemInfos(string sea
}
#endif

[SupportedOSPlatform("windows")]
public override DirectorySecurity GetAccessControl()
{
return instance.GetAccessControl();
}

[SupportedOSPlatform("windows")]
public override DirectorySecurity GetAccessControl(AccessControlSections includeSections)
{
return instance.GetAccessControl(includeSections);
Expand Down Expand Up @@ -253,6 +257,7 @@ public override void MoveTo(string destDirName)
instance.MoveTo(destDirName);
}

[SupportedOSPlatform("windows")]
public override void SetAccessControl(DirectorySecurity directorySecurity)
{
instance.SetAccessControl(directorySecurity);
Expand Down
5 changes: 5 additions & 0 deletions src/System.IO.Abstractions/DirectoryWrapper.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Runtime.Versioning;
using System.Security.AccessControl;

namespace System.IO.Abstractions
Expand All @@ -17,6 +18,7 @@ public override IDirectoryInfo CreateDirectory(string path)
return new DirectoryInfoWrapper(FileSystem, directoryInfo);
}

[SupportedOSPlatform("windows")]
public override IDirectoryInfo CreateDirectory(string path, DirectorySecurity directorySecurity)
{
var directoryInfo = new DirectoryInfo(path);
Expand All @@ -39,11 +41,13 @@ public override bool Exists(string path)
return Directory.Exists(path);
}

[SupportedOSPlatform("windows")]
public override DirectorySecurity GetAccessControl(string path)
{
return new DirectoryInfo(path).GetAccessControl();
}

[SupportedOSPlatform("windows")]
public override DirectorySecurity GetAccessControl(string path, AccessControlSections includeSections)
{
return new DirectoryInfo(path).GetAccessControl(includeSections);
Expand Down Expand Up @@ -165,6 +169,7 @@ public override void Move(string sourceDirName, string destDirName)
Directory.Move(sourceDirName, destDirName);
}

[SupportedOSPlatform("windows")]
public override void SetAccessControl(string path, DirectorySecurity directorySecurity)
{
new DirectoryInfo(path).SetAccessControl(directorySecurity);
Expand Down
5 changes: 4 additions & 1 deletion src/System.IO.Abstractions/DriveInfoWrapper.cs
@@ -1,4 +1,6 @@
namespace System.IO.Abstractions
using System.Runtime.Versioning;

namespace System.IO.Abstractions
{
/// <summary>
/// The wrapper for a <see cref="DriveInfo"/>.
Expand Down Expand Up @@ -151,6 +153,7 @@ public override string VolumeLabel
{
get { return instance.VolumeLabel; }

[SupportedOSPlatform("windows")]
set { instance.VolumeLabel = value; }
}

Expand Down
4 changes: 4 additions & 0 deletions src/System.IO.Abstractions/FileBase.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Runtime.Versioning;
using System.Security.AccessControl;
using System.Text;

Expand Down Expand Up @@ -92,9 +93,11 @@ protected FileBase(IFileSystem fileSystem)


/// <inheritdoc cref="File.GetAccessControl(string)"/>
[SupportedOSPlatform("windows")]
public abstract FileSecurity GetAccessControl(string path);

/// <inheritdoc cref="File.GetAccessControl(string,AccessControlSections)"/>
[SupportedOSPlatform("windows")]
public abstract FileSecurity GetAccessControl(string path, AccessControlSections includeSections);


Expand Down Expand Up @@ -314,6 +317,7 @@ protected FileBase(IFileSystem fileSystem)
public abstract void Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors);

/// <inheritdoc cref="File.SetAccessControl(string,FileSecurity)"/>
[SupportedOSPlatform("windows")]
public abstract void SetAccessControl(string path, FileSecurity fileSecurity);

/// <inheritdoc cref="File.SetAttributes"/>
Expand Down
8 changes: 7 additions & 1 deletion src/System.IO.Abstractions/FileInfoWrapper.cs
@@ -1,4 +1,5 @@
using System.Security.AccessControl;
using System.Runtime.Versioning;
using System.Security.AccessControl;

namespace System.IO.Abstractions
{
Expand Down Expand Up @@ -109,21 +110,25 @@ public override StreamWriter CreateText()
return instance.CreateText();
}

[SupportedOSPlatform("windows")]
public override void Decrypt()
{
instance.Decrypt();
}

[SupportedOSPlatform("windows")]
public override void Encrypt()
{
instance.Encrypt();
}

[SupportedOSPlatform("windows")]
public override FileSecurity GetAccessControl()
{
return instance.GetAccessControl();
}

[SupportedOSPlatform("windows")]
public override FileSecurity GetAccessControl(AccessControlSections includeSections)
{
return instance.GetAccessControl(includeSections);
Expand Down Expand Up @@ -181,6 +186,7 @@ public override IFileInfo Replace(string destinationFileName, string destination
return new FileInfoWrapper(FileSystem, instance.Replace(destinationFileName, destinationBackupFileName, ignoreMetadataErrors));
}

[SupportedOSPlatform("windows")]
public override void SetAccessControl(FileSecurity fileSecurity)
{
instance.SetAccessControl(fileSecurity);
Expand Down

0 comments on commit d0e1781

Please sign in to comment.