Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corefx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Kuhne <jeremy.kuhne@microsoft.com>2018-02-15 03:06:04 +0300
committerGitHub <noreply@github.com>2018-02-15 03:06:04 +0300
commit11182e0c4e65fb1e6fa0596ca9d991e3382c9fb2 (patch)
treefef2bd55aba44248d5ea3e53b54418893c627b97 /src/System.IO.FileSystem/tests
parent1eb5ddf1d0a3dbc0a221769a45d81d2a2b7fa81d (diff)
Add some pattern transformation tests (#27133)
Diffstat (limited to 'src/System.IO.FileSystem/tests')
-rw-r--r--src/System.IO.FileSystem/tests/Enumeration/PatternTransformTests.netcoreapp.cs126
-rw-r--r--src/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj1
2 files changed, 127 insertions, 0 deletions
diff --git a/src/System.IO.FileSystem/tests/Enumeration/PatternTransformTests.netcoreapp.cs b/src/System.IO.FileSystem/tests/Enumeration/PatternTransformTests.netcoreapp.cs
new file mode 100644
index 0000000000..d9e8b5330d
--- /dev/null
+++ b/src/System.IO.FileSystem/tests/Enumeration/PatternTransformTests.netcoreapp.cs
@@ -0,0 +1,126 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Linq;
+using Xunit;
+
+namespace System.IO.Tests.Enumeration
+{
+ public class PatternTransformTests_Directory : FileSystemTest
+ {
+ protected virtual string[] GetFiles(string directory, string pattern)
+ {
+ return Directory.GetFiles(directory, pattern);
+ }
+
+ protected virtual string[] GetFiles(string directory, string pattern, EnumerationOptions options)
+ {
+ return Directory.GetFiles(directory, pattern, options);
+ }
+
+ [Theory,
+ InlineData("."),
+ InlineData("*.*")]
+ public void GetFiles_WildcardPatternIsTranslated(string pattern)
+ {
+ DirectoryInfo testDirectory = Directory.CreateDirectory(GetTestFilePath());
+ FileInfo fileOne = new FileInfo(Path.Combine(testDirectory.FullName, "File.One"));
+ FileInfo fileTwo = new FileInfo(Path.Combine(testDirectory.FullName, "FileTwo"));
+ fileOne.Create().Dispose();
+ fileTwo.Create().Dispose();
+ string[] results = GetFiles(testDirectory.FullName, pattern);
+ FSAssert.EqualWhenOrdered(new string[] { fileOne.FullName, fileTwo.FullName }, results);
+
+ results = GetFiles(testDirectory.FullName, pattern, new EnumerationOptions { MatchType = MatchType.Dos });
+ FSAssert.EqualWhenOrdered(new string[] { fileOne.FullName, fileTwo.FullName }, results);
+ }
+
+ [Fact]
+ public void GetFiles_WildcardPatternIsNotTranslated()
+ {
+ DirectoryInfo testDirectory = Directory.CreateDirectory(GetTestFilePath());
+ FileInfo fileOne = new FileInfo(Path.Combine(testDirectory.FullName, "File.One"));
+ FileInfo fileTwo = new FileInfo(Path.Combine(testDirectory.FullName, "FileTwo"));
+ fileOne.Create().Dispose();
+ fileTwo.Create().Dispose();
+ string[] results = GetFiles(testDirectory.FullName, ".", new EnumerationOptions());
+ Assert.Empty(results);
+
+ results = GetFiles(testDirectory.FullName, "*.*", new EnumerationOptions());
+ Assert.Equal(new string[] { fileOne.FullName }, results);
+ }
+
+ [Fact]
+ public void GetFiles_EmptyPattern()
+ {
+ DirectoryInfo testDirectory = Directory.CreateDirectory(GetTestFilePath());
+ FileInfo fileOne = new FileInfo(Path.Combine(testDirectory.FullName, "File.One"));
+ FileInfo fileTwo = new FileInfo(Path.Combine(testDirectory.FullName, "FileTwo"));
+ fileOne.Create().Dispose();
+ fileTwo.Create().Dispose();
+
+ // We allow for expression to be "foo\" which would translate to "foo\*".
+ string[] results = GetFiles(testDirectory.Parent.FullName, testDirectory.Name + Path.DirectorySeparatorChar);
+ FSAssert.EqualWhenOrdered(new string[] { fileOne.FullName, fileTwo.FullName }, results);
+
+ results = GetFiles(testDirectory.Parent.FullName, testDirectory.Name + Path.AltDirectorySeparatorChar);
+ FSAssert.EqualWhenOrdered(new string[] { fileOne.FullName, fileTwo.FullName }, results);
+
+ results = GetFiles(testDirectory.FullName, string.Empty);
+ FSAssert.EqualWhenOrdered(new string[] { fileOne.FullName, fileTwo.FullName }, results);
+ }
+
+ [Fact]
+ [PlatformSpecific(TestPlatforms.AnyUnix)]
+ public void GetFiles_EmptyPattern_Unix()
+ {
+ DirectoryInfo testDirectory = Directory.CreateDirectory(GetTestFilePath());
+ FileInfo fileOne = new FileInfo(Path.Combine(testDirectory.FullName, "File\\One"));
+ FileInfo fileTwo = new FileInfo(Path.Combine(testDirectory.FullName, "FileTwo"));
+ fileOne.Create().Dispose();
+ fileTwo.Create().Dispose();
+
+ // We allow for expression to be "foo\" which would translate to "foo\*". On Unix we should not be
+ // considering the backslash as a directory separator.
+ string[] results = GetFiles(testDirectory.FullName, "File\\One");
+ Assert.Equal(new string[] { fileOne.FullName }, results);
+ }
+
+ [Fact]
+ [PlatformSpecific(TestPlatforms.AnyUnix)]
+ public void GetFiles_ExtendedDosWildcards_Unix()
+ {
+ // The extended wildcards ('"', '<', and '>') should not be considered on Unix, even when doing DOS style matching.
+ // Getting these behaviors requires using the FileSystemEnumerable/Enumerator directly.
+ DirectoryInfo testDirectory = Directory.CreateDirectory(GetTestFilePath());
+ FileInfo fileOne = new FileInfo(Path.Combine(testDirectory.FullName, "File\"One"));
+ FileInfo fileTwo = new FileInfo(Path.Combine(testDirectory.FullName, "File<Two"));
+ FileInfo fileThree = new FileInfo(Path.Combine(testDirectory.FullName, "File>Three"));
+ fileOne.Create().Dispose();
+ fileTwo.Create().Dispose();
+ fileThree.Create().Dispose();
+
+ string[] results = GetFiles(testDirectory.FullName, "*\"*");
+ Assert.Equal(new string[] { fileOne.FullName }, results);
+ results = GetFiles(testDirectory.FullName, "*<*");
+ Assert.Equal(new string[] { fileTwo.FullName }, results);
+ results = GetFiles(testDirectory.FullName, "*>*");
+ Assert.Equal(new string[] { fileThree.FullName }, results);
+ }
+ }
+
+ public class PatternTransformTests_DirectoryInfo : PatternTransformTests_Directory
+ {
+
+ protected override string[] GetFiles(string directory, string pattern)
+ {
+ return new DirectoryInfo(directory).GetFiles(pattern).Select(i => i.FullName).ToArray();
+ }
+
+ protected override string[] GetFiles(string directory, string pattern, EnumerationOptions options)
+ {
+ return new DirectoryInfo(directory).GetFiles(pattern, options).Select(i => i.FullName).ToArray();
+ }
+ }
+}
diff --git a/src/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj b/src/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj
index 51e22c988f..4bf205f368 100644
--- a/src/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj
+++ b/src/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj
@@ -61,6 +61,7 @@
<Compile Include="Enumeration\TrimmedPaths.netcoreapp.cs" />
<Compile Include="Enumeration\ErrorHandlingTests.netcoreapp.cs" />
<Compile Include="Enumeration\IncludePredicateTests.netcoreapp.cs" />
+ <Compile Include="Enumeration\PatternTransformTests.netcoreapp.cs" />
</ItemGroup>
<ItemGroup>
<!-- Rewritten -->