Add Get-Variable Pester Unit Test
This commit is contained in:
parent
ceef777d5e
commit
95eade1305
@ -1,140 +1,193 @@
|
||||
Describe "Get-Variable" {
|
||||
It "Should be able to call with no parameters without error" {
|
||||
{ Get-Variable } | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should return environment variables when called with no parameters" {
|
||||
(Get-Variable).Name -contains "$" | Should Be $true
|
||||
(Get-Variable).Name -contains "?" | Should Be $true
|
||||
(Get-Variable).Name -contains "HOST" | Should Be $true
|
||||
(Get-Variable).Name -contains "PWD" | Should Be $true
|
||||
(Get-Variable).Name -contains "PID" | Should Be $true
|
||||
(Get-Variable).Name -contains "^" | Should Be $true
|
||||
}
|
||||
|
||||
It "Should return the value of an object" {
|
||||
New-Variable -Name tempVar -Value 1
|
||||
(Get-Variable tempVar).Value | Should Be (1)
|
||||
}
|
||||
|
||||
It "Should be able to call using the gv alias" {
|
||||
{ gv } | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should be able to call using the Name switch" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
|
||||
{ Get-Variable -Name var1 } | Should Not Throw
|
||||
|
||||
(Get-Variable -Name var1).Value | Should Be 4
|
||||
|
||||
Remove-Variable var1
|
||||
}
|
||||
|
||||
It "Should be able to use wildcard characters in the Name field" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
New-Variable -Name var2 -Value "test"
|
||||
|
||||
(Get-Variable -Name var*).Value[0] | Should be 4
|
||||
(Get-Variable -Name var*).Value[1] | Should be "test"
|
||||
|
||||
Remove-Variable var1
|
||||
Remove-Variable var2
|
||||
}
|
||||
|
||||
It "Should return only the value if the value switch is used" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
|
||||
Get-Variable -Name var1 -ValueOnly | Should be 4
|
||||
|
||||
Remove-Variable var1
|
||||
}
|
||||
|
||||
It "Should pipe string to the name field without the Name field being specified"{
|
||||
New-Variable -Name var1 -Value 3
|
||||
|
||||
("var1" | Get-Variable ).Value | Should Be 3
|
||||
|
||||
Remove-Variable var1
|
||||
}
|
||||
|
||||
It "Should be able to include a set of variables to get" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
New-Variable -Name var2 -Value 2
|
||||
|
||||
$actual = Get-Variable -Include var1, var2
|
||||
|
||||
$actual[0].Name | Should Be var1
|
||||
$actual[1].Name | Should Be var2
|
||||
|
||||
$actual[0].Value | Should Be 4
|
||||
$actual[1].Value | Should Be 2
|
||||
|
||||
Remove-Variable var1
|
||||
Remove-Variable var2
|
||||
}
|
||||
|
||||
It "Should be able to exclude a set of variables to get" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
New-Variable -Name var2 -Value 2
|
||||
New-Variable -Name var3 -Value "test"
|
||||
|
||||
$actual = Get-Variable -Exclude var1, var2
|
||||
|
||||
$actual | Where-Object { $_.Name -eq "var3" } | Should Not BeNullOrEmpty
|
||||
}
|
||||
|
||||
Context "Scope Tests" {
|
||||
# This will violate the DRY principle. Tread softly.
|
||||
It "Should be able to get a global scope variable using the global switch" {
|
||||
New-Variable globalVar -Value 1 -Scope global -Force
|
||||
|
||||
(Get-Variable -Name globalVar -Scope global)[0].Value | Should Be 1
|
||||
}
|
||||
|
||||
It "Should not be able to clear a global scope variable using the local switch" {
|
||||
New-Variable globalVar -Value 1 -Scope global -Force
|
||||
|
||||
Get-Variable -Name globalVar -Scope local -ErrorAction SilentlyContinue | Should Throw
|
||||
}
|
||||
|
||||
It "Should be able to get a global variable when there's one in the script scope" {
|
||||
New-Variable globalVar -Value 1 -Scope global -Force
|
||||
{ New-Variable globalVar -Value 2 -Scope script -Force }
|
||||
|
||||
$(Get-Variable -Name globalVar).Value | Should Be 1
|
||||
}
|
||||
|
||||
It "Should be able to get an item locally using the local switch" {
|
||||
{
|
||||
New-Variable localVar -Value 1 -Scope local -Force
|
||||
|
||||
Get-Variable -Name localVar -Scope local
|
||||
} | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should be able to get a variable created in the global scope when there's one in local scope" {
|
||||
New-Variable localVar -Value 1 -Scope local -Force
|
||||
|
||||
New-Variable localVar -Value 2 -Scope global -Force
|
||||
|
||||
$(Get-Variable -Name localVar -Scope global).Value | Should Be 2
|
||||
}
|
||||
|
||||
It "Should be able to get a script variable created using the script switch" {
|
||||
{
|
||||
New-Variable scriptVar -Value 1 -Scope script -Force
|
||||
|
||||
Get-Variable -Name scriptVar -Scope script
|
||||
} | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should be able to clear a global script variable that was created using the script scope switch" {
|
||||
{
|
||||
New-Variable scriptVar -Value 1 -Scope script -Force
|
||||
|
||||
Get-Variable -Name scriptVar -Scope script
|
||||
} | Should Not Throw
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Get-Variable DRT Unit Tests" -Tags DRT{
|
||||
It "Get-Variable not exist variable Name should throw ItemNotFoundException skip now as bug#777" -Skip:$true{
|
||||
try {
|
||||
Get-Variable -Name nonexistingVariableName
|
||||
Throw "Execution OK"
|
||||
}
|
||||
catch {
|
||||
$_.FullyQualifiedErrorId | Should be "VariableNotFound,Microsoft.PowerShell.Commands.GetVariableCommand"
|
||||
}
|
||||
}
|
||||
|
||||
It "Get-Variable exist variable Name with include and bogus exclude should work"{
|
||||
Set-Variable newVar testing
|
||||
$var1=get-variable -Name newVar -Include newVar -Exclude bogus
|
||||
$var1.Name|Should Be "newVar"
|
||||
$var1.Value|Should Be "testing"
|
||||
}
|
||||
|
||||
It "Get-Variable exist variable Name with Description and Option should work"{
|
||||
Set-Variable newVar testing -Option ReadOnly -Description "testing description"
|
||||
$var1=get-variable -Name newVar
|
||||
$var1.Name|Should Be "newVar"
|
||||
$var1.Value|Should Be "testing"
|
||||
$var1.Options|Should Be "ReadOnly"
|
||||
$var1.Description|Should Be "testing description"
|
||||
}
|
||||
|
||||
It "Get-Variable exist variable Globbing Name should work"{
|
||||
Set-Variable abcaVar testing
|
||||
Set-Variable bcdaVar "another test"
|
||||
Set-Variable aVarfoo wow
|
||||
$var1=get-variable -Name *aVar* -Scope local
|
||||
$var1[0].Name|Should Be "abcaVar"
|
||||
$var1[0].Value|Should Be "testing"
|
||||
$var1[1].Name|Should Be "aVarfoo"
|
||||
$var1[1].Value|Should Be "wow"
|
||||
$var1[2].Name|Should Be "bcdaVar"
|
||||
$var1[2].Value|Should Be "another test"
|
||||
}
|
||||
|
||||
It "Get-Variable an exist private variable Name should throw ItemNotFoundException skip now as bug#777" -Skip:$true{
|
||||
try {
|
||||
Set-Variable newVar testing -Option Private
|
||||
Get-Variable -Name newVar
|
||||
Throw "Execution OK"
|
||||
}
|
||||
catch {
|
||||
$_.FullyQualifiedErrorId | Should be "VariableNotFound,Microsoft.PowerShell.Commands.GetVariableCommand"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Get-Variable" {
|
||||
It "Should be able to call with no parameters without error" {
|
||||
{ Get-Variable } | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should return environment variables when called with no parameters" {
|
||||
(Get-Variable).Name -contains "$" | Should Be $true
|
||||
(Get-Variable).Name -contains "?" | Should Be $true
|
||||
(Get-Variable).Name -contains "HOST" | Should Be $true
|
||||
(Get-Variable).Name -contains "PWD" | Should Be $true
|
||||
(Get-Variable).Name -contains "PID" | Should Be $true
|
||||
(Get-Variable).Name -contains "^" | Should Be $true
|
||||
}
|
||||
|
||||
It "Should return the value of an object" {
|
||||
New-Variable -Name tempVar -Value 1
|
||||
(Get-Variable tempVar).Value | Should Be (1)
|
||||
}
|
||||
|
||||
It "Should be able to call using the gv alias" {
|
||||
{ gv } | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should be able to call using the Name switch" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
|
||||
{ Get-Variable -Name var1 } | Should Not Throw
|
||||
|
||||
(Get-Variable -Name var1).Value | Should Be 4
|
||||
|
||||
Remove-Variable var1
|
||||
}
|
||||
|
||||
It "Should be able to use wildcard characters in the Name field" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
New-Variable -Name var2 -Value "test"
|
||||
|
||||
(Get-Variable -Name var*).Value[0] | Should be 4
|
||||
(Get-Variable -Name var*).Value[1] | Should be "test"
|
||||
|
||||
Remove-Variable var1
|
||||
Remove-Variable var2
|
||||
}
|
||||
|
||||
It "Should return only the value if the value switch is used" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
|
||||
Get-Variable -Name var1 -ValueOnly | Should be 4
|
||||
|
||||
Remove-Variable var1
|
||||
}
|
||||
|
||||
It "Should pipe string to the name field without the Name field being specified"{
|
||||
New-Variable -Name var1 -Value 3
|
||||
|
||||
("var1" | Get-Variable ).Value | Should Be 3
|
||||
|
||||
Remove-Variable var1
|
||||
}
|
||||
|
||||
It "Should be able to include a set of variables to get" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
New-Variable -Name var2 -Value 2
|
||||
|
||||
$actual = Get-Variable -Include var1, var2
|
||||
|
||||
$actual[0].Name | Should Be var1
|
||||
$actual[1].Name | Should Be var2
|
||||
|
||||
$actual[0].Value | Should Be 4
|
||||
$actual[1].Value | Should Be 2
|
||||
|
||||
Remove-Variable var1
|
||||
Remove-Variable var2
|
||||
}
|
||||
|
||||
It "Should be able to exclude a set of variables to get" {
|
||||
New-Variable -Name var1 -Value 4
|
||||
New-Variable -Name var2 -Value 2
|
||||
New-Variable -Name var3 -Value "test"
|
||||
|
||||
$actual = Get-Variable -Exclude var1, var2
|
||||
|
||||
$actual | Where-Object { $_.Name -eq "var3" } | Should Not BeNullOrEmpty
|
||||
}
|
||||
|
||||
Context "Scope Tests" {
|
||||
# This will violate the DRY principle. Tread softly.
|
||||
It "Should be able to get a global scope variable using the global switch" {
|
||||
New-Variable globalVar -Value 1 -Scope global -Force
|
||||
|
||||
(Get-Variable -Name globalVar -Scope global)[0].Value | Should Be 1
|
||||
}
|
||||
|
||||
It "Should not be able to clear a global scope variable using the local switch" {
|
||||
New-Variable globalVar -Value 1 -Scope global -Force
|
||||
|
||||
Get-Variable -Name globalVar -Scope local -ErrorAction SilentlyContinue | Should Throw
|
||||
}
|
||||
|
||||
It "Should be able to get a global variable when there's one in the script scope" {
|
||||
New-Variable globalVar -Value 1 -Scope global -Force
|
||||
{ New-Variable globalVar -Value 2 -Scope script -Force }
|
||||
|
||||
$(Get-Variable -Name globalVar).Value | Should Be 1
|
||||
}
|
||||
|
||||
It "Should be able to get an item locally using the local switch" {
|
||||
{
|
||||
New-Variable localVar -Value 1 -Scope local -Force
|
||||
|
||||
Get-Variable -Name localVar -Scope local
|
||||
} | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should be able to get a variable created in the global scope when there's one in local scope" {
|
||||
New-Variable localVar -Value 1 -Scope local -Force
|
||||
|
||||
New-Variable localVar -Value 2 -Scope global -Force
|
||||
|
||||
$(Get-Variable -Name localVar -Scope global).Value | Should Be 2
|
||||
}
|
||||
|
||||
It "Should be able to get a script variable created using the script switch" {
|
||||
{
|
||||
New-Variable scriptVar -Value 1 -Scope script -Force
|
||||
|
||||
Get-Variable -Name scriptVar -Scope script
|
||||
} | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should be able to clear a global script variable that was created using the script scope switch" {
|
||||
{
|
||||
New-Variable scriptVar -Value 1 -Scope script -Force
|
||||
|
||||
Get-Variable -Name scriptVar -Scope script
|
||||
} | Should Not Throw
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user