Annotation of embedaddon/sqlite3/test/memleak.test, revision 1.1
1.1 ! misho 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
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>