Files
Nim/tests/stdlib/tosprocterminate.nim
ringabout 4fa86422c0 stdlib tests now check refc too (#21664)
* stdlib tests now check refc too

* typo

* fixes line numbers

* disable cpp

* do not touch
2023-04-21 15:37:58 +02:00

45 lines
1.1 KiB
Nim

discard """
cmd: "nim $target $options -r $file"
targets: "c cpp"
matrix: "--mm:refc; --mm:orc"
"""
import os, osproc, times, std / monotimes
import std/assertions
when defined(windows):
const ProgramWhichDoesNotEnd = "notepad"
elif defined(openbsd):
const ProgramWhichDoesNotEnd = "/bin/cat"
else:
const ProgramWhichDoesNotEnd = "/bin/sh"
echo("starting " & ProgramWhichDoesNotEnd)
var process = startProcess(ProgramWhichDoesNotEnd)
sleep(500)
echo("stopping process")
process.terminate()
var TimeToWait = 5000
while process.running() and TimeToWait > 0:
sleep(100)
TimeToWait = TimeToWait - 100
doAssert not process.running()
echo("stopped process")
process.close()
echo("starting " & ProgramWhichDoesNotEnd)
process = startProcess(ProgramWhichDoesNotEnd)
echo("process should be stopped after 2s")
let start = getMonoTime()
discard process.waitForExit(2000)
let took = getMonoTime() - start
doAssert not process.running()
# some additional time to account for overhead
doAssert took < initDuration(seconds = 3)
echo("stopped process after ", took)