mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
Get-Help should find help files under pshome (#3528)
This commit is contained in:
committed by
Mike Richmond
parent
11ad02a15a
commit
5a82b10fc7
@@ -222,30 +222,20 @@ namespace System.Management.Automation
|
||||
|
||||
/// <summary>
|
||||
/// Each Shell ( minishell ) will have its own path specified by the
|
||||
/// registry HKLM\software\microsoft\msh\1\ShellIds\<ShellID>\path. Every help
|
||||
/// provider should search this path for content.
|
||||
/// application base folder, which should be the same as $pshome
|
||||
/// </summary>
|
||||
/// <returns>string representing base directory of the executing shell.</returns>
|
||||
internal string GetDefaultShellSearchPath()
|
||||
{
|
||||
string shellID = this.HelpSystem.ExecutionContext.ShellID;
|
||||
string returnValue = CommandDiscovery.GetShellPathFromRegistry(shellID);
|
||||
// Beginning in PowerShell 6.0.0.12, the $pshome is no longer registry specified, we search the application base instead.
|
||||
string returnValue = Utils.GetApplicationBase(shellID);
|
||||
|
||||
if (returnValue == null)
|
||||
{
|
||||
// use executing assemblies location in case registry entry not found
|
||||
returnValue = Path.GetDirectoryName(PsUtils.GetMainModule(System.Diagnostics.Process.GetCurrentProcess()).FileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Get the directory path of the executing shell
|
||||
returnValue = Path.GetDirectoryName(returnValue);
|
||||
if (!Directory.Exists(returnValue))
|
||||
{
|
||||
// use executing assemblies location in case registry entry not found
|
||||
returnValue = Path.GetDirectoryName(PsUtils.GetMainModule(System.Diagnostics.Process.GetCurrentProcess()).FileName);
|
||||
}
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
@@ -201,3 +201,28 @@ Describe "Validate about_help.txt under culture specific folder works" -Tags @('
|
||||
$help | Should BeExactly "Hello"
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Get-Help should find help info within help files" -Tags @('CI', 'RequireAdminOnWindows') {
|
||||
It "Get-Help should find help files under pshome" {
|
||||
$helpFile = "about_testCase.help.txt"
|
||||
$culture = (Get-Culture).Name
|
||||
$helpFolderPath = Join-Path $PSHOME $culture
|
||||
$helpFilePath = Join-Path $helpFolderPath $helpFile
|
||||
|
||||
if (!(Test-Path $helpFolderPath))
|
||||
{
|
||||
$null = New-Item -ItemType Directory -Path $helpFolderPath -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
$null = New-Item -ItemType File -Path $helpFilePath -Value "about_test" -ErrorAction SilentlyContinue
|
||||
$helpContent = Get-Help about_testCase
|
||||
$helpContent | Should Match "about_test"
|
||||
}
|
||||
finally
|
||||
{
|
||||
Remove-Item $helpFilePath -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user