Tests/GenXdev.Windows/Start-ProcessElevated.Tests.ps1
|
############################################################################### # Part of PowerShell module : GenXdev.Windows # Original cmdlet filename : Start-ProcessElevated.Tests.ps1 # Original author : René Vaessen / GenXdev # Version : 3.29.2026 ############################################################################### Pester\BeforeAll { } Pester\Describe "Start-ProcessElevated" { Pester\It "Starts a process with elevation" ` -Skip:(-not ($Global:AllowLongRunningTests -eq $true)) { { GenXdev\Start-ProcessElevated ` -FilePath 'cmd.exe' ` -ArgumentList '/c', 'exit', '0' ` -Wait ` -NoNewWindow ` -ErrorAction Stop } | Pester\Should -Not -Throw } Pester\It "Delegates to Start-Process when -Elevated:`$false" ` -Skip:(-not ($Global:AllowLongRunningTests -eq $true)) { { GenXdev\Start-ProcessElevated ` -FilePath 'cmd.exe' ` -ArgumentList '/c', 'exit', '0' ` -Wait ` -NoNewWindow ` -Elevated:$false ` -ErrorAction Stop } | Pester\Should -Not -Throw } Pester\It "Respects -Wait by blocking until process exits" ` -Skip:(-not ($Global:AllowLongRunningTests -eq $true)) { $stopwatch = [System.Diagnostics.Stopwatch]::StartNew() GenXdev\Start-ProcessElevated ` -FilePath 'cmd.exe' ` -ArgumentList '/c', 'timeout', '/t', '1', '/nobreak' ` -Wait ` -NoNewWindow ` -Elevated:$false ` -ErrorAction Stop $stopwatch.Stop() # Should have waited at least ~1 second $stopwatch.Elapsed.TotalSeconds | Pester\Should -BeGreaterThan 0.5 } } |