File: tfdleak_multiple.nim

package info (click to toggle)
nim 2.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,911,644 kB
  • sloc: sh: 24,603; ansic: 1,761; python: 1,492; makefile: 1,013; sql: 298; asm: 141; xml: 13
file content (31 lines) | stat: -rw-r--r-- 881 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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()