Skip to content

MockFileSystem.File.Move on Windows and .Net 8 doesn't rename a file name's case #1140

Description

@El-Gor-do

Describe the bug
Possibly related to #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"

Metadata

Metadata

Assignees

No one assigned

    Labels

    flag: good-first-issueIssues that are good for first time contributorsstate: ready to pickIssues that are ready for being worked ontype: bugIssues that describe misbehaving functionality

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions