Home | History | Annotate | Download | only in test
      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 #
     12 # This file implements regression tests for SQLite library.  The
     13 # focus of this file is testing the effects of a failure in 
     14 # sqlite3_initialize().
     15 #
     16 #
     17 
     18 set testdir [file dirname $argv0]
     19 source $testdir/tester.tcl
     20 if {[db eval {SELECT sqlite_compileoption_used('THREADSAFE=0')}]} {
     21   finish_test
     22   return
     23 }
     24 
     25 db close
     26 
     27 foreach {t failed rc started} {
     28   1.1 {}       SQLITE_OK    {mutex mem pcache}
     29   1.2 {mutex}  SQLITE_ERROR {}
     30   1.3 {mem}    SQLITE_ERROR {mutex}
     31   1.4 {pcache} SQLITE_ERROR {mutex mem}
     32 } {
     33   do_test init-$t.1 {
     34     eval init_wrapper_install $failed
     35     sqlite3_initialize
     36   } $rc
     37   do_test init-$t.2 {
     38     init_wrapper_query
     39   } $started
     40   do_test init-$t.3 {
     41     sqlite3_shutdown
     42     init_wrapper_query
     43   } {}
     44   do_test init-$t.4 {
     45     sqlite3_initialize
     46   } $rc
     47   do_test init-$t.5 {
     48     init_wrapper_query
     49   } $started
     50   do_test init-$t.6 {
     51     init_wrapper_clear
     52     sqlite3_initialize
     53   } SQLITE_OK
     54   do_test init-$t.7 {
     55     init_wrapper_query
     56   } {mutex mem pcache}
     57   do_test init-$t.8 {
     58     init_wrapper_uninstall
     59   } {}
     60 }
     61 
     62 source $testdir/malloc_common.tcl
     63 if {$MEMDEBUG} {
     64   do_malloc_test init-2 -tclprep {
     65     db close
     66     init_wrapper_install
     67   } -tclbody {
     68     set rc [sqlite3_initialize]
     69     if {[string match "SQLITE*NOMEM" $rc]} {error "out of memory"}
     70   } -cleanup {
     71     set zRepeat "transient"
     72     if {$::iRepeat} {set zRepeat "persistent"}
     73     do_test init-2.$zRepeat.$::n.x {
     74       init_wrapper_clear
     75       sqlite3_initialize
     76     } SQLITE_OK
     77     init_wrapper_uninstall
     78   }
     79 }
     80 
     81 autoinstall_test_functions
     82 finish_test
     83