[PT Run][Folder]Support for paths with / (#18520)

This commit is contained in:
Davide Giacometti 2022-06-02 11:44:52 +02:00 коммит произвёл GitHub
Родитель 465df35d27
Коммит 6f306e1259
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -52,6 +52,7 @@ namespace Microsoft.Plugin.Folder.UnitTests
[DataRow(@"c:\not-exist", 2, 1, false, DisplayName = "Folder not exist, return root")] [DataRow(@"c:\not-exist", 2, 1, false, DisplayName = "Folder not exist, return root")]
[DataRow(@"c:\not-exist\not-exist2", 0, 0, false, DisplayName = "Folder not exist, return root")] [DataRow(@"c:\not-exist\not-exist2", 0, 0, false, DisplayName = "Folder not exist, return root")]
[DataRow(@"c:\bla.t", 2, 1, false, DisplayName = "Partial match file")] [DataRow(@"c:\bla.t", 2, 1, false, DisplayName = "Partial match file")]
[DataRow(@"c:/bla.t", 2, 1, false, DisplayName = "Partial match file with /")]
public void Query_WhenCalled(string search, int folders, int files, bool truncated) public void Query_WhenCalled(string search, int folders, int files, bool truncated)
{ {
const int maxFolderSetting = 3; const int maxFolderSetting = 3;

Просмотреть файл

@ -84,7 +84,9 @@ namespace Microsoft.Plugin.Folder.Sources
throw new ArgumentNullException(nameof(search)); throw new ArgumentNullException(nameof(search));
} }
if (search[0] == '\\' && (search.Length == 1 || search[1] != '\\')) var validRoots = new char[] { '\\', '/' };
if (validRoots.Contains(search[0]) && (search.Length == 1 || !validRoots.Contains(search[1])))
{ {
// Absolute path of system drive: \Windows\System32 // Absolute path of system drive: \Windows\System32
search = Path.Combine(Path.GetPathRoot(Environment.SystemDirectory), search.Substring(1)); search = Path.Combine(Path.GetPathRoot(Environment.SystemDirectory), search.Substring(1));

Просмотреть файл

@ -52,7 +52,7 @@ namespace Microsoft.Plugin.Folder.Sources
{ {
// if folder doesn't exist, we want to take the last part and use it afterwards to help the user // if folder doesn't exist, we want to take the last part and use it afterwards to help the user
// find the right folder. // find the right folder.
int index = search.LastIndexOf('\\'); int index = search.LastIndexOfAny(new char[] { '\\', '/' });
// No slashes found, so probably not a folder // No slashes found, so probably not a folder
if (index <= 0 || index >= search.Length - 1) if (index <= 0 || index >= search.Length - 1)