Skip to content
This repository was archived by the owner on Jun 13, 2024. It is now read-only.

Commit 8c6ed52

Browse files
pougetatalerickson
pougetat
authored andcommitted
Fix Update-ModuleManifest clears FunctionsToExport, AliasesToExport, NestedModules #373 (#415)
1 parent 73e6f87 commit 8c6ed52

File tree

2 files changed

+35
-10
lines changed

2 files changed

+35
-10
lines changed

Tests/PSGetUpdateModuleManifest.Tests.ps1

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' {
118118
# Action:
119119
# Update-ModuleManifest -Path [Path]
120120
#
121-
# Expected Result: The updated manifest should have the same proerty values.
121+
# Expected Result: The updated manifest should have the same property values.
122122
#
123123
It UpdateModuleManifestWithNoAdditionalParameters2 {
124124

@@ -144,6 +144,29 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' {
144144

145145
AssertEquals $updatedModuleInfo.CompanyName $editedModuleInfo.CompanyName "Company name should be $expectedCompanyName"
146146
AssertEquals $($text.length) $expectedLength "Number of wildcards should be $expectedLength"
147+
}
148+
149+
# Purpose: Validate Update-ModuleManifest will not reset original parameter values to default values
150+
#
151+
# Action:
152+
# Update-ModuleManifest -Path [Path]
153+
#
154+
# Expected Result: The updated manifest should have the same property values.
155+
#
156+
It UpdateModuleManifestWithNoAdditionalParameters3 {
157+
158+
New-ModuleManifest -Path $script:testManifestPath -ModuleVersion '1.0' -FunctionsToExport 'function1' -NestedModules 'Microsoft.PowerShell.Management' -AliasesToExport 'alias1'
159+
Update-ModuleManifest -Path $script:testManifestPath
160+
161+
Import-LocalizedData -BindingVariable ModuleManifestHashTable `
162+
-FileName (Microsoft.PowerShell.Management\Split-Path $script:testManifestPath -Leaf) `
163+
-BaseDirectory (Microsoft.PowerShell.Management\Split-Path $script:testManifestPath -Parent) `
164+
-ErrorAction SilentlyContinue `
165+
-WarningAction SilentlyContinue
166+
167+
AssertEquals $ModuleManifestHashTable.FunctionsToExport 'function1' "FunctionsToExport should be 'function1'"
168+
AssertEquals $ModuleManifestHashTable.NestedModules 'Microsoft.PowerShell.Management' "NestedModules should be 'module1'"
169+
AssertEquals $ModuleManifestHashTable.AliasesToExport 'alias1' "AliasesToExport should be 'alias1'"
147170
}
148171

149172
# Purpose: Validate Update-ModuleManifest will keep the original property values for DefaultCommandPrefix,
@@ -214,7 +237,6 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' {
214237
AssertEquals $updatedModuleInfo.AliasesToExport.Count 0 "AliasesToExport count should be 0"
215238
}
216239

217-
218240
# Purpose: Update a module manifest with same parameters
219241
#
220242
# Action: Update-ModuleManifest -Path [path] -NestedModules -Guid -Author -CompanyName -Copyright -RootModule -ModuleVersion...
@@ -652,7 +674,6 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' {
652674

653675
}
654676

655-
656677
# Purpose: Validate Update-ModuleManifest will throw errors when there are paths defined in FilePath that are not in the module base
657678
#
658679
# Action:

src/PowerShellGet/public/psgetfunctions/Update-ModuleManifest.ps1

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -270,13 +270,9 @@ function Update-ModuleManifest
270270
{
271271
$params.Add("NestedModules",$NestedModules)
272272
}
273-
elseif($moduleInfo.NestedModules)
273+
elseif($ModuleManifestHashTable -and $ModuleManifestHashTable.ContainsKey("NestedModules"))
274274
{
275-
#Get the original module info from ManifestHashTab
276-
if($ModuleManifestHashTable -and $ModuleManifestHashTable.ContainsKey("NestedModules"))
277-
{
278-
$params.Add("NestedModules",$ModuleManifestHashtable.NestedModules)
279-
}
275+
$params.Add("NestedModules",$ModuleManifestHashtable.NestedModules)
280276
}
281277

282278
#Guid is read-only property
@@ -519,6 +515,10 @@ function Update-ModuleManifest
519515
$params.Add("FunctionsToExport",($moduleInfo.ExportedFunctions.Keys -split ' '))
520516
}
521517
}
518+
elseif ($ModuleManifestHashTable -and $ModuleManifestHashTable.ContainsKey("FunctionsToExport"))
519+
{
520+
$params.Add("FunctionsToExport", $ModuleManifestHashTable['FunctionsToExport'])
521+
}
522522

523523
if($AliasesToExport -or $AliasesToExport -is [array])
524524
{
@@ -545,6 +545,10 @@ function Update-ModuleManifest
545545
$params.Add("AliasesToExport",($moduleInfo.ExportedAliases.Keys -split ' '))
546546
}
547547
}
548+
elseif ($ModuleManifestHashTable -and $ModuleManifestHashTable.ContainsKey("AliasesToExport"))
549+
{
550+
$params.Add("AliasesToExport", $ModuleManifestHashTable['AliasesToExport'])
551+
}
548552

549553
if($VariablesToExport)
550554
{
@@ -585,7 +589,7 @@ function Update-ModuleManifest
585589
ForEach-Object { $parts = $_ -split '-', 2; $parts[-1] = $parts[-1] -replace "^$($moduleInfo.Prefix)"; $parts -join '-' }
586590
$params.Add("CmdletsToExport", $originalCmdlets)
587591
}
588-
else
592+
else
589593
{
590594
$params.Add("CmdletsToExport",($moduleInfo.ExportedCmdlets.Keys -split ' '))
591595
}

0 commit comments

Comments
 (0)