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