Added PORTABLE as define for debugging and reidented tests.
This commit is contained in:
parent
f483429d11
commit
acd9249fe2
|
@ -24,7 +24,7 @@
|
||||||
"netstandard1.5": {
|
"netstandard1.5": {
|
||||||
"imports": [ "dnxcore50" ],
|
"imports": [ "dnxcore50" ],
|
||||||
"buildOptions": {
|
"buildOptions": {
|
||||||
"define": [ "CORECLR" ],
|
"define": [ "CORECLR", "PORTABLE" ],
|
||||||
"compile": {
|
"compile": {
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"cimSupport/cmdletization/xml/cmdlets-over-objects.objectModel.autogen.cs",
|
"cimSupport/cmdletization/xml/cmdlets-over-objects.objectModel.autogen.cs",
|
||||||
|
|
|
@ -1427,7 +1427,7 @@ namespace System.Management.Automation
|
||||||
"SecurityMshSnapInResources,Description","SecurityMshSnapInResources,Vendor")
|
"SecurityMshSnapInResources,Description","SecurityMshSnapInResources,Vendor")
|
||||||
};
|
};
|
||||||
|
|
||||||
#if !CORECLR //TODO:CORECLR - The 'Microsoft.WSMan.Management' module will be available on OneCore soon
|
#if !LINUX
|
||||||
if (!Utils.IsWinPEHost())
|
if (!Utils.IsWinPEHost())
|
||||||
{
|
{
|
||||||
defaultMshSnapins.Add(new DefaultPSSnapInInformation("Microsoft.WSMan.Management", "Microsoft.WSMan.Management", null,
|
defaultMshSnapins.Add(new DefaultPSSnapInInformation("Microsoft.WSMan.Management", "Microsoft.WSMan.Management", null,
|
||||||
|
|
|
@ -1,37 +1,37 @@
|
||||||
using namespace System.Diagnostics
|
using namespace System.Diagnostics
|
||||||
|
|
||||||
Describe "PowerShell Command Debugging"{
|
Describe "PowerShell Command Debugging"{
|
||||||
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
|
$powershell = Join-Path -Path $PsHome -ChildPath "powershell"
|
||||||
|
|
||||||
function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
|
function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
|
||||||
{
|
{
|
||||||
return [ProcessStartInfo]@{
|
return [ProcessStartInfo]@{
|
||||||
FileName = $powershell
|
FileName = $powershell
|
||||||
Arguments = $CommandLine
|
Arguments = $CommandLine
|
||||||
RedirectStandardInput = $RedirectStdIn
|
RedirectStandardInput = $RedirectStdIn
|
||||||
RedirectStandardOutput = $true
|
RedirectStandardOutput = $true
|
||||||
RedirectStandardError = $true
|
RedirectStandardError = $true
|
||||||
UseShellExecute = $false
|
UseShellExecute = $false
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function RunPowerShell([ProcessStartInfo]$debugfn)
|
function RunPowerShell([ProcessStartInfo]$debugfn)
|
||||||
|
{
|
||||||
|
$process = [Process]::Start($debugfn)
|
||||||
|
return $process
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function EnsureChildHasExited([Process]$process, [int]$WaitTimeInMS = 15000)
|
||||||
|
{
|
||||||
|
$process.WaitForExit($WaitTimeInMS)
|
||||||
|
|
||||||
|
if (!$process.HasExited)
|
||||||
{
|
{
|
||||||
$process = [Process]::Start($debugfn)
|
$process.HasExited | Should Be $true
|
||||||
return $process
|
$process.Kill()
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function EnsureChildHasExited([Process]$process, [int]$WaitTimeInMS = 15000)
|
|
||||||
{
|
|
||||||
$process.WaitForExit($WaitTimeInMS)
|
|
||||||
|
|
||||||
if (!$process.HasExited)
|
|
||||||
{
|
|
||||||
$process.HasExited | Should Be $true
|
|
||||||
$process.Kill()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
It "Should be able to step into debugging"{
|
It "Should be able to step into debugging"{
|
||||||
$debugfn = NewProcessStartInfo "-noprofile ""`$function:foo = { 'bar' }""" -RedirectStdIn
|
$debugfn = NewProcessStartInfo "-noprofile ""`$function:foo = { 'bar' }""" -RedirectStdIn
|
||||||
|
@ -40,11 +40,11 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
|
||||||
|
|
||||||
$process.StandardInput.Write("foo`n")
|
$process.StandardInput.Write("foo`n")
|
||||||
|
|
||||||
$process.StandardInput.Write("s`n")
|
$process.StandardInput.Write("s`n")
|
||||||
|
|
||||||
$process.StandardInput.Write("s`n")
|
$process.StandardInput.Write("s`n")
|
||||||
|
|
||||||
$process.StandardInput.Write("s`n")
|
$process.StandardInput.Write("s`n")
|
||||||
|
|
||||||
$process.StandardInput.Close()
|
$process.StandardInput.Close()
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
|
||||||
|
|
||||||
$process.StandardInput.Write("foo`n")
|
$process.StandardInput.Write("foo`n")
|
||||||
|
|
||||||
$process.StandardInput.Write("c`n")
|
$process.StandardInput.Write("c`n")
|
||||||
$process.StandardOutput.ReadLine()
|
$process.StandardOutput.ReadLine()
|
||||||
$process.StandardOutput.ReadLine()
|
$process.StandardOutput.ReadLine()
|
||||||
|
|
||||||
|
@ -76,19 +76,19 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
|
||||||
|
|
||||||
$process.StandardInput.Write("foo`n")
|
$process.StandardInput.Write("foo`n")
|
||||||
|
|
||||||
$process.StandardInput.Write("h`n")
|
$process.StandardInput.Write("h`n")
|
||||||
|
|
||||||
foreach ($i in 1..38) {
|
foreach ($i in 1..38) {
|
||||||
$line = $process.StandardOutput.ReadLine()
|
$line = $process.StandardOutput.ReadLine()
|
||||||
}
|
}
|
||||||
|
|
||||||
$process.StandardInput.Write("s`n")
|
$process.StandardInput.Write("s`n")
|
||||||
$process.StandardInput.Write("s`n")
|
$process.StandardInput.Write("s`n")
|
||||||
$process.StandardInput.Write("s`n")
|
$process.StandardInput.Write("s`n")
|
||||||
$process.StandardInput.Close()
|
$process.StandardInput.Close()
|
||||||
|
|
||||||
EnsureChildHasExited $process
|
EnsureChildHasExited $process
|
||||||
$line | Should Be "For instructions about how to customize your debugger prompt, type `"help about_prompt`"."
|
$line | Should Be "For instructions about how to customize your debugger prompt, type `"help about_prompt`"."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -98,9 +98,9 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
|
||||||
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n")
|
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n")
|
||||||
|
|
||||||
$process.StandardInput.Write("foo`n")
|
$process.StandardInput.Write("foo`n")
|
||||||
$process.StandardInput.Write("v`n")
|
$process.StandardInput.Write("v`n")
|
||||||
$process.StandardInput.Write("v`n")
|
$process.StandardInput.Write("v`n")
|
||||||
$process.StandardInput.Write("v`n")
|
$process.StandardInput.Write("v`n")
|
||||||
|
|
||||||
$process.StandardInput.Close()
|
$process.StandardInput.Close()
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
|
||||||
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n")
|
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n")
|
||||||
|
|
||||||
$process.StandardInput.Write("foo`n")
|
$process.StandardInput.Write("foo`n")
|
||||||
$process.StandardInput.Write("o`n")
|
$process.StandardInput.Write("o`n")
|
||||||
|
|
||||||
$process.StandardInput.Close()
|
$process.StandardInput.Close()
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
|
||||||
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n")
|
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n")
|
||||||
|
|
||||||
$process.StandardInput.Write("foo`n")
|
$process.StandardInput.Write("foo`n")
|
||||||
$process.StandardInput.Write("q`n")
|
$process.StandardInput.Write("q`n")
|
||||||
|
|
||||||
$process.StandardInput.Close()
|
$process.StandardInput.Close()
|
||||||
|
|
||||||
|
@ -143,36 +143,36 @@ function NewProcessStartInfo([string]$CommandLine, [switch]$RedirectStdIn)
|
||||||
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n") | Write-Host
|
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n") | Write-Host
|
||||||
|
|
||||||
$process.StandardInput.Write("foo`n") | Write-Host
|
$process.StandardInput.Write("foo`n") | Write-Host
|
||||||
$process.StandardInput.Write("l`n") | Write-Host
|
$process.StandardInput.Write("l`n") | Write-Host
|
||||||
|
|
||||||
foreach ($i in 1..19) {
|
foreach ($i in 1..19) {
|
||||||
$line = $process.StandardOutput.ReadLine()
|
$line = $process.StandardOutput.ReadLine()
|
||||||
}
|
}
|
||||||
|
|
||||||
$process.StandardInput.Write("`n")
|
$process.StandardInput.Write("`n")
|
||||||
$process.StandardInput.Write("`n")
|
$process.StandardInput.Write("`n")
|
||||||
$process.StandardInput.Write("`n")
|
$process.StandardInput.Write("`n")
|
||||||
|
|
||||||
$line | Should Be " 1:* `$function:foo = { 'bar' }"
|
$line | Should Be " 1:* `$function:foo = { 'bar' }"
|
||||||
$process.StandardInput.Close()
|
$process.StandardInput.Close()
|
||||||
EnsureChildHasExited $process
|
EnsureChildHasExited $process
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
It "Should be able to get the call stack in debugging"{
|
It "Should be able to get the call stack in debugging"{
|
||||||
$debugfn = NewProcessStartInfo "-noprofile ""`$function:foo = { 'bar' }""" -RedirectStdIn
|
$debugfn = NewProcessStartInfo "-noprofile ""`$function:foo = { 'bar' }""" -RedirectStdIn
|
||||||
$process = RunPowerShell $debugfn
|
$process = RunPowerShell $debugfn
|
||||||
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n") | Write-Host
|
$process.StandardInput.Write("Set-PsBreakpoint -command foo`n") | Write-Host
|
||||||
|
|
||||||
$process.StandardInput.Write("foo`n") | Write-Host
|
$process.StandardInput.Write("foo`n") | Write-Host
|
||||||
$process.StandardInput.Write("k`n") | Write-Host
|
$process.StandardInput.Write("k`n") | Write-Host
|
||||||
|
|
||||||
foreach ($i in 1..20) {
|
foreach ($i in 1..20) {
|
||||||
$line = $process.StandardOutput.ReadLine()
|
$line = $process.StandardOutput.ReadLine()
|
||||||
}
|
}
|
||||||
|
|
||||||
$line | Should Be "foo {} <No file>"
|
$line | Should Be "foo {} <No file>"
|
||||||
$process.StandardInput.Close()
|
$process.StandardInput.Close()
|
||||||
EnsureChildHasExited $process
|
EnsureChildHasExited $process
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue