mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
31 lines
859 B
Nim
31 lines
859 B
Nim
discard """
|
|
joinable: false
|
|
"""
|
|
|
|
import os, osproc, strutils
|
|
|
|
const Iterations = 200
|
|
|
|
proc testFdLeak() =
|
|
var count = 0
|
|
let
|
|
test = getAppDir() / "tfdleak"
|
|
exe = test.addFileExt(ExeExt).quoteShell
|
|
options = ["", "-d:nimInheritHandles"]
|
|
for opt in options:
|
|
let
|
|
run = "nim c $1 $2" % [opt, quoteShell test]
|
|
(output, status) = execCmdEx run
|
|
doAssert status == 0, "Test complination failed:\n$1\n$2" % [run, output]
|
|
for i in 1..Iterations:
|
|
let (output, status) = execCmdEx exe
|
|
doAssert status == 0, "Execution of " & exe & " failed"
|
|
if "leaked" in output:
|
|
count.inc
|
|
doAssert count == 0, "Leaked " & $count & " times"
|
|
|
|
when defined(windows):
|
|
# tfdleak was only flaky for windows (and for netbsd, there is still a bug)
|
|
# note that this test is quite slow, 87 sec on windows.
|
|
testFdLeak()
|