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 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 |
OLD | NEW |