System.IO.Abstractions
System.IO.Abstractions copied to clipboard
Move a readonly file results in inconsistent state
Describe the bug Moving a readonly file throws (correctly) an UnauthorizedAccessException, but afterwards both the source file and also the target file exist.
To Reproduce Consider the following unit test (using Xunit and FluentAssertions):
[Fact]
public void MoveFile_WithReadOnlyAttribute_ShouldThrowExceptionAndNotMoveFile()
{
var sut = new MockFileSystem();
sut.File.WriteAllText("foo.txt", "xyz");
sut.File.SetAttributes("foo.txt", FileAttributes.ReadOnly);
var exception = Record.Exception(() =>
{
sut.File.Move("foo.txt", "bar.txt");
});
exception.Should().BeAssignableTo<UnauthorizedAccessException>();
sut.File.Exists("foo.txt").Should().BeTrue();
sut.File.Exists("bar.txt").Should().BeFalse();
}
This test fails at the last line, as the file exists now twice, resulting in an inconsistent state of the MockFileSystem
Expected behavior The unit test should be successful.
Additional context This issue might have similar root cause as #849 ?
I would be happy to provide a solution for this issue myself. Will create a pull request shortly...
This is addressed in release v17.0.28.