PowerShell/test/powershell/Modules/Microsoft.PowerShell.Utility/Remove-PSBreakpoint.Tests.ps1

87 lines
2.6 KiB
PowerShell

# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
Describe "Remove-PSBreakpoint" -Tags "CI" {
BeforeAll {
# Set up test script
$testScript = Join-Path -Path (Join-Path -Path $PSScriptRoot -ChildPath assets) -ChildPath psbreakpointtestscript.ps1
$script = "`$var = 1
`$var2 = Get-Command
# this is a comment
Get-Date
"
$script > $testScript
}
BeforeEach {
# set some breakpoints
$line = Set-PSBreakpoint -Line 1, 2, 3 -Script $testScript
$command = Set-PSBreakpoint -Command "Get-Date" -Script $testScript
$variable = Set-PSBreakpoint -Variable var2 -Script $testScript
}
Context "Basic Removal Methods Tests" {
It "Should be able to remove a breakpoint by breakpoint Id" {
$NumberOfBreakpoints = $(Get-PSBreakpoint).Id.length
$BreakID = $(Get-PSBreakpoint).Id[0]
Remove-PSBreakpoint -Id $BreakID
$(Get-PSBreakpoint).Id.length | Should -Be ($NumberOfBreakpoints - 1)
}
It "Should be able to remove a breakpoint by variable" {
$NumberOfBreakpoints = $(Get-PSBreakpoint).Id.length
Remove-PSBreakpoint -Breakpoint $variable
$(Get-PSBreakpoint).Id.length | Should -Be ($NumberOfBreakpoints - 1)
}
It "Should be able to remove a breakpoint by command" {
$NumberOfBreakpoints = $(Get-PSBreakpoint).Id.length
Remove-PSBreakpoint -Breakpoint $command
$(Get-PSBreakpoint).Id.length | Should -Be ($NumberOfBreakpoints - 1)
}
It "Should be able to pipe breakpoint objects to Remove-PSBreakpoint" {
$NumberOfBreakpoints = $(Get-PSBreakpoint).Id.length
$variable | Remove-PSBreakpoint
$(Get-PSBreakpoint).Id.length | Should -Be ($NumberOfBreakpoints - 1)
}
}
It "Should Remove all breakpoints" {
$(Get-PSBreakpoint).Id.Length | Should -Not -BeNullOrEmpty
Get-PSBreakpoint | Remove-PSBreakpoint
$(Get-PSBreakpoint).Id.Length | Should -Be 0
}
It 'Should remove breakpoints using pipeline input by value' {
foreach ($bp in $line, $command, $variable) {
$bp | Remove-PSBreakpoint
}
Get-PSBreakpoint | Should -HaveCount 0
}
It 'Should remove breakpoints using pipeline input by property name' {
foreach ($bp in $line, $command, $variable) {
[pscustomobject]@{ Id = $bp.Id } | Remove-PSBreakpoint
}
Get-PSBreakpoint | Should -HaveCount 0
}
AfterAll {
#Clean up after ourselves
Remove-Item $testScript
}
}