mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
Update fixes based on comments for New Variable Pester Unit Test
This commit is contained in:
committed by
Andrew Schwartzmeyer
parent
1f739bb85c
commit
7f0442a069
@@ -84,10 +84,11 @@ Describe "New-Variable" {
|
||||
(Get-Variable var1).Description | Should Be "Test Description"
|
||||
}
|
||||
|
||||
|
||||
It "Should be able to be called with the nv alias" {
|
||||
{ nv var1 } | Should Not Throw
|
||||
{ nv var1 2 } | Should Not Throw
|
||||
nv var1
|
||||
$var1 | Should BeNullOrEmpty
|
||||
nv var2 2
|
||||
$var2 | Should Be 2
|
||||
}
|
||||
|
||||
It "Should not be able to set the name of a new variable to that of an old variable within same scope when the Force switch is missing" {
|
||||
@@ -119,9 +120,7 @@ Describe "New-Variable" {
|
||||
It "Should be able to pipe object properties to output using the PassThru switch" {
|
||||
$in = Set-Variable -Name testVar -Value "test" -Description "test description" -PassThru
|
||||
|
||||
$output = $in | Format-List -Property Description | Out-String
|
||||
|
||||
$output.Trim() | Should Be "Description : test description"
|
||||
$in.Description | Should Be "test description"
|
||||
}
|
||||
|
||||
It "Should be able to set the value using the value switch" {
|
||||
@@ -131,80 +130,70 @@ Describe "New-Variable" {
|
||||
}
|
||||
|
||||
Context "Option tests" {
|
||||
BeforeEach {
|
||||
# verify that the test variable doesn't exist
|
||||
!!$var1 | Should Be $false
|
||||
}
|
||||
It "Should be able to use the options switch without error" {
|
||||
{ New-Variable -Name var1 -Value 2 -Option Unspecified } | Should Not Throw
|
||||
}
|
||||
It "Should be able to use the options switch without error" {
|
||||
{ New-Variable -Name var1 -Value 2 -Option Unspecified } | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should default to none as the value for options" {
|
||||
New-Variable -Name var2 -Value 4 -PassThru| Format-List | Out-String | Should Match "Options : None"
|
||||
}
|
||||
It "Should default to none as the value for options" {
|
||||
(new-variable -name var2 -value 4 -passthru).Options | should be "None"
|
||||
}
|
||||
|
||||
It "Should be able to set ReadOnly option" {
|
||||
{ New-Variable -Name var1 -Value 2 -Option ReadOnly } | Should Not Throw
|
||||
}
|
||||
It "Should be able to set ReadOnly option" {
|
||||
{ New-Variable -Name var1 -Value 2 -Option ReadOnly } | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should not be able to change variable created using the ReadOnly option when the Force switch is not used" {
|
||||
New-Variable -Name var1 -Value 1 -Option ReadOnly
|
||||
It "Should not be able to change variable created using the ReadOnly option when the Force switch is not used" {
|
||||
New-Variable -Name var1 -Value 1 -Option ReadOnly
|
||||
|
||||
Set-Variable -Name var1 -Value 2 -ErrorAction SilentlyContinue
|
||||
Set-Variable -Name var1 -Value 2 -ErrorAction SilentlyContinue
|
||||
|
||||
$var1 | Should Not Be 2
|
||||
}
|
||||
$var1 | Should Not Be 2
|
||||
}
|
||||
|
||||
It "Should be able to set a new variable to constant" {
|
||||
{ New-Variable -Name var1 -Option Constant } | Should Not Throw
|
||||
}
|
||||
It "Should be able to set a new variable to constant" {
|
||||
{ New-Variable -Name var1 -Option Constant } | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should not be able to change an existing variable to constant" {
|
||||
New-Variable -Name var1 -Value 1 -PassThru
|
||||
It "Should not be able to change an existing variable to constant" {
|
||||
New-Variable -Name var1 -Value 1 -PassThru
|
||||
|
||||
Set-Variable -Name var1 -Option Constant -ErrorAction SilentlyContinue
|
||||
Set-Variable -Name var1 -Option Constant -ErrorAction SilentlyContinue
|
||||
|
||||
$var1 | Format-List | Out-String | Should Not Match "Options : None"
|
||||
(Get-Variable var1).Options | should be "None"
|
||||
}
|
||||
|
||||
}
|
||||
It "Should not be able to delete a constant variable" {
|
||||
New-Variable -Name var1 -Value 2 -Option Constant
|
||||
|
||||
It "Should not be able to delete a constant variable" {
|
||||
New-Variable -Name var1 -Value 2 -Option Constant
|
||||
Remove-Variable -Name var1 -ErrorAction SilentlyContinue
|
||||
|
||||
Remove-Variable -Name var1 -ErrorAction SilentlyContinue
|
||||
$var1 | Should Be 2
|
||||
}
|
||||
|
||||
!!$var1 | Should Be $true
|
||||
It "Should not be able to change a constant variable" {
|
||||
New-Variable -Name var1 -Value 1 -Option Constant
|
||||
|
||||
$var1 | Should Be 2
|
||||
}
|
||||
Set-Variable -Name var1 -Value 2 -ErrorAction SilentlyContinue
|
||||
|
||||
It "Should not be able to change a constant variable" {
|
||||
New-Variable -Name var1 -Value 1 -Option Constant
|
||||
$var1 | Should Not Be 2
|
||||
}
|
||||
|
||||
Set-Variable -Name var1 -Value 2 -ErrorAction SilentlyContinue
|
||||
It "Should be able to create a variable as private without error" {
|
||||
{ New-Variable -Name var1 -Option Private } | Should Not Throw
|
||||
}
|
||||
|
||||
$var1 | Should Not Be 2
|
||||
}
|
||||
It "Should be able to see the value of a private variable when within scope" {
|
||||
|
||||
It "Should be able to create a variable as private without error" {
|
||||
{ New-Variable -Name var1 -Option Private } | Should Not Throw
|
||||
}
|
||||
New-Variable -Name var1 -Value 100 -Option Private
|
||||
|
||||
It "Should be able to see the value of a private variable when within scope" {
|
||||
$var1 | Should Be 100
|
||||
|
||||
New-Variable -Name var1 -Value 100 -Option Private
|
||||
}
|
||||
|
||||
$var1 | Should Be 100
|
||||
|
||||
}
|
||||
|
||||
It "Should not be able to see the value of a private variable when out of scope" {
|
||||
{
|
||||
New-Variable -Name var1 -Value 1 -Option Private
|
||||
}
|
||||
|
||||
$var1 | Should Be # Nothing, since it's not defined in scope
|
||||
It "Should not be able to see the value of a private variable when out of scope" {
|
||||
{New-Variable -Name var1 -Value 1 -Option Private}| Should Not Throw
|
||||
|
||||
$var1 | Should BeNullOrEmpty
|
||||
}
|
||||
|
||||
It "Should be able to use the AllScope switch without error" {
|
||||
@@ -213,30 +202,46 @@ It "Should not be able to see the value of a private variable when out of scope"
|
||||
|
||||
It "Should be able to see variable created using the AllScope switch in a child scope" {
|
||||
New-Variable -Name var1 -Value 1 -Option AllScope
|
||||
function myFunction {
|
||||
if ( $var1 -eq 1 ) {
|
||||
$var1 = 2
|
||||
}
|
||||
}
|
||||
myFunction
|
||||
|
||||
$var1 | Should Be 2
|
||||
|
||||
&{ $var1 = 2 }
|
||||
$var1 | Should Be 2
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Context "Scope Tests" {
|
||||
It "Should be able to create a global scope variable using the global switch" {
|
||||
{ New-Variable globalVar -Value 1 -Scope global -Force } | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should be able to create a local scope variable using the local switch" {
|
||||
{ New-Variable localVar -Value 1 -Scope local -Force } | Should Not Throw
|
||||
}
|
||||
|
||||
It "Should be able to create a script scope variable using the script switch" {
|
||||
{ New-Variable scriptVar -Value 1 -Scope script -Force } | Should Not Throw
|
||||
}
|
||||
BeforeAll {
|
||||
if ( get-variable -scope global -name globalVar1 -ea SilentlyContinue )
|
||||
{
|
||||
Remove-Variable -scope global -name globalVar1
|
||||
}
|
||||
if ( get-variable -scope script -name scriptvar -ea SilentlyContinue )
|
||||
{
|
||||
remove-variable -scope script -name scriptvar
|
||||
}
|
||||
# no check for local scope variable as that scope is created with test invocation
|
||||
}
|
||||
AfterAll {
|
||||
if ( get-variable -scope global -name globalVar1 )
|
||||
{
|
||||
Remove-Variable -scope global -name globalVar1
|
||||
}
|
||||
if ( get-variable -scope script -name scriptvar )
|
||||
{
|
||||
remove-variable -scope script -name scriptvar
|
||||
}
|
||||
}
|
||||
It "Should be able to create a global scope variable using the global switch" {
|
||||
new-variable -Scope global -name globalvar1 -value 1
|
||||
get-variable -Scope global -name globalVar1 -ValueOnly | Should be 1
|
||||
}
|
||||
It "Should be able to create a local scope variable using the local switch" {
|
||||
Get-Variable -scope local -name localvar -ValueOnly -ea silentlycontinue | should BeNullOrEmpty
|
||||
New-Variable -Scope local -Name localVar -value 10
|
||||
get-variable -scope local -name localvar -ValueOnly | Should be 10
|
||||
}
|
||||
It "Should be able to create a script scope variable using the script switch" {
|
||||
new-variable -scope script -name scriptvar -value 100
|
||||
get-variable -scope script -name scriptvar -ValueOnly | should be 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user