Allow passing just a dash as an arg to a file via pwsh (#9479)

This commit is contained in:
Steve Lee 2019-04-27 11:20:33 -07:00 committed by Travis Plunk
parent 7de4210760
commit d318e7727e
2 changed files with 19 additions and 2 deletions

View file

@ -1214,7 +1214,7 @@ namespace Microsoft.PowerShell
_collectedArgs.Add(new CommandParameter(pendingParameter, arg));
pendingParameter = null;
}
else if (!string.IsNullOrEmpty(arg) && SpecialCharacters.IsDash(arg[0]))
else if (!string.IsNullOrEmpty(arg) && SpecialCharacters.IsDash(arg[0]) && arg.Length > 1)
{
int offset = arg.IndexOf(':');
if (offset >= 0)

View file

@ -217,7 +217,7 @@ Describe "ConsoleHost unit tests" -tags "Feature" {
$observed | Should -Be $BoolValue
}
It "-File '<filename>' should return exit code from script" -TestCases @(
It "-File '<filename>' should return exit code from script" -TestCases @(
@{Filename = "test.ps1"},
@{Filename = "test"}
) {
@ -226,6 +226,23 @@ Describe "ConsoleHost unit tests" -tags "Feature" {
& $powershell $testdrive/$Filename
$LASTEXITCODE | Should -Be 123
}
It "A single dash should be passed as an arg" {
$testScript = @'
[CmdletBinding()]param(
[string]$p1,
[string]$p2,
[Parameter(ValueFromPipeline)][string]$InputObject
)
process{
$input.replace($p1, $p2)
}
'@
$testFilePath = Join-Path $TestDrive "test.ps1"
Set-Content -Path $testFilePath -Value $testScript
$observed = echo hello | pwsh $testFilePath e -
$observed | Should -BeExactly "h-llo"
}
}
Context "-SettingsFile Commandline switch" {