Skip to content

feat: Enable tests to also run for TestableIO MockFileSystem #357

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
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
5 changes: 3 additions & 2 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
<ItemGroup>
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="System.Linq.Async" Version="6.0.1" />
<PackageVersion Include="System.Threading.Channels" Version="8.0.0" />
<PackageVersion Include="TestableIO.System.IO.Abstractions" Version="21.0.2" />
<PackageVersion Include="System.IO.Compression" Version="4.3.0" />
<PackageVersion Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
<PackageVersion Include="System.Threading.Channels" Version="8.0.0" />
<PackageVersion Include="TestableIO.System.IO.Abstractions" Version="21.0.2" />
<PackageVersion Include="TestableIO.System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
</ItemGroup>
<ItemGroup>
<PackageVersion Include="MinVer" Version="5.0.0" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ protected override void GenerateSource(StringBuilder sourceBuilder, ClassModel @
using Testably.Abstractions.Testing.Initializer;
using Testably.Abstractions.TestHelpers;
using Testably.Abstractions.TestHelpers.Settings;
using System.IO.Abstractions.TestingHelpers;
using Xunit.Abstractions;

namespace {@class.Namespace}
Expand All @@ -35,18 +36,18 @@ public abstract partial class {@class.Name}<TFileSystem>
namespace {@class.Namespace}.{@class.Name}
{{
// ReSharper disable once UnusedMember.Global
public sealed class MockFileSystemTests : {@class.Name}<MockFileSystem>, IDisposable
public sealed class MockFileSystemTests : {@class.Name}<Testably.Abstractions.Testing.MockFileSystem>, IDisposable
{{
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
public override string BasePath => _directoryCleaner.BasePath;

private readonly IDirectoryCleaner _directoryCleaner;

public MockFileSystemTests() : this(new MockFileSystem())
public MockFileSystemTests() : this(new Testably.Abstractions.Testing.MockFileSystem())
{{
}}

private MockFileSystemTests(MockFileSystem mockFileSystem) : base(
private MockFileSystemTests(Testably.Abstractions.Testing.MockFileSystem mockFileSystem) : base(
new Test(),
mockFileSystem,
mockFileSystem.TimeSystem)
Expand All @@ -73,6 +74,47 @@ public override void SkipIfLongRunningTestsShouldBeSkipped()
}}
}}

namespace {@class.Namespace}.{@class.Name}
{{
// ReSharper disable once UnusedMember.Global
public sealed class TestableIoMockFileSystemTests : {@class.Name}<System.IO.Abstractions.TestingHelpers.MockFileSystem>, IDisposable
{{
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
public override string BasePath => _directoryCleaner.BasePath;

private readonly IDirectoryCleaner _directoryCleaner;

public TestableIoMockFileSystemTests() : this(new System.IO.Abstractions.TestingHelpers.MockFileSystem())
{{
}}

private TestableIoMockFileSystemTests(System.IO.Abstractions.TestingHelpers.MockFileSystem mockFileSystem) : base(
new Test(),
mockFileSystem,
new RealTimeSystem())
{{
_directoryCleaner = FileSystem
.SetCurrentDirectoryToEmptyTemporaryDirectory();
}}

/// <inheritdoc cref=""IDisposable.Dispose()"" />
public void Dispose()
=> _directoryCleaner.Dispose();

/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.SkipIfBrittleTestsShouldBeSkipped(bool)"" />
public override void SkipIfBrittleTestsShouldBeSkipped(bool condition = true)
{{
// Brittle tests are never skipped against the mock file system!
}}

/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.LongRunningTestsShouldBeSkipped()"" />
public override void SkipIfLongRunningTestsShouldBeSkipped()
{{
// Long-running tests are never skipped against the mock file system!
}}
}}
}}

namespace {@class.Namespace}.{@class.Name}
{{
// ReSharper disable once UnusedMember.Global
Expand Down Expand Up @@ -140,19 +182,19 @@ public override void SkipIfLongRunningTestsShouldBeSkipped()
namespace {@class.Namespace}.{@class.Name}
{{
// ReSharper disable once UnusedMember.Global
public sealed class LinuxFileSystemTests : {@class.Name}<MockFileSystem>, IDisposable
public sealed class LinuxFileSystemTests : {@class.Name}<Testably.Abstractions.Testing.MockFileSystem>, IDisposable
{{
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
public override string BasePath => _directoryCleaner.BasePath;

private readonly IDirectoryCleaner _directoryCleaner;

public LinuxFileSystemTests() : this(new MockFileSystem(o =>
public LinuxFileSystemTests() : this(new Testably.Abstractions.Testing.MockFileSystem(o =>
o.SimulatingOperatingSystem(SimulationMode.Linux)))
{{
}}

private LinuxFileSystemTests(MockFileSystem mockFileSystem) : base(
private LinuxFileSystemTests(Testably.Abstractions.Testing.MockFileSystem mockFileSystem) : base(
new Test(OSPlatform.Linux),
mockFileSystem,
mockFileSystem.TimeSystem)
Expand Down Expand Up @@ -180,18 +222,18 @@ public override void SkipIfLongRunningTestsShouldBeSkipped()

#if !NETFRAMEWORK
// ReSharper disable once UnusedMember.Global
public sealed class MacFileSystemTests : {@class.Name}<MockFileSystem>, IDisposable
public sealed class MacFileSystemTests : {@class.Name}<Testably.Abstractions.Testing.MockFileSystem>, IDisposable
{{
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
public override string BasePath => _directoryCleaner.BasePath;

private readonly IDirectoryCleaner _directoryCleaner;

public MacFileSystemTests() : this(new MockFileSystem(o =>
public MacFileSystemTests() : this(new Testably.Abstractions.Testing.MockFileSystem(o =>
o.SimulatingOperatingSystem(SimulationMode.MacOS)))
{{
}}
private MacFileSystemTests(MockFileSystem mockFileSystem) : base(
private MacFileSystemTests(Testably.Abstractions.Testing.MockFileSystem mockFileSystem) : base(
new Test(OSPlatform.OSX),
mockFileSystem,
mockFileSystem.TimeSystem)
Expand Down Expand Up @@ -219,18 +261,18 @@ public override void SkipIfLongRunningTestsShouldBeSkipped()

#if !NETFRAMEWORK
// ReSharper disable once UnusedMember.Global
public sealed class WindowsFileSystemTests : {@class.Name}<MockFileSystem>, IDisposable
public sealed class WindowsFileSystemTests : {@class.Name}<Testably.Abstractions.Testing.MockFileSystem>, IDisposable
{{
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
public override string BasePath => _directoryCleaner.BasePath;

private readonly IDirectoryCleaner _directoryCleaner;

public WindowsFileSystemTests() : this(new MockFileSystem(o =>
public WindowsFileSystemTests() : this(new Testably.Abstractions.Testing.MockFileSystem(o =>
o.SimulatingOperatingSystem(SimulationMode.Windows)))
{{
}}
private WindowsFileSystemTests(MockFileSystem mockFileSystem) : base(
private WindowsFileSystemTests(Testably.Abstractions.Testing.MockFileSystem mockFileSystem) : base(
new Test(OSPlatform.Windows),
mockFileSystem,
mockFileSystem.TimeSystem)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<ItemGroup>
<ProjectReference Include="..\Helpers\Testably.Abstractions.Tests.SourceGenerator\Testably.Abstractions.Tests.SourceGenerator.csproj" OutputItemType="Analyzer" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" />
</ItemGroup>

<PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" />
<ProjectReference Include="..\..\Source\Testably.Abstractions.Compression\Testably.Abstractions.Compression.csproj" />
<ProjectReference Include="..\..\Source\Testably.Abstractions.Testing\Testably.Abstractions.Testing.csproj" />
<ProjectReference Include="..\..\Source\Testably.Abstractions\Testably.Abstractions.csproj" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.IO;
using DirectoryInfoWrapper = Testably.Abstractions.FileSystem.DirectoryInfoWrapper;

namespace Testably.Abstractions.Tests.Internal;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace Testably.Abstractions.Tests.Internal;
using DriveInfoWrapper = Testably.Abstractions.FileSystem.DriveInfoWrapper;

namespace Testably.Abstractions.Tests.Internal;

public class DriveInfoWrapperTests
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.IO;
using FileInfoWrapper = Testably.Abstractions.FileSystem.FileInfoWrapper;

namespace Testably.Abstractions.Tests.Internal;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using System.IO;
using DirectoryInfoWrapper = Testably.Abstractions.FileSystem.DirectoryInfoWrapper;
using FileInfoWrapper = Testably.Abstractions.FileSystem.FileInfoWrapper;

namespace Testably.Abstractions.Tests.Internal;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace Testably.Abstractions.Tests.Internal;
using FileSystemWatcherWrapper = Testably.Abstractions.FileSystem.FileSystemWatcherWrapper;

namespace Testably.Abstractions.Tests.Internal;

public class FileSystemWatcherWrapperTests
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" />
<ProjectReference Include="..\..\Source\Testably.Abstractions\Testably.Abstractions.csproj" />
<ProjectReference Include="..\..\Source\Testably.Abstractions.Testing\Testably.Abstractions.Testing.csproj" />
<ProjectReference Include="..\Helpers\Testably.Abstractions.TestHelpers\Testably.Abstractions.TestHelpers.csproj" />
Expand Down
Loading