Skip to content

Commit 483b789

Browse files
vbtigvbreuss
authored andcommitted
Enable running the tests against the MockFileSystem from TestableIO.
1 parent bf27a22 commit 483b789

File tree

10 files changed

+70
-16
lines changed

10 files changed

+70
-16
lines changed

Directory.Packages.props

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
<ItemGroup>
66
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
77
<PackageVersion Include="System.Linq.Async" Version="6.0.1" />
8-
<PackageVersion Include="System.Threading.Channels" Version="8.0.0" />
9-
<PackageVersion Include="TestableIO.System.IO.Abstractions" Version="21.0.2" />
108
<PackageVersion Include="System.IO.Compression" Version="4.3.0" />
119
<PackageVersion Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
10+
<PackageVersion Include="System.Threading.Channels" Version="8.0.0" />
11+
<PackageVersion Include="TestableIO.System.IO.Abstractions" Version="21.0.2" />
12+
<PackageVersion Include="TestableIO.System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
1213
</ItemGroup>
1314
<ItemGroup>
1415
<PackageVersion Include="MinVer" Version="5.0.0" />

Tests/Helpers/Testably.Abstractions.Tests.SourceGenerator/ClassGenerators/FileSystemClassGenerator.cs

Lines changed: 54 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ protected override void GenerateSource(StringBuilder sourceBuilder, ClassModel @
1919
using Testably.Abstractions.Testing.Initializer;
2020
using Testably.Abstractions.TestHelpers;
2121
using Testably.Abstractions.TestHelpers.Settings;
22+
using System.IO.Abstractions.TestingHelpers;
2223
using Xunit.Abstractions;
2324
2425
namespace {@class.Namespace}
@@ -35,18 +36,18 @@ public abstract partial class {@class.Name}<TFileSystem>
3536
namespace {@class.Namespace}.{@class.Name}
3637
{{
3738
// ReSharper disable once UnusedMember.Global
38-
public sealed class MockFileSystemTests : {@class.Name}<MockFileSystem>, IDisposable
39+
public sealed class MockFileSystemTests : {@class.Name}<Testably.Abstractions.Testing.MockFileSystem>, IDisposable
3940
{{
4041
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
4142
public override string BasePath => _directoryCleaner.BasePath;
4243
4344
private readonly IDirectoryCleaner _directoryCleaner;
4445
45-
public MockFileSystemTests() : this(new MockFileSystem())
46+
public MockFileSystemTests() : this(new Testably.Abstractions.Testing.MockFileSystem())
4647
{{
4748
}}
4849
49-
private MockFileSystemTests(MockFileSystem mockFileSystem) : base(
50+
private MockFileSystemTests(Testably.Abstractions.Testing.MockFileSystem mockFileSystem) : base(
5051
new Test(),
5152
mockFileSystem,
5253
mockFileSystem.TimeSystem)
@@ -73,6 +74,47 @@ public override void SkipIfLongRunningTestsShouldBeSkipped()
7374
}}
7475
}}
7576
77+
namespace {@class.Namespace}.{@class.Name}
78+
{{
79+
// ReSharper disable once UnusedMember.Global
80+
public sealed class TestableIoMockFileSystemTests : {@class.Name}<System.IO.Abstractions.TestingHelpers.MockFileSystem>, IDisposable
81+
{{
82+
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
83+
public override string BasePath => _directoryCleaner.BasePath;
84+
85+
private readonly IDirectoryCleaner _directoryCleaner;
86+
87+
public TestableIoMockFileSystemTests() : this(new System.IO.Abstractions.TestingHelpers.MockFileSystem())
88+
{{
89+
}}
90+
91+
private TestableIoMockFileSystemTests(System.IO.Abstractions.TestingHelpers.MockFileSystem mockFileSystem) : base(
92+
new Test(),
93+
mockFileSystem,
94+
new RealTimeSystem())
95+
{{
96+
_directoryCleaner = FileSystem
97+
.SetCurrentDirectoryToEmptyTemporaryDirectory();
98+
}}
99+
100+
/// <inheritdoc cref=""IDisposable.Dispose()"" />
101+
public void Dispose()
102+
=> _directoryCleaner.Dispose();
103+
104+
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.SkipIfBrittleTestsShouldBeSkipped(bool)"" />
105+
public override void SkipIfBrittleTestsShouldBeSkipped(bool condition = true)
106+
{{
107+
// Brittle tests are never skipped against the mock file system!
108+
}}
109+
110+
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.LongRunningTestsShouldBeSkipped()"" />
111+
public override void SkipIfLongRunningTestsShouldBeSkipped()
112+
{{
113+
// Long-running tests are never skipped against the mock file system!
114+
}}
115+
}}
116+
}}
117+
76118
namespace {@class.Namespace}.{@class.Name}
77119
{{
78120
// ReSharper disable once UnusedMember.Global
@@ -140,19 +182,19 @@ public override void SkipIfLongRunningTestsShouldBeSkipped()
140182
namespace {@class.Namespace}.{@class.Name}
141183
{{
142184
// ReSharper disable once UnusedMember.Global
143-
public sealed class LinuxFileSystemTests : {@class.Name}<MockFileSystem>, IDisposable
185+
public sealed class LinuxFileSystemTests : {@class.Name}<Testably.Abstractions.Testing.MockFileSystem>, IDisposable
144186
{{
145187
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
146188
public override string BasePath => _directoryCleaner.BasePath;
147189
148190
private readonly IDirectoryCleaner _directoryCleaner;
149191
150-
public LinuxFileSystemTests() : this(new MockFileSystem(o =>
192+
public LinuxFileSystemTests() : this(new Testably.Abstractions.Testing.MockFileSystem(o =>
151193
o.SimulatingOperatingSystem(SimulationMode.Linux)))
152194
{{
153195
}}
154196
155-
private LinuxFileSystemTests(MockFileSystem mockFileSystem) : base(
197+
private LinuxFileSystemTests(Testably.Abstractions.Testing.MockFileSystem mockFileSystem) : base(
156198
new Test(OSPlatform.Linux),
157199
mockFileSystem,
158200
mockFileSystem.TimeSystem)
@@ -180,18 +222,18 @@ public override void SkipIfLongRunningTestsShouldBeSkipped()
180222
181223
#if !NETFRAMEWORK
182224
// ReSharper disable once UnusedMember.Global
183-
public sealed class MacFileSystemTests : {@class.Name}<MockFileSystem>, IDisposable
225+
public sealed class MacFileSystemTests : {@class.Name}<Testably.Abstractions.Testing.MockFileSystem>, IDisposable
184226
{{
185227
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
186228
public override string BasePath => _directoryCleaner.BasePath;
187229
188230
private readonly IDirectoryCleaner _directoryCleaner;
189231
190-
public MacFileSystemTests() : this(new MockFileSystem(o =>
232+
public MacFileSystemTests() : this(new Testably.Abstractions.Testing.MockFileSystem(o =>
191233
o.SimulatingOperatingSystem(SimulationMode.MacOS)))
192234
{{
193235
}}
194-
private MacFileSystemTests(MockFileSystem mockFileSystem) : base(
236+
private MacFileSystemTests(Testably.Abstractions.Testing.MockFileSystem mockFileSystem) : base(
195237
new Test(OSPlatform.OSX),
196238
mockFileSystem,
197239
mockFileSystem.TimeSystem)
@@ -219,18 +261,18 @@ public override void SkipIfLongRunningTestsShouldBeSkipped()
219261
220262
#if !NETFRAMEWORK
221263
// ReSharper disable once UnusedMember.Global
222-
public sealed class WindowsFileSystemTests : {@class.Name}<MockFileSystem>, IDisposable
264+
public sealed class WindowsFileSystemTests : {@class.Name}<Testably.Abstractions.Testing.MockFileSystem>, IDisposable
223265
{{
224266
/// <inheritdoc cref=""{@class.Name}{{TFileSystem}}.BasePath"" />
225267
public override string BasePath => _directoryCleaner.BasePath;
226268
227269
private readonly IDirectoryCleaner _directoryCleaner;
228270
229-
public WindowsFileSystemTests() : this(new MockFileSystem(o =>
271+
public WindowsFileSystemTests() : this(new Testably.Abstractions.Testing.MockFileSystem(o =>
230272
o.SimulatingOperatingSystem(SimulationMode.Windows)))
231273
{{
232274
}}
233-
private WindowsFileSystemTests(MockFileSystem mockFileSystem) : base(
275+
private WindowsFileSystemTests(Testably.Abstractions.Testing.MockFileSystem mockFileSystem) : base(
234276
new Test(OSPlatform.Windows),
235277
mockFileSystem,
236278
mockFileSystem.TimeSystem)

Tests/Testably.Abstractions.AccessControl.Tests/Testably.Abstractions.AccessControl.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<ItemGroup>
1515
<ProjectReference Include="..\Helpers\Testably.Abstractions.Tests.SourceGenerator\Testably.Abstractions.Tests.SourceGenerator.csproj" OutputItemType="Analyzer" />
1616
<PackageReference Include="NSubstitute" />
17+
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" />
1718
</ItemGroup>
1819

1920
<PropertyGroup>

Tests/Testably.Abstractions.Compression.Tests/Testably.Abstractions.Compression.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
</PropertyGroup>
66

77
<ItemGroup>
8+
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" />
89
<ProjectReference Include="..\..\Source\Testably.Abstractions.Compression\Testably.Abstractions.Compression.csproj" />
910
<ProjectReference Include="..\..\Source\Testably.Abstractions.Testing\Testably.Abstractions.Testing.csproj" />
1011
<ProjectReference Include="..\..\Source\Testably.Abstractions\Testably.Abstractions.csproj" />

Tests/Testably.Abstractions.Tests/Internal/DirectoryInfoWrapperTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.IO;
2+
using DirectoryInfoWrapper = Testably.Abstractions.FileSystem.DirectoryInfoWrapper;
23

34
namespace Testably.Abstractions.Tests.Internal;
45

Tests/Testably.Abstractions.Tests/Internal/DriveInfoWrapperTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace Testably.Abstractions.Tests.Internal;
1+
using DriveInfoWrapper = Testably.Abstractions.FileSystem.DriveInfoWrapper;
2+
3+
namespace Testably.Abstractions.Tests.Internal;
24

35
public class DriveInfoWrapperTests
46
{

Tests/Testably.Abstractions.Tests/Internal/FileInfoWrapperTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.IO;
2+
using FileInfoWrapper = Testably.Abstractions.FileSystem.FileInfoWrapper;
23

34
namespace Testably.Abstractions.Tests.Internal;
45

Tests/Testably.Abstractions.Tests/Internal/FileSystemInfoWrapperTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System.IO;
2+
using DirectoryInfoWrapper = Testably.Abstractions.FileSystem.DirectoryInfoWrapper;
3+
using FileInfoWrapper = Testably.Abstractions.FileSystem.FileInfoWrapper;
24

35
namespace Testably.Abstractions.Tests.Internal;
46

Tests/Testably.Abstractions.Tests/Internal/FileSystemWatcherWrapperTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace Testably.Abstractions.Tests.Internal;
1+
using FileSystemWatcherWrapper = Testably.Abstractions.FileSystem.FileSystemWatcherWrapper;
2+
3+
namespace Testably.Abstractions.Tests.Internal;
24

35
public class FileSystemWatcherWrapperTests
46
{

Tests/Testably.Abstractions.Tests/Testably.Abstractions.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
</PropertyGroup>
66

77
<ItemGroup>
8+
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" />
89
<ProjectReference Include="..\..\Source\Testably.Abstractions\Testably.Abstractions.csproj" />
910
<ProjectReference Include="..\..\Source\Testably.Abstractions.Testing\Testably.Abstractions.Testing.csproj" />
1011
<ProjectReference Include="..\Helpers\Testably.Abstractions.TestHelpers\Testably.Abstractions.TestHelpers.csproj" />

0 commit comments

Comments
 (0)