diff --git a/test/powershell/PSDebugging.Tests.ps1 b/test/powershell/PSDebugging.Tests.ps1 index 9dd964c13c..180b9dcf19 100644 --- a/test/powershell/PSDebugging.Tests.ps1 +++ b/test/powershell/PSDebugging.Tests.ps1 @@ -38,33 +38,14 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn) $process = RunPowerShell $debugfn $process.StandardInput.Write("Set-PsBreakpoint -command foo`n") - foreach ($i in 1..2) { - $process.StandardOutput.ReadLine() - } - $process.StandardInput.Write("foo`n") - foreach ($i in 1..13) { - $process.StandardOutput.ReadLine() - } + $process.StandardInput.Write("s`n") $process.StandardInput.Write("s`n") - foreach ($i in 1..3) { - $process.StandardOutput.ReadLine() } - $process.StandardInput.Write("s`n") - foreach ($i in 1..3) { - $process.StandardOutput.ReadLine() - } - - $process.StandardInput.Write("s`n") - - foreach ($i in 1..3) { - $process.StandardOutput.ReadLine() - } - $process.StandardInput.Close() EnsureChildHasExited $process @@ -76,16 +57,8 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn) $process = RunPowerShell $debugfn $process.StandardInput.Write("Set-PsBreakpoint -command foo`n") - foreach ($i in 1..2) { - $process.StandardOutput.ReadLine() - } - $process.StandardInput.Write("foo`n") - foreach ($i in 1..13) { - $process.StandardOutput.ReadLine() - } - $process.StandardInput.Write("c`n") $process.StandardOutput.ReadLine() $process.StandardOutput.ReadLine() @@ -101,47 +74,111 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn) $process = RunPowerShell $debugfn $process.StandardInput.Write("Set-PsBreakpoint -command foo`n") - foreach ($i in 1..2) { - $process.StandardOutput.ReadLine() - } - $process.StandardInput.Write("foo`n") - foreach ($i in 1..13) { - $process.StandardOutput.ReadLine() - } $process.StandardInput.Write("h`n") - foreach ($i in 1..23) { + + foreach ($i in 1..38) { $line = $process.StandardOutput.ReadLine() } $process.StandardInput.Write("s`n") - - foreach ($i in 1..3) { - $process.StandardOutput.ReadLine() - } - $process.StandardInput.Write("s`n") - - foreach ($i in 1..3) { - $process.StandardOutput.ReadLine() - } - $process.StandardInput.Write("s`n") - - foreach ($i in 1..3) { - $process.StandardOutput.ReadLine() - } - $process.StandardInput.Close() EnsureChildHasExited $process $line | Should Be "For instructions about how to customize your debugger prompt, type `"help about_prompt`"." -# $process.ExitCode | Should Be 0 + } - + + It "Should be able to step over debugging"{ + $debugfn = NewProcessStartInfo "-noprofile ""`$function:foo = { 'bar' }""" -RedirectStdIn + $process = RunPowerShell $debugfn + $process.StandardInput.Write("Set-PsBreakpoint -command foo`n") + + $process.StandardInput.Write("foo`n") + $process.StandardInput.Write("v`n") + $process.StandardInput.Write("v`n") + $process.StandardInput.Write("v`n") + + $process.StandardInput.Close() + + EnsureChildHasExited $process + $process.ExitCode | Should Be 0 + } + + + It "Should be able to step out of debugging"{ + $debugfn = NewProcessStartInfo "-noprofile ""`$function:foo = { 'bar' }""" -RedirectStdIn + $process = RunPowerShell $debugfn + $process.StandardInput.Write("Set-PsBreakpoint -command foo`n") + + $process.StandardInput.Write("foo`n") + $process.StandardInput.Write("o`n") + + $process.StandardInput.Close() + + EnsureChildHasExited $process + $process.ExitCode | Should Be 0 + } + + It "Should be able to quit debugging"{ + $debugfn = NewProcessStartInfo "-noprofile ""`$function:foo = { 'bar' }""" -RedirectStdIn + $process = RunPowerShell $debugfn + $process.StandardInput.Write("Set-PsBreakpoint -command foo`n") + + $process.StandardInput.Write("foo`n") + $process.StandardInput.Write("q`n") + + $process.StandardInput.Close() + + EnsureChildHasExited $process + $process.ExitCode | Should Be 0 + } + + It "Should be able to list source code in debugging"{ + $debugfn = NewProcessStartInfo "-noprofile ""`$function:foo = { 'bar' }""" -RedirectStdIn + $process = RunPowerShell $debugfn + $process.StandardInput.Write("Set-PsBreakpoint -command foo`n") | Write-Host + + $process.StandardInput.Write("foo`n") | Write-Host + $process.StandardInput.Write("l`n") | Write-Host + + foreach ($i in 1..19) { + $line = $process.StandardOutput.ReadLine() + } + + $process.StandardInput.Write("`n") + $process.StandardInput.Write("`n") + $process.StandardInput.Write("`n") + + $line | Should Be " 1:* `$function:foo = { 'bar' }" + $process.StandardInput.Close() + EnsureChildHasExited $process } + + + It "Should be able to get the call stack in debugging"{ + $debugfn = NewProcessStartInfo "-noprofile ""`$function:foo = { 'bar' }""" -RedirectStdIn + $process = RunPowerShell $debugfn + $process.StandardInput.Write("Set-PsBreakpoint -command foo`n") | Write-Host + + $process.StandardInput.Write("foo`n") | Write-Host + $process.StandardInput.Write("k`n") | Write-Host + + foreach ($i in 1..20) { + $line = $process.StandardOutput.ReadLine() + } + + $line | Should Be "foo {} " + $process.StandardInput.Close() + EnsureChildHasExited $process + + } + + }