From c89aa095b1c587e2a8b64ed44a42dff134a8a81d Mon Sep 17 00:00:00 2001 From: JordanBowker Date: Sun, 14 Mar 2021 14:59:54 +0000 Subject: [PATCH] fix: update MockDirectoryInfo.Name to be consistent with DirectoryInfo.Name (#715) When constructed with only the root; MockDirectoryInfo.Name now returns the the root value instead of an empty string. Making it consistent with DirectoryInfo.Name. Fixes #697 --- .../MockDirectoryInfo.cs | 6 +++++- .../MockDirectoryInfoTests.cs | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/System.IO.Abstractions.TestingHelpers/MockDirectoryInfo.cs b/src/System.IO.Abstractions.TestingHelpers/MockDirectoryInfo.cs index 617fbd9ba..9b90681b0 100644 --- a/src/System.IO.Abstractions.TestingHelpers/MockDirectoryInfo.cs +++ b/src/System.IO.Abstractions.TestingHelpers/MockDirectoryInfo.cs @@ -120,7 +120,11 @@ public override DateTime LastWriteTimeUtc public override string Name { - get { return new MockPath(mockFileDataAccessor).GetFileName(directoryPath.TrimEnd(mockFileDataAccessor.Path.DirectorySeparatorChar)); } + get + { + var mockPath = new MockPath(mockFileDataAccessor); + return string.Equals(mockPath.GetPathRoot(directoryPath), directoryPath) ? directoryPath : mockPath.GetFileName(directoryPath.TrimEnd(mockFileDataAccessor.Path.DirectorySeparatorChar)); + } } public override void Create() diff --git a/tests/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs b/tests/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs index 93185a1e8..b8fc34e15 100644 --- a/tests/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs +++ b/tests/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs @@ -324,6 +324,21 @@ public void MockDirectoryInfo_Name_ShouldReturnNameWithTrimmedTrailingSpaces(str Assert.AreEqual(expectedName, actualName); } + [TestCase(@"c:\", @"c:\")] + [WindowsOnly(WindowsSpecifics.Drives)] + public void MockDirectoryInfo_Name_ShouldReturnPathRoot_IfDirectoryPathIsPathRoot(string directoryPath, string expectedName) + { + // Arrange + var fileSystem = new MockFileSystem(); + var directoryInfo = new MockDirectoryInfo(fileSystem, directoryPath); + + // Act + var actualName = directoryInfo.Name; + + // Assert + Assert.AreEqual(expectedName, actualName); + } + [Test] public void MockDirectoryInfo_Constructor_ShouldThrowArgumentNullException_IfArgumentDirectoryIsNull() {