Fix Import-Module to honor 'ScriptsToProcess' when '-Version' is specified (#3897)
This commit is contained in:
parent
924f281c96
commit
28ec9a3511
|
@ -2769,6 +2769,18 @@ namespace Microsoft.PowerShell.Commands
|
|||
|
||||
if (scriptsToProcess != null)
|
||||
{
|
||||
Version savedBaseMinimumVersion = BaseMinimumVersion;
|
||||
Version savedBaseMaximumVersion = BaseMaximumVersion;
|
||||
Version savedBaseRequiredVersion = BaseRequiredVersion;
|
||||
Guid? savedBaseGuid = BaseGuid;
|
||||
|
||||
try
|
||||
{
|
||||
BaseMinimumVersion = null;
|
||||
BaseMaximumVersion = null;
|
||||
BaseRequiredVersion = null;
|
||||
BaseGuid = null;
|
||||
|
||||
foreach (string scriptFile in scriptsToProcess)
|
||||
{
|
||||
bool found = false;
|
||||
|
@ -2802,6 +2814,14 @@ namespace Microsoft.PowerShell.Commands
|
|||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
BaseMinimumVersion = savedBaseMinimumVersion;
|
||||
BaseMaximumVersion = savedBaseMaximumVersion;
|
||||
BaseRequiredVersion = savedBaseRequiredVersion;
|
||||
BaseGuid = savedBaseGuid;
|
||||
}
|
||||
}
|
||||
|
||||
// Process nested modules
|
||||
|
||||
|
|
|
@ -22,3 +22,44 @@
|
|||
(Get-Module -Name $moduleName).Name | Should Be $moduleName
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Import-Module with ScriptsToProcess" -Tags "CI" {
|
||||
|
||||
BeforeAll {
|
||||
$moduleRootPath = Join-Path $TestDrive 'TestModules'
|
||||
New-Item $moduleRootPath -ItemType Directory -Force | Out-Null
|
||||
Push-Location $moduleRootPath
|
||||
|
||||
"1 | Out-File out.txt -Append -NoNewline" | Out-File script1.ps1
|
||||
"2 | Out-File out.txt -Append -NoNewline" | Out-File script2.ps1
|
||||
New-ModuleManifest module1.psd1 -ScriptsToProcess script1.ps1
|
||||
New-ModuleManifest module2.psd1 -ScriptsToProcess script2.ps1 -NestedModules module1.psd1
|
||||
}
|
||||
|
||||
AfterAll {
|
||||
Pop-Location
|
||||
}
|
||||
|
||||
BeforeEach {
|
||||
New-Item out.txt -ItemType File -Force | Out-Null
|
||||
}
|
||||
|
||||
AfterEach {
|
||||
$m = @('module1','module2','script1','script2')
|
||||
remove-module $m -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item out.txt -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
$testCases = @(
|
||||
@{ TestNameSuffix = 'for top-level module'; ipmoParms = @{'Name'='.\module1.psd1'}; Expected = '1' }
|
||||
@{ TestNameSuffix = 'for top-level and nested module'; ipmoParms = @{'Name'='.\module2.psd1'}; Expected = '21' }
|
||||
@{ TestNameSuffix = 'for top-level module when -Version is specified'; ipmoParms = @{'Name'='.\module1.psd1'; 'Version'='1.0'}; Expected = '1' }
|
||||
@{ TestNameSuffix = 'for top-level and nested module when -Version is specified'; ipmoParms = @{'Name'='.\module2.psd1'; 'Version'='1.0'}; Expected = '21' }
|
||||
)
|
||||
|
||||
It "Verify ScriptsToProcess are executed <TestNameSuffix>" -TestCases $testCases {
|
||||
param($TestNameSuffix,$ipmoParms,$Expected)
|
||||
Import-Module @ipmoParms
|
||||
Get-Content out.txt | Should Be $Expected
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue