diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/gc/cycleleak.nim | 26 | ||||
-rwxr-xr-x | tests/gc/gcleak.nim | 4 | ||||
-rwxr-xr-x | tests/gc/gcleak2.nim | 4 | ||||
-rw-r--r-- | tests/gc/weakrefs.nim | 2 | ||||
-rwxr-xr-x | tests/reject/trecinca.nim | 2 | ||||
-rwxr-xr-x | tests/reject/trecincb.nim | 2 | ||||
-rw-r--r-- | tests/specials.nim | 4 |
7 files changed, 34 insertions, 10 deletions
diff --git a/tests/gc/cycleleak.nim b/tests/gc/cycleleak.nim index 0a0f2c540..9f5c30ebd 100644 --- a/tests/gc/cycleleak.nim +++ b/tests/gc/cycleleak.nim @@ -5,38 +5,52 @@ discard """ type Module = object nodes*: seq[PNode] + id: int PModule = ref Module Node = object owner*: PModule data*: array[0..200, char] # some fat to drain memory faster + id: int PNode = ref Node +var + gid: int + +when false: + proc finalizeNode(x: PNode) = + echo "node id: ", x.id + proc finalizeModule(x: PModule) = + echo "module id: ", x.id + proc newNode(owner: PModule): PNode = new(result) result.owner = owner + inc gid + result.id = gid proc compileModule: PModule = new(result) result.nodes = @[] for i in 0..100: result.nodes.add newNode(result) + inc gid + result.id = gid var gModuleCache: PModule proc loop = - for i in 0..10000: + for i in 0..1000: gModuleCache = compileModule() gModuleCache = nil GC_fullCollect() - if getOccupiedMem() > 300_000: - echo "still a leak! ", getOccupiedMem() - quit(1) - else: - echo "no leak: ", getOccupiedMem() + if getOccupiedMem() > 9_000_000: + echo "still a leak! ", getOccupiedMem() + quit(1) + echo "no leak: ", getOccupiedMem() loop() diff --git a/tests/gc/gcleak.nim b/tests/gc/gcleak.nim index c40c6b3b5..4e47db609 100755 --- a/tests/gc/gcleak.nim +++ b/tests/gc/gcleak.nim @@ -12,7 +12,9 @@ type proc MakeObj(): TTestObj = result.x = "Hello" -for i in 1 .. 100_000_000: +for i in 1 .. 1_000_000: + when defined(gcMarkAndSweep): + GC_fullcollect() var obj = MakeObj() if getOccupiedMem() > 300_000: quit("still a leak!") # echo GC_getstatistics() diff --git a/tests/gc/gcleak2.nim b/tests/gc/gcleak2.nim index a50541fbc..41d149bed 100755 --- a/tests/gc/gcleak2.nim +++ b/tests/gc/gcleak2.nim @@ -15,7 +15,9 @@ proc MakeObj(): TTestObj = result.s = @[1,2,3] proc inProc() = - for i in 1 .. 100_000_000: + for i in 1 .. 1_000_000: + when defined(gcMarkAndSweep): + GC_fullcollect() var obj: TTestObj obj = MakeObj() if getOccupiedMem() > 300_000: quit("still a leak!") diff --git a/tests/gc/weakrefs.nim b/tests/gc/weakrefs.nim index 3b12d7998..0a6d4b873 100644 --- a/tests/gc/weakrefs.nim +++ b/tests/gc/weakrefs.nim @@ -40,6 +40,8 @@ proc main = for i in 0 .. s.high: s[i] = register(create()) # test that we have at least 80% unreachable weak objects by now: + when defined(gcMarkAndSweep): + GC_fullcollect() var unreachable = 0 for i in 0 .. s.high: if access(s[i]) == nil: inc unreachable diff --git a/tests/reject/trecinca.nim b/tests/reject/trecinca.nim index cf2f7df0c..bedea8d7e 100755 --- a/tests/reject/trecinca.nim +++ b/tests/reject/trecinca.nim @@ -1,5 +1,5 @@ discard """ - file: "trecincb.nim" + file: "tests/reject/trecincb.nim" line: 9 errormsg: "recursive dependency: 'trecincb.nim'" """ diff --git a/tests/reject/trecincb.nim b/tests/reject/trecincb.nim index eb0f72db0..9dd7d51de 100755 --- a/tests/reject/trecincb.nim +++ b/tests/reject/trecincb.nim @@ -1,7 +1,7 @@ discard """ file: "trecincb.nim" line: 9 - errormsg: "recursive dependency: 'trecincb.nim'" + errormsg: "recursive dependency: 'tests/reject/trecincb.nim'" """ # Test recursive includes diff --git a/tests/specials.nim b/tests/specials.nim index dd420b4b3..1818497a4 100644 --- a/tests/specials.nim +++ b/tests/specials.nim @@ -119,6 +119,10 @@ proc runGcTests(r: var TResults, options: string) = runSingleTest(r, "tests/gc" / filename, options & " -d:release") runSingleTest(r, "tests/gc" / filename, options & " -d:release -d:useRealtimeGC") + runSingleTest(r, "tests/gc" / filename, options & + " --gc:markAndSweep") + runSingleTest(r, "tests/gc" / filename, options & + " -d:release --gc:markAndSweep") test "gcbench" test "gcleak" |