From a72d40ef155d761d926d72db923ba210ae389b02 Mon Sep 17 00:00:00 2001 From: Joel Bennett Date: Wed, 18 Dec 2019 14:33:56 -0500 Subject: [PATCH] Fix exporting multiple aliases for a single command --- Source/Public/Build-Module.ps1 | 2 +- Tests/Integration/Source1.Tests.ps1 | 16 ++++++++++++++-- Tests/Integration/Source1/Public/Get-Source.ps1 | 2 +- Tests/Integration/Source1/Public/Set-Source.ps1 | 5 +++++ 4 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 Tests/Integration/Source1/Public/Set-Source.ps1 diff --git a/Source/Public/Build-Module.ps1 b/Source/Public/Build-Module.ps1 index 44c6426..1409e6e 100644 --- a/Source/Public/Build-Module.ps1 +++ b/Source/Public/Build-Module.ps1 @@ -219,7 +219,7 @@ function Build-Module { $ParseResult | MoveUsingStatements -Encoding "$($ModuleInfo.Encoding)" if ($PublicFunctions -and -not $ModuleInfo.IgnoreAliasAttribute) { - if (($AliasesToExport = ($ParseResult | GetCommandAlias)[$PublicFunctions] | Select-Object -Unique)) { + if (($AliasesToExport = ($ParseResult | GetCommandAlias)[$PublicFunctions] | ForEach-Object { $_ } | Select-Object -Unique)) { Update-Metadata -Path $OutputManifest -PropertyName AliasesToExport -Value $AliasesToExport } } diff --git a/Tests/Integration/Source1.Tests.ps1 b/Tests/Integration/Source1.Tests.ps1 index 9b49428..bf81127 100644 --- a/Tests/Integration/Source1.Tests.ps1 +++ b/Tests/Integration/Source1.Tests.ps1 @@ -12,11 +12,11 @@ Describe "Build-Module With Source1" { $Metadata = Import-Metadata $Output.Path It "Should update FunctionsToExport in the manifest" { - $Metadata.FunctionsToExport | Should -Be @("Get-Source") + $Metadata.FunctionsToExport | Should -Be @("Get-Source", "Set-Source") } It "Should update AliasesToExport in the manifest" { - $Metadata.AliasesToExport | Should -Be @("GS") + $Metadata.AliasesToExport -match "GS" | Should -Not -BeNullOrEmpty } It "Should de-dupe and move using statements to the top of the file" { @@ -77,4 +77,16 @@ Describe "Build-Module With Source1" { (Select-String -Pattern "^#\s*using" -Path $Module).Count | Should -Be 2 } } + + Context "Regression test for #84: Multiple Aliases per command will Export" { + $Output = Build-Module $PSScriptRoot\Source1\build.psd1 -Passthru + $Module = [IO.Path]::ChangeExtension($Output.Path, "psm1") + + $Metadata = Import-Metadata $Output.Path + + It "Should update AliasesToExport in the manifest" { + $Metadata.AliasesToExport | Should -Be @("GS","GSou", "SS", "SSou") + } + + } } diff --git a/Tests/Integration/Source1/Public/Get-Source.ps1 b/Tests/Integration/Source1/Public/Get-Source.ps1 index 5e145c6..dd4f19d 100644 --- a/Tests/Integration/Source1/Public/Get-Source.ps1 +++ b/Tests/Integration/Source1/Public/Get-Source.ps1 @@ -2,6 +2,6 @@ using module ModuleBuilder function Get-Source { [CmdletBinding()] - [Alias("gs")] + [Alias("gs","gsou")] param() } diff --git a/Tests/Integration/Source1/Public/Set-Source.ps1 b/Tests/Integration/Source1/Public/Set-Source.ps1 new file mode 100644 index 0000000..6d0fd5c --- /dev/null +++ b/Tests/Integration/Source1/Public/Set-Source.ps1 @@ -0,0 +1,5 @@ +function Set-Source { + [CmdletBinding()] + [Alias("ss", "ssou")] + param() +}