| OLD | NEW |
| (Empty) |
| 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.10 2007/03/30 17:17:52 drh 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 incr ::nErr | |
| 83 lappend ::failList memory-leak-test-$tail | |
| 84 break | |
| 85 } | |
| 86 } | |
| 87 puts " Ok" | |
| 88 } | |
| 89 } | |
| 90 memleak_finish_test | |
| 91 | |
| 92 # Run the malloc tests and the misuse test after memory leak detection. | |
| 93 # Both tests leak memory. | |
| 94 # | |
| 95 #catch {source $testdir/misuse.test} | |
| 96 #catch {source $testdir/malloc.test} | |
| 97 | |
| 98 memleak_finish_test | |
| OLD | NEW |