diff options
author | Jeremy Kuhne <jeremy.kuhne@microsoft.com> | 2018-03-08 02:58:06 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-08 02:58:06 +0300 |
commit | cc4abcad12da4d6abe4af8c5b4cd9d328ca97715 (patch) | |
tree | fb3b0928aed6ac44035648d75e12e3ffdac23f5c /src/System.IO.FileSystem/tests | |
parent | 98a173b674fa878a920696d6ffac5bb8d6c1acfb (diff) |
Dial back `\\?\ ` insertion (#27827)
Only premptively adding for FileSystemInfo if we end in period or space.
Long path is taken care of later.
Clean up code a little and add test for DirectoryInfo.Move.
Diffstat (limited to 'src/System.IO.FileSystem/tests')
-rw-r--r-- | src/System.IO.FileSystem/tests/Enumeration/TrimmedPaths.netcoreapp.cs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/System.IO.FileSystem/tests/Enumeration/TrimmedPaths.netcoreapp.cs b/src/System.IO.FileSystem/tests/Enumeration/TrimmedPaths.netcoreapp.cs index 7ae7943b3b..ed73117634 100644 --- a/src/System.IO.FileSystem/tests/Enumeration/TrimmedPaths.netcoreapp.cs +++ b/src/System.IO.FileSystem/tests/Enumeration/TrimmedPaths.netcoreapp.cs @@ -225,5 +225,60 @@ namespace System.IO.Tests.Enumeration } } } + + [Fact] + [PlatformSpecific(TestPlatforms.Windows)] + public void TrimmedPathsMoveTo_Windows() + { + // Trailing spaces and periods are eaten when normalizing in Windows, making them impossible + // to access without using the \\?\ device syntax. We should, however, be able to move them + // without the special syntax from the info class when enumerating. + + DirectoryInfo directory = Directory.CreateDirectory(GetTestFilePath()); + DirectoryInfo spaceDirectory = Directory.CreateDirectory(Path.Join(@"\\?\", directory.FullName, "Trailing space ")); + DirectoryInfo periodDirectory = Directory.CreateDirectory(Path.Join(@"\\?\", directory.FullName, "Trailing period.")); + string spaceFile = Path.Join(spaceDirectory.FullName, "space"); + string periodFile = Path.Join(periodDirectory.FullName, "period"); + File.Create(spaceFile).Dispose(); + File.Create(periodFile).Dispose(); + + DirectoryInfo[] directories = directory.GetDirectories(); + Assert.Equal(2, directories.Length); + foreach (DirectoryInfo di in directories) + { + if (di.Name == "Trailing space ") + { + di.MoveTo(Path.Join(directory.FullName, "WasSpace")); + } + else if (di.Name == "Trailing period.") + { + di.MoveTo(Path.Join(directory.FullName, "WasPeriod")); + } + else + { + Assert.False(true, $"Found unexpected name '{di.Name}'"); + } + } + + directories = directory.GetDirectories(); + Assert.Equal(2, directories.Length); + foreach (DirectoryInfo di in directories) + { + if (di.Name == "WasSpace") + { + FileInfo fi = di.GetFiles().Single(); + Assert.Equal("space", fi.Name); + } + else if (di.Name == "WasPeriod") + { + FileInfo fi = di.GetFiles().Single(); + Assert.Equal("period", fi.Name); + } + else + { + Assert.False(true, $"Found unexpected name '{di.Name}'"); + } + } + } } } |