Skip to content

Fixing get-help <cmdletName> -online for .NET Core on Desktop. - #2174

Merged
Dongbo Wang (daxian-dbw) merged 6 commits into
PowerShell:masterfrom
Francisco-Gamino:fix-useshellexcute-coreclr
Oct 12, 2016
Merged

Dongbo Wang (daxian-dbw) merged 6 commits into
PowerShell:masterfrom
Francisco-Gamino:fix-useshellexcute-coreclr

Conversation

@Francisco-Gamino

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) commented Sep 2, 2016 •

Copy link
Copy Markdown
Contributor

Resolves issue #2271 - Implement Get-Help -Online for .NET Core on Windows, Nano Server, and IoT

@msftclas

Hi Francisco Gamino (@Francisco-Gamino), I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!


It looks like you're a Microsoft contributor (Francisco Gomez Gamino). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

@vors

Copy link
Copy Markdown
Collaborator

I think we can avoid copy-pasting.

@vors

Copy link
Copy Markdown
Collaborator

Francisco Gamino (@Francisco-Gamino) your email that you used in a commit for this PR is not linked to your account
image

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't throw or add ErrorRecord in FullCLR case, why here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sergei (@vors) in Full CLR, if there is an error when trying to start a process, an exception will be thrown. However, in CoreCLR, no exception will be thrown (since we are wrapping the call in cmd), so we have to check the last exit code, and extract the error from the call.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess it's reasonable for the help/browser case.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Meanwhile, the semantic would be different, but I think it's an acceptable deviation.

@vors

Copy link
Copy Markdown
Collaborator

Can we add a negative tests (i.e. trying to open misformatted help URL) to verify that we behave consistently across platforms?

@jpsnover

Copy link
Copy Markdown
Contributor

What is going to happen when you run this on macOS or Linux?

@vors

Copy link
Copy Markdown
Collaborator

Jeffrey Snover (@jpsnover) it's handled by #if UNIX case above

@jpsnover

Copy link
Copy Markdown
Contributor

Thanks!

@vors

Copy link
Copy Markdown
Collaborator

Travis Plunk (@TravisEz13) looks like Review label automation doesn't handle this correctly:

image

The second label change to Review - Needed was not triggered by anything

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about error in this case? invokeProcess.Start(); (FullCLR) doesn't add anything to the ps errors.

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) changed the title Fixing get-help <cmdletName> -online, and invoke-item for .NET Core on Desktop. Fixing get-help <cmdletName> -online for .NET Core on Desktop. Sep 17, 2016

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume this exists on Linux

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, the Registry is not available on Linux, so I am updating this part of the code.

@JamesWTruher James Truher (JamesWTruher) Sep 19, 2016 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in the case that this does not throw, you should add the following:

