From 8dbf79931510cc9b5185b94f645c5345a811f2c6 Mon Sep 17 00:00:00 2001 From: thomas Date: Thu, 7 Feb 2019 22:40:11 +0100 Subject: [PATCH 1/3] Fix NestedModules cleared when running Update-ModuleManifest --- Tests/PSGetUpdateModuleManifest.Tests.ps1 | 27 ++++++++++++++++--- .../psgetfunctions/Update-ModuleManifest.ps1 | 18 ++++++++----- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/Tests/PSGetUpdateModuleManifest.Tests.ps1 b/Tests/PSGetUpdateModuleManifest.Tests.ps1 index 341714ae..fac8fc19 100644 --- a/Tests/PSGetUpdateModuleManifest.Tests.ps1 +++ b/Tests/PSGetUpdateModuleManifest.Tests.ps1 @@ -118,7 +118,7 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' { # Action: # Update-ModuleManifest -Path [Path] # - # Expected Result: The updated manifest should have the same proerty values. + # Expected Result: The updated manifest should have the same property values. # It UpdateModuleManifestWithNoAdditionalParameters2 { @@ -144,6 +144,29 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' { AssertEquals $updatedModuleInfo.CompanyName $editedModuleInfo.CompanyName "Company name should be $expectedCompanyName" AssertEquals $($text.length) $expectedLength "Number of wildcards should be $expectedLength" + } + + # Purpose: Validate Update-ModuleManifest will not reset original parameter values to default values + # + # Action: + # Update-ModuleManifest -Path [Path] + # + # Expected Result: The updated manifest should have the same property values. + # + It UpdateModuleManifestWithNoAdditionalParameters3 { + + New-ModuleManifest -Path $script:testManifestPath -ModuleVersion '1.0' -FunctionsToExport 'function1' -NestedModules 'module1' -AliasesToExport 'alias1' + Update-ModuleManifest -Path $script:testManifestPath + + Import-LocalizedData -BindingVariable ModuleManifestHashTable ` + -FileName (Microsoft.PowerShell.Management\Split-Path $script:testManifestPath -Leaf) ` + -BaseDirectory (Microsoft.PowerShell.Management\Split-Path $script:testManifestPath -Parent) ` + -ErrorAction SilentlyContinue ` + -WarningAction SilentlyContinue + + AssertEquals $ModuleManifestHashTable.FunctionsToExport 'function1' "FunctionsToExport should be 'function1'" + AssertEquals $ModuleManifestHashTable.NestedModules 'module1' "NestedModules should be 'module1'" + AssertEquals $ModuleManifestHashTable.AliasesToExport 'alias1' "AliasesToExport should be 'alias1'" } # Purpose: Validate Update-ModuleManifest will keep the original property values for DefaultCommandPrefix, @@ -214,7 +237,6 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' { AssertEquals $updatedModuleInfo.AliasesToExport.Count 0 "AliasesToExport count should be 0" } - # Purpose: Update a module manifest with same parameters # # Action: Update-ModuleManifest -Path [path] -NestedModules -Guid -Author -CompanyName -Copyright -RootModule -ModuleVersion... @@ -652,7 +674,6 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' { } - # Purpose: Validate Update-ModuleManifest will throw errors when there are paths defined in FilePath that are not in the module base # # Action: diff --git a/src/PowerShellGet/public/psgetfunctions/Update-ModuleManifest.ps1 b/src/PowerShellGet/public/psgetfunctions/Update-ModuleManifest.ps1 index 3d395011..3f0d6bfb 100644 --- a/src/PowerShellGet/public/psgetfunctions/Update-ModuleManifest.ps1 +++ b/src/PowerShellGet/public/psgetfunctions/Update-ModuleManifest.ps1 @@ -270,13 +270,9 @@ function Update-ModuleManifest { $params.Add("NestedModules",$NestedModules) } - elseif($moduleInfo.NestedModules) + elseif($ModuleManifestHashTable -and $ModuleManifestHashTable.ContainsKey("NestedModules")) { - #Get the original module info from ManifestHashTab - if($ModuleManifestHashTable -and $ModuleManifestHashTable.ContainsKey("NestedModules")) - { - $params.Add("NestedModules",$ModuleManifestHashtable.NestedModules) - } + $params.Add("NestedModules",$ModuleManifestHashtable.NestedModules) } #Guid is read-only property @@ -519,6 +515,10 @@ function Update-ModuleManifest $params.Add("FunctionsToExport",($moduleInfo.ExportedFunctions.Keys -split ' ')) } } + elseif ($ModuleManifestHashTable -and $ModuleManifestHashTable.ContainsKey("FunctionsToExport")) + { + $params.Add("FunctionsToExport", $ModuleManifestHashTable['FunctionsToExport']) + } if($AliasesToExport -or $AliasesToExport -is [array]) { @@ -545,6 +545,10 @@ function Update-ModuleManifest $params.Add("AliasesToExport",($moduleInfo.ExportedAliases.Keys -split ' ')) } } + elseif ($ModuleManifestHashTable -and $ModuleManifestHashTable.ContainsKey("AliasesToExport")) + { + $params.Add("AliasesToExport", $ModuleManifestHashTable['AliasesToExport']) + } if($VariablesToExport) { @@ -585,7 +589,7 @@ function Update-ModuleManifest ForEach-Object { $parts = $_ -split '-', 2; $parts[-1] = $parts[-1] -replace "^$($moduleInfo.Prefix)"; $parts -join '-' } $params.Add("CmdletsToExport", $originalCmdlets) } - else + else { $params.Add("CmdletsToExport",($moduleInfo.ExportedCmdlets.Keys -split ' ')) } From 06a61055e1888951b286d4e18989147bcb443312 Mon Sep 17 00:00:00 2001 From: thomas Date: Thu, 7 Feb 2019 22:32:07 +0100 Subject: [PATCH 2/3] Fixing test --- Tests/PSGetUpdateModuleManifest.Tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/PSGetUpdateModuleManifest.Tests.ps1 b/Tests/PSGetUpdateModuleManifest.Tests.ps1 index fac8fc19..2059e60d 100644 --- a/Tests/PSGetUpdateModuleManifest.Tests.ps1 +++ b/Tests/PSGetUpdateModuleManifest.Tests.ps1 @@ -155,7 +155,7 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' { # It UpdateModuleManifestWithNoAdditionalParameters3 { - New-ModuleManifest -Path $script:testManifestPath -ModuleVersion '1.0' -FunctionsToExport 'function1' -NestedModules 'module1' -AliasesToExport 'alias1' + New-ModuleManifest -Path $script:testManifestPath -ModuleVersion '1.0' -FunctionsToExport 'function1' -NestedModules 'Microsoft.PowerShell.Management' -AliasesToExport 'alias1' Update-ModuleManifest -Path $script:testManifestPath Import-LocalizedData -BindingVariable ModuleManifestHashTable ` From b65749a106fe2ef304255825c0997a257764086f Mon Sep 17 00:00:00 2001 From: thomas Date: Fri, 8 Feb 2019 00:27:22 +0100 Subject: [PATCH 3/3] Fixing tests --- Tests/PSGetUpdateModuleManifest.Tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/PSGetUpdateModuleManifest.Tests.ps1 b/Tests/PSGetUpdateModuleManifest.Tests.ps1 index 2059e60d..f27ecad0 100644 --- a/Tests/PSGetUpdateModuleManifest.Tests.ps1 +++ b/Tests/PSGetUpdateModuleManifest.Tests.ps1 @@ -165,7 +165,7 @@ Describe PowerShell.PSGet.UpdateModuleManifest -Tags 'BVT','InnerLoop' { -WarningAction SilentlyContinue AssertEquals $ModuleManifestHashTable.FunctionsToExport 'function1' "FunctionsToExport should be 'function1'" - AssertEquals $ModuleManifestHashTable.NestedModules 'module1' "NestedModules should be 'module1'" + AssertEquals $ModuleManifestHashTable.NestedModules 'Microsoft.PowerShell.Management' "NestedModules should be 'module1'" AssertEquals $ModuleManifestHashTable.AliasesToExport 'alias1' "AliasesToExport should be 'alias1'" }