diff --git a/.github/actions/spell-check/expect.txt b/.github/actions/spell-check/expect.txt index 61e9eafc2d..2f4034cf1e 100644 --- a/.github/actions/spell-check/expect.txt +++ b/.github/actions/spell-check/expect.txt @@ -736,6 +736,7 @@ hmonitor HOLDENTER HOLDESC homepage +HOMEPATH homljgmgpmcbpjbnjpfijnhipfkiclkd HOOKPROC Hostbackdropbrush diff --git a/src/modules/launcher/Plugins/Microsoft.Plugin.Folder.UnitTests/Sources/Path/FolderHelperTests.cs b/src/modules/launcher/Plugins/Microsoft.Plugin.Folder.UnitTests/Sources/Path/FolderHelperTests.cs new file mode 100644 index 0000000000..a1d40bdb3a --- /dev/null +++ b/src/modules/launcher/Plugins/Microsoft.Plugin.Folder.UnitTests/Sources/Path/FolderHelperTests.cs @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; +using Microsoft.Plugin.Folder.Sources; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.Plugin.Folder.Sources.Tests +{ + [TestClass] + public class FolderHelperTests + { + [DataTestMethod] + [DataRow(@"%SYSTEMDRIVE%", true)] + [DataRow(@"%O%S", false)] + [DataRow(@"abcd", false)] + [DataRow(@"%ProgramData%", true)] + [DataRow(@"%USERPROFILE%", true)] + [DataRow(@"powertoys", false)] + + // can't test %HOMEPATH% on CI, so using \User as ExpandEnvironmentVariables was moved up + [DataRow(@"\Users", true)] + [DataRow(@"Users", false)] + public void ExpandsToRootedPath(string query, bool expected) + { + var expandedQuery = FolderHelper.Expand(query); + var result = Path.IsPathRooted(expandedQuery); + Assert.AreEqual(expected, result); + } + } +} diff --git a/src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/FolderHelper.cs b/src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/FolderHelper.cs index 1a4c88e245..3035801b83 100644 --- a/src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/FolderHelper.cs +++ b/src/modules/launcher/Plugins/Microsoft.Plugin.Folder/Sources/Path/FolderHelper.cs @@ -84,6 +84,8 @@ namespace Microsoft.Plugin.Folder.Sources throw new ArgumentNullException(nameof(search)); } + search = Environment.ExpandEnvironmentVariables(search); + var validRoots = new char[] { '\\', '/' }; if (validRoots.Contains(search[0]) && (search.Length == 1 || !validRoots.Contains(search[1]))) @@ -98,7 +100,7 @@ namespace Microsoft.Plugin.Folder.Sources search = search.Length > 1 ? Path.Combine(home, search.Substring(2)) : home; } - return Environment.ExpandEnvironmentVariables(search); + return search; } } }