1: # 2001 September 15
2: #
3: # The author disclaims copyright to this source code. In place of
4: # a legal notice, here is a blessing:
5: #
6: # May you do good and not evil.
7: # May you find forgiveness for yourself and forgive others.
8: # May you share freely, never taking more than you give.
9: #
10: #***********************************************************************
11: # This file runs all tests.
12: #
13: # $Id: memleak.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $
14:
15: set testdir [file dirname $argv0]
16: source $testdir/tester.tcl
17: rename finish_test memleak_finish_test
18: proc finish_test {} {
19: catch {db close}
20: memleak_check
21: }
22:
23: if {[file exists ./sqlite_test_count]} {
24: set COUNT [exec cat ./sqlite_test_count]
25: } else {
26: set COUNT 3
27: }
28:
29: # LeakList will hold a list of the number of unfreed mallocs after
30: # each round of the test. This number should be constant. If it
31: # grows, it may mean there is a memory leak in the library.
32: #
33: set LeakList {}
34:
35: set EXCLUDE {
36: all.test
37: quick.test
38: misuse.test
39: memleak.test
40: btree2.test
41: async.test
42: async2.test
43: trans.test
44: crash.test
45: autovacuum_crash.test
46: }
47: # Test files btree2.test and btree4.test don't work if the
48: # SQLITE_DEFAULT_AUTOVACUUM macro is defined to true (because they depend
49: # on tables being allocated starting at page 2).
50: #
51: ifcapable default_autovacuum {
52: lappend EXCLUDE btree2.test
53: lappend EXCLUDE btree4.test
54: }
55:
56: if {[sqlite3 -has-codec]} {
57: # lappend EXCLUDE
58: }
59: if {[llength $argv]>0} {
60: set FILELIST $argv
61: set argv {}
62: } else {
63: set FILELIST [lsort -dictionary [glob $testdir/*.test]]
64: }
65:
66: foreach testfile $FILELIST {
67: set tail [file tail $testfile]
68: if {[lsearch -exact $EXCLUDE $tail]>=0} continue
69: set LeakList {}
70: for {set COUNTER 0} {$COUNTER<$COUNT} {incr COUNTER} {
71: source $testfile
72: if {[info exists Leak]} {
73: lappend LeakList $Leak
74: }
75: }
76: if {$LeakList!=""} {
77: puts -nonewline memory-leak-test-$tail...
78: incr_ntest
79: foreach x $LeakList {
80: if {$x!=[lindex $LeakList 0]} {
81: puts " failed! ($LeakList)"
82: fail_test memory-leak-test-$tail
83: break
84: }
85: }
86: puts " Ok"
87: }
88: }
89: memleak_finish_test
90:
91: # Run the malloc tests and the misuse test after memory leak detection.
92: # Both tests leak memory.
93: #
94: #catch {source $testdir/misuse.test}
95: #catch {source $testdir/malloc.test}
96:
97: memleak_finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>