From 15dc0eb06951c362ce9719f337cd9bfbd2f6abd4 Mon Sep 17 00:00:00 2001 From: hangy Date: Tue, 18 Feb 2020 00:02:51 +0100 Subject: [PATCH 1/2] fix: Copy metadata when a MockFile is moved --- .../MockFileMoveTests.cs | 19 +++++++++++++++++++ .../MockFile.cs | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileMoveTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileMoveTests.cs index fef5c3625..c08e7cd7d 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileMoveTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileMoveTests.cs @@ -362,5 +362,24 @@ public void MockFile_Move_ShouldThrowExceptionWhenSourceDoesNotExist_EvenWhenCop Assert.Throws(action); } + + [Test] + public void MockFile_Move_ShouldRetainMetadata() + { + string sourceFilePath = XFS.Path(@"c:\something\demo.txt"); + string sourceFileContent = "this is some content"; + DateTimeOffset creationTime = DateTimeOffset.Now; + var fileSystem = new MockFileSystem(new Dictionary + { + {sourceFilePath, new MockFileData(sourceFileContent){CreationTime = creationTime}}, + {XFS.Path(@"c:\somethingelse\dummy.txt"), new MockFileData(new byte[] {0})} + }); + + string destFilePath = XFS.Path(@"c:\somethingelse\demo1.txt"); + + fileSystem.File.Move(sourceFilePath, destFilePath); + + Assert.That(fileSystem.File.GetCreationTimeUtc(@"c:\somethingelse\demo1.txt"), Is.EqualTo(creationTime.UtcDateTime)); + } } } \ No newline at end of file diff --git a/System.IO.Abstractions.TestingHelpers/MockFile.cs b/System.IO.Abstractions.TestingHelpers/MockFile.cs index 9d5991d29..2950bb2ef 100644 --- a/System.IO.Abstractions.TestingHelpers/MockFile.cs +++ b/System.IO.Abstractions.TestingHelpers/MockFile.cs @@ -360,7 +360,7 @@ public override void Move(string sourceFileName, string destFileName) } VerifyDirectoryExists(destFileName); - mockFileDataAccessor.AddFile(destFileName, new MockFileData(sourceFile.Contents)); + mockFileDataAccessor.AddFile(destFileName, new MockFileData(sourceFile)); mockFileDataAccessor.RemoveFile(sourceFileName); } From 118c398a12d20449041ada7f42056db7eb5b4f63 Mon Sep 17 00:00:00 2001 From: Florian Greinacher Date: Tue, 18 Feb 2020 11:40:09 +0100 Subject: [PATCH 2/2] Use normalized path --- .../MockFileMoveTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileMoveTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileMoveTests.cs index c08e7cd7d..c49c5328b 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileMoveTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileMoveTests.cs @@ -379,7 +379,7 @@ public void MockFile_Move_ShouldRetainMetadata() fileSystem.File.Move(sourceFilePath, destFilePath); - Assert.That(fileSystem.File.GetCreationTimeUtc(@"c:\somethingelse\demo1.txt"), Is.EqualTo(creationTime.UtcDateTime)); + Assert.That(fileSystem.File.GetCreationTimeUtc(destFilePath), Is.EqualTo(creationTime.UtcDateTime)); } } -} \ No newline at end of file +}