summary refs log tree commit diff stats
path: root/tests/gc/gcleak.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gc/gcleak.nim')
-rw-r--r--tests/gc/gcleak.nim29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/gc/gcleak.nim b/tests/gc/gcleak.nim
new file mode 100644
index 000000000..0bf993968
--- /dev/null
+++ b/tests/gc/gcleak.nim
@@ -0,0 +1,29 @@
+discard """
+  outputsub: "no leak: "
+"""
+
+when defined(GC_setMaxPause):
+  GC_setMaxPause 2_000
+
+type
+  TTestObj = object of RootObj
+    x: string
+
+proc makeObj(): TTestObj =
+  result.x = "Hello"
+
+const numIter =
+  # see tests/gc/gcleak2.nim
+  when defined(boehmgc):
+    1_000
+  elif defined(gcMarkAndSweep): 10_000
+  else: 100_000
+
+for i in 1 .. numIter:
+  when defined(gcMarkAndSweep) or defined(boehmgc):
+    GC_fullcollect()
+  var obj = makeObj()
+  if getOccupiedMem() > 300_000: quit("still a leak!")
+#  echo GC_getstatistics()
+
+echo "no leak: ", getOccupiedMem()