From fbfcb474541a987c1dd706ed56156891b16c3d6f Mon Sep 17 00:00:00 2001 From: TingLiu6 Date: Sun, 10 Apr 2016 23:30:46 -0700 Subject: [PATCH] Unit Test for Set-PSBreakpoint --- test/powershell/Get-Date.Tests.ps1 | 3 +- test/powershell/Set-PSBreakpoint.Tests.ps1 | 163 +++++++++++++++++++++ 2 files changed, 164 insertions(+), 2 deletions(-) diff --git a/test/powershell/Get-Date.Tests.ps1 b/test/powershell/Get-Date.Tests.ps1 index 7b643de09a..69f113fb77 100644 --- a/test/powershell/Get-Date.Tests.ps1 +++ b/test/powershell/Get-Date.Tests.ps1 @@ -45,8 +45,7 @@ Describe "Get-Date DRT Unit Tests" -Tags DRT { } It "the LastWriteTime alias works with pipeline input" { - $folder = "GetDateTest" - #$tempPath = $TestDrive + $folder = "GetDateTest" $pathString = Join-Path -Path $TestDrive -ChildPath $folder New-Item -Path $TestDrive -Name $folder -ItemType directory -Force for($i = 0; $i -lt 10; $i++) diff --git a/test/powershell/Set-PSBreakpoint.Tests.ps1 b/test/powershell/Set-PSBreakpoint.Tests.ps1 index 319d6f010d..08dd84738f 100644 --- a/test/powershell/Set-PSBreakpoint.Tests.ps1 +++ b/test/powershell/Set-PSBreakpoint.Tests.ps1 @@ -1,3 +1,166 @@ +Describe "Set-PSBreakpoint DRT Unit Tests" -Tags DRT{ + #Set up test script + $scriptFileName = Join-Path $TestDrive -ChildPath breakpointTestScript.ps1 + $powershell = Join-Path $PSHOME -ChildPath powershell.exe + + $contents = @" +function Hello +{ + `$greeting = 'Hello, world!' + write-host `$greeting +} + +function Goodbye +{ + `$message = 'Good bye, cruel world!' + write-host `$message +} + +Hello +Goodbye + +# The following 2 statements produce null tokens (needed to verify 105473) +# +`$table = @{} + +return +"@ + + $contents > $scriptFileName + + + It "Should be able to set psbreakpoints for line" { + $lineNum = 13 + $columnNum = 1 + $action = "break" + + $brk = Set-PSBreakpoint -Line $lineNum -Script $scriptFileName + $brk.Line | Should Be $lineNum + Remove-PSBreakPoint -Id $brk.Id + + + $brk = set-psbreakpoint -line $lineNum -column $columnNum -script $scriptFileName + $brk.Line | Should Be $lineNum + $brk.Column | Should Be $columnNum + Remove-PSBreakPoint -Id $brk.Id + + $brk = set-psbreakpoint -line $lineNum -action {{ break; }} -script $scriptFileName + $brk.Line | Should Be $lineNum + $brk.Action | Should Match $action + Remove-PSBreakPoint -Id $brk.Id + + $brk = set-psbreakpoint -line $lineNum -column $columnNum -action {{ break; }} -script $scriptFileName + $brk.Line | Should Be $lineNum + $brk.Column | Should Be $columnNum + $brk.Action | Should Match $action + Remove-PSBreakPoint -Id $brk.Id + } + + It "-script and -line can take multiple items" { + { sbp -line 11,12,13 -column 1 -script $scriptFileName,$scriptFileName } | Should Not Throw + Get-PSBreakpoint -Script $scriptFileName | Remove-PSBreakpoint + } + + + It "-script, -line and -column are positional" { + { sbp $scriptFileName 13 } | Should Not Throw + Get-PSBreakpoint -Script $scriptFileName | Remove-PSBreakpoint + + { sbp $scriptFileName 13 1 } | Should Not Throw + Get-PSBreakpoint -Script $scriptFileName | Remove-PSBreakpoint + } + + It "Should be throw Exception when missing mandatory parameter -line" -Skip:($IsLinux -Or $IsOSX) { + try { + powershell.exe -noninteractive -command 'sbp -column 1' -script $scriptFileName + Throw "Execution OK" + } + catch { + $_.FullyQualifiedErrorId | Should Be "MissingMandatoryParameter,Microsoft.PowerShell.Commands.SetPSBreakpointCommand" + } + } + + It "Should be throw Exception when missing mandatory parameter -script" -Skip:($IsLinux -Or $IsOSX) { + try { + powershell.exe -noninteractive -command 'sbp -line 1' + Throw "Execution OK" + } + catch { + $_.FullyQualifiedErrorId | Should Be "MissingMandatoryParameter,Microsoft.PowerShell.Commands.SetPSBreakpointCommand" + } + } + + + It "Should be throw Exception when BUG 104306: New-PSBreakpoint -Column should not allow numbers less than 1" { + try { + set-psbreakpoint -line 1 -column -1 -script $scriptFileName + Throw "Execution OK" + } + catch { + $_.FullyQualifiedErrorId | Should Be "ParameterArgumentValidationError,Microsoft.PowerShell.Commands.SetPSBreakpointCommand" + } + + } + + It "Should be throw Exception when BUG 104304: New-PSBreakpoint -Line should not allow numbers less than 1" { + try { + set-psbreakpoint -line -1 -script $scriptFileName + Throw "Execution OK" + } + catch { + $_.FullyQualifiedErrorId | Should Be "SetPSBreakpoint:LineLessThanOne,Microsoft.PowerShell.Commands.SetPSBreakpointCommand" + } + } + + + It "Should be able to set psbreakpoints for command" { + $brk = set-psbreakpoint -command "write-host" + $brk.Command | Should Be "write-host" + Remove-PSBreakPoint -Id $brk.Id + + $brk = set-psbreakpoint -command "write-host" -script $scriptFileName + $brk.Command | Should Be "write-host" + Remove-PSBreakPoint -Id $brk.Id + + $brk = set-psbreakpoint -command "write-host" -action {{ break; }} -script $scriptFileName + $brk.Action | Should Match "break" + Remove-PSBreakPoint -Id $brk.Id + } + + It "-Command can take multiple items" { + $brk = set-psbreakpoint -command "write-host,Hello" + $brk.Command | Should Be "write-host,Hello" + Remove-PSBreakPoint -Id $brk.Id + } + + It "-Script is positional" { + $brk = set-psbreakpoint -command "Hello" $scriptFileName + $brk.Command | Should Be "Hello" + Remove-PSBreakPoint -Id $brk.Id + + $brk = set-psbreakpoint $scriptFileName -command "Hello" + $brk.Command | Should Be "Hello" + Remove-PSBreakPoint -Id $brk.Id + } + + It "Should be able to set breakpoints on functions" { + $brk = set-psbreakpoint -command "Hello" + $brk.Command | Should Be "Hello" + Remove-PSBreakPoint -Id $brk.Id + + $brk = set-psbreakpoint -command "Hello" -script $scriptFileName + $brk.Command | Should Be "Hello" + Remove-PSBreakPoint -Id $brk.Id + + $brk = set-psbreakpoint -command "Hello,Goodbye" + $brk.Command | Should Be "Hello,Goodbye" + Remove-PSBreakPoint -Id $brk.Id + + } + + Remove-Item -Path $scriptFileName -Force +} + Describe "Set-PSBreakpoint" { # Set up test script $testScript = Join-Path -Path $PSScriptRoot -ChildPath psbreakpointtestscript.ps1