12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- # 2001 September 15
- #
- # The author disclaims copyright to this source code. In place of
- # a legal notice, here is a blessing:
- #
- # May you do good and not evil.
- # May you find forgiveness for yourself and forgive others.
- # May you share freely, never taking more than you give.
- #
- #***********************************************************************
- # This file runs all tests.
- #
- # $Id: memleak.test,v 1.10 2007/03/30 17:17:52 drh Exp $
- set testdir [file dirname $argv0]
- source $testdir/tester.tcl
- rename finish_test memleak_finish_test
- proc finish_test {} {
- catch {db close}
- memleak_check
- }
- if {[file exists ./sqlite_test_count]} {
- set COUNT [exec cat ./sqlite_test_count]
- } else {
- set COUNT 3
- }
- # LeakList will hold a list of the number of unfreed mallocs after
- # each round of the test. This number should be constant. If it
- # grows, it may mean there is a memory leak in the library.
- #
- set LeakList {}
- set EXCLUDE {
- all.test
- quick.test
- misuse.test
- memleak.test
- btree2.test
- async.test
- async2.test
- trans.test
- crash.test
- autovacuum_crash.test
- }
- # Test files btree2.test and btree4.test don't work if the
- # SQLITE_DEFAULT_AUTOVACUUM macro is defined to true (because they depend
- # on tables being allocated starting at page 2).
- #
- ifcapable default_autovacuum {
- lappend EXCLUDE btree2.test
- lappend EXCLUDE btree4.test
- }
- if {[sqlite3 -has-codec]} {
- # lappend EXCLUDE
- }
- if {[llength $argv]>0} {
- set FILELIST $argv
- set argv {}
- } else {
- set FILELIST [lsort -dictionary [glob $testdir/*.test]]
- }
- foreach testfile $FILELIST {
- set tail [file tail $testfile]
- if {[lsearch -exact $EXCLUDE $tail]>=0} continue
- set LeakList {}
- for {set COUNTER 0} {$COUNTER<$COUNT} {incr COUNTER} {
- source $testfile
- if {[info exists Leak]} {
- lappend LeakList $Leak
- }
- }
- if {$LeakList!=""} {
- puts -nonewline memory-leak-test-$tail...
- incr_ntest
- foreach x $LeakList {
- if {$x!=[lindex $LeakList 0]} {
- puts " failed! ($LeakList)"
- fail_test memory-leak-test-$tail
- break
- }
- }
- puts " Ok"
- }
- }
- memleak_finish_test
- # Run the malloc tests and the misuse test after memory leak detection.
- # Both tests leak memory.
- #
- #catch {source $testdir/misuse.test}
- #catch {source $testdir/malloc.test}
- memleak_finish_test
|