Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using System;
using Testably.Abstractions.FileSystem;
using Testably.Abstractions.Helpers;
using Testably.Abstractions.Testing.FileSystem;

namespace Testably.Abstractions.Examples.AccessControlLists;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
using System.IO.Abstractions;
using Xunit;

namespace Testably.Abstractions.Examples.Configuration.DependencyInjection.Tests;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
using FluentAssertions;
using System;
using System.IO;
using System.IO.Abstractions;
using System.Linq;
using System.Runtime.InteropServices;
using Testably.Abstractions.FileSystem;
using Testably.Abstractions.RandomSystem;
using Testably.Abstractions.Testing;
using Xunit;
Expand Down Expand Up @@ -103,7 +103,7 @@ public void LimitAvailableSpaceOnDrives()
fileSystem.File.WriteAllBytes("foo", firstFileContent);
mainDrive.AvailableFreeSpace.Should().Be(1);

Exception exception = Record.Exception(() =>
Exception? exception = Record.Exception(() =>
{
fileSystem.File.WriteAllBytes("bar", secondFileContent);
});
Expand Down
1 change: 1 addition & 0 deletions Examples/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="TestableIO.System.IO.Abstractions" Version="19.1.1" />
<PackageReference Include="AutoFixture.Xunit2" Version="4.17.0" />
<PackageReference Include="FluentAssertions" Version="6.7.0" />
<PackageReference Include="Moq" Version="4.18.2" />
Expand Down
2 changes: 1 addition & 1 deletion Examples/ZipFile/ZipFile.Tests/ZipFileHelperTests.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using AutoFixture.Xunit2;
using FluentAssertions;
using System.IO;
using System.IO.Abstractions;
using System.IO.Compression;
using Testably.Abstractions.FileSystem;
using Testably.Abstractions.Testing;
using Testably.Abstractions.Testing.FileSystemInitializer;
using Xunit;
Expand Down
2 changes: 1 addition & 1 deletion Examples/ZipFile/ZipFile/ZipFileHelper.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System.IO;
using System.IO.Abstractions;
using System.IO.Compression;
using Testably.Abstractions.FileSystem;

namespace Testably.Abstractions.Examples.ZipFile;

Expand Down
17 changes: 17 additions & 0 deletions Source/Testably.Abstractions.AccessControl/AccessControlHelpers.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.IO;
using Testably.Abstractions.Helpers;

namespace Testably.Abstractions;

Expand Down Expand Up @@ -48,4 +49,20 @@ public static IDirectoryInfo ThrowIfParentMissing(

return fileSystemInfo;
}

public static IFileSystemExtensibility GetExtensibilityOrThrow(
this IDirectoryInfo directoryInfo)
=> directoryInfo as IFileSystemExtensibility
?? throw new NotSupportedException(
$"{directoryInfo.GetType()} does not support IFileSystemExtensibility.");

public static IFileSystemExtensibility GetExtensibilityOrThrow(this IFileInfo fileInfo)
=> fileInfo as IFileSystemExtensibility
?? throw new NotSupportedException(
$"{fileInfo.GetType()} does not support IFileSystemExtensibility.");

public static IFileSystemExtensibility GetExtensibilityOrThrow(this FileSystemStream fileStream)
=> fileStream as IFileSystemExtensibility
?? throw new NotSupportedException(
$"{fileStream.GetType()} does not support IFileSystemExtensibility.");
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.Helpers;

namespace Testably.Abstractions;

Expand All @@ -17,8 +18,7 @@ public static void CreateDirectory(this IDirectory directory,
{
IDirectoryInfo directoryInfo =
directory.FileSystem.DirectoryInfo.New(path);
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
IFileSystemExtensibility extensibility = directoryInfo.GetExtensibilityOrThrow();
if (extensibility.TryGetWrappedInstance(out DirectoryInfo? di))
{
di.Create(directorySecurity);
Expand All @@ -28,7 +28,7 @@ public static void CreateDirectory(this IDirectory directory,
_ = directorySecurity ?? throw new ArgumentNullException(nameof(directorySecurity));
directoryInfo.ThrowIfParentMissing();
directoryInfo.Create();
directoryInfo.Extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
directorySecurity);
}
}
Expand All @@ -41,8 +41,7 @@ public static DirectorySecurity GetAccessControl(
IDirectoryInfo directoryInfo =
directory.FileSystem.DirectoryInfo.New(path);
directoryInfo.ThrowIfMissing();
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
IFileSystemExtensibility extensibility = directoryInfo.GetExtensibilityOrThrow();
return extensibility.TryGetWrappedInstance(out DirectoryInfo? di)
? di.GetAccessControl()
: extensibility.RetrieveMetadata<DirectorySecurity>(
Expand All @@ -59,8 +58,7 @@ public static DirectorySecurity GetAccessControl(
IDirectoryInfo directoryInfo =
directory.FileSystem.DirectoryInfo.New(path);
directoryInfo.ThrowIfMissing();
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
IFileSystemExtensibility extensibility = directoryInfo.GetExtensibilityOrThrow();
return extensibility.TryGetWrappedInstance(out DirectoryInfo? di)
? di.GetAccessControl(includeSections)
: extensibility.RetrieveMetadata<DirectorySecurity>(
Expand All @@ -75,8 +73,7 @@ public static void SetAccessControl(this IDirectory directory,
{
IDirectoryInfo directoryInfo =
directory.FileSystem.DirectoryInfo.New(path);
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
IFileSystemExtensibility extensibility = directoryInfo.GetExtensibilityOrThrow();
if (extensibility.TryGetWrappedInstance(out DirectoryInfo? di))
{
di.SetAccessControl(directorySecurity);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.Helpers;

namespace Testably.Abstractions;

Expand All @@ -14,8 +15,7 @@ public static class DirectoryInfoAclExtensions
public static void Create(this IDirectoryInfo directoryInfo,
DirectorySecurity directorySecurity)
{
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
IFileSystemExtensibility extensibility = directoryInfo.GetExtensibilityOrThrow();
if (extensibility.TryGetWrappedInstance(out DirectoryInfo? di))
{
di.Create(directorySecurity);
Expand All @@ -25,7 +25,7 @@ public static void Create(this IDirectoryInfo directoryInfo,
_ = directorySecurity ?? throw new ArgumentNullException(nameof(directorySecurity));
directoryInfo.ThrowIfParentMissing();
directoryInfo.Create();
directoryInfo.Extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
extensibility.StoreMetadata(AccessControlHelpers.AccessControl,
directorySecurity);
}
}
Expand All @@ -36,8 +36,7 @@ public static DirectorySecurity GetAccessControl(
this IDirectoryInfo directoryInfo)
{
directoryInfo.ThrowIfMissing();
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
IFileSystemExtensibility extensibility = directoryInfo.GetExtensibilityOrThrow();
return extensibility.TryGetWrappedInstance(out DirectoryInfo? di)
? di.GetAccessControl()
: extensibility.RetrieveMetadata<DirectorySecurity>(
Expand All @@ -51,8 +50,7 @@ public static DirectorySecurity GetAccessControl(
AccessControlSections includeSections)
{
directoryInfo.ThrowIfMissing();
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
IFileSystemExtensibility extensibility = directoryInfo.GetExtensibilityOrThrow();
return extensibility.TryGetWrappedInstance(out DirectoryInfo? di)
? di.GetAccessControl(includeSections)
: extensibility.RetrieveMetadata<DirectorySecurity>(
Expand All @@ -64,8 +62,7 @@ public static DirectorySecurity GetAccessControl(
public static void SetAccessControl(this IDirectoryInfo directoryInfo,
DirectorySecurity directorySecurity)
{
IFileSystemExtensibility extensibility =
directoryInfo.Extensibility;
IFileSystemExtensibility extensibility = directoryInfo.GetExtensibilityOrThrow();
if (extensibility.TryGetWrappedInstance(out DirectoryInfo? di))
{
di.SetAccessControl(directorySecurity);
Expand Down
10 changes: 4 additions & 6 deletions Source/Testably.Abstractions.AccessControl/FileAclExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.Helpers;

namespace Testably.Abstractions;

Expand All @@ -15,8 +16,7 @@ public static FileSecurity GetAccessControl(
{
IFileInfo fileInfo = file.FileSystem.FileInfo.New(path);
fileInfo.ThrowIfMissing();
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
IFileSystemExtensibility extensibility = fileInfo.GetExtensibilityOrThrow();
return extensibility.TryGetWrappedInstance(out FileInfo? fi)
? fi.GetAccessControl()
: extensibility.RetrieveMetadata<FileSecurity>(
Expand All @@ -32,8 +32,7 @@ public static FileSecurity GetAccessControl(
{
IFileInfo fileInfo = file.FileSystem.FileInfo.New(path);
fileInfo.ThrowIfMissing();
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
IFileSystemExtensibility extensibility = fileInfo.GetExtensibilityOrThrow();
return extensibility.TryGetWrappedInstance(out FileInfo? fi)
? fi.GetAccessControl(includeSections)
: extensibility.RetrieveMetadata<FileSecurity>(
Expand All @@ -47,8 +46,7 @@ public static void SetAccessControl(this IFile file,
FileSecurity fileSecurity)
{
IFileInfo fileInfo = file.FileSystem.FileInfo.New(path);
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
IFileSystemExtensibility extensibility = fileInfo.GetExtensibilityOrThrow();
if (extensibility.TryGetWrappedInstance(out FileInfo? fi))
{
fi.SetAccessControl(fileSecurity);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.Helpers;

namespace Testably.Abstractions;

Expand All @@ -14,8 +15,7 @@ public static FileSecurity GetAccessControl(
this IFileInfo fileInfo)
{
fileInfo.ThrowIfMissing();
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
IFileSystemExtensibility extensibility = fileInfo.GetExtensibilityOrThrow();
return extensibility.TryGetWrappedInstance(out FileInfo? fi)
? fi.GetAccessControl()
: extensibility.RetrieveMetadata<FileSecurity>(
Expand All @@ -29,8 +29,7 @@ public static FileSecurity GetAccessControl(
AccessControlSections includeSections)
{
fileInfo.ThrowIfMissing();
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
IFileSystemExtensibility extensibility = fileInfo.GetExtensibilityOrThrow();
return extensibility.TryGetWrappedInstance(out FileInfo? fi)
? fi.GetAccessControl(includeSections)
: extensibility.RetrieveMetadata<FileSecurity>(
Expand All @@ -42,8 +41,7 @@ public static FileSecurity GetAccessControl(
public static void SetAccessControl(this IFileInfo fileInfo,
FileSecurity fileSecurity)
{
IFileSystemExtensibility extensibility =
fileInfo.Extensibility;
IFileSystemExtensibility extensibility = fileInfo.GetExtensibilityOrThrow();
if (extensibility.TryGetWrappedInstance(out FileInfo? fi))
{
fi.SetAccessControl(fileSecurity);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.IO;
using System.Security.AccessControl;
using Testably.Abstractions.Helpers;

namespace Testably.Abstractions;

Expand All @@ -12,8 +13,7 @@ public static class FileStreamAclExtensions
[SupportedOSPlatform("windows")]
public static FileSecurity GetAccessControl(this FileSystemStream fileStream)
{
IFileSystemExtensibility extensibility =
fileStream.Extensibility;
IFileSystemExtensibility extensibility = fileStream.GetExtensibilityOrThrow();
return extensibility.TryGetWrappedInstance(out FileStream? fs)
? fs.GetAccessControl()
: extensibility.RetrieveMetadata<FileSecurity>(
Expand All @@ -25,8 +25,7 @@ public static FileSecurity GetAccessControl(this FileSystemStream fileStream)
public static void SetAccessControl(this FileSystemStream fileStream,
FileSecurity fileSecurity)
{
IFileSystemExtensibility extensibility =
fileStream.Extensibility;
IFileSystemExtensibility extensibility = fileStream.GetExtensibilityOrThrow();
if (extensibility.TryGetWrappedInstance(out FileStream? fs))
{
fs.SetAccessControl(fileSecurity);
Expand Down
2 changes: 1 addition & 1 deletion Source/Testably.Abstractions.AccessControl/Usings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
#else
global using System.Runtime.Versioning;
#endif
global using Testably.Abstractions.FileSystem;
global using System.IO.Abstractions;
2 changes: 1 addition & 1 deletion Source/Testably.Abstractions.Compression/Usings.cs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
global using Testably.Abstractions.FileSystem;
global using System.IO.Abstractions;
Loading