Merge pull request #1695 from PowerShell/frangom/helpsystem

Fixing get-help on Linux
This commit is contained in:
Andy Schwartzmeyer
2016-08-10 15:01:04 -07:00
committed by GitHub
7 changed files with 108 additions and 3 deletions
+1
View File
@@ -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
+2 -1
View File
@@ -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": {
@@ -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>
@@ -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"
}