98 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# 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
 |