Unit Test for Set-PSBreakpoint

This commit is contained in:
TingLiu6
2016-04-10 23:30:46 -07:00
parent 757724abf5
commit fbfcb47454
2 changed files with 164 additions and 2 deletions
+1 -2
View File
@@ -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++)
+163
View File
@@ -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