Skip to content

Commit 0424405

Browse files
committed
Add tests for Save-PSResource and Install-PSResource
1 parent ec6480f commit 0424405

3 files changed

Lines changed: 39 additions & 12 deletions

File tree

src/code/InstallHelper.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1632,21 +1632,24 @@ private bool RetrieveExternalModuleDependenciesForModule(string pkgName, Hashtab
16321632
Hashtable privateData = moduleMetadata.ContainsKey("PrivateData") ? moduleMetadata["PrivateData"] as Hashtable : new Hashtable(StringComparer.InvariantCultureIgnoreCase);
16331633
Hashtable psData = privateData.ContainsKey("PSData") ? privateData["PSData"] as Hashtable : new Hashtable(StringComparer.InvariantCultureIgnoreCase);
16341634
object[] externalModDepObjects = psData.ContainsKey("ExternalModuleDependencies") ? psData["ExternalModuleDependencies"] as object[] : new object[0];
1635-
foreach (var dep in externalModDepObjects)
1635+
if (externalModDepObjects != null)
16361636
{
1637-
string dependencyName = dep as string;
1638-
if (dependencyName.Contains("="))
1637+
foreach (var dep in externalModDepObjects)
16391638
{
1640-
error = new ErrorRecord(
1641-
new ArgumentException($"Package '{pkgName}' could not be installed: ExternalModuleDependencies should only contain module names, not other metadata. Invalid entry: '{dependencyName}'"),
1642-
"ExternalModuleDependencyInvalidEntry",
1643-
ErrorCategory.ReadError,
1644-
_cmdletPassedIn);
1639+
string dependencyName = dep as string;
1640+
if (dependencyName.Contains("="))
1641+
{
1642+
error = new ErrorRecord(
1643+
new ArgumentException($"Package '{pkgName}' could not be installed: ExternalModuleDependencies should only contain module names, not other metadata. Invalid entry: '{dependencyName}'"),
1644+
"ExternalModuleDependencyInvalidEntry",
1645+
ErrorCategory.ReadError,
1646+
_cmdletPassedIn);
16451647

1646-
return false;
1647-
}
1648+
return false;
1649+
}
16481650

1649-
externalModuleDependenciesForPkg.Add(dependencyName);
1651+
externalModuleDependenciesForPkg.Add(dependencyName);
1652+
}
16501653
}
16511654

16521655
externalModuleDependencies = externalModuleDependenciesForPkg.ToArray();

test/InstallPSResourceTests/InstallPSResourceV2Server.Tests.ps1

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,15 @@ Describe 'Test Install-PSResource for V2 Server scenarios' -tags 'CI' {
646646
$depRes = Get-InstalledPSResource $depPkgName1, $depPkgName2
647647
$depRes.Name | Should -Contain $depPkgName1
648648
$depRes.Name | Should -Contain $depPkgName2
649-
}
649+
}
650+
651+
It "Install resource and dependency, while skipping dependency that is listed as external module dependency" {
652+
$testParentModule = "test_module_ext_dep"
653+
$requiredDependency = "test_module10"
654+
$res = Install-PSresource -Name "test_module_ext_dep" -Repository $PSGalleryName -TrustRepository -PassThru
655+
$res.Name | Should -Contain $testParentModule
656+
$res.Name | Should -Contain $requiredDependency
657+
}
650658
}
651659

652660
Describe 'Test Install-PSResource for V2 Server scenarios' -tags 'ManualValidationOnly' {

test/SavePSResourceTests/SavePSResourceV2.Tests.ps1

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,4 +214,20 @@ Describe 'Test HTTP Save-PSResource for V2 Server Protocol' -tags 'CI' {
214214
$err.Count | Should -BeGreaterThan 0
215215
$err[0].FullyQualifiedErrorId | Should -BeExactly 'ErrorFilteringNamesForUnsupportedWildcards,Microsoft.PowerShell.PSResourceGet.Cmdlets.SavePSResource'
216216
}
217+
218+
It "Save resource and dependency, while skipping dependency that is listed as external module dependency" {
219+
$testParentModule = "test_module_ext_dep"
220+
$requiredDependency = "test_module10"
221+
$res = Save-PSresource -Name "test_module_ext_dep" -Repository $PSGalleryName -Path $SaveDir -TrustRepository -PassThru
222+
$res.Name | Should -Contain $testParentModule
223+
$res.Name | Should -Contain $requiredDependency
224+
}
225+
226+
It "Save resource and dependency, as .nupkg, while skipping dependency that is listed as external module dependency" {
227+
$testParentModule = "test_module_ext_dep"
228+
$requiredDependency = "test_module10"
229+
$res = Save-PSresource -Name "test_module_ext_dep" -Repository $PSGalleryName -AsNupkg -Path $SaveDir -TrustRepository -PassThru
230+
$res.Name | Should -Contain $testParentModule
231+
$res.Name | Should -Contain $requiredDependency
232+
}
217233
}

0 commit comments

Comments
 (0)