mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
Merge pull request #1695 from PowerShell/frangom/helpsystem
Fixing get-help on Linux
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
},
|
||||
|
||||
"runtimes": {
|
||||
"ubuntu.16.04-x64": { },
|
||||
"ubuntu.14.04-x64": { },
|
||||
"debian.8-x64": { },
|
||||
"centos.7-x64": { },
|
||||
|
||||
@@ -113,11 +113,31 @@ namespace System.Management.Automation
|
||||
}
|
||||
}
|
||||
|
||||
private string[] GetFiles(string path, string pattern)
|
||||
{
|
||||
#if UNIX
|
||||
// On Linux, file names are case sensitive, so we need to add
|
||||
// extra logic to select the files that match the given pattern.
|
||||
ArrayList result = new ArrayList();
|
||||
string[] files = Directory.GetFiles(path);
|
||||
foreach (string filePath in files)
|
||||
{
|
||||
if (filePath.IndexOf(pattern, StringComparison.OrdinalIgnoreCase) >= 0)
|
||||
{
|
||||
result.Add(filePath);
|
||||
}
|
||||
}
|
||||
return (String[])result.ToArray(typeof(string));
|
||||
#else
|
||||
return Directory.GetFiles(path, pattern);
|
||||
#endif
|
||||
}
|
||||
|
||||
private void AddFiles(string muiDirectory, string directory, string pattern)
|
||||
{
|
||||
if (Directory.Exists(muiDirectory))
|
||||
{
|
||||
string[] files = Directory.GetFiles(muiDirectory, pattern);
|
||||
string[] files = GetFiles(muiDirectory, pattern);
|
||||
|
||||
if (files == null)
|
||||
return;
|
||||
|
||||
@@ -1489,7 +1489,7 @@ namespace System.Management.Automation.Help
|
||||
|
||||
fileStream.Read(firstTwoBytes, 0, 2);
|
||||
|
||||
// Check for Mark Zbikowski’s magic initials
|
||||
// Check for Mark Zbikowski's magic initials
|
||||
if (firstTwoBytes[0] == 'M' && firstTwoBytes[1] == 'Z')
|
||||
{
|
||||
throw new UpdatableHelpSystemException("HelpContentContainsInvalidFiles",
|
||||
@@ -1628,6 +1628,11 @@ namespace System.Management.Automation.Help
|
||||
/// <returns></returns>
|
||||
internal static bool ShouldPromptToUpdateHelp()
|
||||
{
|
||||
#if UNIX
|
||||
// TODO: This workaround needs to be removed once updatable help
|
||||
// works on Linux.
|
||||
return false;
|
||||
#else
|
||||
try
|
||||
{
|
||||
if (!Utils.IsAdministrator())
|
||||
@@ -1641,6 +1646,7 @@ namespace System.Management.Automation.Help
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -55,7 +55,8 @@
|
||||
"Microsoft.PowerShell.PSReadLine": "1.0.0-*",
|
||||
"libmi": "1.0.0-alpha01",
|
||||
"PSDesiredStateConfiguration": "1.0.0-alpha01",
|
||||
"Microsoft.PowerShell.PackageManagement": "1.0.0-*"
|
||||
"Microsoft.PowerShell.PackageManagement": "1.0.0-*",
|
||||
"PowerShellHelpFiles": "1.0.0-alpha01"
|
||||
},
|
||||
|
||||
"frameworks": {
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<HelpInfo xmlns="http://schemas.microsoft.com/powershell/help/2010/05">
|
||||
<HelpContentURI>http://go.microsoft.com/fwlink/?linkid=390782</HelpContentURI>
|
||||
<SupportedUICultures>
|
||||
<UICulture>
|
||||
<UICultureName>en-US</UICultureName>
|
||||
<UICultureVersion>5.0.7.0</UICultureVersion>
|
||||
</UICulture>
|
||||
</SupportedUICultures>
|
||||
</HelpInfo>
|
||||
BIN
Binary file not shown.
@@ -0,0 +1,67 @@
|
||||
#
|
||||
# Validates Get-Help for cmdlets in Microsoft.PowerShell.Core.
|
||||
|
||||
function RunTestCase
|
||||
{
|
||||
param ([string]$tag = "CI")
|
||||
|
||||
$moduleName = "Microsoft.PowerShell.Core"
|
||||
|
||||
if ($IsWindows)
|
||||
{
|
||||
if ($tag -eq "CI")
|
||||
{
|
||||
$helpContentPath = join-path $PSScriptRoot "HelpContent"
|
||||
$helpFiles = @(Get-ChildItem "$helpContentPath\*" -ea SilentlyContinue)
|
||||
|
||||
if ($helpFiles.Count -eq 0)
|
||||
{
|
||||
throw "unable to find help content at '$helpContentPath'"
|
||||
}
|
||||
Update-Help -Module $moduleName -SourcePath $helpContentPath -Force -ErrorAction Stop -Verbose
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Update-Help -Module $moduleName -Force -Verbose -ErrorAction Stop
|
||||
}
|
||||
}
|
||||
|
||||
$cmdlets = get-command -module $moduleName
|
||||
|
||||
$cmdletsToSkip = @(
|
||||
"Get-PSHostProcessInfo",
|
||||
"Out-Default",
|
||||
"Register-ArgumentCompleter"
|
||||
)
|
||||
|
||||
foreach ($cmdletName in $cmdlets)
|
||||
{
|
||||
if ($cmdletsToSkip -notcontains $cmdletName)
|
||||
{
|
||||
It "Validate -Description and -Examples sections in help content. Run 'Get-help -name $cmdletName'" {
|
||||
|
||||
$help = get-help -name $cmdletName
|
||||
$help.Description | Out-String | Should Match $cmdletName
|
||||
$help.Examples | Out-String | Should Match $cmdletName
|
||||
}
|
||||
|
||||
if ($tag -eq "CI")
|
||||
{
|
||||
# For a CI test run, we are only interested in validating one cmdlet to ensure that
|
||||
# get-help <cmdletName> works.
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Validate that get-help <cmdletName> works" -Tags "CI" {
|
||||
|
||||
RunTestCase -tag "CI"
|
||||
}
|
||||
|
||||
Describe "Validate Get-Help for all cmdlets in 'Microsoft.PowerShell.Core'" -Tags "Feature" {
|
||||
|
||||
RunTestCase -tag "Feature"
|
||||
}
|
||||
Reference in New Issue
Block a user