Skip to content

Commit 26936b2

Browse files
Copilotalerickson
andcommitted
Add warning when uninstall fails due to version/prerelease filters
Co-authored-by: alerickson <[email protected]>
1 parent 8878f22 commit 26936b2

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

src/code/UninstallPSResource.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,23 @@ private bool UninstallPkgHelper(out List<ErrorRecord> errRecords)
258258
}
259259
}
260260

261+
// If we had packages but didn't uninstall any (e.g., due to version/prerelease filters), write a warning
262+
if (currentUninstalledDirCount == 0 && totalDirs > 0)
263+
{
264+
string warningMessage = Prerelease
265+
? $"No prerelease versions of '{String.Join(", ", Name)}' were found to uninstall."
266+
: $"No packages matching the specified criteria for '{String.Join(", ", Name)}' were found to uninstall.";
267+
268+
if (Version != null && !Version.Trim().Equals("*"))
269+
{
270+
warningMessage = Prerelease
271+
? $"No prerelease versions of '{String.Join(", ", Name)}' matching version '{Version}' were found to uninstall."
272+
: $"No packages of '{String.Join(", ", Name)}' matching version '{Version}' were found to uninstall.";
273+
}
274+
275+
WriteWarning(warningMessage);
276+
}
277+
261278
return successfullyUninstalled;
262279
}
263280

test/UninstallPSResourceTests/UninstallPSResource.Tests.ps1

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,23 @@ Describe 'Test Uninstall-PSResource for Modules' -tags 'CI' {
235235
$stableVersionPkgs.Count | Should -Be 2
236236
}
237237

238+
It "Write warning when using -Prerelease flag with only stable versions installed" {
239+
# Install a stable version
240+
Install-PSResource -Name $testModuleName -Version "5.0.0.0" -Repository $PSGalleryName -TrustRepository
241+
242+
# Try to uninstall with -Prerelease flag, should show warning
243+
Uninstall-PSResource -Name $testModuleName -Prerelease -SkipDependencyCheck -WarningVariable warn -WarningAction SilentlyContinue
244+
245+
# Module should still be present
246+
$res = Get-InstalledPSResource -Name $testModuleName -Version "5.0.0.0"
247+
$res.Name | Should -Be $testModuleName
248+
$res.Version | Should -Be "5.0.0.0"
249+
250+
# Warning should have been written
251+
$warn.Count | Should -Be 1
252+
$warn[0] | Should -Match "No prerelease versions"
253+
}
254+
238255
It "Uninstall module using -WhatIf, should not uninstall the module" {
239256
Start-Transcript .\testUninstallWhatIf.txt
240257
Uninstall-PSResource -Name $testModuleName -WhatIf -SkipDependencyCheck

0 commit comments

Comments
 (0)