throw "Execution should not have succeeded"
``` #Closed

@JamesWTruher James Truher (JamesWTruher) Sep 19, 2016 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since you're now sure that the try will throw, this can become:

catch
{
    $_.FullyQualifiedErrorId | Should be "InvalidOperation,Microsoft.PowerShell.Commands.GetHelpCommand"
}

#Closed

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) Sep 19, 2016 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

James Truher (@JamesWTruher) thanks for your comments. I like this approach better. I will update the test code as you suggested.
. #Closed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@JamesWTruher James Truher (JamesWTruher) Sep 19, 2016 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

foreach [](start = 17, length = 7)

please use foreach-object and avoid aliases #Closed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@JamesWTruher James Truher (JamesWTruher) Sep 19, 2016 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$actualURI = $actualURI.Replace("Help URI:","").Trim() [](start = 20, length = 54)

if you think it's needed, the testhook change can simply return the uri and you can eliminate this bit of stuff #Closed

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) Sep 19, 2016 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks James Truher (@JamesWTruher). I like the current implementation of the testhook, because it tells you that the fwlink is pointing to a Help URI. #Closed

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This error should have more information to enable trouble-shooting

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) Sep 20, 2016 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default exception will be wrapped, and the user will get the following error:
"Starting a browser to display online Help failed. No program or browser is associated to open the URI {0}."

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these browserProcess.Start(); line is duplicated

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There were three different calls: Unix, coreclr, and fullclr. This has been fixed in the latest iteration.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can replace this by using (RegistryKey regKey = ...) { ... } syntax.
It's more modern way of doing the same.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree. Fixed.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 is a magic number here.
It's better to re-write it as

const string exeExtention = ".exe";
browserPath = browserPath.Substring(0, browserPath.LastIndexOf(exeExtension) + exeExtension.Length);

Same goes about the "34".
It' good that there is a comment above, but if it's a comment, it should be very close to the number, i.e.

.Repalce(/* " */ (char)34 + ...)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good suggestions sergei (@vors) . Fixed.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That all looks hacky. Isn't there a nicer API?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not Replace("\"", "")?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@daxian-dbw Dongbo Wang (daxian-dbw) Sep 20, 2016 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you are able to get the default browser executable path, then maybe it's better to run that executable directly with the url, so that we can avoid this obscure cmd syntax.

If you decide to go with using the browser executable path directly, maybe you can do this for both CoreCLR win platform and FullCLR win platform. But it's up to you to decide if you want it this way :)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, this is a very good idea. We should keep parity between FullCLR and CoreCRL. So, I've updated the code to launch the default browser with the HelpURI as an argument.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please fix the indentation here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@daxian-dbw Dongbo Wang (daxian-dbw) Sep 20, 2016 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there are a few problems with this method:

  1. WebBrowserAvailable should be renamed to IsWebBrowserAvailable. If you want to use the default browser executable path, then it should be renamed to GetDefaultWebBrowser
  2. regKey could be null, on Nano or IoT. So your current code might raise NullReferenceException
  3. The registry path HKCR\\HTTP\\shell\\open\\command is not pointing to the default browser. It's actually always pointing to IE. The default web browser executable path can be found with 2 steps:
    (1) HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice -- get the value for ProgId of this key, say the value is ChromeHTML
    (2) HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command -- get the value of the default name. The value would be the path to chrome.exe
    If we want to run the web browser executable directly, then we need to make sure we really get the default browser.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your comments Dongbo Wang (@daxian-dbw) . I've updated the code based on these guidance.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not Replace("\"", "")?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current implementation doesn't get the path to default browser.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is fixed now.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you update the .csv to put 'https' there? It's probably more efficient.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will do, even though the actual values in the Microsoft fwlink database is http.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-not ([System.Management.Automation.Platform]::IsIoT -or [System.Management.Automation.Platform]::IsNanoServer

This will skip NanoServer

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) Sep 21, 2016 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, this will only skip on when the current system is Nano Server or IoT. The concept of -skip can be a bit confusing. For coreclr on desktop, the evaluation is as follows
$shouldSkip = -not ([System.Management.Automation.Platform]::IsIoT -or [System.Management.Automation.Platform]::IsNanoServer)
$shouldSkip = $true # this means it should be skip on desktop.

This is the output from running the tests on CoreCLR on Desktop.
Describing Get-Help -Online is not supported on Nano Server and IoT
[!] Get-help -online throws InvalidOperation 27ms

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is -ErrorAction stop necessary here? The code path should already throw and InvalidOperationException.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And, when the test hook property is set to true, I don't think the code path will ever reach the point to throw exception.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. The code has been updated. Thanks.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are you skipping IoT, NanoServer and Linux? when BypassOnlineHelpRetrieval is set, the code won't reach the Process.Start part anyway ...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. I am enabling the test across all platforms.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tests don't test the process launch at all. Shall we at least have 1 test exercise the new code?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dongbo Wang (@daxian-dbw) I've added a tests, but it will leave the default browser opened. The issue here is that once the process is started, I no longer have access to its reference.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't use ProcessStartInfo.UseShellExecute directly near this code. Not very clear from the comment what's the need of UseShellExecute.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sergei (@vors) I have updated the comment. On Full CLR, ProcessStartInfo.UseShellExecute is true by default.

@vors sergei (vors) left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM for me, I'm going to assign the PR to Dongbo Wang (@daxian-dbw) since he still has unanswered questions.

@vors

Copy link
Copy Markdown
Collaborator

Also we should fix the travis build

@daxian-dbw Dongbo Wang (daxian-dbw) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please take a look and address new PR comments.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about:

object progId = Registry.GetValue(httpRegkey, "ProgId", null);
if (progId != null)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your suggestion. Fixed.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there are 2 issues in line 687 and 788:

  1. Possible NullReferenceException at browserRegKey.GetValue(null).ToString() when GetValue(null) returns null.
  2. If line 687 runs fine, then browserPath must not be null, because Replace(...) never returns null.

This is a chance to use the new C# 6.0 feature null-conditional operator '?.' to make the code concise, like:

using (RegistryKey browserRegKey = Registry.ClassesRoot.OpenSubKey(progId + @"\shell\open\command", false))
{
    const string exeExtension = ".exe";
    string browserPath = browserRegKey?.GetValue(null)?.ToString().Replace(/* remove the quotes */ "\"", "");
    if (!string.IsNullOrEmpty(browserPath))
    { ...

This could reduce the brackets needed for this method.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know it would be super rare, but what if LastIndexOf(exeExtension) returns -1? Maybe change it to something like:

int extIndex = browserPath.LastIndexOf(exeExtension);
browserPath = extIndex > 0 ? browserPath.Substring(0, extIndex + exeExtension.Length) : string.Emtpy;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: for LastIndexOf, it's better to always use the overload that takes a culture parameter int LastIndexOf(string value, System.StringComparison comparisonType)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the suggestion. Fixed.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should have a message for this InvalidOperationException

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to have an error message. We can use the existing HelpErrors.CannotLaunchURI.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This skipTest setting will make this test run on OSX.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we skipping linux?
And with $skipTest, the test will run on OSX. Are you intend to run this test on OSX platform?

@daxian-dbw

Copy link
Copy Markdown
Member

Francisco Gamino (@Francisco-Gamino) we are currently waiting on you to address the review comments. Please let us know if you have any concerns on the comments.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are these Trim() really necessary here? If not, maybe we should avoid them.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The one for test hook is needed, but the other one is not. Test code updated.

@daxian-dbw Dongbo Wang (daxian-dbw) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please respond to the review comments.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On CoreCLR, this property doesn't exist.

This comment is not accurate. This property does exist in CoreCLR, but it always has the value false.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we skipping Linux and OSX? If there is something blocking this from working in Linux and OSX, then we should open an issue and investigate.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dongbo Wang (@daxian-dbw) - this test case compares the the HelpURI from the csv files (this list came from the publishing team), and it gets compare to the cmdlet metadata. Get-help -online give precedence to helpURI in the help file, so if the fwlink has been update in the help file, it will not longer match the one in the csv file. So, for this test case to pass, we need to delete all the help content on the box, so that all HelpURI match the ones in the csv files. Unfortunately, update-help does not work on Linux (I am working on a fix), so once I delete the help content on Linux or OSX, I cannot longer install it again, and therefore, the subsequent test cases will fail. Once update-help is fixed on Linux, I will update these test to run everywhere.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this Trim() really necessary?

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) Oct 4, 2016 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated test code, so we no longer need Trim().

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here, why are we skipping linux and OSx?

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) Oct 4, 2016 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, so now we are just skipping on IoT and Nano Server.

@daxian-dbw

Dongbo Wang (daxian-dbw) commented Oct 4, 2016 •

Copy link
Copy Markdown
Member

Francisco Gamino (@Francisco-Gamino) Thanks for the updates. We are now waiting on you to address review comments and fix the CI failure.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dongbo Wang (@daxian-dbw), I addressed all your comments. Could you please take another look? Thanks.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, the Registry is not available on Linux, so I am updating this part of the code.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will fix the indentation in my next iteration.

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) Sep 20, 2016 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default exception will be wrapped, and the user will get the following error:
"Starting a browser to display online Help failed. No program or browser is associated to open the URI {0}."

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to have an error message. We can use the existing HelpErrors.CannotLaunchURI.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) Oct 4, 2016 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated test code, so we no longer need Trim().

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dongbo Wang (@daxian-dbw) - this test case compares the the HelpURI from the csv files (this list came from the publishing team), and it gets compare to the cmdlet metadata. Get-help -online give precedence to helpURI in the help file, so if the fwlink has been update in the help file, it will not longer match the one in the csv file. So, for this test case to pass, we need to delete all the help content on the box, so that all HelpURI match the ones in the csv files. Unfortunately, update-help does not work on Linux (I am working on a fix), so once I delete the help content on Linux or OSX, I cannot longer install it again, and therefore, the subsequent test cases will fail. Once update-help is fixed on Linux, I will update these test to run everywhere.

@Francisco-Gamino Francisco Gamino (Francisco-Gamino) Oct 4, 2016 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, so now we are just skipping on IoT and Nano Server.

@daxian-dbw Dongbo Wang (daxian-dbw) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@@ -0,0 +1,94 @@
Describe 'Online help tests for PowerShell Core Cmdlets' -Tags "CI" {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Francisco Gamino (@Francisco-Gamino) is almost ready on the fix of #951. This test will be updated in the PR for that issue.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue #2465 is opened to track the update to the test files here.

@daxian-dbw
Dongbo Wang (daxian-dbw) merged commit d717458 into PowerShell:master Oct 12, 2016
@TravisEz13 Travis Plunk (TravisEz13) added Waiting on Author The PR was reviewed and requires changes or comments from the author before being accept and removed Review - Waiting on Author labels May 27, 2020
Thatgfsj (Thatgfsj) pushed a commit to Thatgfsj-contribs/PowerShell that referenced this pull request Aug 6, 2026
…Shell#2174)

In PS Core on windows, we try to locate the default web browser and use it for online help. If we cannot find the default web browser (in NanoServer/IoT), we error out.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Waiting on Author The PR was reviewed and requires changes or comments from the author before being accept

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants