Files
PowerShell/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Alias.Tests.ps1
T
Steve Lee c1c5344a88 Update copyright and license headers (#6134)
Based on standard practices, we need to have a copyright and license notice at the top of each source file. Removed existing copyrights and updated/added copyright notices for .h, .cpp, .cs, .ps1, and .psm1 files.

Updated module manifests for consistency to have Author = "PowerShell" and Company = "Microsoft Corporation". Removed multiple line breaks.

Separate PR coming to update contribution document for new source files: #6140

Manually reviewed each change.

Fix #6073
2018-02-13 09:23:53 -08:00

249 lines
9.0 KiB
PowerShell

# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
Describe "Get-Alias DRT Unit Tests" -Tags "CI" {
It "Get-Alias Bogus Scope Name should throw PSArgumentException"{
try {
Get-Alias -Name "ABCD" -Scope "bogus"
Throw "Execution OK"
}
catch {
$_.FullyQualifiedErrorId | Should be "Argument,Microsoft.PowerShell.Commands.GetAliasCommand"
}
}
It "Get-Alias OutOfRange Scope"{
try {
Get-Alias -Name "ABCD" -Scope "99999"
Throw "Execution OK"
}
catch {
$_.FullyQualifiedErrorId | Should be "ArgumentOutOfRange,Microsoft.PowerShell.Commands.GetAliasCommand"
}
}
It "Get-Alias Named Single Valid"{
Set-Alias -Name ABCD -Value "foo"
$result=Get-Alias -Name ABCD
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "foo"
$result.Description| Should Be ""
$result.Options| Should Be "None"
}
It "Get-Alias Positional Single Valid"{
Set-Alias -Name ABCD -Value "foo"
$result=Get-Alias ABCD
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "foo"
$result.Description| Should Be ""
$result.Options| Should Be "None"
}
It "Get-Alias Named Multiple Valid"{
Set-Alias -Name ABCD -Value "foo"
Set-Alias -Name AEFG -Value "bar"
$result=Get-Alias -Name ABCD,AEFG
$result[0].Name| Should Be "ABCD"
$result[0].Definition| Should Be "foo"
$result[0].Description| Should Be ""
$result[0].Options| Should Be "None"
$result[1].Name| Should Be "AEFG"
$result[1].Definition| Should Be "bar"
$result[1].Description| Should Be ""
$result[1].Options| Should Be "None"
}
It "Get-Alias Named Wildcard Valid"{
Set-Alias -Name ABCD -Value "foo"
Set-Alias -Name ABCG -Value "bar"
$result=Get-Alias -Name ABC*
$result[0].Name| Should Be "ABCD"
$result[0].Definition| Should Be "foo"
$result[0].Description| Should Be ""
$result[0].Options| Should Be "None"
$result[1].Name| Should Be "ABCG"
$result[1].Definition| Should Be "bar"
$result[1].Description| Should Be ""
$result[1].Options| Should Be "None"
}
It "Get-Alias Positional Wildcard Valid"{
Set-Alias -Name ABCD -Value "foo"
Set-Alias -Name ABCG -Value "bar"
$result=Get-Alias ABC*
$result[0].Name| Should Be "ABCD"
$result[0].Definition| Should Be "foo"
$result[0].Description| Should Be ""
$result[0].Options| Should Be "None"
$result[1].Name| Should Be "ABCG"
$result[1].Definition| Should Be "bar"
$result[1].Description| Should Be ""
$result[1].Options| Should Be "None"
}
It "Get-Alias Named Wildcard And Exclude Valid"{
Set-Alias -Name ABCD -Value "foo"
Set-Alias -Name ABCG -Value "bar"
$result=Get-Alias -Name ABC* -Exclude "*BCG"
$result[0].Name| Should Be "ABCD"
$result[0].Definition| Should Be "foo"
$result[0].Description| Should Be ""
$result[0].Options| Should Be "None"
}
It "Get-Alias Scope Valid"{
Set-Alias -Name ABCD -Value "foo"
$result=Get-Alias -Name ABCD
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "foo"
$result.Description| Should Be ""
$result.Options| Should Be "None"
Set-Alias -Name ABCD -Value "localfoo" -scope local
$result=Get-Alias -Name ABCD -scope local
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "localfoo"
$result.Description| Should Be ""
$result.Options| Should Be "None"
Set-Alias -Name ABCD -Value "globalfoo" -scope global
Set-Alias -Name ABCD -Value "scriptfoo" -scope "script"
Set-Alias -Name ABCD -Value "foo0" -scope "0"
Set-Alias -Name ABCD -Value "foo1" -scope "1"
$result=Get-Alias -Name ABCD
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "foo0"
$result.Description| Should Be ""
$result.Options| Should Be "None"
$result=Get-Alias -Name ABCD -scope local
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "foo0"
$result.Description| Should Be ""
$result.Options| Should Be "None"
$result=Get-Alias -Name ABCD -scope global
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "globalfoo"
$result.Description| Should Be ""
$result.Options| Should Be "None"
$result=Get-Alias -Name ABCD -scope "script"
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "scriptfoo"
$result.Description| Should Be ""
$result.Options| Should Be "None"
$result=Get-Alias -Name ABCD -scope "0"
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "foo0"
$result.Description| Should Be ""
$result.Options| Should Be "None"
$result=Get-Alias -Name ABCD -scope "1"
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "foo1"
$result.Description| Should Be ""
$result.Options| Should Be "None"
}
It "Get-Alias Expose Bug 1065828, BugId:905235"{
try {
Get-Alias -Name "ABCD" -Scope "100"
Throw "Execution OK"
}
catch {
$_.FullyQualifiedErrorId | Should be "ArgumentOutOfRange,Microsoft.PowerShell.Commands.GetAliasCommand"
}
}
It "Get-Alias Zero Scope Valid"{
Set-Alias -Name ABCD -Value "foo"
$result=Get-Alias -Name ABCD
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "foo"
$result.Description| Should Be ""
$result.Options| Should Be "None"
$result=Get-Alias -Name ABCD -scope "0"
$result.Name| Should Be "ABCD"
$result.Definition| Should Be "foo"
$result.Description| Should Be ""
$result.Options| Should Be "None"
}
It "Test get-alias with Definition parameter" {
$returnObject = Get-Alias -Definition Get-Command
For($i = 0; $i -lt $returnObject.Length;$i++)
{
$returnObject[$i] | Should Not BeNullOrEmpty
$returnObject[$i].CommandType | Should Be 'Alias'
$returnObject[$i].Definition | Should Be 'Get-Command'
}
}
}
Describe "Get-Alias" -Tags "CI" {
It "Should have a return type of System.Array when gal returns more than one object" {
$val1=(Get-Alias a*)
$val2=(Get-Alias c*)
$i=0
$val1 | Should Not BeNullOrEmpty
$val2 | Should Not BeNullOrEmpty
$val1 | ForEach-Object{ $i++};
if($i -lt 2) {
$val1 | Should BeOfType "System.Management.Automation.CommandInfo"
}
else
{
,$val1 | Should BeOfType "System.Array"
}
$val2 | ForEach-Object{ $i++};
if($i -lt 2) {
$val2 | Should BeOfType "System.Management.Automation.CommandInfo"
}
else
{
,$val2 | Should BeOfType "System.Array"
}
}
It "should return an array of objects" {
$val = Get-Alias a*
$alias = gal a*
$val.Count | Should Be $alias.Count
for ($i=0; $i -lt $val.Count;$i++)
{
$val[$i].CommandType | Should Be $alias[$i].CommandType
$val[$i].Name | Should Be $alias[$i].Name
$val[$i].ModuleName | Should Be $alias[$i].ModuleName
}
}
}
Describe "Get-Alias null tests" -Tags "CI" {
$testCases =
@{ data = $null; value = 'null' },
@{ data = [String]::Empty; value = 'empty string' }
Context 'Check null or empty value to the -Name parameter' {
It 'Should throw if <value> is passed to -Name parameter' -TestCases $testCases {
param($data)
try
{
Get-Alias -Name $data
throw "No Exception!"
}
catch { $_.FullyQualifiedErrorId | Should Be 'ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetAliasCommand' }
}
}
Context 'Check null or empty value to the -Name parameter via pipeline' {
It 'Should throw if <value> is passed through pipeline to -Name parameter' -TestCases $testCases {
param($data)
try
{
$data | Get-Alias -ErrorAction Stop
throw "No Exception!"
}
catch { $_.FullyQualifiedErrorId | Should Be 'ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetAliasCommand' }
}
}
}