diff options
Diffstat (limited to 'tests/stdlib/tfdleak_multiple.nim')
-rw-r--r-- | tests/stdlib/tfdleak_multiple.nim | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/stdlib/tfdleak_multiple.nim b/tests/stdlib/tfdleak_multiple.nim new file mode 100644 index 000000000..c26681217 --- /dev/null +++ b/tests/stdlib/tfdleak_multiple.nim @@ -0,0 +1,31 @@ +discard """ +joinable: false +""" + +import os, osproc, strutils +import std/assertions + +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() |