15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    May you do good and not evil.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    May you find forgiveness for yourself and forgive others.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    May you share freely, never taking more than you give.
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#***********************************************************************
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This file runs all out-of-memory tests.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $Id: mallocAll.test,v 1.1 2007/11/26 13:36:00 drh Exp $
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)proc lshift {lvar} {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  upvar $lvar l
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set ret [lindex $l 0]
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set l [lrange $l 1 end]
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return $ret
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)while {[set arg [lshift argv]] != ""} {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch -- $arg {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    -sharedpagercache {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      sqlite3_enable_shared_cache 1
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    default {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      set argv [linsert $argv 0 $arg]
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set testdir [file dirname $argv0]
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)source $testdir/tester.tcl
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)rename finish_test really_finish_test
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)proc finish_test {} {}
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set G(isquick) 1
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set EXCLUDE {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  mallocAll.test
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if {[sqlite3 -has-codec]} {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # lappend EXCLUDE \
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  conflict.test
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Files to include in the test.  If this list is empty then everything
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# that is not in the EXCLUDE list is run.
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set INCLUDE {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)foreach testfile [lsort -dictionary [glob $testdir/*malloc*.test]] {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set tail [file tail $testfile]
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if {[lsearch -exact $EXCLUDE $tail]>=0} continue
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if {[llength $INCLUDE]>0 && [lsearch -exact $INCLUDE $tail]<0} continue
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  source $testfile
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  catch {db close}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if {$sqlite_open_file_count>0} {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    puts "$tail did not close all files: $sqlite_open_file_count"
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fail_test $tail
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set sqlite_open_file_count 0
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)source $testdir/misuse.test
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)set sqlite_open_file_count 0
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)really_finish_test
67