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