Skip to content

Commit bf96aaf

Browse files
samdsfgreinacher
authored andcommitted
Fixes an issue with trailing spaces on directory path for Windows. (#484)
* Fixes an issue with trailing spaces on directory path for Windows platform. On Windows, trailing spaces are automatically removed from directory name.
1 parent cc34aa4 commit bf96aaf

File tree

4 files changed

+56
-1
lines changed

4 files changed

+56
-1
lines changed

System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryInfoTests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,36 @@ public void MockDirectoryInfo_FullName_ShouldReturnNormalizedPath(string directo
254254
Assert.AreEqual(expectedFullName, actualFullName);
255255
}
256256

257+
[TestCase(@"c:\temp\folder ", @"c:\temp\folder")]
258+
[WindowsOnly(WindowsSpecifics.Drives)]
259+
public void MockDirectoryInfo_FullName_ShouldReturnPathWithTrimmedTrailingSpaces(string directoryPath, string expectedFullName)
260+
{
261+
// Arrange
262+
var fileSystem = new MockFileSystem();
263+
var directoryInfo = new MockDirectoryInfo(fileSystem, directoryPath);
264+
265+
// Act
266+
var actualFullName = directoryInfo.FullName;
267+
268+
// Assert
269+
Assert.AreEqual(expectedFullName, actualFullName);
270+
}
271+
272+
[TestCase(@"c:\temp\\folder ", @"folder")]
273+
[WindowsOnly(WindowsSpecifics.Drives)]
274+
public void MockDirectoryInfo_Name_ShouldReturnNameWithTrimmedTrailingSpaces(string directoryPath, string expectedName)
275+
{
276+
// Arrange
277+
var fileSystem = new MockFileSystem();
278+
var directoryInfo = new MockDirectoryInfo(fileSystem, directoryPath);
279+
280+
// Act
281+
var actualName = directoryInfo.Name;
282+
283+
// Assert
284+
Assert.AreEqual(expectedName, actualName);
285+
}
286+
257287
[Test]
258288
public void MockDirectoryInfo_Constructor_ShouldThrowArgumentNullException_IfArgumentDirectoryIsNull()
259289
{

System.IO.Abstractions.TestingHelpers.Tests/MockDirectoryTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,20 @@ public void MockDirectory_CreateDirectory_ShouldReturnDirectoryInfoBase()
523523
Assert.IsNotNull(result);
524524
}
525525

526+
[Test]
527+
[WindowsOnly(WindowsSpecifics.Drives)]
528+
public void MockDirectory_CreateDirectory_ShouldTrimTrailingSpaces()
529+
{
530+
// Arrange
531+
var fileSystem = new MockFileSystem();
532+
533+
// Act
534+
fileSystem.Directory.CreateDirectory(XFS.Path(@"c:\temp\folder "));
535+
536+
// Assert
537+
Assert.IsTrue(fileSystem.Directory.Exists(XFS.Path(@"c:\temp\folder")));
538+
}
539+
526540
[Test]
527541
public void MockDirectory_CreMockDirectory_CreateDirectory_ShouldReturnDirectoryInfoBaseWhenDirectoryExists()
528542
{

System.IO.Abstractions.TestingHelpers/MockDirectory.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ private IDirectoryInfo CreateDirectoryInternal(string path, DirectorySecurity di
5050
}
5151

5252
path = mockFileDataAccessor.Path.GetFullPath(path).TrimSlashes();
53+
if (XFS.IsWindowsPlatform())
54+
{
55+
path = path.TrimEnd(' ');
56+
}
5357

5458
if (!Exists(path))
5559
{

System.IO.Abstractions.TestingHelpers/MockDirectoryInfo.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
namespace System.IO.Abstractions.TestingHelpers
66
{
7+
using XFS = MockUnixSupport;
8+
79
[Serializable]
810
public class MockDirectoryInfo : DirectoryInfoBase
911
{
@@ -24,7 +26,12 @@ public MockDirectoryInfo(IMockFileDataAccessor mockFileDataAccessor, string dire
2426
originalPath = directoryPath;
2527
directoryPath = mockFileDataAccessor.Path.GetFullPath(directoryPath);
2628

27-
this.directoryPath = directoryPath.TrimSlashes();
29+
directoryPath = directoryPath.TrimSlashes();
30+
if (XFS.IsWindowsPlatform())
31+
{
32+
directoryPath = directoryPath.TrimEnd(' ');
33+
}
34+
this.directoryPath = directoryPath;
2835
}
2936

3037
public override void Delete()

0 commit comments

Comments
 (0)