mirror of
https://github.com/Raphire/Win11Debloat.git
synced 2026-08-23 08:02:07 +00:00
feat: add timeout for WinGet uninstall to prevent hanging (#731)
This commit is contained in:
@@ -2,7 +2,7 @@ BeforeAll {
|
||||
function Get-TargetUserForAppRemoval { 'AllUsers' }
|
||||
function Get-WingetInstalledApps { param($TimeOut, [switch]$NonBlocking) @() }
|
||||
function Test-AppInWingetList { param($appId, $InstalledList) $false }
|
||||
function Invoke-NonBlocking { param($ScriptBlock, $ArgumentList) }
|
||||
function Invoke-NonBlocking { param($ScriptBlock, $ArgumentList, $TimeoutSeconds) }
|
||||
function Get-UserName { 'Alice' }
|
||||
function Invoke-ForceRemoveEdge {}
|
||||
function Show-MessageBox { 'No' }
|
||||
@@ -109,6 +109,31 @@ Describe 'Remove-WinGetApp' {
|
||||
Should -Invoke Invoke-NonBlocking -Times 1 -Exactly -ParameterFilter { $ArgumentList -eq 'One.App' }
|
||||
Should -Invoke Set-RunOnceWingetTask -Times $Scheduled -Exactly -ParameterFilter { $appId -eq 'One.App' }
|
||||
}
|
||||
|
||||
It 'limits a foreground winget uninstall to two minutes' {
|
||||
Remove-WinGetApp -app 'One.App'
|
||||
Should -Invoke Invoke-NonBlocking -Times 1 -Exactly -ParameterFilter {
|
||||
$ArgumentList -eq 'One.App' -and $TimeoutSeconds -eq 120
|
||||
}
|
||||
}
|
||||
|
||||
It 'passes a specified foreground winget uninstall timeout' {
|
||||
Remove-WinGetApp -app 'One.App' -TimeoutSeconds 30
|
||||
Should -Invoke Invoke-NonBlocking -Times 1 -Exactly -ParameterFilter {
|
||||
$ArgumentList -eq 'One.App' -and $TimeoutSeconds -eq 30
|
||||
}
|
||||
}
|
||||
|
||||
It 'reports a timed-out winget uninstall and continues' {
|
||||
$script:Params = @{ User = 'Alice' }
|
||||
Mock Invoke-NonBlocking { throw 'Operation timed out after 120 seconds' }
|
||||
|
||||
{ Remove-WinGetApp -app 'One.App' } | Should -Not -Throw
|
||||
Should -Invoke Set-RunOnceWingetTask -Times 1 -Exactly
|
||||
Should -Invoke Write-Host -Times 1 -Exactly -ParameterFilter {
|
||||
$Object -like '*did not complete within 120 seconds*' -and $ForegroundColor -eq 'Red'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Describe 'Remove-AppxApp' {
|
||||
|
||||
Reference in New Issue
Block a user