ffd39b2853
- Fix PSScriptAnalyzer warnings of type PSAvoidUsingCmdletAliases for 'ForEach-Object' (alias is '%' or 'foreach') - Fix PSScriptAnalyzer warnings of type PSAvoidUsingCmdletAliases for 'Where-Object' (alias is '?' or 'where') - Fix PSScriptAnalyzer warnings of type PSAvoidUsingCmdletAliases for 'Select-Object' (alias is 'select') - Fix PSScriptAnalyzer warnings of type PSPossibleIncorrectComparisonWithNull. Essentially, $null has to be on the left-hand side when using it for comparison. - A Test in ParameterBinding.Tests.ps1 needed adapting as this test used to rely on the wrong null comparison - Replace a subset of tests of kind '($object -eq $null) | Should Be $true' with '$object | Should Be $null'
160 lines
5.1 KiB
PowerShell
160 lines
5.1 KiB
PowerShell
Describe "Alias tests" -Tags "CI" {
|
|
|
|
BeforeAll {
|
|
$testPath = Join-Path testdrive:\ ("testAlias\[.test")
|
|
New-Item -ItemType Directory -Path $testPath -Force | Out-Null
|
|
|
|
class TestData
|
|
{
|
|
[string] $testName
|
|
[string] $testFile
|
|
[string] $expectedError
|
|
|
|
TestData($name, $file, $error)
|
|
{
|
|
$this.testName = $name
|
|
$this.testFile = $file
|
|
$this.expectedError = $error
|
|
}
|
|
}
|
|
}
|
|
|
|
Context "Export-Alias literal path" {
|
|
BeforeAll {
|
|
$csvFile = Join-Path $testPath "alias.csv"
|
|
$ps1File = Join-Path $testPath "alias.ps1"
|
|
|
|
$testCases = @()
|
|
$testCases += [TestData]::new("CSV", $csvFile, [NullString]::Value)
|
|
$testCases += [TestData]::new("PS1", $ps1File, [NullString]::Value)
|
|
$testCases += [TestData]::new("Empty string", "", "ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.ExportAliasCommand")
|
|
$testCases += [TestData]::new("Null", [NullString]::Value, "ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ExportAliasCommand")
|
|
$testCases += [TestData]::new("Non filesystem provider", 'env:\alias.ps1', "ReadWriteFileNotFileSystemProvider,Microsoft.PowerShell.Commands.ExportAliasCommand")
|
|
}
|
|
|
|
$testCases | ForEach-Object {
|
|
|
|
It "for $($_.testName)" {
|
|
|
|
$test = $_
|
|
try
|
|
{
|
|
Export-Alias -LiteralPath $test.testFile -ErrorAction SilentlyContinue
|
|
}
|
|
catch
|
|
{
|
|
$exportAliasError = $_
|
|
}
|
|
|
|
if($null -eq $test.expectedError)
|
|
{
|
|
Test-Path -LiteralPath $test.testFile | Should Be $true
|
|
}
|
|
else
|
|
{
|
|
$exportAliasError.FullyqualifiedErrorId | Should Be $test.expectedError
|
|
}
|
|
}
|
|
|
|
AfterEach {
|
|
Remove-Item -LiteralPath $test.testFile -Force -ErrorAction SilentlyContinue
|
|
}
|
|
}
|
|
|
|
It "when file exists with NoClobber" {
|
|
Export-Alias -LiteralPath $csvFile
|
|
|
|
try
|
|
{
|
|
Export-Alias -LiteralPath $csvFile -NoClobber
|
|
}
|
|
catch
|
|
{
|
|
$exportAliasError = $_
|
|
}
|
|
|
|
$exportAliasError.FullyQualifiedErrorId | Should Be "NoClobber,Microsoft.PowerShell.Commands.ExportAliasCommand"
|
|
}
|
|
}
|
|
|
|
Context "Export-All inside a literal path" {
|
|
BeforeEach {
|
|
Push-Location -LiteralPath $testPath
|
|
}
|
|
|
|
It "with a CSV file" {
|
|
Export-Alias "alias.csv"
|
|
Test-Path -LiteralPath (Join-Path $testPath "alias.csv") | Should Be $true
|
|
}
|
|
|
|
It "with NoClobber" {
|
|
$path = Export-Alias alias.csv
|
|
|
|
try
|
|
{
|
|
Export-Alias alias.csv -NoClobber
|
|
}
|
|
catch
|
|
{
|
|
$exportAliasError = $_
|
|
}
|
|
|
|
$exportAliasError.FullyQualifiedErrorId | Should Be "NoClobber,Microsoft.PowerShell.Commands.ExportAliasCommand"
|
|
}
|
|
|
|
AfterEach {
|
|
Pop-Location
|
|
}
|
|
}
|
|
|
|
Context "Import-Alias literal path" {
|
|
|
|
BeforeAll {
|
|
$csvFile = Join-Path $testPath "alias.csv"
|
|
$ps1File = Join-Path $testPath "alias.ps1"
|
|
|
|
$testCases = @()
|
|
$testCases += [TestData]::new("Empty string", "", "ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.ImportAliasCommand")
|
|
$testCases += [TestData]::new("Null", [NullString]::Value, "ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ImportAliasCommand")
|
|
$testCases += [TestData]::new("Non filesystem provider", 'env:\alias.ps1', "NotSupported,Microsoft.PowerShell.Commands.ImportAliasCommand")
|
|
}
|
|
|
|
$testCases | ForEach-Object {
|
|
|
|
It "for $($_.testName)" {
|
|
$test = $_
|
|
|
|
try
|
|
{
|
|
Import-Alias -LiteralPath $test.testFile -ErrorAction SilentlyContinue
|
|
}
|
|
catch
|
|
{
|
|
$exportAliasError = $_
|
|
}
|
|
|
|
$exportAliasError.FullyqualifiedErrorId | Should Be $test.expectedError
|
|
}
|
|
}
|
|
|
|
It "can be done from a CSV file" {
|
|
|
|
# alias file definition content
|
|
$aliasDefinition = @'
|
|
"myuh","update-help","","ReadOnly, AllScope"
|
|
'@
|
|
|
|
$aliasFile = Join-Path $testPath "alias.csv"
|
|
$aliasDefinition | Out-File -LiteralPath $aliasFile
|
|
|
|
Import-Alias -LiteralPath $aliasFile
|
|
|
|
# Verify that the alias was imported
|
|
$definedAlias = Get-Alias myuh
|
|
|
|
$definedAlias | Should Not Be $null
|
|
$definedAlias.Name | Should Be "myuh"
|
|
$definedAlias.Definition | Should Be "update-help"
|
|
}
|
|
}
|
|
}
|