MockFileSystem.File.Move on Windows and .Net 8 doesn't rename a file name's case
Describe the bug
Possibly related to https://github.com/TestableIO/System.IO.Abstractions/issues/1138
On Windows and .Net 8, FileSystem.File.Move successfully renames a file if the destination has a different case than source whereas MockFileSystem.File.Move doesn't rename the file.
To Reproduce
Steps to reproduce the behavior:
Using System.IO.Abstractions.TestingHelpers 21.0.29
static void Main(string[] args)
{
FileSystem fs = new FileSystem();
MockFileSystem mockFs = new MockFileSystem();
Console.WriteLine("Real file system");
MoveFile(fs);
Console.WriteLine("Mock file system");
MoveFile(mockFs);
}
static void MoveFile(IFileSystem fileSystem)
{
string tempDir = fileSystem.Path.GetTempPath();
string src = fileSystem.Path.Combine(tempDir, "src.txt");
string dest = fileSystem.Path.Combine(tempDir, "SRC.TXT"); // different case
// create source file
using (_ = fileSystem.File.Create(src))
{
}
// move file
fileSystem.File.Move(src, dest);
// check the moved file's name exact case
string movedFile = fileSystem.Directory.GetFiles(tempDir, "src.txt").First();
Console.WriteLine($"Successfully moved \"{src}\" to \"{movedFile}\"");
if (fileSystem.File.Exists(src))
fileSystem.File.Delete(src);
if (fileSystem.File.Exists(dest))
fileSystem.File.Delete(dest);
}
Actual output
Real file system
Successfully moved "C:\Users\El-Gor-do\AppData\Local\Temp\src.txt" to "C:\Users\El-Gor-do\AppData\Local\Temp\SRC.TXT"
Mock file system
Successfully moved "C:\temp\src.txt" to "C:\temp\src.txt"
Expected behavior
MockFileSystem.File.Move should successfully rename the file to SRC.TXT
Real file system
Successfully moved "C:\Users\El-Gor-do\AppData\Local\Temp\src.txt" to "C:\Users\El-Gor-do\AppData\Local\Temp\SRC.TXT"
Mock file system
Successfully moved "C:\temp\src.txt" to "C:\temp\SRC.TXT"
When fixing this, it would probably be easy to also have an eye out for the correct behaviour in File.Copy and File.Replace when source and destination differ only in casing...
Hi @vbreuss, @El-Gor-do, first time contributor here. I would like to look into fixing this.
Hi @vbreuss, @El-Gor-do, first time contributor here. I would like to look into fixing this.
Please feel welcome to create a pull request.
@vbreuss - I'll look into this, Bro. Please assign it to me👍
@RobinDoesUnity : Are you still working on this issue?
Hi @vbreuss, you can assign it to someone else. Sorry, I was busy these days.
Fixed by #1259