/
githubmirror
/
PowerShell
Обзор
Документация
Войти
/
githubmirror
/
PowerShell
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/powershell/Modules/Microsoft.PowerShell.Management/Wait-Process.Tests.ps1
74 строки
3 KB
dwtaber
Wait-Process: add `-Any` and `-PassThru` parameters (#19423)
24 июл 2023, 19:46
Не верифицирован
24 июл 2023, 19:46
3b9e70c
Код
Авторство
О чём код?
# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. Describe "Wait-Process" { BeforeAll { $pingCommandPath = (Get-Command -CommandType Application ping)[0].Definition $startProcessArgs = @{ FilePath = $pingCommandPath PassThru = $true } $nc = $IsWindows ? "-n" : "-c" function longPing { Start-Process @startProcessArgs -ArgumentList "$nc 10 localhost" } function shortPing { Start-Process @startProcessArgs -ArgumentList "$nc 2 localhost" } } BeforeEach { $Processes = @( 1..3 | ForEach-Object { longPing } ) + ($shortPing = shortPing) } AfterEach { Stop-Process -InputObject $Processes } It "Should wait until all processes have exited" { Wait-Process -InputObject $Processes $Processes.Where({$_.HasExited -eq $true}).Count | Should -Be $Processes.Count } It "Should return after all processes have exited, even if some exit before the wait starts." { Wait-UntilTrue -sb { $shortPing.HasExited -eq $true } -IntervalInMilliseconds 100 Wait-Process -InputObject $Processes $Processes.Where({$_.HasExited -eq $true}).Count | Should -Be $Processes.Count } It "Should return immediately if all processes have exited before the wait starts" { Wait-UntilTrue -sb { $Processes.HasExited -NotContains $false } -IntervalInMilliseconds 100 Wait-Process -InputObject $Processes $Processes.Where({$_.HasExited -eq $true}).Count | Should -Be $Processes.Count } It "Should return immediately if at least one process has exited before the wait starts" { Wait-UntilTrue -sb { $shortPing.HasExited -eq $true } -IntervalInMilliseconds 100 Wait-Process -InputObject $Processes -Any $Processes.Where({$_.HasExited -eq $true}).Count | Should -Be 1 $Processes.Where({$_.HasExited -eq $false}).Count | Should -Be ($Processes.Count - 1) } It "Should wait until any one process has exited" { Wait-Process -InputObject $Processes -Any $Processes.Where({$_.HasExited -eq $true}).Count | Should -Be 1 $Processes.Where({$_.HasExited -eq $false}).Count | Should -Be ($Processes.Count - 1) } It "Should passthru all processes when all processes have exited" { $PassThruProcesses = Wait-Process -InputObject $Processes -PassThru $PassThruProcesses.Where({$_.HasExited -eq $true}).Count | Should -Be $Processes.Count } It "Should passthru all processes when any one process has exited" { $PassThruProcesses = Wait-Process -InputObject $Processes -Any -PassThru $PassThruProcesses.Where({$_.HasExited -eq $true}).Count | Should -Be 1 $PassThruProcesses.Where({$_.HasExited -eq $false}).Count | Should -Be ($Processes.Count - 1) } }