diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs index 0fcb8bfb1..330c8f40b 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs @@ -254,6 +254,36 @@ public void MockDirectoryInfo_FullName_ShouldReturnNormalizedPath(string directo Assert.AreEqual(expectedFullName, actualFullName); } + [TestCase(@"c:\temp\folder ", @"c:\temp\folder")] + [WindowsOnly(WindowsSpecifics.Drives)] + public void MockDirectoryInfo_FullName_ShouldReturnPathWithTrimmedTrailingSpaces(string directoryPath, string expectedFullName) + { + // Arrange + var fileSystem = new MockFileSystem(); + var directoryInfo = new MockDirectoryInfo(fileSystem, directoryPath); + + // Act + var actualFullName = directoryInfo.FullName; + + // Assert + Assert.AreEqual(expectedFullName, actualFullName); + } + + [TestCase(@"c:\temp\\folder ", @"folder")] + [WindowsOnly(WindowsSpecifics.Drives)] + public void MockDirectoryInfo_Name_ShouldReturnNameWithTrimmedTrailingSpaces(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() { diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs index 7b3372b63..5cb8a1e28 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs @@ -523,6 +523,20 @@ public void MockDirectory_CreateDirectory_ShouldReturnDirectoryInfoBase() Assert.IsNotNull(result); } + [Test] + [WindowsOnly(WindowsSpecifics.Drives)] + public void MockDirectory_CreateDirectory_ShouldTrimTrailingSpaces() + { + // Arrange + var fileSystem = new MockFileSystem(); + + // Act + fileSystem.Directory.CreateDirectory(XFS.Path(@"c:\temp\folder ")); + + // Assert + Assert.IsTrue(fileSystem.Directory.Exists(XFS.Path(@"c:\temp\folder"))); + } + [Test] public void MockDirectory_CreMockDirectory_CreateDirectory_ShouldReturnDirectoryInfoBaseWhenDirectoryExists() { diff --git a/System.IO.Abstractions.TestingHelpers/MockDirectory.cs b/System.IO.Abstractions.TestingHelpers/MockDirectory.cs index cffef30ab..eb71319c5 100644 --- a/System.IO.Abstractions.TestingHelpers/MockDirectory.cs +++ b/System.IO.Abstractions.TestingHelpers/MockDirectory.cs @@ -50,6 +50,10 @@ private IDirectoryInfo CreateDirectoryInternal(string path, DirectorySecurity di } path = mockFileDataAccessor.Path.GetFullPath(path).TrimSlashes(); + if (XFS.IsWindowsPlatform()) + { + path = path.TrimEnd(' '); + } if (!Exists(path)) { diff --git a/System.IO.Abstractions.TestingHelpers/MockDirectoryInfo.cs b/System.IO.Abstractions.TestingHelpers/MockDirectoryInfo.cs index ac6c94ad4..9518f8eac 100644 --- a/System.IO.Abstractions.TestingHelpers/MockDirectoryInfo.cs +++ b/System.IO.Abstractions.TestingHelpers/MockDirectoryInfo.cs @@ -4,6 +4,8 @@ namespace System.IO.Abstractions.TestingHelpers { + using XFS = MockUnixSupport; + [Serializable] public class MockDirectoryInfo : DirectoryInfoBase { @@ -24,7 +26,12 @@ public MockDirectoryInfo(IMockFileDataAccessor mockFileDataAccessor, string dire originalPath = directoryPath; directoryPath = mockFileDataAccessor.Path.GetFullPath(directoryPath); - this.directoryPath = directoryPath.TrimSlashes(); + directoryPath = directoryPath.TrimSlashes(); + if (XFS.IsWindowsPlatform()) + { + directoryPath = directoryPath.TrimEnd(' '); + } + this.directoryPath = directoryPath; } public override void Delete()