Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

Describe "Basic Function Provider Tests" -Tags "CI" {
BeforeAll {
$existingFunction = "existingFunction"
$nonExistingFunction = "nonExistingFunction"
$text = "Hello World!"
$functionValue = { return $text }
$restoreLocation = Get-Location
Set-Location Function:
}

AfterAll {
Set-Location -Path $restoreLocation
}

Context "Validate Set-Item Cmdlet" {
BeforeEach {
Set-Item $existingFunction -Options "None" -Value $functionValue
}

AfterEach {
Remove-Item $existingFunction -ErrorAction SilentlyContinue -Force
Remove-Item $nonexistingFunction -ErrorAction SilentlyContinue -Force
}

It "Sets the new options in existing function" {
$newOptions = "ReadOnly, AllScope"
(Get-Item $existingFunction).Options | Should -BeExactly "None"
Set-Item $existingFunction -Options $newOptions
(Get-Item $existingFunction).Options | Should -BeExactly $newOptions
}

It "Sets the options and a value of type ScriptBlock for a new function" {
$options = "ReadOnly"
Set-Item $nonExistingFunction -Options $options -Value $functionValue
$getItemResult = Get-Item $nonExistingFunction
$getItemResult.Options | Should -BeExactly $options
$getItemResult.ScriptBlock | Should -BeExactly $functionValue
}

It "Removes existing function if Set-Item has no arguments beside function name" {
Set-Item $existingFunction
$existingFunction | Should -Not -Exist
}

It "Sets a value of type FunctionInfo for a new function" {
Set-Item $nonExistingFunction -Value (Get-Item $existingFunction)
Invoke-Expression $nonExistingFunction | Should -BeExactly $text
}

It "Sets a value of type String for a new function" {
Set-Item $nonExistingFunction -Value "return '$text' "
Invoke-Expression $nonExistingFunction | Should -BeExactly $text
}

It "Throws PSArgumentException when Set-Item is called with incorrect function value" {
{ Set-Item $nonExistingFunction -Value 123 -ErrorAction Stop } | ShouldBeErrorId "Argument,Microsoft.PowerShell.Commands.SetItemCommand"
}
}
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.