From 49747fa08f446501328cb3a54466a613ea7ea2d4 Mon Sep 17 00:00:00 2001 From: Robert Dailey Date: Fri, 12 May 2023 10:22:59 -0500 Subject: [PATCH] fix: Refresh FileInfo & DirectoryInfo after adding to MockFileSystem (#984) Modify the `IFileInfo` and `IDirectoryInfo` overloads of `AddFile()`, `AddEmptyFile()`, or `AddDirectory()` in `MockFileSystem`, to call `Refresh()` on those objects after the paths they refer to are created. --- .../MockFileSystem.cs | 3 ++ .../MockFileSystemTests.cs | 33 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/TestableIO.System.IO.Abstractions.TestingHelpers/MockFileSystem.cs b/src/TestableIO.System.IO.Abstractions.TestingHelpers/MockFileSystem.cs index 4936b118a..98501ee6f 100644 --- a/src/TestableIO.System.IO.Abstractions.TestingHelpers/MockFileSystem.cs +++ b/src/TestableIO.System.IO.Abstractions.TestingHelpers/MockFileSystem.cs @@ -225,6 +225,7 @@ public void AddEmptyFile(string path) public void AddEmptyFile(IFileInfo path) { AddEmptyFile(path.FullName); + path.Refresh(); } /// @@ -234,6 +235,7 @@ public void AddEmptyFile(IFileInfo path) public void AddDirectory(IDirectoryInfo path) { AddDirectory(path.FullName); + path.Refresh(); } /// @@ -244,6 +246,7 @@ public void AddDirectory(IDirectoryInfo path) public void AddFile(IFileInfo path, MockFileData data) { AddFile(path.FullName, data); + path.Refresh(); } /// diff --git a/tests/TestableIO.System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs b/tests/TestableIO.System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs index b16ff2e4c..7f2343d4d 100644 --- a/tests/TestableIO.System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs +++ b/tests/TestableIO.System.IO.Abstractions.TestingHelpers.Tests/MockFileSystemTests.cs @@ -130,6 +130,39 @@ public void MockFileSystem_AddEmptyFile_ShouldBeEmpty() Assert.That(fileSystem.GetFile(path).TextContents, Is.EqualTo("")); } + [Test] + public void MockFileSystem_AddEmptyFile_ShouldExist() + { + var fileSystem = new MockFileSystem(); + var path = fileSystem.FileInfo.New(XFS.Path(@"c:\some\file.txt")); + + fileSystem.AddEmptyFile(path); + + Assert.That(path.Exists, Is.True); + } + + [Test] + public void MockFileSystem_AddFile_ShouldExist() + { + var fileSystem = new MockFileSystem(); + var path = fileSystem.FileInfo.New(XFS.Path(@"c:\some\file.txt")); + + fileSystem.AddFile(path, new MockFileData("stuff")); + + Assert.That(path.Exists, Is.True); + } + + [Test] + public void MockFileSystem_AddDirectory_ShouldExist() + { + var fileSystem = new MockFileSystem(); + var path = fileSystem.DirectoryInfo.New(XFS.Path(@"c:\thedir")); + + fileSystem.AddDirectory(path); + + Assert.That(path.Exists, Is.True); + } + [Test] public void MockFileSystem_ByDefault_IsSerializable() {