You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
IFileInfo.OpenRead() does not lock file when using MockFileSystem #894
Describe the bug
If you want to test if a file handle is released correctly after calling IFileInfo.OpenRead() the test does not fail when using MockFileSystem.
To Reproduce
Steps to reproduce the behavior:
Run the following Test and see that it should fail but greens
using System.IO.Abstractions;
using System.IO.Abstractions.TestingHelpers;
using FluentAssertions;
using NUnit.Framework;
namespace InstallerServiceTests.Package;
public class TestClass
{
[Test]
public void TestThatStreamIsDisposedAfterOpenRead()
{
// Given
var mockFileSystem = new MockFileSystem();
var fileInfo = mockFileSystem.FileInfo.FromFileName("aPath.txt");
mockFileSystem.AddFile(fileInfo.FullName,
"");
ClassUnderTest.MethodUnderTest(fileInfo);
// When
var action = () => fileInfo.Delete(); // write access on the still opened file
// Then
action.Should()
.NotThrow();
}
}
public static class ClassUnderTest
{
public static void MethodUnderTest(IFileInfo fileInfo)
{
var stream = fileInfo.OpenRead();
// stream is not disposed as it should be correctly
}
}
Change the MockFileSystem to the real FileSystem and you will see that the test fails correctly
Expected behavior
MockFileSystem should behave like the real FileSystem so that the test fails
Activity
fgreinacher commentedon Oct 14, 2022
Thanks for reporting with a test case 👍
fix: deleting a file with open file handles behaves consistently to t…