Skip to content

Commit

Permalink
Fix ArgumentOutOfRangeException when throw is used
Browse files Browse the repository at this point in the history
Co-authored-by: Andy Schwartzmeyer <[email protected]>
  • Loading branch information
JustinGrote and andyleejordan committed Dec 28, 2021
1 parent 2e1b598 commit c03154e
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ static ErrorRecordExtensions()
s_setWriteStreamProperty = Expression.Lambda<Action<PSObject>>(
Expression.Call(
errorObjectParameter,
writeStreamProperty.GetSetMethod(),
writeStreamProperty.GetSetMethod(nonPublic: true),
Expression.Constant(errorStreamType)),
errorObjectParameter)
.Compile();
Expand Down
11 changes: 7 additions & 4 deletions src/PowerShellEditorServices/Utility/PSCommandExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,13 @@ public static PSCommand AddDebugOutputCommand(this PSCommand psCommand)

public static PSCommand MergePipelineResults(this PSCommand psCommand)
{
// We need to do merge errors and output before rendering with an Out- cmdlet
Command lastCommand = psCommand.Commands[psCommand.Commands.Count - 1];
lastCommand.MergeMyResults(PipelineResultTypes.Error, PipelineResultTypes.Output);
lastCommand.MergeMyResults(PipelineResultTypes.Information, PipelineResultTypes.Output);
if (psCommand.Commands.Count > 0)
{
// We need to do merge errors and output before rendering with an Out- cmdlet
Command lastCommand = psCommand.Commands[psCommand.Commands.Count - 1];
lastCommand.MergeMyResults(PipelineResultTypes.Error, PipelineResultTypes.Output);
lastCommand.MergeMyResults(PipelineResultTypes.Information, PipelineResultTypes.Output);
}
return psCommand;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,10 @@ public async Task CanExecutePSCommand()
[Fact]
public async Task CanHandleThrow()
{
// TODO: Fix this so it doesn't throw!
_ = await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() =>
{
return psesHost.ExecutePSCommandAsync(
new PSCommand().AddScript("throw"),
CancellationToken.None,
new PowerShellExecutionOptions { ThrowOnError = false });
}).ConfigureAwait(true);
await psesHost.ExecutePSCommandAsync(
new PSCommand().AddScript("throw"),
CancellationToken.None,
new PowerShellExecutionOptions { ThrowOnError = false }).ConfigureAwait(true);
}

[Trait("Category", "PsesInternalHost")]
Expand Down

0 comments on commit c03154e

Please sign in to comment.