mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
* stdlib tests now check refc too * typo * fixes line numbers * disable cpp * do not touch
45 lines
1.1 KiB
Nim
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)
|