63 lines
1.1 KiB
V
63 lines
1.1 KiB
V
|
import os
|
||
|
import time
|
||
|
|
||
|
fn test_getpid() {
|
||
|
pid := os.getpid()
|
||
|
eprintln('current pid: $pid')
|
||
|
assert pid != 0
|
||
|
}
|
||
|
|
||
|
fn test_run() {
|
||
|
if os.user_os() == 'windows' {
|
||
|
return
|
||
|
}
|
||
|
//
|
||
|
mut p := os.new_process('/bin/sleep')
|
||
|
p.set_args(['0.2'])
|
||
|
p.run()
|
||
|
assert p.status == .running
|
||
|
assert p.pid > 0
|
||
|
assert p.pid != os.getpid()
|
||
|
mut i := 0
|
||
|
for {
|
||
|
if !p.is_alive() {
|
||
|
break
|
||
|
}
|
||
|
os.system('ps -opid= -oppid= -ouser= -onice= -of= -ovsz= -orss= -otime= -oargs= -p $p.pid')
|
||
|
time.sleep_ms(50)
|
||
|
i++
|
||
|
}
|
||
|
p.wait()
|
||
|
assert p.code == 0
|
||
|
assert p.status == .exited
|
||
|
//
|
||
|
eprintln('polling iterations: $i')
|
||
|
assert i < 20
|
||
|
}
|
||
|
|
||
|
fn test_wait() {
|
||
|
if os.user_os() == 'windows' {
|
||
|
return
|
||
|
}
|
||
|
mut p := os.new_process('/bin/date')
|
||
|
p.wait()
|
||
|
assert p.pid != os.getpid()
|
||
|
assert p.code == 0
|
||
|
assert p.status == .exited
|
||
|
}
|
||
|
|
||
|
fn test_slurping_output() {
|
||
|
if os.user_os() == 'windows' {
|
||
|
return
|
||
|
}
|
||
|
mut p := os.new_process('/bin/date')
|
||
|
p.set_redirect_stdio()
|
||
|
p.wait()
|
||
|
assert p.code == 0
|
||
|
assert p.status == .exited
|
||
|
output := p.stdout_slurp().trim_space()
|
||
|
errors := p.stderr_slurp().trim_space()
|
||
|
eprintln('p output: "$output"')
|
||
|
eprintln('p errors: "$errors"')
|
||
|
}
|