1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- discard """
- cmd: "nim $target $options -r $file"
- targets: "c cpp"
- matrix: "--threads:on; "
- """
- import os, osproc, times, std / monotimes
- 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)
|