/ Hex Artifact Content
Login

Artifact 5c2167e03dc55ff697e11bb3abf10c66ba452e4afb2dbd85a2b144048355300e:


0000: 23 20 32 30 30 38 20 4a 75 6e 65 20 32 31 0a 23  # 2008 June 21.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  you give..#.#***
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 0a 23 0a 0a 73 65 74 20 74 65 73 74  ****.#..set test
0170: 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d  dir [file dirnam
0180: 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65  e $argv0].source
0190: 20 24 74 65 73 74 64 69 72 2f 74 65 73 74 65 72   $testdir/tester
01a0: 2e 74 63 6c 0a 64 62 20 63 6c 6f 73 65 0a 0a 23  .tcl.db close..#
01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 74 65 73 74  ---------.# test
0200: 5f 73 75 69 74 65 20 4e 41 4d 45 20 4f 50 54 49  _suite NAME OPTI
0210: 4f 4e 53 0a 23 0a 23 20 77 68 65 72 65 20 61 76  ONS.#.# where av
0220: 61 69 6c 61 62 6c 65 20 6f 70 74 69 6f 6e 73 20  ailable options 
0230: 61 72 65 3a 20 20 0a 23 0a 23 20 20 20 20 20 20  are:  .#.#      
0240: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 54 49   -description TI
0250: 54 4c 45 20 20 20 20 20 20 20 20 20 20 20 20 20  TLE             
0260: 20 20 20 20 20 28 64 65 66 61 75 6c 74 20 22 22       (default ""
0270: 29 0a 23 20 20 20 20 20 20 20 2d 69 6e 69 74 69  ).#       -initi
0280: 61 6c 69 7a 65 20 20 53 43 52 49 50 54 20 20 20  alize  SCRIPT   
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64                (d
02a0: 65 66 61 75 6c 74 20 22 22 29 0a 23 20 20 20 20  efault "").#    
02b0: 20 20 20 2d 73 68 75 74 64 6f 77 6e 20 20 20 20     -shutdown    
02c0: 53 43 52 49 50 54 20 20 20 20 20 20 20 20 20 20  SCRIPT          
02d0: 20 20 20 20 20 20 20 28 64 65 66 61 75 6c 74 20         (default 
02e0: 22 22 29 0a 23 20 20 20 20 20 20 20 2d 70 72 65  "").#       -pre
02f0: 73 71 6c 20 20 20 20 20 20 53 51 4c 20 20 20 20  sql      SQL    
0300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0310: 28 64 65 66 61 75 6c 74 20 22 22 29 0a 23 20 20  (default "").#  
0320: 20 20 20 20 20 2d 66 69 6c 65 73 20 20 20 20 20       -files     
0330: 20 20 4c 49 53 54 2d 4f 46 2d 46 49 4c 45 53 20    LIST-OF-FILES 
0340: 20 20 20 20 20 20 20 20 20 28 64 65 66 61 75 6c           (defaul
0350: 74 20 24 3a 3a 41 4c 4c 54 45 53 54 53 29 0a 23  t $::ALLTESTS).#
0360: 20 20 20 20 20 20 20 2d 70 72 65 66 69 78 20 20         -prefix  
0370: 20 20 20 20 4e 41 4d 45 20 20 20 20 20 20 20 20      NAME        
0380: 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66 61             (defa
0390: 75 6c 74 20 22 24 3a 3a 4e 41 4d 45 2e 22 29 0a  ult "$::NAME.").
03a0: 23 20 20 20 20 20 20 20 2d 64 62 63 6f 6e 66 69  #       -dbconfi
03b0: 67 20 20 20 20 53 43 52 49 50 54 20 20 20 20 20  g    SCRIPT     
03c0: 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66              (def
03d0: 61 75 6c 74 20 22 22 29 0a 23 0a 70 72 6f 63 20  ault "").#.proc 
03e0: 74 65 73 74 5f 73 75 69 74 65 20 7b 6e 61 6d 65  test_suite {name
03f0: 20 61 72 67 73 7d 20 7b 0a 0a 20 20 73 65 74 20   args} {..  set 
0400: 64 65 66 61 75 6c 74 28 2d 73 68 75 74 64 6f 77  default(-shutdow
0410: 6e 29 20 20 20 20 22 22 0a 20 20 73 65 74 20 64  n)    "".  set d
0420: 65 66 61 75 6c 74 28 2d 69 6e 69 74 69 61 6c 69  efault(-initiali
0430: 7a 65 29 20 20 22 22 0a 20 20 73 65 74 20 64 65  ze)  "".  set de
0440: 66 61 75 6c 74 28 2d 70 72 65 73 71 6c 29 20 20  fault(-presql)  
0450: 20 20 20 20 22 22 0a 20 20 73 65 74 20 64 65 66      "".  set def
0460: 61 75 6c 74 28 2d 64 65 73 63 72 69 70 74 69 6f  ault(-descriptio
0470: 6e 29 20 22 6e 6f 20 64 65 73 63 72 69 70 74 69  n) "no descripti
0480: 6f 6e 20 73 75 70 70 6c 69 65 64 20 28 66 69 78  on supplied (fix
0490: 6d 65 29 22 0a 20 20 73 65 74 20 64 65 66 61 75  me)".  set defau
04a0: 6c 74 28 2d 66 69 6c 65 73 29 20 20 20 20 20 20  lt(-files)      
04b0: 20 22 22 0a 20 20 73 65 74 20 64 65 66 61 75 6c   "".  set defaul
04c0: 74 28 2d 70 72 65 66 69 78 29 20 20 20 20 20 20  t(-prefix)      
04d0: 22 24 7b 6e 61 6d 65 7d 2e 22 0a 20 20 73 65 74  "${name}.".  set
04e0: 20 64 65 66 61 75 6c 74 28 2d 64 62 63 6f 6e 66   default(-dbconf
04f0: 69 67 29 20 20 20 20 22 22 0a 0a 20 20 61 72 72  ig)    ""..  arr
0500: 61 79 20 73 65 74 20 6f 70 74 69 6f 6e 73 20 5b  ay set options [
0510: 61 72 72 61 79 20 67 65 74 20 64 65 66 61 75 6c  array get defaul
0520: 74 5d 0a 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74  t].  if {[llengt
0530: 68 20 24 61 72 67 73 5d 25 32 7d 20 7b 0a 20 20  h $args]%2} {.  
0540: 20 20 65 72 72 6f 72 20 22 75 6e 65 76 65 6e 20    error "uneven 
0550: 6e 75 6d 62 65 72 20 6f 66 20 6f 70 74 69 6f 6e  number of option
0560: 73 2f 73 77 69 74 63 68 65 73 20 70 61 73 73 65  s/switches passe
0570: 64 20 74 6f 20 74 65 73 74 5f 73 75 69 74 65 22  d to test_suite"
0580: 0a 20 20 7d 0a 20 20 66 6f 72 65 61 63 68 20 7b  .  }.  foreach {
0590: 6b 20 76 7d 20 24 61 72 67 73 20 7b 0a 20 20 20  k v} $args {.   
05a0: 20 73 65 74 20 6f 20 5b 61 72 72 61 79 20 6e 61   set o [array na
05b0: 6d 65 73 20 6f 70 74 69 6f 6e 73 20 24 7b 6b 7d  mes options ${k}
05c0: 2a 5d 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e  *].    if {[llen
05d0: 67 74 68 20 24 6f 5d 3e 31 7d 20 20 7b 20 65 72  gth $o]>1}  { er
05e0: 72 6f 72 20 22 61 6d 62 69 67 75 6f 75 73 20 6f  ror "ambiguous o
05f0: 70 74 69 6f 6e 3a 20 24 6b 22 20 7d 0a 20 20 20  ption: $k" }.   
0600: 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6f   if {[llength $o
0610: 5d 3d 3d 30 7d 20 7b 20 65 72 72 6f 72 20 22 75  ]==0} { error "u
0620: 6e 6b 6e 6f 77 6e 20 6f 70 74 69 6f 6e 3a 20 24  nknown option: $
0630: 6b 22 20 7d 0a 20 20 20 20 73 65 74 20 6f 70 74  k" }.    set opt
0640: 69 6f 6e 73 28 5b 6c 69 6e 64 65 78 20 24 6f 20  ions([lindex $o 
0650: 30 5d 29 20 24 76 0a 20 20 7d 0a 0a 20 20 73 65  0]) $v.  }..  se
0660: 74 20 20 20 20 20 3a 3a 74 65 73 74 73 70 65 63  t     ::testspec
0670: 28 24 6e 61 6d 65 29 20 5b 61 72 72 61 79 20 67  ($name) [array g
0680: 65 74 20 6f 70 74 69 6f 6e 73 5d 0a 20 20 6c 61  et options].  la
0690: 70 70 65 6e 64 20 3a 3a 74 65 73 74 73 75 69 74  ppend ::testsuit
06a0: 65 6c 69 73 74 20 24 6e 61 6d 65 0a 7d 0a 0a 23  elist $name.}..#
06b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 74 65 73 74  ---------.# test
0700: 5f 73 65 74 20 41 52 47 53 2e 2e 2e 0a 23 0a 70  _set ARGS....#.p
0710: 72 6f 63 20 74 65 73 74 5f 73 65 74 20 7b 61 72  roc test_set {ar
0720: 67 73 7d 20 7b 0a 20 20 73 65 74 20 69 73 45 78  gs} {.  set isEx
0730: 63 6c 75 64 65 20 30 0a 20 20 66 6f 72 65 61 63  clude 0.  foreac
0740: 68 20 61 20 24 61 72 67 73 20 7b 0a 20 20 20 20  h a $args {.    
0750: 69 66 20 7b 5b 73 74 72 69 6e 67 20 6d 61 74 63  if {[string matc
0760: 68 20 2d 2a 20 24 61 5d 7d 20 7b 0a 20 20 20 20  h -* $a]} {.    
0770: 20 20 73 77 69 74 63 68 20 2d 2d 20 24 61 20 7b    switch -- $a {
0780: 0a 20 20 20 20 20 20 20 20 2d 69 6e 63 6c 75 64  .        -includ
0790: 65 20 7b 20 73 65 74 20 69 73 45 78 63 6c 75 64  e { set isExclud
07a0: 65 20 30 20 7d 0a 20 20 20 20 20 20 20 20 2d 65  e 0 }.        -e
07b0: 78 63 6c 75 64 65 20 7b 20 73 65 74 20 69 73 45  xclude { set isE
07c0: 78 63 6c 75 64 65 20 31 20 7d 0a 20 20 20 20 20  xclude 1 }.     
07d0: 20 20 20 64 65 66 61 75 6c 74 20 7b 0a 20 20 20     default {.   
07e0: 20 20 20 20 20 20 20 65 72 72 6f 72 20 22 55 6e         error "Un
07f0: 6b 6e 6f 77 6e 20 73 77 69 74 63 68 3a 20 24 61  known switch: $a
0800: 22 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ".        }.    
0810: 20 20 7d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66    }.    } elseif
0820: 20 7b 24 69 73 45 78 63 6c 75 64 65 20 3d 3d 20   {$isExclude == 
0830: 30 7d 20 7b 0a 20 20 20 20 20 20 66 6f 72 65 61  0} {.      forea
0840: 63 68 20 66 20 24 61 20 7b 20 73 65 74 20 74 28  ch f $a { set t(
0850: 24 66 29 20 31 20 7d 0a 20 20 20 20 7d 20 65 6c  $f) 1 }.    } el
0860: 73 65 20 7b 0a 20 20 20 20 20 20 66 6f 72 65 61  se {.      forea
0870: 63 68 20 66 20 24 61 20 7b 20 61 72 72 61 79 20  ch f $a { array 
0880: 75 6e 73 65 74 20 74 20 24 66 20 7d 0a 20 20 20  unset t $f }.   
0890: 20 20 20 66 6f 72 65 61 63 68 20 66 20 24 61 20     foreach f $a 
08a0: 7b 20 61 72 72 61 79 20 75 6e 73 65 74 20 74 20  { array unset t 
08b0: 2a 2f 24 66 20 7d 0a 20 20 20 20 7d 0a 20 20 7d  */$f }.    }.  }
08c0: 0a 0a 20 20 72 65 74 75 72 6e 20 5b 61 72 72 61  ..  return [arra
08d0: 79 20 6e 61 6d 65 73 20 74 5d 0a 7d 0a 0a 23 2d  y names t].}..#-
08e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
08f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0900: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0910: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0920: 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 53 65 74 20 75  --------.# Set u
0930: 70 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  p the following 
0940: 67 6c 6f 62 61 6c 20 6c 69 73 74 20 76 61 72 69  global list vari
0950: 61 62 6c 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67  ables containing
0960: 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 0a 23   the names of .#
0970: 20 76 61 72 69 6f 75 73 20 74 65 73 74 20 73 63   various test sc
0980: 72 69 70 74 73 3a 0a 23 0a 23 20 20 20 24 61 6c  ripts:.#.#   $al
0990: 6c 74 65 73 74 73 0a 23 20 20 20 24 61 6c 6c 71  ltests.#   $allq
09a0: 75 69 63 6b 74 65 73 74 73 0a 23 0a 73 65 74 20  uicktests.#.set 
09b0: 61 6c 6c 74 65 73 74 73 20 5b 6c 69 73 74 5d 0a  alltests [list].
09c0: 66 6f 72 65 61 63 68 20 66 20 5b 67 6c 6f 62 20  foreach f [glob 
09d0: 24 74 65 73 74 64 69 72 2f 2a 2e 74 65 73 74 5d  $testdir/*.test]
09e0: 20 7b 20 6c 61 70 70 65 6e 64 20 61 6c 6c 74 65   { lappend allte
09f0: 73 74 73 20 5b 66 69 6c 65 20 74 61 69 6c 20 24  sts [file tail $
0a00: 66 5d 20 7d 0a 66 6f 72 65 61 63 68 20 66 20 5b  f] }.foreach f [
0a10: 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  glob -nocomplain
0a20: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
0a30: 20 20 24 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78    $testdir/../ex
0a40: 74 2f 72 74 72 65 65 2f 2a 2e 74 65 73 74 20 20  t/rtree/*.test  
0a50: 20 20 20 20 20 5c 0a 20 20 20 20 24 74 65 73 74       \.    $test
0a60: 64 69 72 2f 2e 2e 2f 65 78 74 2f 66 74 73 35 2f  dir/../ext/fts5/
0a70: 74 65 73 74 2f 2a 2e 74 65 73 74 20 20 20 5c 0a  test/*.test   \.
0a80: 20 20 20 20 24 74 65 73 74 64 69 72 2f 2e 2e 2f      $testdir/../
0a90: 65 78 74 2f 65 78 70 65 72 74 2f 2a 2e 74 65 73  ext/expert/*.tes
0aa0: 74 20 20 20 20 20 20 5c 0a 20 20 20 20 24 74 65  t      \.    $te
0ab0: 73 74 64 69 72 2f 2e 2e 2f 65 78 74 2f 6c 73 6d  stdir/../ext/lsm
0ac0: 31 2f 74 65 73 74 2f 2a 2e 74 65 73 74 20 20 20  1/test/*.test   
0ad0: 5c 0a 5d 20 7b 0a 20 20 6c 61 70 70 65 6e 64 20  \.] {.  lappend 
0ae0: 61 6c 6c 74 65 73 74 73 20 24 66 20 0a 7d 0a 66  alltests $f .}.f
0af0: 6f 72 65 61 63 68 20 66 20 5b 67 6c 6f 62 20 2d  oreach f [glob -
0b00: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 74 65 73 74  nocomplain $test
0b10: 64 69 72 2f 2e 2e 2f 65 78 74 2f 73 65 73 73 69  dir/../ext/sessi
0b20: 6f 6e 2f 2a 2e 74 65 73 74 5d 20 7b 20 0a 20 20  on/*.test] { .  
0b30: 6c 61 70 70 65 6e 64 20 61 6c 6c 74 65 73 74 73  lappend alltests
0b40: 20 24 66 20 0a 7d 0a 0a 69 66 20 7b 24 3a 3a 74   $f .}..if {$::t
0b50: 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74  cl_platform(plat
0b60: 66 6f 72 6d 29 21 3d 22 75 6e 69 78 22 7d 20 7b  form)!="unix"} {
0b70: 0a 20 20 73 65 74 20 61 6c 6c 74 65 73 74 73 20  .  set alltests 
0b80: 5b 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 74 65  [test_set $allte
0b90: 73 74 73 20 2d 65 78 63 6c 75 64 65 20 63 72 61  sts -exclude cra
0ba0: 73 68 2e 74 65 73 74 20 63 72 61 73 68 32 2e 74  sh.test crash2.t
0bb0: 65 73 74 5d 0a 7d 0a 73 65 74 20 61 6c 6c 74 65  est].}.set allte
0bc0: 73 74 73 20 5b 74 65 73 74 5f 73 65 74 20 24 61  sts [test_set $a
0bd0: 6c 6c 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  lltests -exclude
0be0: 20 7b 0a 20 20 61 6c 6c 2e 74 65 73 74 20 20 20   {.  all.test   
0bf0: 20 20 20 20 20 61 73 79 6e 63 2e 74 65 73 74 20       async.test 
0c00: 20 20 20 20 20 20 20 20 71 75 69 63 6b 2e 74 65          quick.te
0c10: 73 74 20 20 76 65 72 79 71 75 69 63 6b 2e 74 65  st  veryquick.te
0c20: 73 74 0a 20 20 6d 65 6d 6c 65 61 6b 2e 74 65 73  st.  memleak.tes
0c30: 74 20 20 20 20 70 65 72 6d 75 74 61 74 69 6f 6e  t    permutation
0c40: 73 2e 74 65 73 74 20 20 73 6f 61 6b 2e 74 65 73  s.test  soak.tes
0c50: 74 20 20 20 66 74 73 33 2e 74 65 73 74 0a 20 20  t   fts3.test.  
0c60: 6d 61 6c 6c 6f 63 41 6c 6c 2e 74 65 73 74 20 20  mallocAll.test  
0c70: 72 74 72 65 65 2e 74 65 73 74 20 20 20 20 20 20  rtree.test      
0c80: 20 20 20 66 75 6c 6c 2e 74 65 73 74 20 20 20 65     full.test   e
0c90: 78 74 72 61 71 75 69 63 6b 2e 74 65 73 74 0a 20  xtraquick.test. 
0ca0: 20 73 65 73 73 69 6f 6e 2e 74 65 73 74 0a 7d 5d   session.test.}]
0cb0: 0a 0a 73 65 74 20 61 6c 6c 71 75 69 63 6b 74 65  ..set allquickte
0cc0: 73 74 73 20 5b 74 65 73 74 5f 73 65 74 20 24 61  sts [test_set $a
0cd0: 6c 6c 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  lltests -exclude
0ce0: 20 7b 0a 20 20 61 73 79 6e 63 32 2e 74 65 73 74   {.  async2.test
0cf0: 20 61 73 79 6e 63 33 2e 74 65 73 74 20 62 61 63   async3.test bac
0d00: 6b 75 70 5f 69 6f 65 72 72 2e 74 65 73 74 20 63  kup_ioerr.test c
0d10: 6f 72 72 75 70 74 2e 74 65 73 74 0a 20 20 63 6f  orrupt.test.  co
0d20: 72 72 75 70 74 43 2e 74 65 73 74 20 63 72 61 73  rruptC.test cras
0d30: 68 2e 74 65 73 74 20 63 72 61 73 68 32 2e 74 65  h.test crash2.te
0d40: 73 74 20 63 72 61 73 68 33 2e 74 65 73 74 20 63  st crash3.test c
0d50: 72 61 73 68 34 2e 74 65 73 74 20 63 72 61 73 68  rash4.test crash
0d60: 35 2e 74 65 73 74 0a 20 20 63 72 61 73 68 36 2e  5.test.  crash6.
0d70: 74 65 73 74 20 63 72 61 73 68 37 2e 74 65 73 74  test crash7.test
0d80: 20 64 65 6c 65 74 65 33 2e 74 65 73 74 20 65 5f   delete3.test e_
0d90: 66 74 73 33 2e 74 65 73 74 20 66 74 73 33 72 6e  fts3.test fts3rn
0da0: 64 2e 74 65 73 74 0a 20 20 66 6b 65 79 5f 6d 61  d.test.  fkey_ma
0db0: 6c 6c 6f 63 2e 74 65 73 74 20 66 75 7a 7a 2e 74  lloc.test fuzz.t
0dc0: 65 73 74 20 66 75 7a 7a 33 2e 74 65 73 74 20 66  est fuzz3.test f
0dd0: 75 7a 7a 5f 6d 61 6c 6c 6f 63 2e 74 65 73 74 20  uzz_malloc.test 
0de0: 69 6e 32 2e 74 65 73 74 20 6c 6f 61 64 65 78 74  in2.test loadext
0df0: 2e 74 65 73 74 0a 20 20 6d 69 73 63 37 2e 74 65  .test.  misc7.te
0e00: 73 74 20 6d 75 74 65 78 32 2e 74 65 73 74 20 6e  st mutex2.test n
0e10: 6f 74 69 66 79 32 2e 74 65 73 74 20 6f 6e 65 66  otify2.test onef
0e20: 69 6c 65 2e 74 65 73 74 20 70 61 67 65 72 66 61  ile.test pagerfa
0e30: 75 6c 74 32 2e 74 65 73 74 20 0a 20 20 73 61 76  ult2.test .  sav
0e40: 65 70 6f 69 6e 74 34 2e 74 65 73 74 20 73 61 76  epoint4.test sav
0e50: 65 70 6f 69 6e 74 36 2e 74 65 73 74 20 73 65 6c  epoint6.test sel
0e60: 65 63 74 39 2e 74 65 73 74 20 0a 20 20 73 70 65  ect9.test .  spe
0e70: 65 64 31 2e 74 65 73 74 20 73 70 65 65 64 31 70  ed1.test speed1p
0e80: 2e 74 65 73 74 20 73 70 65 65 64 32 2e 74 65 73  .test speed2.tes
0e90: 74 20 73 70 65 65 64 33 2e 74 65 73 74 20 73 70  t speed3.test sp
0ea0: 65 65 64 34 2e 74 65 73 74 20 0a 20 20 73 70 65  eed4.test .  spe
0eb0: 65 64 34 70 2e 74 65 73 74 20 73 71 6c 6c 69 6d  ed4p.test sqllim
0ec0: 69 74 73 31 2e 74 65 73 74 20 74 6b 74 32 36 38  its1.test tkt268
0ed0: 36 2e 74 65 73 74 20 74 68 72 65 61 64 30 30 31  6.test thread001
0ee0: 2e 74 65 73 74 20 74 68 72 65 61 64 30 30 32 2e  .test thread002.
0ef0: 74 65 73 74 0a 20 20 74 68 72 65 61 64 30 30 33  test.  thread003
0f00: 2e 74 65 73 74 20 74 68 72 65 61 64 30 30 34 2e  .test thread004.
0f10: 74 65 73 74 20 74 68 72 65 61 64 30 30 35 2e 74  test thread005.t
0f20: 65 73 74 20 74 72 61 6e 73 32 2e 74 65 73 74 20  est trans2.test 
0f30: 76 61 63 75 75 6d 33 2e 74 65 73 74 20 0a 20 20  vacuum3.test .  
0f40: 69 6e 63 72 76 61 63 75 75 6d 5f 69 6f 65 72 72  incrvacuum_ioerr
0f50: 2e 74 65 73 74 20 61 75 74 6f 76 61 63 75 75 6d  .test autovacuum
0f60: 5f 63 72 61 73 68 2e 74 65 73 74 20 62 74 72 65  _crash.test btre
0f70: 65 38 2e 74 65 73 74 20 73 68 61 72 65 64 5f 65  e8.test shared_e
0f80: 72 72 2e 74 65 73 74 0a 20 20 76 74 61 62 5f 65  rr.test.  vtab_e
0f90: 72 72 2e 74 65 73 74 20 77 61 6c 73 6c 6f 77 2e  rr.test walslow.
0fa0: 74 65 73 74 20 77 61 6c 63 72 61 73 68 2e 74 65  test walcrash.te
0fb0: 73 74 20 77 61 6c 63 72 61 73 68 33 2e 74 65 73  st walcrash3.tes
0fc0: 74 0a 20 20 77 61 6c 74 68 72 65 61 64 2e 74 65  t.  walthread.te
0fd0: 73 74 20 72 74 72 65 65 33 2e 74 65 73 74 20 69  st rtree3.test i
0fe0: 6e 64 65 78 66 61 75 6c 74 2e 74 65 73 74 20 73  ndexfault.test s
0ff0: 65 63 75 72 65 64 65 6c 32 2e 74 65 73 74 0a 20  ecuredel2.test. 
1000: 20 73 6f 72 74 33 2e 74 65 73 74 20 73 6f 72 74   sort3.test sort
1010: 34 2e 74 65 73 74 20 66 74 73 34 67 72 6f 77 74  4.test fts4growt
1020: 68 2e 74 65 73 74 20 66 74 73 34 67 72 6f 77 74  h.test fts4growt
1030: 68 32 2e 74 65 73 74 0a 20 20 62 69 67 73 6f 72  h2.test.  bigsor
1040: 74 2e 74 65 73 74 20 72 62 75 2e 74 65 73 74 20  t.test rbu.test 
1050: 77 61 6c 70 72 6f 74 6f 63 6f 6c 2e 74 65 73 74  walprotocol.test
1060: 20 6d 6d 61 70 34 2e 74 65 73 74 20 66 75 7a 7a   mmap4.test fuzz
1070: 65 72 32 2e 74 65 73 74 0a 20 20 77 61 6c 63 72  er2.test.  walcr
1080: 61 73 68 32 2e 74 65 73 74 20 65 5f 66 6b 65 79  ash2.test e_fkey
1090: 2e 74 65 73 74 20 62 61 63 6b 75 70 2e 74 65 73  .test backup.tes
10a0: 74 0a 0a 20 20 66 74 73 34 6d 65 72 67 65 2e 74  t..  fts4merge.t
10b0: 65 73 74 20 66 74 73 34 6d 65 72 67 65 32 2e 74  est fts4merge2.t
10c0: 65 73 74 20 66 74 73 34 6d 65 72 67 65 34 2e 74  est fts4merge4.t
10d0: 65 73 74 20 66 74 73 34 63 68 65 63 6b 2e 74 65  est fts4check.te
10e0: 73 74 0a 20 20 66 74 73 33 63 6f 76 2e 74 65 73  st.  fts3cov.tes
10f0: 74 20 66 74 73 33 73 6e 69 70 70 65 74 2e 74 65  t fts3snippet.te
1100: 73 74 20 66 74 73 33 63 6f 72 72 75 70 74 32 2e  st fts3corrupt2.
1110: 74 65 73 74 20 66 74 73 33 61 6e 2e 74 65 73 74  test fts3an.test
1120: 0a 20 20 66 74 73 33 64 65 66 65 72 2e 74 65 73  .  fts3defer.tes
1130: 74 20 66 74 73 34 6c 61 6e 67 69 64 2e 74 65 73  t fts4langid.tes
1140: 74 20 66 74 73 33 73 6f 72 74 2e 74 65 73 74 20  t fts3sort.test 
1150: 66 74 73 35 75 6e 69 63 6f 64 65 2e 74 65 73 74  fts5unicode.test
1160: 0a 0a 20 20 72 74 72 65 65 34 2e 74 65 73 74 0a  ..  rtree4.test.
1170: 7d 5d 0a 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69  }].if {[info exi
1180: 73 74 73 20 3a 3a 65 6e 76 28 51 55 49 43 4b 54  sts ::env(QUICKT
1190: 45 53 54 5f 49 4e 43 4c 55 44 45 29 5d 7d 20 7b  EST_INCLUDE)]} {
11a0: 0a 20 20 73 65 74 20 61 6c 6c 71 75 69 63 6b 74  .  set allquickt
11b0: 65 73 74 73 20 5b 63 6f 6e 63 61 74 20 24 61 6c  ests [concat $al
11c0: 6c 71 75 69 63 6b 74 65 73 74 73 20 24 3a 3a 65  lquicktests $::e
11d0: 6e 76 28 51 55 49 43 4b 54 45 53 54 5f 49 4e 43  nv(QUICKTEST_INC
11e0: 4c 55 44 45 29 5d 0a 7d 0a 69 66 20 7b 5b 69 6e  LUDE)].}.if {[in
11f0: 66 6f 20 65 78 69 73 74 73 20 3a 3a 65 6e 76 28  fo exists ::env(
1200: 51 55 49 43 4b 54 45 53 54 5f 4f 4d 49 54 29 5d  QUICKTEST_OMIT)]
1210: 7d 20 7b 0a 20 20 66 6f 72 65 61 63 68 20 78 20  } {.  foreach x 
1220: 5b 73 70 6c 69 74 20 24 3a 3a 65 6e 76 28 51 55  [split $::env(QU
1230: 49 43 4b 54 45 53 54 5f 4f 4d 49 54 29 20 2c 5d  ICKTEST_OMIT) ,]
1240: 20 7b 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61   {.    regsub -a
1250: 6c 6c 20 5c 5c 79 24 78 5c 5c 79 20 24 61 6c 6c  ll \\y$x\\y $all
1260: 71 75 69 63 6b 74 65 73 74 73 20 7b 7d 20 61 6c  quicktests {} al
1270: 6c 71 75 69 63 6b 74 65 73 74 73 0a 20 20 7d 0a  lquicktests.  }.
1280: 7d 0a 0a 23 20 49 66 20 74 68 65 20 54 45 53 54  }..# If the TEST
1290: 5f 46 41 49 4c 55 52 45 20 65 6e 76 69 72 6f 6e  _FAILURE environ
12a0: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 69 73  ment variable is
12b0: 20 73 65 74 2c 20 69 74 20 6d 65 61 6e 73 20 74   set, it means t
12c0: 68 61 74 20 77 65 20 77 68 61 74 20 74 6f 0a 23  hat we what to.#
12d0: 20 64 65 6c 69 62 65 72 61 74 65 6c 79 20 70 72   deliberately pr
12e0: 6f 76 6f 6b 65 20 74 65 73 74 20 66 61 69 6c 75  ovoke test failu
12f0: 72 65 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  res in order to 
1300: 74 65 73 74 20 74 68 65 20 74 65 73 74 20 69 6e  test the test in
1310: 66 72 61 73 74 72 75 63 74 75 72 65 2e 0a 23 20  frastructure..# 
1320: 4f 6e 6c 79 20 74 68 65 20 6d 61 69 6e 2e 74 65  Only the main.te
1330: 73 74 20 6d 6f 64 75 6c 65 20 69 73 20 6e 65 65  st module is nee
1340: 64 65 64 20 66 6f 72 20 74 68 69 73 2e 0a 23 0a  ded for this..#.
1350: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
1360: 20 3a 3a 65 6e 76 28 54 45 53 54 5f 46 41 49 4c   ::env(TEST_FAIL
1370: 55 52 45 29 5d 7d 20 7b 0a 20 20 73 65 74 20 61  URE)]} {.  set a
1380: 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 6d 61 69  llquicktests mai
1390: 6e 2e 74 65 73 74 0a 7d 0a 0a 23 23 23 23 23 23  n.test.}..######
13a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13e0: 23 23 23 23 23 23 23 0a 23 20 53 74 61 72 74 20  #######.# Start 
13f0: 6f 66 20 74 65 73 74 73 0a 23 0a 0a 23 2d 2d 2d  of tests.#..#---
1400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1440: 2d 2d 2d 2d 2d 2d 0a 23 20 44 65 66 69 6e 65 20  ------.# Define 
1450: 74 68 65 20 67 65 6e 65 72 69 63 20 74 65 73 74  the generic test
1460: 20 73 75 69 74 65 73 3a 0a 23 0a 23 20 20 20 76   suites:.#.#   v
1470: 65 72 79 71 75 69 63 6b 0a 23 20 20 20 71 75 69  eryquick.#   qui
1480: 63 6b 0a 23 20 20 20 66 75 6c 6c 0a 23 0a 6c 61  ck.#   full.#.la
1490: 70 70 65 6e 64 20 3a 3a 74 65 73 74 73 75 69 74  ppend ::testsuit
14a0: 65 6c 69 73 74 20 78 78 78 0a 0a 74 65 73 74 5f  elist xxx..test_
14b0: 73 75 69 74 65 20 22 76 65 72 79 71 75 69 63 6b  suite "veryquick
14c0: 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65  " -prefix "" -de
14d0: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 22 56  scription {.  "V
14e0: 65 72 79 22 20 71 75 69 63 6b 20 74 65 73 74 20  ery" quick test 
14f0: 73 75 69 74 65 2e 20 52 75 6e 73 20 69 6e 20 6d  suite. Runs in m
1500: 69 6e 75 74 65 73 20 6f 6e 20 61 20 77 6f 72 6b  inutes on a work
1510: 73 74 61 74 69 6f 6e 2e 0a 20 20 54 68 69 73 20  station..  This 
1520: 74 65 73 74 20 73 75 69 74 65 20 69 73 20 74 68  test suite is th
1530: 65 20 73 61 6d 65 20 61 73 20 74 68 65 20 22 71  e same as the "q
1540: 75 69 63 6b 22 20 74 65 73 74 73 2c 20 65 78 63  uick" tests, exc
1550: 65 70 74 20 74 68 61 74 20 73 6f 6d 65 20 66 69  ept that some fi
1560: 6c 65 73 0a 20 20 74 68 61 74 20 74 65 73 74 20  les.  that test 
1570: 6d 61 6c 6c 6f 63 20 61 6e 64 20 49 4f 20 65 72  malloc and IO er
1580: 72 6f 72 73 20 61 72 65 20 6f 6d 69 74 74 65 64  rors are omitted
1590: 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74  ..} -files [.  t
15a0: 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63  est_set $allquic
15b0: 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20  ktests -exclude 
15c0: 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a  *malloc* *ioerr*
15d0: 20 2a 66 61 75 6c 74 2a 20 2a 62 69 67 66 69 6c   *fault* *bigfil
15e0: 65 2a 20 2a 5f 65 72 72 2a 20 5c 0a 20 20 20 20  e* *_err* \.    
15f0: 20 20 2a 66 74 73 35 63 6f 72 72 75 70 74 2a 20    *fts5corrupt* 
1600: 2a 66 74 73 35 62 69 67 2a 20 2a 66 74 73 35 61  *fts5big* *fts5a
1610: 6a 2a 0a 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65  j*.]..test_suite
1620: 20 22 65 78 74 72 61 71 75 69 63 6b 22 20 2d 70   "extraquick" -p
1630: 72 65 66 69 78 20 22 22 20 2d 64 65 73 63 72 69  refix "" -descri
1640: 70 74 69 6f 6e 20 7b 0a 20 20 22 45 78 74 72 61  ption {.  "Extra
1650: 22 20 71 75 69 63 6b 20 74 65 73 74 20 73 75 69  " quick test sui
1660: 74 65 2e 20 52 75 6e 73 20 69 6e 20 61 20 66 65  te. Runs in a fe
1670: 77 20 6d 69 6e 75 74 65 73 20 6f 6e 20 61 20 77  w minutes on a w
1680: 6f 72 6b 73 74 61 74 69 6f 6e 2e 0a 20 20 54 68  orkstation..  Th
1690: 69 73 20 74 65 73 74 20 73 75 69 74 65 20 69 73  is test suite is
16a0: 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65   the same as the
16b0: 20 22 76 65 72 79 71 75 69 63 6b 22 20 74 65 73   "veryquick" tes
16c0: 74 73 2c 20 65 78 63 65 70 74 20 74 68 61 74 0a  ts, except that.
16d0: 20 20 73 6c 6f 77 65 72 20 74 65 73 74 73 20 61    slower tests a
16e0: 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 20 2d 66  re omitted..} -f
16f0: 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65  iles [.  test_se
1700: 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  t $allquicktests
1710: 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f   -exclude *mallo
1720: 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c  c* *ioerr* *faul
1730: 74 2a 20 2a 62 69 67 66 69 6c 65 2a 20 2a 5f 65  t* *bigfile* *_e
1740: 72 72 2a 20 5c 0a 20 20 20 20 20 77 61 6c 33 2e  rr* \.     wal3.
1750: 74 65 73 74 20 66 74 73 34 6d 65 72 67 65 2a 20  test fts4merge* 
1760: 73 6f 72 74 32 2e 74 65 73 74 20 6d 6d 61 70 31  sort2.test mmap1
1770: 2e 74 65 73 74 20 77 61 6c 63 72 61 73 68 2a 20  .test walcrash* 
1780: 5c 0a 20 20 20 20 20 70 65 72 63 65 6e 74 69 6c  \.     percentil
1790: 65 2e 74 65 73 74 20 77 68 65 72 65 38 6d 2e 74  e.test where8m.t
17a0: 65 73 74 20 77 61 6c 63 6b 73 75 6d 2e 74 65 73  est walcksum.tes
17b0: 74 20 73 61 76 65 70 6f 69 6e 74 33 2e 74 65 73  t savepoint3.tes
17c0: 74 20 5c 0a 20 20 20 20 20 66 75 7a 7a 65 72 31  t \.     fuzzer1
17d0: 2e 74 65 73 74 20 66 75 7a 7a 65 72 33 2e 74 65  .test fuzzer3.te
17e0: 73 74 20 66 74 73 33 65 78 70 72 33 2e 74 65 73  st fts3expr3.tes
17f0: 74 0a 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20  t.]..test_suite 
1800: 22 6d 6d 61 70 22 20 2d 70 72 65 66 69 78 20 22  "mmap" -prefix "
1810: 6d 6d 2d 22 20 2d 64 65 73 63 72 69 70 74 69 6f  mm-" -descriptio
1820: 6e 20 7b 0a 20 20 53 69 6d 69 6c 61 72 20 74 6f  n {.  Similar to
1830: 20 76 65 72 79 71 75 69 63 6b 2e 20 45 78 63 65   veryquick. Exce
1840: 70 74 20 77 69 74 68 20 6d 65 6d 6f 72 79 20 6d  pt with memory m
1850: 61 70 70 69 6e 67 20 65 6e 61 62 6c 65 64 2e 0a  apping enabled..
1860: 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72  } -presql {.  pr
1870: 61 67 6d 61 20 6d 6d 61 70 5f 73 69 7a 65 20 3d  agma mmap_size =
1880: 20 32 36 38 34 33 35 34 35 36 3b 0a 7d 20 2d 66   268435456;.} -f
1890: 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65  iles [.  test_se
18a0: 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  t $allquicktests
18b0: 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f   -exclude *mallo
18c0: 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c  c* *ioerr* *faul
18d0: 74 2a 20 2d 69 6e 63 6c 75 64 65 20 6d 61 6c 6c  t* -include mall
18e0: 6f 63 2e 74 65 73 74 0a 5d 0a 0a 74 65 73 74 5f  oc.test.]..test_
18f0: 73 75 69 74 65 20 22 76 61 6c 67 72 69 6e 64 22  suite "valgrind"
1900: 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65 73   -prefix "" -des
1910: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e  cription {.  Run
1920: 20 74 68 65 20 22 76 65 72 79 71 75 69 63 6b 22   the "veryquick"
1930: 20 74 65 73 74 20 73 75 69 74 65 20 77 69 74 68   test suite with
1940: 20 61 20 63 6f 75 70 6c 65 20 6f 66 20 6d 75 6c   a couple of mul
1950: 74 69 2d 70 72 6f 63 65 73 73 20 74 65 73 74 73  ti-process tests
1960: 20 28 74 68 61 74 0a 20 20 66 61 69 6c 20 75 6e   (that.  fail un
1970: 64 65 72 20 76 61 6c 67 72 69 6e 64 29 20 6f 6d  der valgrind) om
1980: 69 74 74 65 64 2e 0a 7d 20 2d 66 69 6c 65 73 20  itted..} -files 
1990: 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c  [.  test_set $al
19a0: 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63  lquicktests -exc
19b0: 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69  lude *malloc* *i
19c0: 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 2a 5f  oerr* *fault* *_
19d0: 65 72 72 2a 20 77 61 6c 2e 74 65 73 74 20 5c 0a  err* wal.test \.
19e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68                sh
19f0: 65 6c 6c 2a 2e 74 65 73 74 20 63 72 61 73 68 38  ell*.test crash8
1a00: 2e 74 65 73 74 20 61 74 6f 66 31 2e 74 65 73 74  .test atof1.test
1a10: 20 73 65 6c 65 63 74 47 2e 74 65 73 74 20 5c 0a   selectG.test \.
1a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6b                tk
1a30: 74 2d 66 63 36 32 61 66 34 35 32 33 2e 74 65 73  t-fc62af4523.tes
1a40: 74 20 6e 75 6d 69 6e 64 65 78 31 2e 74 65 73 74  t numindex1.test
1a50: 20 63 6f 72 72 75 70 74 4b 2e 74 65 73 74 0a 5d   corruptK.test.]
1a60: 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20   -initialize {. 
1a70: 20 73 65 74 20 3a 3a 47 28 76 61 6c 67 72 69 6e   set ::G(valgrin
1a80: 64 29 20 31 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  d) 1.} -shutdown
1a90: 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f   {.  unset -noco
1aa0: 6d 70 6c 61 69 6e 20 3a 3a 47 28 76 61 6c 67 72  mplain ::G(valgr
1ab0: 69 6e 64 29 0a 7d 0a 0a 74 65 73 74 5f 73 75 69  ind).}..test_sui
1ac0: 74 65 20 22 76 61 6c 67 72 69 6e 64 2d 6e 6f 6c  te "valgrind-nol
1ad0: 6f 6f 6b 61 73 69 64 65 22 20 2d 70 72 65 66 69  ookaside" -prefi
1ae0: 78 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f  x "" -descriptio
1af0: 6e 20 7b 0a 20 20 52 75 6e 20 74 68 65 20 22 76  n {.  Run the "v
1b00: 65 72 79 71 75 69 63 6b 22 20 74 65 73 74 20 73  eryquick" test s
1b10: 75 69 74 65 20 77 69 74 68 20 61 20 63 6f 75 70  uite with a coup
1b20: 6c 65 20 6f 66 20 6d 75 6c 74 69 2d 70 72 6f 63  le of multi-proc
1b30: 65 73 73 20 74 65 73 74 73 20 28 74 68 61 74 0a  ess tests (that.
1b40: 20 20 66 61 69 6c 20 75 6e 64 65 72 20 76 61 6c    fail under val
1b50: 67 72 69 6e 64 29 20 6f 6d 69 74 74 65 64 2e 0a  grind) omitted..
1b60: 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73  } -files [.  tes
1b70: 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74  t_set $allquickt
1b80: 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d  ests -exclude *m
1b90: 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a  alloc* *ioerr* *
1ba0: 66 61 75 6c 74 2a 20 2a 5f 65 72 72 2a 20 5c 0a  fault* *_err* \.
1bb0: 20 20 20 20 20 20 77 61 6c 2e 74 65 73 74 20 61        wal.test a
1bc0: 74 6f 66 31 2e 74 65 73 74 0a 5d 20 2d 69 6e 69  tof1.test.] -ini
1bd0: 74 69 61 6c 69 7a 65 20 7b 0a 20 20 73 65 74 20  tialize {.  set 
1be0: 3a 3a 47 28 76 61 6c 67 72 69 6e 64 29 20 31 0a  ::G(valgrind) 1.
1bf0: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
1c00: 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75  e}.  sqlite3_shu
1c10: 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f  tdown.  sqlite3_
1c20: 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65  config_lookaside
1c30: 20 30 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 69   0 0.  sqlite3_i
1c40: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f  nitialize.  auto
1c50: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
1c60: 63 74 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f  ctions.} -shutdo
1c70: 77 6e 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62  wn {.  catch {db
1c80: 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65   close}.  sqlite
1c90: 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c  3_shutdown.  sql
1ca0: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b  ite3_config_look
1cb0: 61 73 69 64 65 20 31 30 30 20 35 30 30 0a 20 20  aside 100 500.  
1cc0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
1cd0: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
1ce0: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
1cf0: 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c    unset -nocompl
1d00: 61 69 6e 20 3a 3a 47 28 76 61 6c 67 72 69 6e 64  ain ::G(valgrind
1d10: 29 0a 7d 0a 0a 0a 74 65 73 74 5f 73 75 69 74 65  ).}...test_suite
1d20: 20 22 71 75 69 63 6b 22 20 2d 70 72 65 66 69 78   "quick" -prefix
1d30: 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e   "" -description
1d40: 20 7b 0a 20 20 51 75 69 63 6b 20 74 65 73 74 20   {.  Quick test 
1d50: 73 75 69 74 65 2e 20 52 75 6e 73 20 69 6e 20 61  suite. Runs in a
1d60: 72 6f 75 6e 64 20 31 30 20 6d 69 6e 75 74 65 73  round 10 minutes
1d70: 20 6f 6e 20 61 20 77 6f 72 6b 73 74 61 74 69 6f   on a workstatio
1d80: 6e 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20  n..} -files [.  
1d90: 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69  test_set $allqui
1da0: 63 6b 74 65 73 74 73 0a 5d 0a 0a 74 65 73 74 5f  cktests.]..test_
1db0: 73 75 69 74 65 20 22 66 75 6c 6c 22 20 2d 70 72  suite "full" -pr
1dc0: 65 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70  efix "" -descrip
1dd0: 74 69 6f 6e 20 7b 0a 20 20 46 75 6c 6c 20 74 65  tion {.  Full te
1de0: 73 74 20 73 75 69 74 65 2e 20 54 61 6b 65 73 20  st suite. Takes 
1df0: 61 20 6c 6f 6e 67 20 74 69 6d 65 2e 0a 7d 20 2d  a long time..} -
1e00: 66 69 6c 65 73 20 5b 20 0a 20 20 74 65 73 74 5f  files [ .  test_
1e10: 73 65 74 20 24 61 6c 6c 74 65 73 74 73 20 0a 5d  set $alltests .]
1e20: 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20   -initialize {. 
1e30: 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61   unset -nocompla
1e40: 69 6e 20 3a 3a 47 28 69 73 71 75 69 63 6b 29 0a  in ::G(isquick).
1e50: 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 74  }..test_suite "t
1e60: 68 72 65 61 64 73 22 20 2d 70 72 65 66 69 78 20  hreads" -prefix 
1e70: 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  "" -description 
1e80: 7b 0a 20 20 41 6c 6c 20 6d 75 6c 74 69 2d 74 68  {.  All multi-th
1e90: 72 65 61 64 65 64 20 74 65 73 74 73 2e 0a 7d 20  readed tests..} 
1ea0: 2d 66 69 6c 65 73 20 7b 0a 20 20 6e 6f 74 69 66  -files {.  notif
1eb0: 79 32 2e 74 65 73 74 20 20 20 74 68 72 65 61 64  y2.test   thread
1ec0: 30 30 31 2e 74 65 73 74 20 74 68 72 65 61 64 30  001.test thread0
1ed0: 30 32 2e 74 65 73 74 20 74 68 72 65 61 64 30 30  02.test thread00
1ee0: 33 2e 74 65 73 74 20 0a 20 20 74 68 72 65 61 64  3.test .  thread
1ef0: 30 30 34 2e 74 65 73 74 20 74 68 72 65 61 64 30  004.test thread0
1f00: 30 35 2e 74 65 73 74 20 77 61 6c 74 68 72 65 61  05.test walthrea
1f10: 64 2e 74 65 73 74 0a 7d 0a 0a 74 65 73 74 5f 73  d.test.}..test_s
1f20: 75 69 74 65 20 22 66 74 73 33 22 20 2d 70 72 65  uite "fts3" -pre
1f30: 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74  fix "" -descript
1f40: 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20 46 54 53 33  ion {.  All FTS3
1f50: 20 74 65 73 74 73 20 65 78 63 65 70 74 20 66 74   tests except ft
1f60: 73 33 72 6e 64 2e 74 65 73 74 2e 0a 7d 20 2d 66  s3rnd.test..} -f
1f70: 69 6c 65 73 20 7b 0a 20 20 66 74 73 33 61 61 2e  iles {.  fts3aa.
1f80: 74 65 73 74 20 66 74 73 33 61 62 2e 74 65 73 74  test fts3ab.test
1f90: 20 66 74 73 33 61 63 2e 74 65 73 74 20 66 74 73   fts3ac.test fts
1fa0: 33 61 64 2e 74 65 73 74 0a 20 20 66 74 73 33 61  3ad.test.  fts3a
1fb0: 65 2e 74 65 73 74 20 66 74 73 33 61 66 2e 74 65  e.test fts3af.te
1fc0: 73 74 20 66 74 73 33 61 67 2e 74 65 73 74 20 66  st fts3ag.test f
1fd0: 74 73 33 61 68 2e 74 65 73 74 0a 20 20 66 74 73  ts3ah.test.  fts
1fe0: 33 61 69 2e 74 65 73 74 20 66 74 73 33 61 6a 2e  3ai.test fts3aj.
1ff0: 74 65 73 74 20 66 74 73 33 61 6b 2e 74 65 73 74  test fts3ak.test
2000: 20 66 74 73 33 61 6c 2e 74 65 73 74 0a 20 20 66   fts3al.test.  f
2010: 74 73 33 61 6d 2e 74 65 73 74 20 66 74 73 33 61  ts3am.test fts3a
2020: 6e 2e 74 65 73 74 20 66 74 73 33 61 6f 2e 74 65  n.test fts3ao.te
2030: 73 74 20 66 74 73 33 61 74 6f 6b 65 6e 2e 74 65  st fts3atoken.te
2040: 73 74 0a 20 20 66 74 73 33 61 75 74 6f 2e 74 65  st.  fts3auto.te
2050: 73 74 20 66 74 73 33 61 75 78 31 2e 74 65 73 74  st fts3aux1.test
2060: 20 66 74 73 33 61 75 78 32 2e 74 65 73 74 20 66   fts3aux2.test f
2070: 74 73 33 62 2e 74 65 73 74 0a 20 20 66 74 73 33  ts3b.test.  fts3
2080: 63 6f 6d 70 31 2e 74 65 73 74 20 66 74 73 33 63  comp1.test fts3c
2090: 6f 6e 66 2e 74 65 73 74 20 66 74 73 33 63 6f 72  onf.test fts3cor
20a0: 72 75 70 74 32 2e 74 65 73 74 20 66 74 73 33 63  rupt2.test fts3c
20b0: 6f 72 72 75 70 74 2e 74 65 73 74 0a 20 20 66 74  orrupt.test.  ft
20c0: 73 33 63 6f 76 2e 74 65 73 74 20 66 74 73 33 63  s3cov.test fts3c
20d0: 2e 74 65 73 74 20 66 74 73 33 64 65 66 65 72 32  .test fts3defer2
20e0: 2e 74 65 73 74 20 66 74 73 33 64 65 66 65 72 33  .test fts3defer3
20f0: 2e 74 65 73 74 0a 20 20 66 74 73 33 64 65 66 65  .test.  fts3defe
2100: 72 2e 74 65 73 74 20 66 74 73 33 64 72 6f 70 2e  r.test fts3drop.
2110: 74 65 73 74 20 66 74 73 33 64 2e 74 65 73 74 20  test fts3d.test 
2120: 66 74 73 33 65 2e 74 65 73 74 0a 20 20 66 74 73  fts3e.test.  fts
2130: 33 65 78 70 72 32 2e 74 65 73 74 20 66 74 73 33  3expr2.test fts3
2140: 65 78 70 72 33 2e 74 65 73 74 20 66 74 73 33 65  expr3.test fts3e
2150: 78 70 72 34 2e 74 65 73 74 20 66 74 73 33 65 78  xpr4.test fts3ex
2160: 70 72 35 2e 74 65 73 74 0a 20 20 66 74 73 33 65  pr5.test.  fts3e
2170: 78 70 72 2e 74 65 73 74 20 66 74 73 33 66 61 75  xpr.test fts3fau
2180: 6c 74 32 2e 74 65 73 74 20 66 74 73 33 66 61 75  lt2.test fts3fau
2190: 6c 74 2e 74 65 73 74 20 66 74 73 33 66 69 72 73  lt.test fts3firs
21a0: 74 2e 74 65 73 74 0a 20 20 66 74 73 33 6a 6f 69  t.test.  fts3joi
21b0: 6e 2e 74 65 73 74 20 66 74 73 33 6d 61 6c 6c 6f  n.test fts3mallo
21c0: 63 2e 74 65 73 74 20 66 74 73 33 6d 61 74 63 68  c.test fts3match
21d0: 69 6e 66 6f 2e 74 65 73 74 20 66 74 73 33 6e 65  info.test fts3ne
21e0: 61 72 2e 74 65 73 74 0a 20 20 66 74 73 33 6f 66  ar.test.  fts3of
21f0: 66 73 65 74 73 2e 74 65 73 74 20 66 74 73 33 70  fsets.test fts3p
2200: 72 65 66 69 78 32 2e 74 65 73 74 20 66 74 73 33  refix2.test fts3
2210: 70 72 65 66 69 78 2e 74 65 73 74 20 66 74 73 33  prefix.test fts3
2220: 71 75 65 72 79 2e 74 65 73 74 0a 20 20 66 74 73  query.test.  fts
2230: 33 73 68 61 72 65 64 2e 74 65 73 74 20 66 74 73  3shared.test fts
2240: 33 73 6e 69 70 70 65 74 2e 74 65 73 74 20 66 74  3snippet.test ft
2250: 73 33 73 6f 72 74 2e 74 65 73 74 20 66 74 73 33  s3sort.test fts3
2260: 74 6f 6b 31 2e 74 65 73 74 0a 20 20 66 74 73 33  tok1.test.  fts3
2270: 74 6f 6b 5f 65 72 72 2e 74 65 73 74 20 66 74 73  tok_err.test fts
2280: 33 76 61 72 69 6e 74 2e 74 65 73 74 20 66 74 73  3varint.test fts
2290: 34 61 61 2e 74 65 73 74 20 66 74 73 34 63 68 65  4aa.test fts4che
22a0: 63 6b 2e 74 65 73 74 0a 20 20 66 74 73 34 63 6f  ck.test.  fts4co
22b0: 6e 74 65 6e 74 2e 74 65 73 74 20 66 74 73 34 64  ntent.test fts4d
22c0: 6f 63 69 64 2e 74 65 73 74 20 66 74 73 34 67 72  ocid.test fts4gr
22d0: 6f 77 74 68 32 2e 74 65 73 74 20 66 74 73 34 67  owth2.test fts4g
22e0: 72 6f 77 74 68 2e 74 65 73 74 0a 20 20 66 74 73  rowth.test.  fts
22f0: 34 69 6e 63 72 2e 74 65 73 74 20 66 74 73 34 6c  4incr.test fts4l
2300: 61 6e 67 69 64 2e 74 65 73 74 20 66 74 73 34 6c  angid.test fts4l
2310: 61 73 74 72 6f 77 69 64 2e 74 65 73 74 20 66 74  astrowid.test ft
2320: 73 34 6d 65 72 67 65 32 2e 74 65 73 74 0a 20 20  s4merge2.test.  
2330: 66 74 73 34 6d 65 72 67 65 34 2e 74 65 73 74 20  fts4merge4.test 
2340: 66 74 73 34 6d 65 72 67 65 2e 74 65 73 74 20 66  fts4merge.test f
2350: 74 73 34 6e 6f 74 69 2e 74 65 73 74 20 66 74 73  ts4noti.test fts
2360: 34 6f 6e 65 70 61 73 73 2e 74 65 73 74 20 0a 20  4onepass.test . 
2370: 20 66 74 73 34 6f 70 74 2e 74 65 73 74 20 66 74   fts4opt.test ft
2380: 73 34 75 6e 69 63 6f 64 65 2e 74 65 73 74 0a 20  s4unicode.test. 
2390: 20 66 74 73 33 63 6f 72 72 75 70 74 33 2e 74 65   fts3corrupt3.te
23a0: 73 74 0a 20 20 66 74 73 33 6d 69 73 63 2e 74 65  st.  fts3misc.te
23b0: 73 74 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65  st.}..test_suite
23c0: 20 22 66 74 73 35 22 20 2d 70 72 65 66 69 78 20   "fts5" -prefix 
23d0: 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  "" -description 
23e0: 7b 0a 20 20 41 6c 6c 20 46 54 53 35 20 74 65 73  {.  All FTS5 tes
23f0: 74 73 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 67 6c  ts..} -files [gl
2400: 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24  ob -nocomplain $
2410: 3a 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74  ::testdir/../ext
2420: 2f 66 74 73 35 2f 74 65 73 74 2f 2a 2e 74 65 73  /fts5/test/*.tes
2430: 74 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  t]..test_suite "
2440: 66 74 73 35 2d 6c 69 67 68 74 22 20 2d 70 72 65  fts5-light" -pre
2450: 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74  fix "" -descript
2460: 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20 46 54 53 35  ion {.  All FTS5
2470: 20 74 65 73 74 73 2e 0a 7d 20 2d 66 69 6c 65 73   tests..} -files
2480: 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 5c 0a   [.  test_set \.
2490: 20 20 20 20 20 20 5b 67 6c 6f 62 20 2d 6e 6f 63        [glob -noc
24a0: 6f 6d 70 6c 61 69 6e 20 24 3a 3a 74 65 73 74 64  omplain $::testd
24b0: 69 72 2f 2e 2e 2f 65 78 74 2f 66 74 73 35 2f 74  ir/../ext/fts5/t
24c0: 65 73 74 2f 2a 2e 74 65 73 74 5d 20 5c 0a 20 20  est/*.test] \.  
24d0: 20 20 20 20 2d 65 78 63 6c 75 64 65 20 2a 63 6f      -exclude *co
24e0: 72 72 75 70 74 2a 20 2a 66 61 75 6c 74 2a 20 2a  rrupt* *fault* *
24f0: 62 69 67 2a 20 2a 66 74 73 35 61 6a 2a 0a 5d 0a  big* *fts5aj*.].
2500: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 77 69 6e  .test_suite "win
2510: 64 6f 77 22 20 2d 70 72 65 66 69 78 20 22 22 20  dow" -prefix "" 
2520: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
2530: 20 41 6c 6c 20 77 69 6e 64 6f 77 20 66 75 6e 63   All window func
2540: 74 69 6f 6e 20 72 65 6c 61 74 65 64 20 74 65 73  tion related tes
2550: 74 73 20 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a  ts ..} -files [.
2560: 20 20 74 65 73 74 5f 73 65 74 20 5b 67 6c 6f 62    test_set [glob
2570: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a   -nocomplain $::
2580: 74 65 73 74 64 69 72 2f 77 69 6e 64 6f 77 2a 2e  testdir/window*.
2590: 74 65 73 74 5d 0a 5d 0a 0a 74 65 73 74 5f 73 75  test].]..test_su
25a0: 69 74 65 20 22 6c 73 6d 31 22 20 2d 70 72 65 66  ite "lsm1" -pref
25b0: 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74 69  ix "" -descripti
25c0: 6f 6e 20 7b 0a 20 20 41 6c 6c 20 4c 53 4d 31 20  on {.  All LSM1 
25d0: 74 65 73 74 73 2e 0a 7d 20 2d 66 69 6c 65 73 20  tests..} -files 
25e0: 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69  [glob -nocomplai
25f0: 6e 20 24 3a 3a 74 65 73 74 64 69 72 2f 2e 2e 2f  n $::testdir/../
2600: 65 78 74 2f 6c 73 6d 31 2f 74 65 73 74 2f 2a 2e  ext/lsm1/test/*.
2610: 74 65 73 74 5d 0a 0a 74 65 73 74 5f 73 75 69 74  test]..test_suit
2620: 65 20 22 6e 6f 66 61 75 6c 74 73 69 6d 22 20 2d  e "nofaultsim" -
2630: 70 72 65 66 69 78 20 22 22 20 2d 64 65 73 63 72  prefix "" -descr
2640: 69 70 74 69 6f 6e 20 7b 0a 20 20 22 56 65 72 79  iption {.  "Very
2650: 22 20 71 75 69 63 6b 20 74 65 73 74 20 73 75 69  " quick test sui
2660: 74 65 2e 20 52 75 6e 73 20 69 6e 20 6c 65 73 73  te. Runs in less
2670: 20 74 68 61 6e 20 35 20 6d 69 6e 75 74 65 73 20   than 5 minutes 
2680: 6f 6e 20 61 20 77 6f 72 6b 73 74 61 74 69 6f 6e  on a workstation
2690: 2e 20 0a 20 20 54 68 69 73 20 74 65 73 74 20 73  . .  This test s
26a0: 75 69 74 65 20 69 73 20 74 68 65 20 73 61 6d 65  uite is the same
26b0: 20 61 73 20 74 68 65 20 22 71 75 69 63 6b 22 20   as the "quick" 
26c0: 74 65 73 74 73 2c 20 65 78 63 65 70 74 20 74 68  tests, except th
26d0: 61 74 20 73 6f 6d 65 20 66 69 6c 65 73 0a 20 20  at some files.  
26e0: 74 68 61 74 20 74 65 73 74 20 6d 61 6c 6c 6f 63  that test malloc
26f0: 20 61 6e 64 20 49 4f 20 65 72 72 6f 72 73 20 61   and IO errors a
2700: 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 20 2d 66  re omitted..} -f
2710: 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65  iles [.  test_se
2720: 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  t $allquicktests
2730: 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f   -exclude *mallo
2740: 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c  c* *ioerr* *faul
2750: 74 2a 20 2a 5f 65 72 72 2a 0a 5d 20 2d 69 6e 69  t* *_err*.] -ini
2760: 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63  tialize {.  catc
2770: 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73  h {db close}.  s
2780: 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a  qlite3_shutdown.
2790: 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63    install_malloc
27a0: 5f 66 61 75 6c 74 73 69 6d 20 30 0a 20 20 73 71  _faultsim 0.  sq
27b0: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
27c0: 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74  .  autoinstall_t
27d0: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20  est_functions.} 
27e0: 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 75 6e  -shutdown {.  un
27f0: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
2800: 3a 3a 47 28 76 61 6c 67 72 69 6e 64 29 0a 7d 0a  ::G(valgrind).}.
2810: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 71 75 65  .test_suite "que
2820: 72 79 70 6c 61 6e 6e 65 72 22 20 2d 70 72 65 66  ryplanner" -pref
2830: 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74 69  ix "" -descripti
2840: 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 6f 66 20  on {.  Tests of 
2850: 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65  the query planne
2860: 72 20 61 6e 64 20 71 75 65 72 79 20 6f 70 74 69  r and query opti
2870: 6d 69 7a 65 72 0a 7d 20 2d 66 69 6c 65 73 20 7b  mizer.} -files {
2880: 0a 20 20 61 6c 74 65 72 32 2e 74 65 73 74 20 61  .  alter2.test a
2890: 6c 74 65 72 33 2e 74 65 73 74 20 61 6c 74 65 72  lter3.test alter
28a0: 34 2e 74 65 73 74 20 61 6c 74 65 72 2e 74 65 73  4.test alter.tes
28b0: 74 20 61 6e 61 6c 79 7a 65 33 2e 74 65 73 74 0a  t analyze3.test.
28c0: 20 20 61 6e 61 6c 79 7a 65 34 2e 74 65 73 74 20    analyze4.test 
28d0: 61 6e 61 6c 79 7a 65 35 2e 74 65 73 74 20 61 6e  analyze5.test an
28e0: 61 6c 79 7a 65 36 2e 74 65 73 74 20 61 6e 61 6c  alyze6.test anal
28f0: 79 7a 65 37 2e 74 65 73 74 20 61 6e 61 6c 79 7a  yze7.test analyz
2900: 65 38 2e 74 65 73 74 0a 20 20 61 6e 61 6c 79 7a  e8.test.  analyz
2910: 65 2e 74 65 73 74 20 61 74 74 61 63 68 32 2e 74  e.test attach2.t
2920: 65 73 74 20 61 74 74 61 63 68 33 2e 74 65 73 74  est attach3.test
2930: 20 61 74 74 61 63 68 34 2e 74 65 73 74 0a 20 20   attach4.test.  
2940: 61 74 74 61 63 68 2e 74 65 73 74 20 61 75 74 6f  attach.test auto
2950: 69 6e 63 2e 74 65 73 74 20 61 75 74 6f 69 6e 64  inc.test autoind
2960: 65 78 31 2e 74 65 73 74 20 62 65 74 77 65 65 6e  ex1.test between
2970: 2e 74 65 73 74 20 63 61 73 74 2e 74 65 73 74 0a  .test cast.test.
2980: 20 20 63 68 65 63 6b 2e 74 65 73 74 20 63 6c 6f    check.test clo
2990: 73 75 72 65 30 31 2e 74 65 73 74 20 63 6f 61 6c  sure01.test coal
29a0: 65 73 63 65 2e 74 65 73 74 20 63 6f 6c 6c 61 74  esce.test collat
29b0: 65 31 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 32  e1.test collate2
29c0: 2e 74 65 73 74 0a 20 20 63 6f 6c 6c 61 74 65 33  .test.  collate3
29d0: 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 34 2e 74  .test collate4.t
29e0: 65 73 74 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73  est collate5.tes
29f0: 74 20 63 6f 6c 6c 61 74 65 36 2e 74 65 73 74 20  t collate6.test 
2a00: 63 6f 6c 6c 61 74 65 37 2e 74 65 73 74 0a 20 20  collate7.test.  
2a10: 63 6f 6c 6c 61 74 65 38 2e 74 65 73 74 20 63 6f  collate8.test co
2a20: 6c 6c 61 74 65 39 2e 74 65 73 74 20 63 6f 6c 6c  llate9.test coll
2a30: 61 74 65 41 2e 74 65 73 74 20 63 6f 6c 6d 65 74  ateA.test colmet
2a40: 61 2e 74 65 73 74 20 63 6f 6c 6e 61 6d 65 2e 74  a.test colname.t
2a50: 65 73 74 0a 20 20 63 6f 6e 66 6c 69 63 74 2e 74  est.  conflict.t
2a60: 65 73 74 20 63 6f 75 6e 74 2e 74 65 73 74 20 63  est count.test c
2a70: 6f 76 65 72 69 64 78 73 63 61 6e 2e 74 65 73 74  overidxscan.test
2a80: 20 63 72 65 61 74 65 74 61 62 2e 74 65 73 74 20   createtab.test 
2a90: 63 73 65 2e 74 65 73 74 0a 20 20 64 61 74 65 2e  cse.test.  date.
2aa0: 74 65 73 74 20 64 62 73 74 61 74 75 73 32 2e 74  test dbstatus2.t
2ab0: 65 73 74 20 64 62 73 74 61 74 75 73 2e 74 65 73  est dbstatus.tes
2ac0: 74 20 64 65 66 61 75 6c 74 2e 74 65 73 74 20 64  t default.test d
2ad0: 65 6c 65 74 65 32 2e 74 65 73 74 0a 20 20 64 65  elete2.test.  de
2ae0: 6c 65 74 65 33 2e 74 65 73 74 20 64 65 6c 65 74  lete3.test delet
2af0: 65 2e 74 65 73 74 20 64 65 73 63 69 64 78 31 2e  e.test descidx1.
2b00: 74 65 73 74 20 64 65 73 63 69 64 78 32 2e 74 65  test descidx2.te
2b10: 73 74 20 64 65 73 63 69 64 78 33 2e 74 65 73 74  st descidx3.test
2b20: 0a 20 20 64 69 73 74 69 6e 63 74 61 67 67 2e 74  .  distinctagg.t
2b30: 65 73 74 20 64 69 73 74 69 6e 63 74 2e 74 65 73  est distinct.tes
2b40: 74 20 65 5f 63 72 65 61 74 65 74 61 62 6c 65 2e  t e_createtable.
2b50: 74 65 73 74 20 65 5f 64 65 6c 65 74 65 2e 74 65  test e_delete.te
2b60: 73 74 0a 20 20 65 5f 64 72 6f 70 74 72 69 67 67  st.  e_droptrigg
2b70: 65 72 2e 74 65 73 74 20 65 5f 64 72 6f 70 76 69  er.test e_dropvi
2b80: 65 77 2e 74 65 73 74 20 65 5f 65 78 70 72 2e 74  ew.test e_expr.t
2b90: 65 73 74 20 65 5f 69 6e 73 65 72 74 2e 74 65 73  est e_insert.tes
2ba0: 74 0a 20 20 65 71 70 2e 74 65 73 74 20 65 5f 72  t.  eqp.test e_r
2bb0: 65 69 6e 64 65 78 2e 74 65 73 74 20 65 5f 72 65  eindex.test e_re
2bc0: 73 6f 6c 76 65 2e 74 65 73 74 20 65 5f 73 65 6c  solve.test e_sel
2bd0: 65 63 74 32 2e 74 65 73 74 20 65 5f 73 65 6c 65  ect2.test e_sele
2be0: 63 74 2e 74 65 73 74 0a 20 20 65 5f 75 70 64 61  ct.test.  e_upda
2bf0: 74 65 2e 74 65 73 74 20 65 78 69 73 74 73 2e 74  te.test exists.t
2c00: 65 73 74 20 65 78 70 72 2e 74 65 73 74 20 66 6b  est expr.test fk
2c10: 65 79 31 2e 74 65 73 74 20 66 6b 65 79 32 2e 74  ey1.test fkey2.t
2c20: 65 73 74 20 66 6b 65 79 33 2e 74 65 73 74 0a 20  est fkey3.test. 
2c30: 20 66 6b 65 79 34 2e 74 65 73 74 20 66 6b 65 79   fkey4.test fkey
2c40: 35 2e 74 65 73 74 20 66 75 6e 63 32 2e 74 65 73  5.test func2.tes
2c50: 74 20 66 75 6e 63 33 2e 74 65 73 74 20 66 75 6e  t func3.test fun
2c60: 63 2e 74 65 73 74 20 0a 20 20 69 6e 33 2e 74 65  c.test .  in3.te
2c70: 73 74 20 69 6e 34 2e 74 65 73 74 20 69 6e 35 2e  st in4.test in5.
2c80: 74 65 73 74 20 69 6e 64 65 78 32 2e 74 65 73 74  test index2.test
2c90: 20 69 6e 64 65 78 33 2e 74 65 73 74 0a 20 20 69   index3.test.  i
2ca0: 6e 64 65 78 34 2e 74 65 73 74 20 69 6e 64 65 78  ndex4.test index
2cb0: 35 2e 74 65 73 74 20 69 6e 64 65 78 65 64 62 79  5.test indexedby
2cc0: 2e 74 65 73 74 20 69 6e 64 65 78 2e 74 65 73 74  .test index.test
2cd0: 0a 20 20 69 6e 73 65 72 74 32 2e 74 65 73 74 20  .  insert2.test 
2ce0: 69 6e 73 65 72 74 33 2e 74 65 73 74 20 69 6e 73  insert3.test ins
2cf0: 65 72 74 34 2e 74 65 73 74 20 69 6e 73 65 72 74  ert4.test insert
2d00: 35 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65  5.test insert.te
2d10: 73 74 0a 20 20 69 6e 73 74 72 2e 74 65 73 74 20  st.  instr.test 
2d20: 69 6e 2e 74 65 73 74 20 69 6e 74 70 6b 65 79 2e  in.test intpkey.
2d30: 74 65 73 74 20 6a 6f 69 6e 32 2e 74 65 73 74 20  test join2.test 
2d40: 6a 6f 69 6e 33 2e 74 65 73 74 20 6a 6f 69 6e 34  join3.test join4
2d50: 2e 74 65 73 74 0a 20 20 6a 6f 69 6e 35 2e 74 65  .test.  join5.te
2d60: 73 74 20 6a 6f 69 6e 36 2e 74 65 73 74 20 6a 6f  st join6.test jo
2d70: 69 6e 2e 74 65 73 74 20 6c 69 6b 65 32 2e 74 65  in.test like2.te
2d80: 73 74 20 6c 69 6b 65 2e 74 65 73 74 20 6c 69 6d  st like.test lim
2d90: 69 74 2e 74 65 73 74 0a 20 20 6d 69 6e 6d 61 78  it.test.  minmax
2da0: 32 2e 74 65 73 74 20 6d 69 6e 6d 61 78 33 2e 74  2.test minmax3.t
2db0: 65 73 74 20 6d 69 6e 6d 61 78 34 2e 74 65 73 74  est minmax4.test
2dc0: 20 6d 69 6e 6d 61 78 2e 74 65 73 74 20 6d 69 73   minmax.test mis
2dd0: 63 31 2e 74 65 73 74 20 6d 69 73 63 32 2e 74 65  c1.test misc2.te
2de0: 73 74 0a 20 20 6d 69 73 63 33 2e 74 65 73 74 20  st.  misc3.test 
2df0: 6d 69 73 63 34 2e 74 65 73 74 20 6d 69 73 63 35  misc4.test misc5
2e00: 2e 74 65 73 74 20 6d 69 73 63 36 2e 74 65 73 74  .test misc6.test
2e10: 20 6d 69 73 63 37 2e 74 65 73 74 20 6f 72 64 65   misc7.test orde
2e20: 72 62 79 31 2e 74 65 73 74 0a 20 20 6f 72 64 65  rby1.test.  orde
2e30: 72 62 79 32 2e 74 65 73 74 20 6f 72 64 65 72 62  rby2.test orderb
2e40: 79 33 2e 74 65 73 74 20 6f 72 64 65 72 62 79 34  y3.test orderby4
2e50: 2e 74 65 73 74 20 72 61 6e 64 65 78 70 72 31 2e  .test randexpr1.
2e60: 74 65 73 74 20 72 65 67 65 78 70 31 2e 74 65 73  test regexp1.tes
2e70: 74 0a 20 20 72 65 69 6e 64 65 78 2e 74 65 73 74  t.  reindex.test
2e80: 20 72 6f 77 68 61 73 68 2e 74 65 73 74 20 72 6f   rowhash.test ro
2e90: 77 69 64 2e 74 65 73 74 20 73 63 68 65 6d 61 32  wid.test schema2
2ea0: 2e 74 65 73 74 20 73 63 68 65 6d 61 33 2e 74 65  .test schema3.te
2eb0: 73 74 0a 20 20 73 63 68 65 6d 61 34 2e 74 65 73  st.  schema4.tes
2ec0: 74 20 73 63 68 65 6d 61 35 2e 74 65 73 74 20 73  t schema5.test s
2ed0: 63 68 65 6d 61 2e 74 65 73 74 0a 20 20 73 65 6c  chema.test.  sel
2ee0: 65 63 74 31 2e 74 65 73 74 20 73 65 6c 65 63 74  ect1.test select
2ef0: 32 2e 74 65 73 74 20 73 65 6c 65 63 74 33 2e 74  2.test select3.t
2f00: 65 73 74 20 73 65 6c 65 63 74 34 2e 74 65 73 74  est select4.test
2f10: 20 73 65 6c 65 63 74 35 2e 74 65 73 74 0a 20 20   select5.test.  
2f20: 73 65 6c 65 63 74 36 2e 74 65 73 74 20 73 65 6c  select6.test sel
2f30: 65 63 74 37 2e 74 65 73 74 20 73 65 6c 65 63 74  ect7.test select
2f40: 38 2e 74 65 73 74 20 73 65 6c 65 63 74 39 2e 74  8.test select9.t
2f50: 65 73 74 20 73 65 6c 65 63 74 41 2e 74 65 73 74  est selectA.test
2f60: 0a 20 20 73 65 6c 65 63 74 42 2e 74 65 73 74 20  .  selectB.test 
2f70: 73 65 6c 65 63 74 43 2e 74 65 73 74 20 73 65 6c  selectC.test sel
2f80: 65 63 74 44 2e 74 65 73 74 20 73 65 6c 65 63 74  ectD.test select
2f90: 45 2e 74 65 73 74 20 73 69 64 65 64 65 6c 65 74  E.test sidedelet
2fa0: 65 2e 74 65 73 74 0a 20 20 73 6f 72 74 2e 74 65  e.test.  sort.te
2fb0: 73 74 20 73 70 65 6c 6c 66 69 78 2e 74 65 73 74  st spellfix.test
2fc0: 20 73 75 62 71 75 65 72 79 32 2e 74 65 73 74 20   subquery2.test 
2fd0: 73 75 62 71 75 65 72 79 2e 74 65 73 74 20 73 75  subquery.test su
2fe0: 62 73 65 6c 65 63 74 2e 74 65 73 74 0a 20 20 73  bselect.test.  s
2ff0: 75 62 73 74 72 2e 74 65 73 74 20 74 6b 74 2d 30  ubstr.test tkt-0
3000: 32 61 38 65 38 31 64 34 34 2e 74 65 73 74 20 74  2a8e81d44.test t
3010: 6b 74 31 34 33 35 2e 74 65 73 74 20 74 6b 74 31  kt1435.test tkt1
3020: 34 34 33 2e 74 65 73 74 20 74 6b 74 31 34 34 34  443.test tkt1444
3030: 2e 74 65 73 74 0a 20 20 74 6b 74 31 34 34 39 2e  .test.  tkt1449.
3040: 74 65 73 74 20 74 6b 74 31 34 37 33 2e 74 65 73  test tkt1473.tes
3050: 74 20 74 6b 74 31 35 30 31 2e 74 65 73 74 20 74  t tkt1501.test t
3060: 6b 74 31 35 31 32 2e 74 65 73 74 20 74 6b 74 31  kt1512.test tkt1
3070: 35 31 34 2e 74 65 73 74 0a 20 20 74 6b 74 31 35  514.test.  tkt15
3080: 33 36 2e 74 65 73 74 20 74 6b 74 31 35 33 37 2e  36.test tkt1537.
3090: 74 65 73 74 20 74 6b 74 31 35 36 37 2e 74 65 73  test tkt1567.tes
30a0: 74 20 74 6b 74 31 36 34 34 2e 74 65 73 74 20 74  t tkt1644.test t
30b0: 6b 74 31 36 36 37 2e 74 65 73 74 0a 20 20 74 6b  kt1667.test.  tk
30c0: 74 31 38 37 33 2e 74 65 73 74 20 74 6b 74 32 31  t1873.test tkt21
30d0: 34 31 2e 74 65 73 74 20 74 6b 74 32 31 39 32 2e  41.test tkt2192.
30e0: 74 65 73 74 20 74 6b 74 32 32 31 33 2e 74 65 73  test tkt2213.tes
30f0: 74 20 74 6b 74 32 32 35 31 2e 74 65 73 74 0a 20  t tkt2251.test. 
3100: 20 74 6b 74 32 32 38 35 2e 74 65 73 74 20 74 6b   tkt2285.test tk
3110: 74 32 33 33 32 2e 74 65 73 74 20 74 6b 74 32 33  t2332.test tkt23
3120: 33 39 2e 74 65 73 74 20 74 6b 74 32 33 39 31 2e  39.test tkt2391.
3130: 74 65 73 74 20 74 6b 74 32 34 30 39 2e 74 65 73  test tkt2409.tes
3140: 74 0a 20 20 74 6b 74 32 34 35 30 2e 74 65 73 74  t.  tkt2450.test
3150: 20 74 6b 74 32 35 36 35 2e 74 65 73 74 20 74 6b   tkt2565.test tk
3160: 74 32 36 34 30 2e 74 65 73 74 20 74 6b 74 32 36  t2640.test tkt26
3170: 34 33 2e 74 65 73 74 20 74 6b 74 32 36 38 36 2e  43.test tkt2686.
3180: 74 65 73 74 0a 20 20 74 6b 74 2d 32 36 66 66 30  test.  tkt-26ff0
3190: 63 32 64 31 65 2e 74 65 73 74 20 74 6b 74 32 37  c2d1e.test tkt27
31a0: 36 37 2e 74 65 73 74 20 74 6b 74 32 38 31 37 2e  67.test tkt2817.
31b0: 74 65 73 74 20 74 6b 74 32 38 32 30 2e 74 65 73  test tkt2820.tes
31c0: 74 20 74 6b 74 32 38 32 32 2e 74 65 73 74 0a 20  t tkt2822.test. 
31d0: 20 74 6b 74 32 38 33 32 2e 74 65 73 74 20 74 6b   tkt2832.test tk
31e0: 74 32 38 35 34 2e 74 65 73 74 20 74 6b 74 32 39  t2854.test tkt29
31f0: 32 30 2e 74 65 73 74 20 74 6b 74 32 39 32 37 2e  20.test tkt2927.
3200: 74 65 73 74 20 74 6b 74 32 39 34 32 2e 74 65 73  test tkt2942.tes
3210: 74 0a 20 20 74 6b 74 2d 32 61 35 36 32 39 32 30  t.  tkt-2a562920
3220: 32 66 2e 74 65 73 74 20 74 6b 74 2d 32 64 31 61  2f.test tkt-2d1a
3230: 35 63 36 37 64 2e 74 65 73 74 20 74 6b 74 2d 32  5c67d.test tkt-2
3240: 65 61 32 34 32 35 64 33 34 2e 74 65 73 74 20 74  ea2425d34.test t
3250: 6b 74 33 30 38 30 2e 74 65 73 74 0a 20 20 74 6b  kt3080.test.  tk
3260: 74 33 30 39 33 2e 74 65 73 74 20 74 6b 74 33 31  t3093.test tkt31
3270: 32 31 2e 74 65 73 74 20 74 6b 74 2d 33 31 33 33  21.test tkt-3133
3280: 38 64 63 61 37 65 2e 74 65 73 74 20 74 6b 74 2d  8dca7e.test tkt-
3290: 33 31 33 37 32 33 63 33 35 36 2e 74 65 73 74 0a  313723c356.test.
32a0: 20 20 74 6b 74 33 32 30 31 2e 74 65 73 74 20 74    tkt3201.test t
32b0: 6b 74 33 32 39 32 2e 74 65 73 74 20 74 6b 74 33  kt3292.test tkt3
32c0: 32 39 38 2e 74 65 73 74 20 74 6b 74 33 33 33 34  298.test tkt3334
32d0: 2e 74 65 73 74 20 74 6b 74 33 33 34 36 2e 74 65  .test tkt3346.te
32e0: 73 74 0a 20 20 74 6b 74 33 33 35 37 2e 74 65 73  st.  tkt3357.tes
32f0: 74 20 74 6b 74 33 34 31 39 2e 74 65 73 74 20 74  t tkt3419.test t
3300: 6b 74 33 34 32 34 2e 74 65 73 74 20 74 6b 74 33  kt3424.test tkt3
3310: 34 34 32 2e 74 65 73 74 20 74 6b 74 33 34 35 37  442.test tkt3457
3320: 2e 74 65 73 74 0a 20 20 74 6b 74 33 34 36 31 2e  .test.  tkt3461.
3330: 74 65 73 74 20 74 6b 74 33 34 39 33 2e 74 65 73  test tkt3493.tes
3340: 74 20 74 6b 74 33 35 30 38 2e 74 65 73 74 20 74  t tkt3508.test t
3350: 6b 74 33 35 32 32 2e 74 65 73 74 20 74 6b 74 33  kt3522.test tkt3
3360: 35 32 37 2e 74 65 73 74 0a 20 20 74 6b 74 33 35  527.test.  tkt35
3370: 34 31 2e 74 65 73 74 20 74 6b 74 33 35 35 34 2e  41.test tkt3554.
3380: 74 65 73 74 20 74 6b 74 33 35 38 31 2e 74 65 73  test tkt3581.tes
3390: 74 20 74 6b 74 33 35 78 78 2e 74 65 73 74 20 74  t tkt35xx.test t
33a0: 6b 74 33 36 33 30 2e 74 65 73 74 0a 20 20 74 6b  kt3630.test.  tk
33b0: 74 33 37 31 38 2e 74 65 73 74 20 74 6b 74 33 37  t3718.test tkt37
33c0: 33 31 2e 74 65 73 74 20 74 6b 74 33 37 35 37 2e  31.test tkt3757.
33d0: 74 65 73 74 20 74 6b 74 33 37 36 31 2e 74 65 73  test tkt3761.tes
33e0: 74 20 74 6b 74 33 37 36 32 2e 74 65 73 74 0a 20  t tkt3762.test. 
33f0: 20 74 6b 74 33 37 37 33 2e 74 65 73 74 20 74 6b   tkt3773.test tk
3400: 74 33 37 39 31 2e 74 65 73 74 20 74 6b 74 33 37  t3791.test tkt37
3410: 39 33 2e 74 65 73 74 20 74 6b 74 33 38 31 30 2e  93.test tkt3810.
3420: 74 65 73 74 20 74 6b 74 33 38 32 34 2e 74 65 73  test tkt3824.tes
3430: 74 0a 20 20 74 6b 74 33 38 33 32 2e 74 65 73 74  t.  tkt3832.test
3440: 20 74 6b 74 33 38 33 38 2e 74 65 73 74 20 74 6b   tkt3838.test tk
3450: 74 33 38 34 31 2e 74 65 73 74 20 74 6b 74 2d 33  t3841.test tkt-3
3460: 38 35 61 35 62 35 36 62 39 2e 74 65 73 74 20 74  85a5b56b9.test t
3470: 6b 74 33 38 37 31 2e 74 65 73 74 0a 20 20 74 6b  kt3871.test.  tk
3480: 74 33 38 37 39 2e 74 65 73 74 20 74 6b 74 2d 33  t3879.test tkt-3
3490: 38 63 62 35 64 66 33 37 35 2e 74 65 73 74 20 74  8cb5df375.test t
34a0: 6b 74 33 39 31 31 2e 74 65 73 74 20 74 6b 74 33  kt3911.test tkt3
34b0: 39 31 38 2e 74 65 73 74 20 74 6b 74 33 39 32 32  918.test tkt3922
34c0: 2e 74 65 73 74 0a 20 20 74 6b 74 33 39 32 39 2e  .test.  tkt3929.
34d0: 74 65 73 74 20 74 6b 74 33 39 33 35 2e 74 65 73  test tkt3935.tes
34e0: 74 20 74 6b 74 33 39 39 32 2e 74 65 73 74 20 74  t tkt3992.test t
34f0: 6b 74 33 39 39 37 2e 74 65 73 74 20 74 6b 74 2d  kt3997.test tkt-
3500: 33 39 39 38 36 38 33 61 31 36 2e 74 65 73 74 0a  3998683a16.test.
3510: 20 20 74 6b 74 2d 33 61 37 37 63 39 37 31 34 65    tkt-3a77c9714e
3520: 2e 74 65 73 74 20 74 6b 74 2d 33 66 65 38 39 37  .test tkt-3fe897
3530: 33 35 32 65 2e 74 65 73 74 20 74 6b 74 34 30 31  352e.test tkt401
3540: 38 2e 74 65 73 74 20 74 6b 74 2d 34 61 30 33 65  8.test tkt-4a03e
3550: 64 63 34 63 38 2e 74 65 73 74 0a 20 20 74 6b 74  dc4c8.test.  tkt
3560: 2d 34 64 64 39 35 66 36 39 34 33 2e 74 65 73 74  -4dd95f6943.test
3570: 20 74 6b 74 2d 35 34 38 34 34 65 65 61 33 66 2e   tkt-54844eea3f.
3580: 74 65 73 74 20 74 6b 74 2d 35 64 38 36 33 66 38  test tkt-5d863f8
3590: 37 36 65 2e 74 65 73 74 0a 20 20 74 6b 74 2d 35  76e.test.  tkt-5
35a0: 65 31 30 34 32 30 65 38 64 2e 74 65 73 74 20 74  e10420e8d.test t
35b0: 6b 74 2d 35 65 65 32 33 37 33 31 66 2e 74 65 73  kt-5ee23731f.tes
35c0: 74 20 74 6b 74 2d 36 62 66 62 39 38 64 66 63 30  t tkt-6bfb98dfc0
35d0: 2e 74 65 73 74 0a 20 20 74 6b 74 2d 37 35 32 65  .test.  tkt-752e
35e0: 31 36 34 36 66 63 2e 74 65 73 74 20 74 6b 74 2d  1646fc.test tkt-
35f0: 37 38 65 30 34 65 35 32 65 61 2e 74 65 73 74 20  78e04e52ea.test 
3600: 74 6b 74 2d 37 61 33 31 37 30 35 61 37 65 36 2e  tkt-7a31705a7e6.
3610: 74 65 73 74 0a 20 20 74 6b 74 2d 37 62 62 66 62  test.  tkt-7bbfb
3620: 37 64 34 34 32 2e 74 65 73 74 20 74 6b 74 2d 38  7d442.test tkt-8
3630: 30 62 61 32 30 31 30 37 39 2e 74 65 73 74 20 74  0ba201079.test t
3640: 6b 74 2d 38 30 65 30 33 31 61 30 30 66 2e 74 65  kt-80e031a00f.te
3650: 73 74 0a 20 20 74 6b 74 2d 38 34 35 34 61 32 30  st.  tkt-8454a20
3660: 37 62 39 2e 74 65 73 74 20 74 6b 74 2d 39 31 65  7b9.test tkt-91e
3670: 32 65 38 62 61 36 66 2e 74 65 73 74 20 74 6b 74  2e8ba6f.test tkt
3680: 2d 39 34 63 30 34 65 61 61 64 62 2e 74 65 73 74  -94c04eaadb.test
3690: 0a 20 20 74 6b 74 2d 39 64 36 38 63 38 38 33 2e  .  tkt-9d68c883.
36a0: 74 65 73 74 20 74 6b 74 2d 61 37 62 37 38 30 33  test tkt-a7b7803
36b0: 65 2e 74 65 73 74 20 74 6b 74 2d 62 31 64 33 61  e.test tkt-b1d3a
36c0: 32 65 35 33 31 2e 74 65 73 74 0a 20 20 74 6b 74  2e531.test.  tkt
36d0: 2d 62 33 35 31 64 39 35 66 39 2e 74 65 73 74 20  -b351d95f9.test 
36e0: 74 6b 74 2d 62 37 32 37 38 37 62 31 2e 74 65 73  tkt-b72787b1.tes
36f0: 74 20 74 6b 74 2d 62 64 34 38 34 61 30 39 30 63  t tkt-bd484a090c
3700: 2e 74 65 73 74 0a 20 20 74 6b 74 2d 62 64 63 36  .test.  tkt-bdc6
3710: 62 62 62 62 33 38 2e 74 65 73 74 20 74 6b 74 2d  bbbb38.test tkt-
3720: 63 34 38 64 39 39 64 36 39 30 2e 74 65 73 74 20  c48d99d690.test 
3730: 74 6b 74 2d 63 62 64 30 35 34 66 61 36 62 2e 74  tkt-cbd054fa6b.t
3740: 65 73 74 0a 20 20 74 6b 74 2d 64 31 31 66 30 39  est.  tkt-d11f09
3750: 64 33 36 65 2e 74 65 73 74 20 74 6b 74 2d 64 36  d36e.test tkt-d6
3760: 33 35 32 33 36 33 37 35 2e 74 65 73 74 20 74 6b  35236375.test tk
3770: 74 2d 64 38 32 65 33 66 33 37 32 31 2e 74 65 73  t-d82e3f3721.tes
3780: 74 0a 20 20 74 6b 74 2d 66 33 65 35 61 62 65 64  t.  tkt-f3e5abed
3790: 35 35 2e 74 65 73 74 20 74 6b 74 2d 66 37 37 37  55.test tkt-f777
37a0: 32 35 31 64 63 37 61 2e 74 65 73 74 20 74 6b 74  251dc7a.test tkt
37b0: 2d 66 37 62 34 65 64 65 63 2e 74 65 73 74 0a 20  -f7b4edec.test. 
37c0: 20 74 6b 74 2d 66 39 37 33 63 37 61 63 33 31 2e   tkt-f973c7ac31.
37d0: 74 65 73 74 20 74 6b 74 2d 66 61 37 62 66 35 65  test tkt-fa7bf5e
37e0: 63 2e 74 65 73 74 20 74 6b 74 2d 66 63 36 32 61  c.test tkt-fc62a
37f0: 66 34 35 32 33 2e 74 65 73 74 0a 20 20 74 6b 74  f4523.test.  tkt
3800: 2d 66 63 37 62 64 36 33 35 38 66 2e 74 65 73 74  -fc7bd6358f.test
3810: 20 74 72 69 67 67 65 72 31 2e 74 65 73 74 20 74   trigger1.test t
3820: 72 69 67 67 65 72 32 2e 74 65 73 74 20 74 72 69  rigger2.test tri
3830: 67 67 65 72 33 2e 74 65 73 74 0a 20 20 74 72 69  gger3.test.  tri
3840: 67 67 65 72 34 2e 74 65 73 74 20 74 72 69 67 67  gger4.test trigg
3850: 65 72 35 2e 74 65 73 74 20 74 72 69 67 67 65 72  er5.test trigger
3860: 36 2e 74 65 73 74 20 74 72 69 67 67 65 72 37 2e  6.test trigger7.
3870: 74 65 73 74 20 74 72 69 67 67 65 72 38 2e 74 65  test trigger8.te
3880: 73 74 0a 20 20 74 72 69 67 67 65 72 39 2e 74 65  st.  trigger9.te
3890: 73 74 20 74 72 69 67 67 65 72 41 2e 74 65 73 74  st triggerA.test
38a0: 20 74 72 69 67 67 65 72 42 2e 74 65 73 74 20 74   triggerB.test t
38b0: 72 69 67 67 65 72 43 2e 74 65 73 74 20 74 72 69  riggerC.test tri
38c0: 67 67 65 72 44 2e 74 65 73 74 0a 20 20 74 79 70  ggerD.test.  typ
38d0: 65 73 32 2e 74 65 73 74 20 74 79 70 65 73 33 2e  es2.test types3.
38e0: 74 65 73 74 20 74 79 70 65 73 2e 74 65 73 74 20  test types.test 
38f0: 75 6e 69 71 75 65 2e 74 65 73 74 20 75 6e 6f 72  unique.test unor
3900: 64 65 72 65 64 2e 74 65 73 74 0a 20 20 75 70 64  dered.test.  upd
3910: 61 74 65 2e 74 65 73 74 20 76 69 65 77 2e 74 65  ate.test view.te
3920: 73 74 20 76 74 61 62 31 2e 74 65 73 74 20 76 74  st vtab1.test vt
3930: 61 62 32 2e 74 65 73 74 20 76 74 61 62 33 2e 74  ab2.test vtab3.t
3940: 65 73 74 20 76 74 61 62 34 2e 74 65 73 74 0a 20  est vtab4.test. 
3950: 20 76 74 61 62 35 2e 74 65 73 74 20 76 74 61 62   vtab5.test vtab
3960: 36 2e 74 65 73 74 20 76 74 61 62 37 2e 74 65 73  6.test vtab7.tes
3970: 74 20 76 74 61 62 38 2e 74 65 73 74 20 76 74 61  t vtab8.test vta
3980: 62 39 2e 74 65 73 74 20 76 74 61 62 5f 61 6c 74  b9.test vtab_alt
3990: 65 72 2e 74 65 73 74 0a 20 20 76 74 61 62 41 2e  er.test.  vtabA.
39a0: 74 65 73 74 20 76 74 61 62 42 2e 74 65 73 74 20  test vtabB.test 
39b0: 76 74 61 62 43 2e 74 65 73 74 20 76 74 61 62 44  vtabC.test vtabD
39c0: 2e 74 65 73 74 20 76 74 61 62 45 2e 74 65 73 74  .test vtabE.test
39d0: 0a 20 20 76 74 61 62 46 2e 74 65 73 74 20 77 68  .  vtabF.test wh
39e0: 65 72 65 32 2e 74 65 73 74 20 77 68 65 72 65 33  ere2.test where3
39f0: 2e 74 65 73 74 20 77 68 65 72 65 34 2e 74 65 73  .test where4.tes
3a00: 74 20 77 68 65 72 65 35 2e 74 65 73 74 20 77 68  t where5.test wh
3a10: 65 72 65 36 2e 74 65 73 74 0a 20 20 77 68 65 72  ere6.test.  wher
3a20: 65 37 2e 74 65 73 74 20 77 68 65 72 65 38 6d 2e  e7.test where8m.
3a30: 74 65 73 74 20 77 68 65 72 65 38 2e 74 65 73 74  test where8.test
3a40: 20 77 68 65 72 65 39 2e 74 65 73 74 20 77 68 65   where9.test whe
3a50: 72 65 41 2e 74 65 73 74 20 77 68 65 72 65 42 2e  reA.test whereB.
3a60: 74 65 73 74 0a 20 20 77 68 65 72 65 43 2e 74 65  test.  whereC.te
3a70: 73 74 20 77 68 65 72 65 44 2e 74 65 73 74 20 77  st whereD.test w
3a80: 68 65 72 65 45 2e 74 65 73 74 20 77 68 65 72 65  hereE.test where
3a90: 46 2e 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69  F.test wherelimi
3aa0: 74 2e 74 65 73 74 0a 20 20 77 68 65 72 65 2e 74  t.test.  where.t
3ab0: 65 73 74 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74  est.}..test_suit
3ac0: 65 20 22 76 66 73 6c 6f 67 22 20 2d 70 72 65 66  e "vfslog" -pref
3ad0: 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74 69  ix "" -descripti
3ae0: 6f 6e 20 7b 0a 20 20 22 56 66 73 6c 6f 67 22 20  on {.  "Vfslog" 
3af0: 71 75 69 63 6b 20 74 65 73 74 20 73 75 69 74 65  quick test suite
3b00: 2e 20 4c 69 6b 65 20 22 76 65 72 79 71 75 69 63  . Like "veryquic
3b10: 6b 22 20 65 78 63 65 70 74 20 64 6f 65 73 20 6e  k" except does n
3b20: 6f 74 20 6f 6d 69 74 73 0a 20 20 61 20 66 65 77  ot omits.  a few
3b30: 20 74 65 73 74 73 20 74 68 61 74 20 64 6f 20 6e   tests that do n
3b40: 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 61 20 76  ot work with a v
3b50: 65 72 73 69 6f 6e 20 31 20 56 46 53 2e 20 41 6e  ersion 1 VFS. An
3b60: 64 20 74 68 65 20 71 75 6f 74 61 2a 20 74 65 73  d the quota* tes
3b70: 74 73 2c 0a 20 20 77 68 69 63 68 20 64 6f 20 6e  ts,.  which do n
3b80: 6f 74 20 77 6f 72 6b 20 77 69 74 68 20 61 20 56  ot work with a V
3b90: 46 53 20 74 68 61 74 20 75 73 65 73 20 74 68 65  FS that uses the
3ba0: 20 70 56 66 73 20 61 72 67 75 6d 65 6e 74 20 70   pVfs argument p
3bb0: 61 73 73 65 64 20 74 6f 0a 20 20 73 71 6c 69 74  assed to.  sqlit
3bc0: 65 33 5f 76 66 73 20 6d 65 74 68 6f 64 73 2e 0a  e3_vfs methods..
3bd0: 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73  } -files [.  tes
3be0: 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74  t_set $allquickt
3bf0: 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d  ests -exclude *m
3c00: 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a  alloc* *ioerr* *
3c10: 66 61 75 6c 74 2a 20 6f 73 65 72 72 6f 72 2e 74  fault* oserror.t
3c20: 65 73 74 20 5c 0a 20 20 70 61 67 65 72 31 2e 74  est \.  pager1.t
3c30: 65 73 74 20 73 79 73 63 61 6c 6c 2e 74 65 73 74  est syscall.test
3c40: 20 73 79 73 66 61 75 6c 74 2e 74 65 73 74 20 74   sysfault.test t
3c50: 6b 74 33 34 35 37 2e 74 65 73 74 20 71 75 6f 74  kt3457.test quot
3c60: 61 2a 20 73 75 70 65 72 6c 6f 63 6b 2a 20 5c 0a  a* superlock* \.
3c70: 20 20 77 61 6c 2a 20 6d 6d 61 70 2a 0a 5d 0a 0a    wal* mmap*.]..
3c80: 74 65 73 74 5f 73 75 69 74 65 20 22 61 74 6f 6d  test_suite "atom
3c90: 69 63 2d 62 61 74 63 68 2d 77 72 69 74 65 22 20  ic-batch-write" 
3ca0: 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65 73 63  -prefix "" -desc
3cb0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 4c 69 6b 65  ription {.  Like
3cc0: 20 76 65 72 79 71 75 69 63 6b 2e 74 65 73 74 2c   veryquick.test,
3cd0: 20 62 75 74 20 6d 75 73 74 20 62 65 20 72 75 6e   but must be run
3ce0: 20 6f 6e 20 61 20 66 69 6c 65 2d 73 79 73 74 65   on a file-syste
3cf0: 6d 20 74 68 61 74 20 73 75 70 70 6f 72 74 73 0a  m that supports.
3d00: 20 20 61 74 6f 6d 69 63 2d 62 61 74 63 68 2d 77    atomic-batch-w
3d10: 72 69 74 65 73 2e 20 54 65 73 74 73 20 74 68 61  rites. Tests tha
3d20: 74 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20  t depend on the 
3d30: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 62 65 69  journal file bei
3d40: 6e 67 20 70 72 65 73 65 6e 74 0a 20 20 61 72 65  ng present.  are
3d50: 20 6f 6d 69 74 74 65 64 2e 0a 7d 20 2d 66 69 6c   omitted..} -fil
3d60: 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20  es [.  test_set 
3d70: 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  $allquicktests -
3d80: 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a  exclude *malloc*
3d90: 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a   *ioerr* *fault*
3da0: 20 2a 62 69 67 66 69 6c 65 2a 20 2a 5f 65 72 72   *bigfile* *_err
3db0: 2a 20 5c 0a 20 20 20 20 20 20 2a 66 74 73 35 63  * \.      *fts5c
3dc0: 6f 72 72 75 70 74 2a 20 2a 66 74 73 35 62 69 67  orrupt* *fts5big
3dd0: 2a 20 2a 66 74 73 35 61 6a 2a 20 20 5c 0a 20 20  * *fts5aj*  \.  
3de0: 20 20 20 20 63 72 61 73 68 38 2e 74 65 73 74 20      crash8.test 
3df0: 64 65 6c 65 74 65 5f 64 62 2e 74 65 73 74 20 20  delete_db.test  
3e00: 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 65 78        \.      ex
3e10: 63 6c 75 73 69 76 65 2e 74 65 73 74 20 6a 6f 75  clusive.test jou
3e20: 72 6e 61 6c 33 2e 74 65 73 74 20 20 20 20 20 20  rnal3.test      
3e30: 5c 0a 20 20 20 20 20 20 6a 6f 75 72 6e 61 6c 31  \.      journal1
3e40: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
3e50: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
3e60: 20 20 6a 72 6e 6c 6d 6f 64 65 2e 74 65 73 74 20    jrnlmode.test 
3e70: 6a 72 6e 6c 6d 6f 64 65 32 2e 74 65 73 74 20 20  jrnlmode2.test  
3e80: 20 20 20 20 5c 0a 20 20 20 20 20 20 6c 6f 63 6b      \.      lock
3e90: 34 2e 74 65 73 74 20 70 61 67 65 72 31 2e 74 65  4.test pager1.te
3ea0: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a  st            \.
3eb0: 20 20 20 20 20 20 70 61 67 65 72 33 2e 74 65 73        pager3.tes
3ec0: 74 20 73 68 61 72 65 64 41 2e 74 65 73 74 20 20  t sharedA.test  
3ed0: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20          \.      
3ee0: 73 79 6d 6c 69 6e 6b 2e 74 65 73 74 20 73 74 6d  symlink.test stm
3ef0: 74 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20  t.test          
3f00: 20 20 5c 0a 20 20 20 20 20 20 73 79 6e 63 2e 74    \.      sync.t
3f10: 65 73 74 20 73 79 6e 63 32 2e 74 65 73 74 20 20  est sync2.test  
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
3f30: 20 20 20 20 74 65 6d 70 64 62 2e 74 65 73 74 20      tempdb.test 
3f40: 74 6b 74 33 34 35 37 2e 74 65 73 74 20 20 20 20  tkt3457.test    
3f50: 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 76 61        \.      va
3f60: 63 75 75 6d 35 2e 74 65 73 74 20 77 61 6c 32 2e  cuum5.test wal2.
3f70: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20  test            
3f80: 5c 0a 20 20 20 20 20 20 77 61 6c 6d 6f 64 65 2e  \.      walmode.
3f90: 74 65 73 74 20 7a 65 72 6f 64 61 6d 61 67 65 2e  test zerodamage.
3fa0: 74 65 73 74 0a 5d 20 2d 69 6e 69 74 69 61 6c 69  test.] -initiali
3fb0: 7a 65 20 7b 0a 20 20 69 66 20 7b 5b 61 74 6f 6d  ze {.  if {[atom
3fc0: 69 63 5f 62 61 74 63 68 5f 77 72 69 74 65 20 74  ic_batch_write t
3fd0: 65 73 74 2e 64 62 5d 3d 3d 30 7d 20 7b 0a 20 20  est.db]==0} {.  
3fe0: 20 20 65 72 72 6f 72 20 22 46 69 6c 65 20 73 79    error "File sy
3ff0: 73 74 65 6d 20 64 6f 65 73 20 4e 4f 54 20 73 75  stem does NOT su
4000: 70 70 6f 72 74 20 61 74 6f 6d 69 63 2d 62 61 74  pport atomic-bat
4010: 63 68 2d 77 72 69 74 65 22 0a 20 20 7d 0a 7d 0a  ch-write".  }.}.
4020: 0a 6c 61 70 70 65 6e 64 20 3a 3a 74 65 73 74 73  .lappend ::tests
4030: 75 69 74 65 6c 69 73 74 20 78 78 78 0a 23 2d 2d  uitelist xxx.#--
4040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4050: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4080: 2d 2d 2d 2d 2d 2d 2d 0a 23 20 44 65 66 69 6e 65  -------.# Define
4090: 20 74 68 65 20 63 6f 76 65 72 61 67 65 20 72 65   the coverage re
40a0: 6c 61 74 65 64 20 74 65 73 74 20 73 75 69 74 65  lated test suite
40b0: 73 3a 0a 23 0a 23 20 20 20 63 6f 76 65 72 61 67  s:.#.#   coverag
40c0: 65 2d 77 61 6c 0a 23 0a 74 65 73 74 5f 73 75 69  e-wal.#.test_sui
40d0: 74 65 20 22 63 6f 76 65 72 61 67 65 2d 77 61 6c  te "coverage-wal
40e0: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
40f0: 0a 20 20 43 6f 76 65 72 61 67 65 20 74 65 73 74  .  Coverage test
4100: 73 20 66 6f 72 20 66 69 6c 65 20 77 61 6c 2e 63  s for file wal.c
4110: 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 77  ..} -files {.  w
4120: 61 6c 2e 74 65 73 74 20 20 20 20 20 20 20 77 61  al.test       wa
4130: 6c 32 2e 74 65 73 74 20 20 20 20 20 77 61 6c 33  l2.test     wal3
4140: 2e 74 65 73 74 20 20 20 20 20 20 20 77 61 6c 6d  .test       walm
4150: 6f 64 65 2e 74 65 73 74 20 20 20 20 0a 20 20 77  ode.test    .  w
4160: 61 6c 62 61 6b 2e 74 65 73 74 20 20 20 20 77 61  albak.test    wa
4170: 6c 68 6f 6f 6b 2e 74 65 73 74 20 20 77 61 6c 63  lhook.test  walc
4180: 72 61 73 68 32 2e 74 65 73 74 20 20 77 61 6c 63  rash2.test  walc
4190: 6b 73 75 6d 2e 74 65 73 74 0a 20 20 77 61 6c 66  ksum.test.  walf
41a0: 61 75 6c 74 2e 74 65 73 74 20 20 77 61 6c 62 69  ault.test  walbi
41b0: 67 2e 74 65 73 74 20 20 20 77 61 6c 6e 6f 73 68  g.test   walnosh
41c0: 6d 2e 74 65 73 74 0a 20 20 77 61 6c 35 2e 74 65  m.test.  wal5.te
41d0: 73 74 0a 7d 20 0a 0a 74 65 73 74 5f 73 75 69 74  st.} ..test_suit
41e0: 65 20 22 63 6f 76 65 72 61 67 65 2d 70 61 67 65  e "coverage-page
41f0: 72 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  r" -description 
4200: 7b 0a 20 20 43 6f 76 65 72 61 67 65 20 74 65 73  {.  Coverage tes
4210: 74 73 20 66 6f 72 20 66 69 6c 65 20 70 61 67 65  ts for file page
4220: 72 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  r.c..} -files {.
4230: 20 20 70 61 67 65 72 31 2e 74 65 73 74 20 20 20    pager1.test   
4240: 20 70 61 67 65 72 32 2e 74 65 73 74 20 20 70 61   pager2.test  pa
4250: 67 65 72 66 61 75 6c 74 2e 74 65 73 74 20 20 70  gerfault.test  p
4260: 61 67 65 72 66 61 75 6c 74 32 2e 74 65 73 74 0a  agerfault2.test.
4270: 20 20 77 61 6c 66 61 75 6c 74 2e 74 65 73 74 20    walfault.test 
4280: 20 77 61 6c 62 61 6b 2e 74 65 73 74 20 20 6a 6f   walbak.test  jo
4290: 75 72 6e 61 6c 32 2e 74 65 73 74 20 20 20 20 74  urnal2.test    t
42a0: 6b 74 2d 39 64 36 38 63 38 38 33 2e 74 65 73 74  kt-9d68c883.test
42b0: 0a 7d 20 0a 0a 74 65 73 74 5f 73 75 69 74 65 20  .} ..test_suite 
42c0: 22 63 6f 76 65 72 61 67 65 2d 61 6e 61 6c 79 7a  "coverage-analyz
42d0: 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  e" -description 
42e0: 7b 0a 20 20 43 6f 76 65 72 61 67 65 20 74 65 73  {.  Coverage tes
42f0: 74 73 20 66 6f 72 20 66 69 6c 65 20 61 6e 61 6c  ts for file anal
4300: 79 7a 65 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20  yze.c..} -files 
4310: 7b 0a 20 20 61 6e 61 6c 79 7a 65 33 2e 74 65 73  {.  analyze3.tes
4320: 74 20 61 6e 61 6c 79 7a 65 34 2e 74 65 73 74 20  t analyze4.test 
4330: 61 6e 61 6c 79 7a 65 35 2e 74 65 73 74 20 61 6e  analyze5.test an
4340: 61 6c 79 7a 65 36 2e 74 65 73 74 0a 20 20 61 6e  alyze6.test.  an
4350: 61 6c 79 7a 65 37 2e 74 65 73 74 20 61 6e 61 6c  alyze7.test anal
4360: 79 7a 65 38 2e 74 65 73 74 20 61 6e 61 6c 79 7a  yze8.test analyz
4370: 65 39 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 41  e9.test analyzeA
4380: 2e 74 65 73 74 0a 20 20 61 6e 61 6c 79 7a 65 2e  .test.  analyze.
4390: 74 65 73 74 20 61 6e 61 6c 79 7a 65 42 2e 74 65  test analyzeB.te
43a0: 73 74 20 6d 61 6c 6c 6f 63 41 2e 74 65 73 74 0a  st mallocA.test.
43b0: 7d 20 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  } ..test_suite "
43c0: 63 6f 76 65 72 61 67 65 2d 73 6f 72 74 65 72 22  coverage-sorter"
43d0: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
43e0: 20 20 43 6f 76 65 72 61 67 65 20 74 65 73 74 73    Coverage tests
43f0: 20 66 6f 72 20 66 69 6c 65 20 76 64 62 65 73 6f   for file vdbeso
4400: 72 74 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b  rt.c..} -files {
4410: 0a 20 20 73 6f 72 74 2e 74 65 73 74 20 73 6f 72  .  sort.test sor
4420: 74 66 61 75 6c 74 2e 74 65 73 74 0a 7d 20 0a 0a  tfault.test.} ..
4430: 0a 6c 61 70 70 65 6e 64 20 3a 3a 74 65 73 74 73  .lappend ::tests
4440: 75 69 74 65 6c 69 73 74 20 78 78 78 0a 23 2d 2d  uitelist xxx.#--
4450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4490: 2d 2d 2d 2d 2d 2d 2d 0a 23 20 44 65 66 69 6e 65  -------.# Define
44a0: 20 74 68 65 20 70 65 72 6d 75 74 61 74 69 6f 6e   the permutation
44b0: 20 74 65 73 74 20 73 75 69 74 65 73 3a 0a 23 0a   test suites:.#.
44c0: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74  .# Run some test
44d0: 73 20 75 73 69 6e 67 20 70 72 65 2d 61 6c 6c 6f  s using pre-allo
44e0: 63 61 74 65 64 20 70 61 67 65 20 62 6c 6f 63 6b  cated page block
44f0: 73 2e 0a 23 0a 23 20 6d 6d 61 70 31 2e 74 65 73  s..#.# mmap1.tes
4500: 74 20 69 73 20 65 78 63 6c 75 64 65 64 20 62 65  t is excluded be
4510: 63 61 75 73 65 20 61 20 67 6f 6f 64 20 6e 75 6d  cause a good num
4520: 62 65 72 20 6f 66 20 69 74 73 20 74 65 73 74 73  ber of its tests
4530: 20 64 65 70 65 6e 64 20 6f 6e 20 0a 23 20 74 68   depend on .# th
4540: 65 20 70 61 67 65 2d 63 61 63 68 65 20 62 65 69  e page-cache bei
4550: 6e 67 20 6c 61 72 67 65 72 20 74 68 61 6e 20 74  ng larger than t
4560: 68 65 20 64 61 74 61 62 61 73 65 2e 20 42 75 74  he database. But
4570: 20 74 68 69 73 20 70 65 72 6d 75 74 61 74 69 6f   this permutatio
4580: 6e 0a 23 20 63 61 75 73 65 73 20 74 68 65 20 65  n.# causes the e
4590: 66 66 65 63 74 69 76 65 20 6c 69 6d 69 74 20 6f  ffective limit o
45a0: 6e 20 74 68 65 20 70 61 67 65 2d 63 61 63 68 65  n the page-cache
45b0: 20 74 6f 20 62 65 20 6a 75 73 74 20 32 34 20 70   to be just 24 p
45c0: 61 67 65 73 2e 0a 23 0a 74 65 73 74 5f 73 75 69  ages..#.test_sui
45d0: 74 65 20 22 6d 65 6d 73 75 62 73 79 73 31 22 20  te "memsubsys1" 
45e0: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
45f0: 20 54 65 73 74 73 20 75 73 69 6e 67 20 70 72 65   Tests using pre
4600: 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67 65 20  -allocated page 
4610: 62 6c 6f 63 6b 73 0a 7d 20 2d 66 69 6c 65 73 20  blocks.} -files 
4620: 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 3a 3a  [.  test_set $::
4630: 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65  allquicktests -e
4640: 78 63 6c 75 64 65 20 69 6f 65 72 72 35 2e 74 65  xclude ioerr5.te
4650: 73 74 20 6d 61 6c 6c 6f 63 35 2e 74 65 73 74 20  st malloc5.test 
4660: 6d 6d 61 70 31 2e 74 65 73 74 0a 5d 20 2d 69 6e  mmap1.test.] -in
4670: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 74 65 73  itialize {.  tes
4680: 74 5f 73 65 74 5f 63 6f 6e 66 69 67 5f 70 61 67  t_set_config_pag
4690: 65 63 61 63 68 65 20 34 30 39 36 20 32 34 0a 20  ecache 4096 24. 
46a0: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
46b0: 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74  }.  sqlite3_shut
46c0: 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 69  down.  sqlite3_i
46d0: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f  nitialize.  auto
46e0: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
46f0: 63 74 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f  ctions.} -shutdo
4700: 77 6e 20 7b 0a 20 20 74 65 73 74 5f 72 65 73 74  wn {.  test_rest
4710: 6f 72 65 5f 63 6f 6e 66 69 67 5f 70 61 67 65 63  ore_config_pagec
4720: 61 63 68 65 0a 20 20 63 61 74 63 68 20 7b 64 62  ache.  catch {db
4730: 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65   close}.  sqlite
4740: 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c  3_shutdown.  sql
4750: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
4760: 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65    autoinstall_te
4770: 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a  st_functions.}..
4780: 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73  # Run some tests
4790: 20 75 73 69 6e 67 20 70 72 65 2d 61 6c 6c 6f 63   using pre-alloc
47a0: 61 74 65 64 20 70 61 67 65 20 62 6c 6f 63 6b 73  ated page blocks
47b0: 2e 20 54 68 69 73 20 74 69 6d 65 0a 23 20 74 68  . This time.# th
47c0: 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72  e allocations ar
47d0: 65 20 74 6f 6f 20 73 6d 61 6c 6c 20 74 6f 20 75  e too small to u
47e0: 73 65 20 69 6e 20 6d 6f 73 74 20 63 61 73 65 73  se in most cases
47f0: 2e 0a 23 0a 23 20 42 6f 74 68 20 69 6f 65 72 72  ..#.# Both ioerr
4800: 35 2e 74 65 73 74 20 61 6e 64 20 6d 61 6c 6c 6f  5.test and mallo
4810: 63 35 2e 74 65 73 74 20 61 72 65 20 65 78 63 6c  c5.test are excl
4820: 75 64 65 64 20 62 65 63 61 75 73 65 20 74 68 65  uded because the
4830: 79 20 74 65 73 74 20 74 68 65 0a 23 20 73 71 6c  y test the.# sql
4840: 69 74 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f 6c  ite3_soft_heap_l
4850: 69 6d 69 74 28 29 20 61 6e 64 20 73 71 6c 69 74  imit() and sqlit
4860: 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72  e3_release_memor
4870: 79 28 29 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  y() functionalit
4880: 79 2e 0a 23 20 54 68 69 73 20 66 75 6e 63 74 69  y..# This functi
4890: 6f 6e 61 6c 69 74 79 20 69 73 20 64 69 73 61 62  onality is disab
48a0: 6c 65 64 20 69 66 20 61 20 70 72 65 2d 61 6c 6c  led if a pre-all
48b0: 6f 63 61 74 65 64 20 70 61 67 65 20 62 6c 6f 63  ocated page bloc
48c0: 6b 20 69 73 20 70 72 6f 76 69 64 65 64 2e 0a 23  k is provided..#
48d0: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d  .test_suite "mem
48e0: 73 75 62 73 79 73 32 22 20 2d 64 65 73 63 72 69  subsys2" -descri
48f0: 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20  ption {.  Tests 
4900: 75 73 69 6e 67 20 73 6d 61 6c 6c 20 70 72 65 2d  using small pre-
4910: 61 6c 6c 6f 63 61 74 65 64 20 70 61 67 65 20 62  allocated page b
4920: 6c 6f 63 6b 73 0a 7d 20 2d 66 69 6c 65 73 20 5b  locks.} -files [
4930: 0a 20 20 74 65 73 74 5f 73 65 74 20 24 3a 3a 61  .  test_set $::a
4940: 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78  llquicktests -ex
4950: 63 6c 75 64 65 20 69 6f 65 72 72 35 2e 74 65 73  clude ioerr5.tes
4960: 74 20 6d 61 6c 6c 6f 63 35 2e 74 65 73 74 0a 5d  t malloc5.test.]
4970: 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20   -initialize {. 
4980: 20 74 65 73 74 5f 73 65 74 5f 63 6f 6e 66 69 67   test_set_config
4990: 5f 70 61 67 65 63 61 63 68 65 20 35 31 32 20 35  _pagecache 512 5
49a0: 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f  .  catch {db clo
49b0: 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68  se}.  sqlite3_sh
49c0: 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33  utdown.  sqlite3
49d0: 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75  _initialize.  au
49e0: 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66  toinstall_test_f
49f0: 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73 68 75 74  unctions.} -shut
4a00: 64 6f 77 6e 20 7b 0a 20 20 74 65 73 74 5f 72 65  down {.  test_re
4a10: 73 74 6f 72 65 5f 63 6f 6e 66 69 67 5f 70 61 67  store_config_pag
4a20: 65 63 61 63 68 65 0a 20 20 63 61 74 63 68 20 7b  ecache.  catch {
4a30: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69  db close}.  sqli
4a40: 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73  te3_shutdown.  s
4a50: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
4a60: 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f  e.  autoinstall_
4a70: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d  test_functions.}
4a80: 0a 0a 23 20 52 75 6e 20 61 6c 6c 20 74 65 73 74  ..# Run all test
4a90: 73 20 77 69 74 68 20 74 68 65 20 6c 6f 6f 6b 61  s with the looka
4aa0: 73 69 64 65 20 61 6c 6c 6f 63 61 74 6f 72 20 64  side allocator d
4ab0: 69 73 61 62 6c 65 64 2e 0a 23 0a 74 65 73 74 5f  isabled..#.test_
4ac0: 73 75 69 74 65 20 22 6e 6f 6c 6f 6f 6b 61 73 69  suite "nolookasi
4ad0: 64 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  de" -description
4ae0: 20 7b 0a 20 20 4f 4f 4d 20 74 65 73 74 73 20 77   {.  OOM tests w
4af0: 69 74 68 20 6c 6f 6f 6b 61 73 69 64 65 20 64 69  ith lookaside di
4b00: 73 61 62 6c 65 64 0a 7d 20 2d 69 6e 69 74 69 61  sabled.} -initia
4b10: 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20 7b  lize {.  catch {
4b20: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69  db close}.  sqli
4b30: 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73  te3_shutdown.  s
4b40: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f  qlite3_config_lo
4b50: 6f 6b 61 73 69 64 65 20 30 20 30 0a 20 20 73 71  okaside 0 0.  sq
4b60: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
4b70: 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74  .  autoinstall_t
4b80: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20  est_functions.} 
4b90: 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 63 61  -shutdown {.  ca
4ba0: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
4bb0: 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
4bc0: 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  n.  sqlite3_conf
4bd0: 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30  ig_lookaside 100
4be0: 20 35 30 30 0a 20 20 73 71 6c 69 74 65 33 5f 69   500.  sqlite3_i
4bf0: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f  nitialize.  auto
4c00: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
4c10: 63 74 69 6f 6e 73 0a 7d 20 2d 66 69 6c 65 73 20  ctions.} -files 
4c20: 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  $::allquicktests
4c30: 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73  ..# Run some tes
4c40: 74 73 20 69 6e 20 53 51 4c 49 54 45 5f 43 4f 4e  ts in SQLITE_CON
4c50: 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44  FIG_SINGLETHREAD
4c60: 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75   mode..#.test_su
4c70: 69 74 65 20 22 73 69 6e 67 6c 65 74 68 72 65 61  ite "singlethrea
4c80: 64 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  d" -description 
4c90: 7b 0a 20 20 54 65 73 74 73 20 72 75 6e 20 69 6e  {.  Tests run in
4ca0: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53   SQLITE_CONFIG_S
4cb0: 49 4e 47 4c 45 54 48 52 45 41 44 20 6d 6f 64 65  INGLETHREAD mode
4cc0: 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  .} -initialize {
4cd0: 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f  .  catch {db clo
4ce0: 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68  se}.  sqlite3_sh
4cf0: 75 74 64 6f 77 6e 0a 20 20 63 61 74 63 68 20 7b  utdown.  catch {
4d00: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 20 73  sqlite3_config s
4d10: 69 6e 67 6c 65 74 68 72 65 61 64 7d 0a 20 20 73  inglethread}.  s
4d20: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
4d30: 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f  e.  autoinstall_
4d40: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d  test_functions.}
4d50: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65   -files {.  dele
4d60: 74 65 2e 74 65 73 74 20 20 20 64 65 6c 65 74 65  te.test   delete
4d70: 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 2e 74  2.test  insert.t
4d80: 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65  est  rollback.te
4d90: 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74  st  select1.test
4da0: 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20  .  select2.test 
4db0: 20 74 72 61 6e 73 2e 74 65 73 74 20 20 20 20 75   trans.test    u
4dc0: 70 64 61 74 65 2e 74 65 73 74 20 20 76 61 63 75  pdate.test  vacu
4dd0: 75 6d 2e 74 65 73 74 20 20 20 20 74 79 70 65 73  um.test    types
4de0: 2e 74 65 73 74 0a 20 20 74 79 70 65 73 32 2e 74  .test.  types2.t
4df0: 65 73 74 20 20 20 74 79 70 65 73 33 2e 74 65 73  est   types3.tes
4e00: 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  t.} -shutdown {.
4e10: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
4e20: 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75  e}.  sqlite3_shu
4e30: 74 64 6f 77 6e 0a 20 20 63 61 74 63 68 20 7b 73  tdown.  catch {s
4e40: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 20 73 65  qlite3_config se
4e50: 72 69 61 6c 69 7a 65 64 7d 0a 20 20 73 71 6c 69  rialized}.  sqli
4e60: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
4e70: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
4e80: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a 74  t_functions.}..t
4e90: 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 6d 75 74  est_suite "nomut
4ea0: 65 78 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  ex" -description
4eb0: 20 7b 0a 20 20 54 65 73 74 73 20 72 75 6e 20 77   {.  Tests run w
4ec0: 69 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f 4f  ith the SQLITE_O
4ed0: 50 45 4e 5f 4d 55 4c 54 49 54 48 52 45 41 44 45  PEN_MULTITHREADE
4ee0: 44 20 66 6c 61 67 20 70 61 73 73 65 64 20 74 6f  D flag passed to
4ef0: 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 2e   sqlite3_open().
4f00: 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  .} -initialize {
4f10: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
4f20: 33 20 73 71 6c 69 74 65 33 5f 6e 6f 6d 75 74 65  3 sqlite3_nomute
4f30: 78 0a 20 20 70 72 6f 63 20 73 71 6c 69 74 65 33  x.  proc sqlite3
4f40: 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20 69 66   {args} {.    if
4f50: 20 7b 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20   {[string range 
4f60: 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d  [lindex $args 0]
4f70: 20 30 20 30 5d 20 6e 65 20 22 2d 22 7d 20 7b 0a   0 0] ne "-"} {.
4f80: 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 61 72        lappend ar
4f90: 67 73 20 2d 66 75 6c 6c 6d 75 74 65 78 20 30 20  gs -fullmutex 0 
4fa0: 2d 6e 6f 6d 75 74 65 78 20 31 0a 20 20 20 20 7d  -nomutex 1.    }
4fb0: 0a 20 20 20 20 75 70 6c 65 76 65 6c 20 5b 63 6f  .    uplevel [co
4fc0: 6e 63 61 74 20 73 71 6c 69 74 65 33 5f 6e 6f 6d  ncat sqlite3_nom
4fd0: 75 74 65 78 20 24 61 72 67 73 5d 0a 20 20 7d 0a  utex $args].  }.
4fe0: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c  } -files {.  del
4ff0: 65 74 65 2e 74 65 73 74 20 20 20 64 65 6c 65 74  ete.test   delet
5000: 65 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 2e  e2.test  insert.
5010: 74 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b 2e 74  test  rollback.t
5020: 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65 73  est  select1.tes
5030: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
5040: 20 20 74 72 61 6e 73 2e 74 65 73 74 20 20 20 20    trans.test    
5050: 75 70 64 61 74 65 2e 74 65 73 74 20 20 76 61 63  update.test  vac
5060: 75 75 6d 2e 74 65 73 74 20 20 20 20 74 79 70 65  uum.test    type
5070: 73 2e 74 65 73 74 0a 20 20 74 79 70 65 73 32 2e  s.test.  types2.
5080: 74 65 73 74 20 20 20 74 79 70 65 73 33 2e 74 65  test   types3.te
5090: 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b  st.} -shutdown {
50a0: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
50b0: 33 20 7b 7d 0a 20 20 72 65 6e 61 6d 65 20 73 71  3 {}.  rename sq
50c0: 6c 69 74 65 33 5f 6e 6f 6d 75 74 65 78 20 73 71  lite3_nomutex sq
50d0: 6c 69 74 65 33 0a 7d 0a 0a 23 20 52 75 6e 20 73  lite3.}..# Run s
50e0: 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 53 51 4c  ome tests in SQL
50f0: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49  ITE_CONFIG_MULTI
5100: 54 48 52 45 41 44 20 6d 6f 64 65 2e 0a 23 0a 74  THREAD mode..#.t
5110: 65 73 74 5f 73 75 69 74 65 20 22 6d 75 6c 74 69  est_suite "multi
5120: 74 68 72 65 61 64 22 20 2d 64 65 73 63 72 69 70  thread" -descrip
5130: 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72  tion {.  Tests r
5140: 75 6e 20 69 6e 20 53 51 4c 49 54 45 5f 43 4f 4e  un in SQLITE_CON
5150: 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 20  FIG_MULTITHREAD 
5160: 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74 69 61 6c 69  mode.} -initiali
5170: 7a 65 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62  ze {.  catch {db
5180: 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65   close}.  sqlite
5190: 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74  3_shutdown.  cat
51a0: 63 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ch {sqlite3_conf
51b0: 69 67 20 6d 75 6c 74 69 74 68 72 65 61 64 7d 0a  ig multithread}.
51c0: 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61    sqlite3_initia
51d0: 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61  lize.  autoinsta
51e0: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
51f0: 73 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64  s.} -files {.  d
5200: 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64 65 6c  elete.test   del
5210: 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73 65 72  ete2.test  inser
5220: 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b  t.test  rollback
5230: 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74  .test  select1.t
5240: 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65  est.  select2.te
5250: 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74 20 20  st  trans.test  
5260: 20 20 75 70 64 61 74 65 2e 74 65 73 74 20 20 76    update.test  v
5270: 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20 74 79  acuum.test    ty
5280: 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70 65 73  pes.test.  types
5290: 32 2e 74 65 73 74 20 20 20 74 79 70 65 73 33 2e  2.test   types3.
52a0: 74 65 73 74 20 20 20 73 6f 72 74 34 2e 74 65 73  test   sort4.tes
52b0: 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  t.} -shutdown {.
52c0: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
52d0: 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75  e}.  sqlite3_shu
52e0: 74 64 6f 77 6e 0a 20 20 63 61 74 63 68 20 7b 73  tdown.  catch {s
52f0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 20 73 65  qlite3_config se
5300: 72 69 61 6c 69 7a 65 64 7d 0a 20 20 73 71 6c 69  rialized}.  sqli
5310: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
5320: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
5330: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a 23  t_functions.}..#
5340: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
5350: 69 6e 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46  in SQLITE_OPEN_F
5360: 55 4c 4c 4d 55 54 45 58 20 6d 6f 64 65 2e 0a 23  ULLMUTEX mode..#
5370: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 66 75 6c  .test_suite "ful
5380: 6c 6d 75 74 65 78 22 20 2d 64 65 73 63 72 69 70  lmutex" -descrip
5390: 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72  tion {.  Tests r
53a0: 75 6e 20 69 6e 20 53 51 4c 49 54 45 5f 4f 50 45  un in SQLITE_OPE
53b0: 4e 5f 46 55 4c 4c 4d 55 54 45 58 20 6d 6f 64 65  N_FULLMUTEX mode
53c0: 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  .} -initialize {
53d0: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
53e0: 33 20 73 71 6c 69 74 65 33 5f 66 75 6c 6c 6d 75  3 sqlite3_fullmu
53f0: 74 65 78 0a 20 20 70 72 6f 63 20 73 71 6c 69 74  tex.  proc sqlit
5400: 65 33 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20  e3 {args} {.    
5410: 69 66 20 7b 5b 73 74 72 69 6e 67 20 72 61 6e 67  if {[string rang
5420: 65 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20  e [lindex $args 
5430: 30 5d 20 30 20 30 5d 20 6e 65 20 22 2d 22 7d 20  0] 0 0] ne "-"} 
5440: 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20  {.      lappend 
5450: 61 72 67 73 20 2d 6e 6f 6d 75 74 65 78 20 30 20  args -nomutex 0 
5460: 2d 66 75 6c 6c 6d 75 74 65 78 20 31 0a 20 20 20  -fullmutex 1.   
5470: 20 7d 0a 20 20 20 20 75 70 6c 65 76 65 6c 20 5b   }.    uplevel [
5480: 63 6f 6e 63 61 74 20 73 71 6c 69 74 65 33 5f 66  concat sqlite3_f
5490: 75 6c 6c 6d 75 74 65 78 20 24 61 72 67 73 5d 0a  ullmutex $args].
54a0: 20 20 7d 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20    }.} -files {. 
54b0: 20 64 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64   delete.test   d
54c0: 65 6c 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73  elete2.test  ins
54d0: 65 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61  ert.test  rollba
54e0: 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31  ck.test  select1
54f0: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
5500: 74 65 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74  test  trans.test
5510: 20 20 20 20 75 70 64 61 74 65 2e 74 65 73 74 20      update.test 
5520: 20 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20   vacuum.test    
5530: 74 79 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70  types.test.  typ
5540: 65 73 32 2e 74 65 73 74 20 20 20 74 79 70 65 73  es2.test   types
5550: 33 2e 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f  3.test.} -shutdo
5560: 77 6e 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  wn {.  rename sq
5570: 6c 69 74 65 33 20 7b 7d 0a 20 20 72 65 6e 61 6d  lite3 {}.  renam
5580: 65 20 73 71 6c 69 74 65 33 5f 66 75 6c 6c 6d 75  e sqlite3_fullmu
5590: 74 65 78 20 73 71 6c 69 74 65 33 0a 7d 0a 0a 23  tex sqlite3.}..#
55a0: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
55b0: 75 73 69 6e 67 20 74 68 65 20 22 6f 6e 65 66 69  using the "onefi
55c0: 6c 65 22 20 64 65 6d 6f 2e 0a 23 0a 74 65 73 74  le" demo..#.test
55d0: 5f 73 75 69 74 65 20 22 6f 6e 65 66 69 6c 65 22  _suite "onefile"
55e0: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
55f0: 20 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73    Run some tests
5600: 20 75 73 69 6e 67 20 74 68 65 20 22 74 65 73 74   using the "test
5610: 5f 6f 6e 65 66 69 6c 65 2e 63 22 20 64 65 6d 6f  _onefile.c" demo
5620: 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  .} -initialize {
5630: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
5640: 33 20 73 71 6c 69 74 65 33 5f 6f 6e 65 66 69 6c  3 sqlite3_onefil
5650: 65 0a 20 20 70 72 6f 63 20 73 71 6c 69 74 65 33  e.  proc sqlite3
5660: 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20 69 66   {args} {.    if
5670: 20 7b 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20   {[string range 
5680: 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d  [lindex $args 0]
5690: 20 30 20 30 5d 20 6e 65 20 22 2d 22 7d 20 7b 0a   0 0] ne "-"} {.
56a0: 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 61 72        lappend ar
56b0: 67 73 20 2d 76 66 73 20 66 73 0a 20 20 20 20 7d  gs -vfs fs.    }
56c0: 0a 20 20 20 20 75 70 6c 65 76 65 6c 20 5b 63 6f  .    uplevel [co
56d0: 6e 63 61 74 20 73 71 6c 69 74 65 33 5f 6f 6e 65  ncat sqlite3_one
56e0: 66 69 6c 65 20 24 61 72 67 73 5d 0a 20 20 7d 0a  file $args].  }.
56f0: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 63 6f 6e  } -files {.  con
5700: 66 6c 69 63 74 2e 74 65 73 74 20 20 69 6e 73 65  flict.test  inse
5710: 72 74 2e 74 65 73 74 20 20 20 69 6e 73 65 72 74  rt.test   insert
5720: 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 33 2e  2.test  insert3.
5730: 74 65 73 74 0a 20 20 72 6f 6c 6c 62 61 63 6b 2e  test.  rollback.
5740: 74 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65  test  select1.te
5750: 73 74 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  st  select2.test
5760: 20 20 73 65 6c 65 63 74 33 2e 74 65 73 74 0a 7d    select3.test.}
5770: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 72   -shutdown {.  r
5780: 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 20 7b 7d  ename sqlite3 {}
5790: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
57a0: 33 5f 6f 6e 65 66 69 6c 65 20 73 71 6c 69 74 65  3_onefile sqlite
57b0: 33 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20  3.}..# Run some 
57c0: 74 65 73 74 73 20 75 73 69 6e 67 20 55 54 46 2d  tests using UTF-
57d0: 31 36 20 64 61 74 61 62 61 73 65 73 2e 0a 23 0a  16 databases..#.
57e0: 74 65 73 74 5f 73 75 69 74 65 20 22 75 74 66 31  test_suite "utf1
57f0: 36 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  6" -description 
5800: 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20 75 73  {.  Run tests us
5810: 69 6e 67 20 55 54 46 2d 31 36 20 64 61 74 61 62  ing UTF-16 datab
5820: 61 73 65 73 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ases.} -presql {
5830: 0a 20 20 70 72 61 67 6d 61 20 65 6e 63 6f 64 69  .  pragma encodi
5840: 6e 67 20 3d 20 27 55 54 46 2d 31 36 27 0a 7d 20  ng = 'UTF-16'.} 
5850: 2d 66 69 6c 65 73 20 7b 0a 20 20 20 20 61 6c 74  -files {.    alt
5860: 65 72 2e 74 65 73 74 20 61 6c 74 65 72 33 2e 74  er.test alter3.t
5870: 65 73 74 0a 20 20 20 20 61 6e 61 6c 79 7a 65 2e  est.    analyze.
5880: 74 65 73 74 20 61 6e 61 6c 79 7a 65 33 2e 74 65  test analyze3.te
5890: 73 74 20 61 6e 61 6c 79 7a 65 34 2e 74 65 73 74  st analyze4.test
58a0: 20 61 6e 61 6c 79 7a 65 35 2e 74 65 73 74 20 61   analyze5.test a
58b0: 6e 61 6c 79 7a 65 36 2e 74 65 73 74 0a 20 20 20  nalyze6.test.   
58c0: 20 61 6e 61 6c 79 7a 65 37 2e 74 65 73 74 20 61   analyze7.test a
58d0: 6e 61 6c 79 7a 65 38 2e 74 65 73 74 20 61 6e 61  nalyze8.test ana
58e0: 6c 79 7a 65 39 2e 74 65 73 74 20 61 6e 61 6c 79  lyze9.test analy
58f0: 7a 65 41 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  zeA.test analyze
5900: 42 2e 74 65 73 74 0a 20 20 20 20 61 75 74 68 2e  B.test.    auth.
5910: 74 65 73 74 20 62 69 6e 64 2e 74 65 73 74 20 62  test bind.test b
5920: 6c 6f 62 2e 74 65 73 74 20 63 61 70 69 32 2e 74  lob.test capi2.t
5930: 65 73 74 20 63 61 70 69 33 2e 74 65 73 74 20 63  est capi3.test c
5940: 6f 6c 6c 61 74 65 31 2e 74 65 73 74 0a 20 20 20  ollate1.test.   
5950: 20 63 6f 6c 6c 61 74 65 32 2e 74 65 73 74 20 63   collate2.test c
5960: 6f 6c 6c 61 74 65 33 2e 74 65 73 74 20 63 6f 6c  ollate3.test col
5970: 6c 61 74 65 34 2e 74 65 73 74 20 63 6f 6c 6c 61  late4.test colla
5980: 74 65 35 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65  te5.test collate
5990: 36 2e 74 65 73 74 0a 20 20 20 20 63 6f 6e 66 6c  6.test.    confl
59a0: 69 63 74 2e 74 65 73 74 20 64 61 74 65 2e 74 65  ict.test date.te
59b0: 73 74 20 64 65 6c 65 74 65 2e 74 65 73 74 20 65  st delete.test e
59c0: 78 70 72 2e 74 65 73 74 20 66 6b 65 79 31 2e 74  xpr.test fkey1.t
59d0: 65 73 74 20 66 75 6e 63 2e 74 65 73 74 0a 20 20  est func.test.  
59e0: 20 20 68 6f 6f 6b 2e 74 65 73 74 20 69 6e 64 65    hook.test inde
59f0: 78 2e 74 65 73 74 20 69 6e 73 65 72 74 32 2e 74  x.test insert2.t
5a00: 65 73 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20  est insert.test 
5a10: 69 6e 74 65 72 72 75 70 74 2e 74 65 73 74 20 69  interrupt.test i
5a20: 6e 2e 74 65 73 74 0a 20 20 20 20 69 6e 74 70 6b  n.test.    intpk
5a30: 65 79 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65  ey.test ioerr.te
5a40: 73 74 20 6a 6f 69 6e 32 2e 74 65 73 74 20 6a 6f  st join2.test jo
5a50: 69 6e 2e 74 65 73 74 20 6c 61 73 74 69 6e 73 65  in.test lastinse
5a60: 72 74 2e 74 65 73 74 0a 20 20 20 20 6c 61 73 74  rt.test.    last
5a70: 73 74 6d 74 63 68 61 6e 67 65 73 2e 74 65 73 74  stmtchanges.test
5a80: 20 6c 69 6d 69 74 2e 74 65 73 74 20 6c 6f 63 6b   limit.test lock
5a90: 32 2e 74 65 73 74 20 6c 6f 63 6b 2e 74 65 73 74  2.test lock.test
5aa0: 20 6d 61 69 6e 2e 74 65 73 74 20 0a 20 20 20 20   main.test .    
5ab0: 6d 65 6d 64 62 2e 74 65 73 74 20 6d 69 6e 6d 61  memdb.test minma
5ac0: 78 2e 74 65 73 74 20 6d 69 73 63 31 2e 74 65 73  x.test misc1.tes
5ad0: 74 20 6d 69 73 63 32 2e 74 65 73 74 20 6d 69 73  t misc2.test mis
5ae0: 63 33 2e 74 65 73 74 20 6e 6f 74 6e 75 6c 6c 2e  c3.test notnull.
5af0: 74 65 73 74 0a 20 20 20 20 6e 75 6c 6c 2e 74 65  test.    null.te
5b00: 73 74 20 70 72 6f 67 72 65 73 73 2e 74 65 73 74  st progress.test
5b10: 20 71 75 6f 74 65 2e 74 65 73 74 20 72 6f 77 69   quote.test rowi
5b20: 64 2e 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74  d.test select1.t
5b30: 65 73 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74  est select2.test
5b40: 0a 20 20 20 20 73 65 6c 65 63 74 33 2e 74 65 73  .    select3.tes
5b50: 74 20 73 65 6c 65 63 74 34 2e 74 65 73 74 20 73  t select4.test s
5b60: 65 6c 65 63 74 35 2e 74 65 73 74 20 73 65 6c 65  elect5.test sele
5b70: 63 74 36 2e 74 65 73 74 20 73 6f 72 74 2e 74 65  ct6.test sort.te
5b80: 73 74 20 0a 20 20 20 20 73 75 62 73 65 6c 65 63  st .    subselec
5b90: 74 2e 74 65 73 74 20 74 61 62 6c 65 61 70 69 2e  t.test tableapi.
5ba0: 74 65 73 74 20 74 61 62 6c 65 2e 74 65 73 74 20  test table.test 
5bb0: 74 65 6d 70 74 61 62 6c 65 2e 74 65 73 74 0a 20  temptable.test. 
5bc0: 20 20 20 74 72 61 63 65 2e 74 65 73 74 20 74 72     trace.test tr
5bd0: 69 67 67 65 72 31 2e 74 65 73 74 20 74 72 69 67  igger1.test trig
5be0: 67 65 72 32 2e 74 65 73 74 20 74 72 69 67 67 65  ger2.test trigge
5bf0: 72 33 2e 74 65 73 74 0a 20 20 20 20 74 72 69 67  r3.test.    trig
5c00: 67 65 72 34 2e 74 65 73 74 20 74 79 70 65 73 32  ger4.test types2
5c10: 2e 74 65 73 74 20 74 79 70 65 73 2e 74 65 73 74  .test types.test
5c20: 20 75 6e 69 71 75 65 2e 74 65 73 74 20 75 70 64   unique.test upd
5c30: 61 74 65 2e 74 65 73 74 0a 20 20 20 20 76 61 63  ate.test.    vac
5c40: 75 75 6d 2e 74 65 73 74 20 76 69 65 77 2e 74 65  uum.test view.te
5c50: 73 74 20 77 68 65 72 65 2e 74 65 73 74 0a 20 20  st where.test.  
5c60: 20 20 62 65 73 74 69 6e 64 65 78 31 2e 74 65 73    bestindex1.tes
5c70: 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20  t.}..# Run some 
5c80: 74 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69  tests in exclusi
5c90: 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e  ve locking mode.
5ca0: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 65  .#.test_suite "e
5cb0: 78 63 6c 75 73 69 76 65 22 20 2d 64 65 73 63 72  xclusive" -descr
5cc0: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
5cd0: 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76  ests in exclusiv
5ce0: 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e 0a  e locking mode..
5cf0: 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72  } -presql {.  pr
5d00: 61 67 6d 61 20 6c 6f 63 6b 69 6e 67 5f 6d 6f 64  agma locking_mod
5d10: 65 20 3d 20 27 65 78 63 6c 75 73 69 76 65 27 0a  e = 'exclusive'.
5d20: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 72 6f 6c  } -files {.  rol
5d30: 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c 65 63  lback.test selec
5d40: 74 31 2e 74 65 73 74 20 73 65 6c 65 63 74 32 2e  t1.test select2.
5d50: 74 65 73 74 20 0a 20 20 6d 61 6c 6c 6f 63 2e 74  test .  malloc.t
5d60: 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d  est ioerr.test.}
5d70: 20 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65   ..# Run some te
5d80: 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76 65  sts in exclusive
5d90: 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 77 69   locking mode wi
5da0: 74 68 20 74 72 75 6e 63 61 74 65 64 20 6a 6f 75  th truncated jou
5db0: 72 6e 61 6c 73 2e 0a 23 0a 74 65 73 74 5f 73 75  rnals..#.test_su
5dc0: 69 74 65 20 22 65 78 63 6c 75 73 69 76 65 2d 74  ite "exclusive-t
5dd0: 72 75 6e 63 61 74 65 22 20 2d 64 65 73 63 72 69  runcate" -descri
5de0: 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65  ption {.  Run te
5df0: 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76 65  sts in exclusive
5e00: 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 61 6e   locking mode an
5e10: 64 20 74 72 75 6e 63 61 74 65 20 6a 6f 75 72 6e  d truncate journ
5e20: 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  al mode..} -pres
5e30: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6c 6f  ql {.  pragma lo
5e40: 63 6b 69 6e 67 5f 6d 6f 64 65 20 3d 20 27 65 78  cking_mode = 'ex
5e50: 63 6c 75 73 69 76 65 27 3b 0a 20 20 70 72 61 67  clusive';.  prag
5e60: 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  ma journal_mode 
5e70: 3d 20 54 52 55 4e 43 41 54 45 3b 0a 7d 20 2d 66  = TRUNCATE;.} -f
5e80: 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e  iles {.  delete.
5e90: 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65 73  test delete2.tes
5ea0: 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20 72 6f  t insert.test ro
5eb0: 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c 65  llback.test sele
5ec0: 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65 63  ct1.test.  selec
5ed0: 74 32 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  t2.test update.t
5ee0: 65 73 74 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20  est malloc.test 
5ef0: 69 6f 65 72 72 2e 74 65 73 74 0a 7d 20 0a 0a 23  ioerr.test.} ..#
5f00: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
5f10: 69 6e 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f  in persistent jo
5f20: 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65  urnal mode..#.te
5f30: 73 74 5f 73 75 69 74 65 20 22 70 65 72 73 69 73  st_suite "persis
5f40: 74 65 6e 74 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64  tent_journal" -d
5f50: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
5f60: 75 6e 20 74 65 73 74 73 20 69 6e 20 70 65 72 73  un tests in pers
5f70: 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61 6c 20 6d  istent-journal m
5f80: 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ode..} -presql {
5f90: 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61  .  pragma journa
5fa0: 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69 73 74  l_mode = persist
5fb0: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65  .} -files {.  de
5fc0: 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65  lete.test delete
5fd0: 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65  2.test insert.te
5fe0: 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74  st rollback.test
5ff0: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20   select1.test.  
6000: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 74 72 61  select2.test tra
6010: 6e 73 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  ns.test update.t
6020: 65 73 74 20 76 61 63 75 75 6d 2e 74 65 73 74 20  est vacuum.test 
6030: 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74  .}..# Run some t
6040: 65 73 74 73 20 69 6e 20 74 72 75 6e 63 61 74 69  ests in truncati
6050: 6e 67 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  ng journal mode.
6060: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 74  .#.test_suite "t
6070: 72 75 6e 63 61 74 65 5f 6a 6f 75 72 6e 61 6c 22  runcate_journal"
6080: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
6090: 20 20 52 75 6e 20 74 65 73 74 73 20 69 6e 20 70    Run tests in p
60a0: 65 72 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61  ersistent-journa
60b0: 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71  l mode..} -presq
60c0: 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75  l {.  pragma jou
60d0: 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 74 72 75 6e  rnal_mode = trun
60e0: 63 61 74 65 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  cate.} -files {.
60f0: 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64 65    delete.test de
6100: 6c 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65 72  lete2.test inser
6110: 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e  t.test rollback.
6120: 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73  test select1.tes
6130: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
6140: 20 74 72 61 6e 73 2e 74 65 73 74 20 75 70 64 61   trans.test upda
6150: 74 65 2e 74 65 73 74 20 76 61 63 75 75 6d 2e 74  te.test vacuum.t
6160: 65 73 74 20 0a 20 20 6d 61 6c 6c 6f 63 2e 74 65  est .  malloc.te
6170: 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d 0a  st ioerr.test.}.
6180: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 65 72 72 6f  .# Run some erro
6190: 72 20 74 65 73 74 73 20 69 6e 20 70 65 72 73 69  r tests in persi
61a0: 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f  stent journal mo
61b0: 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65  de..#.test_suite
61c0: 20 22 70 65 72 73 69 73 74 65 6e 74 5f 6a 6f 75   "persistent_jou
61d0: 72 6e 61 6c 5f 65 72 72 6f 72 22 20 2d 64 65 73  rnal_error" -des
61e0: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e  cription {.  Run
61f0: 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 61 6e 64   malloc.test and
6200: 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6e 20 70   ioerr.test in p
6210: 65 72 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61  ersistent-journa
6220: 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71  l mode..} -presq
6230: 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75  l {.  pragma jou
6240: 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73  rnal_mode = pers
6250: 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  ist.} -files {. 
6260: 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65   malloc.test ioe
6270: 72 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75 6e  rr.test.}..# Run
6280: 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 6e   some tests in n
6290: 6f 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a  o journal mode..
62a0: 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f  #.test_suite "no
62b0: 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64 65 73 63 72  _journal" -descr
62c0: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
62d0: 65 73 74 73 20 69 6e 20 6e 6f 2d 6a 6f 75 72 6e  ests in no-journ
62e0: 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  al mode..} -pres
62f0: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f  ql {.  pragma jo
6300: 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72  urnal_mode = per
6310: 73 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  sist.} -files {.
6320: 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64 65    delete.test de
6330: 6c 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65 72  lete2.test inser
6340: 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e  t.test rollback.
6350: 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73  test select1.tes
6360: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
6370: 20 74 72 61 6e 73 2e 74 65 73 74 20 75 70 64 61   trans.test upda
6380: 74 65 2e 74 65 73 74 20 76 61 63 75 75 6d 2e 74  te.test vacuum.t
6390: 65 73 74 20 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f  est .}..# Run so
63a0: 6d 65 20 65 72 72 6f 72 20 74 65 73 74 73 20 69  me error tests i
63b0: 6e 20 6e 6f 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64  n no journal mod
63c0: 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  e..#.test_suite 
63d0: 22 6e 6f 5f 6a 6f 75 72 6e 61 6c 5f 65 72 72 6f  "no_journal_erro
63e0: 72 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  r" -description 
63f0: 7b 0a 20 20 52 75 6e 20 6d 61 6c 6c 6f 63 2e 74  {.  Run malloc.t
6400: 65 73 74 20 61 6e 64 20 69 6f 65 72 72 2e 74 65  est and ioerr.te
6410: 73 74 20 69 6e 20 6e 6f 2d 6a 6f 75 72 6e 61 6c  st in no-journal
6420: 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c   mode..} -presql
6430: 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72   {.  pragma jour
6440: 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69  nal_mode = persi
6450: 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20  st.} -files {.  
6460: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65 72  malloc.test ioer
6470: 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75 6e 20  r.test.}..# Run 
6480: 73 6f 6d 65 20 63 72 61 73 68 2d 74 65 73 74 73  some crash-tests
6490: 20 69 6e 20 61 75 74 6f 76 61 63 75 75 6d 20 6d   in autovacuum m
64a0: 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74  ode..#.test_suit
64b0: 65 20 22 61 75 74 6f 76 61 63 75 75 6d 5f 63 72  e "autovacuum_cr
64c0: 61 73 68 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ash" -descriptio
64d0: 6e 20 7b 0a 20 20 52 75 6e 20 63 72 61 73 68 2e  n {.  Run crash.
64e0: 74 65 73 74 20 69 6e 20 61 75 74 6f 76 61 63 75  test in autovacu
64f0: 75 6d 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  um mode..} -pres
6500: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 61 75  ql {.  pragma au
6510: 74 6f 5f 76 61 63 75 75 6d 20 3d 20 31 0a 7d 20  to_vacuum = 1.} 
6520: 2d 66 69 6c 65 73 20 63 72 61 73 68 2e 74 65 73  -files crash.tes
6530: 74 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 69 6f  t..# Run some io
6540: 65 72 72 2d 74 65 73 74 73 20 69 6e 20 61 75 74  err-tests in aut
6550: 6f 76 61 63 75 75 6d 20 6d 6f 64 65 2e 0a 23 0a  ovacuum mode..#.
6560: 74 65 73 74 5f 73 75 69 74 65 20 22 61 75 74 6f  test_suite "auto
6570: 76 61 63 75 75 6d 5f 69 6f 65 72 72 22 20 2d 64  vacuum_ioerr" -d
6580: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
6590: 75 6e 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6e  un ioerr.test in
65a0: 20 61 75 74 6f 76 61 63 75 75 6d 20 6d 6f 64 65   autovacuum mode
65b0: 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20  ..} -presql {.  
65c0: 70 72 61 67 6d 61 20 61 75 74 6f 5f 76 61 63 75  pragma auto_vacu
65d0: 75 6d 20 3d 20 31 0a 7d 20 2d 66 69 6c 65 73 20  um = 1.} -files 
65e0: 69 6f 65 72 72 2e 74 65 73 74 0a 0a 23 20 52 75  ioerr.test..# Ru
65f0: 6e 20 74 65 73 74 73 20 77 69 74 68 20 61 6e 20  n tests with an 
6600: 69 6e 2d 6d 65 6d 6f 72 79 20 6a 6f 75 72 6e 61  in-memory journa
6610: 6c 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  l..#.test_suite 
6620: 22 69 6e 6d 65 6d 6f 72 79 5f 6a 6f 75 72 6e 61  "inmemory_journa
6630: 6c 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  l" -description 
6640: 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20 77 69  {.  Run tests wi
6650: 74 68 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20  th an in-memory 
6660: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2e 0a 7d 20  journal file..} 
6670: 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67  -presql {.  prag
6680: 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  ma journal_mode 
6690: 3d 20 27 6d 65 6d 6f 72 79 27 0a 7d 20 2d 66 69  = 'memory'.} -fi
66a0: 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a  les [test_set $:
66b0: 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  :allquicktests -
66c0: 65 78 63 6c 75 64 65 20 7b 0a 20 20 23 20 45 78  exclude {.  # Ex
66d0: 63 6c 75 64 65 20 61 6c 6c 20 74 65 73 74 73 20  clude all tests 
66e0: 74 68 61 74 20 73 69 6d 75 6c 61 74 65 20 49 4f  that simulate IO
66f0: 20 65 72 72 6f 72 73 2e 0a 20 20 61 75 74 6f 76   errors..  autov
6700: 61 63 75 75 6d 5f 69 6f 65 72 72 32 2e 74 65 73  acuum_ioerr2.tes
6710: 74 20 63 66 66 61 75 6c 74 2e 74 65 73 74 20 69  t cffault.test i
6720: 6e 63 72 76 61 63 75 75 6d 5f 69 6f 65 72 72 2e  ncrvacuum_ioerr.
6730: 74 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a  test ioerr.test.
6740: 20 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6f 65    ioerr.test ioe
6750: 72 72 32 2e 74 65 73 74 20 69 6f 65 72 72 33 2e  rr2.test ioerr3.
6760: 74 65 73 74 20 69 6f 65 72 72 34 2e 74 65 73 74  test ioerr4.test
6770: 20 69 6f 65 72 72 35 2e 74 65 73 74 0a 20 20 76   ioerr5.test.  v
6780: 61 63 75 75 6d 33 2e 74 65 73 74 20 69 6e 63 72  acuum3.test incr
6790: 62 6c 6f 62 5f 65 72 72 2e 74 65 73 74 20 64 69  blob_err.test di
67a0: 73 6b 66 75 6c 6c 2e 74 65 73 74 20 62 61 63 6b  skfull.test back
67b0: 75 70 5f 69 6f 65 72 72 2e 74 65 73 74 0a 20 20  up_ioerr.test.  
67c0: 65 5f 66 74 73 33 2e 74 65 73 74 20 66 74 73 33  e_fts3.test fts3
67d0: 63 6f 76 2e 74 65 73 74 20 66 74 73 33 6d 61 6c  cov.test fts3mal
67e0: 6c 6f 63 2e 74 65 73 74 20 66 74 73 33 72 6e 64  loc.test fts3rnd
67f0: 2e 74 65 73 74 0a 20 20 66 74 73 33 73 6e 69 70  .test.  fts3snip
6800: 70 65 74 2e 74 65 73 74 20 6d 6d 61 70 66 61 75  pet.test mmapfau
6810: 6c 74 2e 74 65 73 74 20 73 65 73 73 69 6f 6e 66  lt.test sessionf
6820: 61 75 6c 74 2e 74 65 73 74 20 73 65 73 73 69 6f  ault.test sessio
6830: 6e 66 61 75 6c 74 32 2e 74 65 73 74 0a 0a 20 20  nfault2.test..  
6840: 23 20 45 78 63 6c 75 64 65 20 74 65 73 74 20 73  # Exclude test s
6850: 63 72 69 70 74 73 20 74 68 61 74 20 75 73 65 20  cripts that use 
6860: 74 63 6c 20 49 4f 20 74 6f 20 61 63 63 65 73 73  tcl IO to access
6870: 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 73 20 6f   journal files o
6880: 72 20 63 6f 75 6e 74 0a 20 20 23 20 74 68 65 20  r count.  # the 
6890: 6e 75 6d 62 65 72 20 6f 66 20 66 73 79 6e 63 28  number of fsync(
68a0: 29 20 63 61 6c 6c 73 2e 0a 20 20 70 61 67 65 72  ) calls..  pager
68b0: 2e 74 65 73 74 20 65 78 63 6c 75 73 69 76 65 2e  .test exclusive.
68c0: 74 65 73 74 20 6a 72 6e 6c 6d 6f 64 65 2e 74 65  test jrnlmode.te
68d0: 73 74 20 73 79 6e 63 2e 74 65 73 74 20 6d 69 73  st sync.test mis
68e0: 63 31 2e 74 65 73 74 20 0a 20 20 6a 6f 75 72 6e  c1.test .  journ
68f0: 61 6c 31 2e 74 65 73 74 20 63 6f 6e 66 6c 69 63  al1.test conflic
6900: 74 2e 74 65 73 74 20 63 72 61 73 68 38 2e 74 65  t.test crash8.te
6910: 73 74 20 74 6b 74 33 34 35 37 2e 74 65 73 74 20  st tkt3457.test 
6920: 69 6f 2e 74 65 73 74 0a 20 20 6a 6f 75 72 6e 61  io.test.  journa
6930: 6c 33 2e 74 65 73 74 20 38 5f 33 5f 6e 61 6d 65  l3.test 8_3_name
6940: 73 2e 74 65 73 74 0a 0a 20 20 70 61 67 65 72 31  s.test..  pager1
6950: 2e 74 65 73 74 20 61 73 79 6e 63 34 2e 74 65 73  .test async4.tes
6960: 74 20 63 6f 72 72 75 70 74 2e 74 65 73 74 20 66  t corrupt.test f
6970: 69 6c 65 66 6d 74 2e 74 65 73 74 20 70 61 67 65  ilefmt.test page
6980: 72 32 2e 74 65 73 74 0a 20 20 63 6f 72 72 75 70  r2.test.  corrup
6990: 74 35 2e 74 65 73 74 20 63 6f 72 72 75 70 74 41  t5.test corruptA
69a0: 2e 74 65 73 74 20 70 61 67 65 72 6f 70 74 2e 74  .test pageropt.t
69b0: 65 73 74 0a 0a 20 20 23 20 45 78 63 6c 75 64 65  est..  # Exclude
69c0: 20 73 74 6d 74 2e 74 65 73 74 2c 20 77 68 69 63   stmt.test, whic
69d0: 68 20 65 78 70 65 63 74 73 20 73 75 62 2d 6a 6f  h expects sub-jo
69e0: 75 72 6e 61 6c 73 20 74 6f 20 75 73 65 20 74 65  urnals to use te
69f0: 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 2e 0a 20  mporary files.. 
6a00: 20 73 74 6d 74 2e 74 65 73 74 20 73 79 6d 6c 69   stmt.test symli
6a10: 6e 6b 2e 74 65 73 74 0a 0a 20 20 7a 65 72 6f 64  nk.test..  zerod
6a20: 61 6d 61 67 65 2e 74 65 73 74 0a 0a 20 20 23 20  amage.test..  # 
6a30: 57 41 4c 20 6d 6f 64 65 20 69 73 20 64 69 66 66  WAL mode is diff
6a40: 65 72 65 6e 74 2e 0a 20 20 77 61 6c 2a 20 74 6b  erent..  wal* tk
6a50: 74 2d 32 64 31 61 35 63 36 37 64 2e 74 65 73 74  t-2d1a5c67d.test
6a60: 20 62 61 63 6b 63 6f 6d 70 61 74 2e 74 65 73 74   backcompat.test
6a70: 20 65 5f 77 61 6c 2a 20 72 6f 77 61 6c 6c 6f 63   e_wal* rowalloc
6a80: 6b 2e 74 65 73 74 0a 0a 20 20 23 20 54 68 69 73  k.test..  # This
6a90: 20 74 65 73 74 20 64 6f 65 73 20 6e 6f 74 20 77   test does not w
6aa0: 6f 72 6b 20 61 73 20 74 68 65 20 22 50 52 41 47  ork as the "PRAG
6ab0: 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  MA journal_mode 
6ac0: 3d 20 6d 65 6d 6f 72 79 22 0a 20 20 23 20 73 74  = memory".  # st
6ad0: 61 74 65 6d 65 6e 74 20 73 77 69 74 63 68 65 73  atement switches
6ae0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6f 75   the database ou
6af0: 74 20 6f 66 20 77 61 6c 20 6d 6f 64 65 20 61 74  t of wal mode at
6b00: 20 69 6e 6f 70 70 6f 72 74 75 6e 65 0a 20 20 23   inopportune.  #
6b10: 20 74 69 6d 65 73 2e 0a 20 20 73 6e 61 70 73 68   times..  snapsh
6b20: 6f 74 5f 66 61 75 6c 74 2e 74 65 73 74 0a 20 20  ot_fault.test.  
6b30: 0a 20 20 23 20 54 68 69 73 20 74 65 73 74 20 61  .  # This test a
6b40: 73 73 75 6d 65 73 20 61 20 6a 6f 75 72 6e 61 6c  ssumes a journal
6b50: 20 66 69 6c 65 20 69 73 20 63 72 65 61 74 65 64   file is created
6b60: 20 6f 6e 20 64 69 73 6b 2e 0a 20 20 64 65 6c 65   on disk..  dele
6b70: 74 65 5f 64 62 2e 74 65 73 74 0a 20 20 0a 20 20  te_db.test.  .  
6b80: 23 20 54 68 69 73 20 74 65 73 74 20 64 65 70 65  # This test depe
6b90: 6e 64 73 20 6f 6e 20 61 20 73 75 63 63 65 73 73  nds on a success
6ba0: 66 75 6c 20 72 65 63 6f 76 65 72 79 20 66 72 6f  ful recovery fro
6bb0: 6d 20 74 68 65 20 70 61 67 65 72 20 65 72 72 6f  m the pager erro
6bc0: 72 20 0a 20 20 23 20 73 74 61 74 65 2e 20 57 68  r .  # state. Wh
6bd0: 69 63 68 20 69 73 20 6e 6f 74 20 70 6f 73 73 69  ich is not possi
6be0: 62 6c 65 20 77 69 74 68 20 61 6e 20 69 6e 2d 6d  ble with an in-m
6bf0: 65 6d 6f 72 79 20 6a 6f 75 72 6e 61 6c 0a 20 20  emory journal.  
6c00: 66 74 73 35 66 61 75 6c 74 31 2e 74 65 73 74 0a  fts5fault1.test.
6c10: 7d 5d 0a 0a 69 66 63 61 70 61 62 6c 65 20 6d 65  }]..ifcapable me
6c20: 6d 33 20 7b 0a 20 20 74 65 73 74 5f 73 75 69 74  m3 {.  test_suit
6c30: 65 20 22 6d 65 6d 73 79 73 33 22 20 2d 64 65 73  e "memsys3" -des
6c40: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 52  cription {.    R
6c50: 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67 20 74  un tests using t
6c60: 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 20  he allocator in 
6c70: 6d 65 6d 33 2e 63 2e 0a 20 20 7d 20 2d 66 69 6c  mem3.c..  } -fil
6c80: 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a 3a  es [test_set $::
6c90: 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65  allquicktests -e
6ca0: 78 63 6c 75 64 65 20 7b 0a 20 20 20 20 61 75 74  xclude {.    aut
6cb0: 6f 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20  ovacuum.test    
6cc0: 20 20 20 20 20 20 20 64 65 6c 65 74 65 33 2e 74         delete3.t
6cd0: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20  est             
6ce0: 20 6d 61 6e 79 64 62 2e 74 65 73 74 0a 20 20 20   manydb.test.   
6cf0: 20 62 69 67 72 6f 77 2e 74 65 73 74 20 20 20 20   bigrow.test    
6d00: 20 20 20 20 20 20 20 20 20 20 20 69 6e 63 72 62             incrb
6d10: 6c 6f 62 32 2e 74 65 73 74 20 20 20 20 20 20 20  lob2.test       
6d20: 20 20 20 20 20 6d 65 6d 64 62 2e 74 65 73 74 0a       memdb.test.
6d30: 20 20 20 20 62 69 74 76 65 63 2e 74 65 73 74 20      bitvec.test 
6d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
6d50: 64 65 78 32 2e 74 65 73 74 20 20 20 20 20 20 20  dex2.test       
6d60: 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73 79          memsubsy
6d70: 73 31 2e 74 65 73 74 0a 20 20 20 20 63 61 70 69  s1.test.    capi
6d80: 33 63 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  3c.test         
6d90: 20 20 20 20 20 20 69 6f 65 72 72 2e 74 65 73 74        ioerr.test
6da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6db0: 6d 65 6d 73 75 62 73 79 73 32 2e 74 65 73 74 0a  memsubsys2.test.
6dc0: 20 20 20 20 63 61 70 69 33 2e 74 65 73 74 20 20      capi3.test  
6dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 6f                jo
6de0: 69 6e 33 2e 74 65 73 74 20 20 20 20 20 20 20 20  in3.test        
6df0: 20 20 20 20 20 20 20 20 70 61 67 65 73 69 7a 65          pagesize
6e00: 2e 74 65 73 74 0a 20 20 20 20 63 6f 6c 6c 61 74  .test.    collat
6e10: 65 35 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  e5.test         
6e20: 20 20 20 20 6c 69 6d 69 74 2e 74 65 73 74 20 20      limit.test  
6e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61                ba
6e40: 63 6b 75 70 5f 69 6f 65 72 72 2e 74 65 73 74 0a  ckup_ioerr.test.
6e50: 20 20 20 20 62 61 63 6b 75 70 5f 6d 61 6c 6c 6f      backup_mallo
6e60: 63 2e 74 65 73 74 0a 20 20 7d 5d 20 2d 69 6e 69  c.test.  }] -ini
6e70: 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63 61  tialize {.    ca
6e80: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
6e90: 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74     sqlite3_reset
6ea0: 5f 61 75 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 0a  _auto_extension.
6eb0: 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74      sqlite3_shut
6ec0: 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33  down.    sqlite3
6ed0: 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20 32 35 30  _config_heap 250
6ee0: 30 30 30 30 30 20 30 0a 20 20 20 20 73 71 6c 69  00000 0.    sqli
6ef0: 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61  te3_config_looka
6f00: 73 69 64 65 20 30 20 30 0a 20 20 20 20 69 66 63  side 0 0.    ifc
6f10: 61 70 61 62 6c 65 20 6d 65 6d 35 20 7b 0a 20 20  apable mem5 {.  
6f20: 20 20 20 20 23 20 49 66 20 62 6f 74 68 20 6d 65      # If both me
6f30: 6d 73 79 73 33 20 61 6e 64 20 6d 65 6d 73 79 73  msys3 and memsys
6f40: 35 20 61 72 65 20 65 6e 61 62 6c 65 64 20 69 6e  5 are enabled in
6f50: 20 74 68 65 20 62 75 69 6c 64 2c 20 74 68 65 20   the build, the 
6f60: 63 61 6c 6c 20 74 6f 0a 20 20 20 20 20 20 23 20  call to.      # 
6f70: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f  [sqlite3_config_
6f80: 68 65 61 70 5d 20 77 69 6c 6c 20 69 6e 69 74 69  heap] will initi
6f90: 61 6c 69 7a 65 20 74 68 65 20 73 79 73 74 65 6d  alize the system
6fa0: 20 74 6f 20 75 73 65 20 6d 65 6d 73 79 73 35 2e   to use memsys5.
6fb0: 0a 20 20 20 20 20 20 23 20 54 68 65 20 66 6f 6c  .      # The fol
6fc0: 6c 6f 77 69 6e 67 20 6f 76 65 72 72 69 64 65 73  lowing overrides
6fd0: 20 74 68 69 73 20 70 72 65 66 65 72 65 6e 63 65   this preference
6fe0: 20 61 6e 64 20 69 6e 73 74 61 6c 6c 73 20 74 68   and installs th
6ff0: 65 20 6d 65 6d 73 79 73 33 0a 20 20 20 20 20 20  e memsys3.      
7000: 23 20 61 6c 6c 6f 63 61 74 6f 72 2e 0a 20 20 20  # allocator..   
7010: 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 73 74 61     sqlite3_insta
7020: 6c 6c 5f 6d 65 6d 73 79 73 33 0a 20 20 20 20 7d  ll_memsys3.    }
7030: 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c  .    install_mal
7040: 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a  loc_faultsim 1 .
7050: 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74      sqlite3_init
7060: 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69  ialize.    autoi
7070: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
7080: 74 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74 64  tions.  } -shutd
7090: 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68 20  own {.    catch 
70a0: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73  {db close}.    s
70b0: 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a  qlite3_shutdown.
70c0: 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66      sqlite3_conf
70d0: 69 67 5f 68 65 61 70 20 30 20 30 0a 20 20 20 20  ig_heap 0 0.    
70e0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c  sqlite3_config_l
70f0: 6f 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30 30  ookaside 100 500
7100: 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c  .    install_mal
7110: 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a  loc_faultsim 1 .
7120: 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74      sqlite3_init
7130: 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69  ialize.    autoi
7140: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
7150: 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a 69 66 63  tions.  }.}..ifc
7160: 61 70 61 62 6c 65 20 6d 65 6d 35 20 7b 0a 20 20  apable mem5 {.  
7170: 74 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73  test_suite "mems
7180: 79 73 35 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ys5" -descriptio
7190: 6e 20 7b 0a 20 20 20 20 52 75 6e 20 74 65 73 74  n {.    Run test
71a0: 73 20 75 73 69 6e 67 20 74 68 65 20 61 6c 6c 6f  s using the allo
71b0: 63 61 74 6f 72 20 69 6e 20 6d 65 6d 35 2e 63 2e  cator in mem5.c.
71c0: 0a 20 20 7d 20 2d 66 69 6c 65 73 20 5b 74 65 73  .  } -files [tes
71d0: 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63  t_set $::allquic
71e0: 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20  ktests -exclude 
71f0: 7b 0a 20 20 20 20 61 75 74 6f 76 61 63 75 75 6d  {.    autovacuum
7200: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
7210: 64 65 6c 65 74 65 33 2e 74 65 73 74 20 20 20 20  delete3.test    
7220: 20 20 20 20 20 20 20 20 20 20 6d 61 6e 79 64 62            manydb
7230: 2e 74 65 73 74 0a 20 20 20 20 62 69 67 72 6f 77  .test.    bigrow
7240: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
7250: 20 20 20 20 69 6e 63 72 62 6c 6f 62 32 2e 74 65      incrblob2.te
7260: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 6d 65  st            me
7270: 6d 64 62 2e 74 65 73 74 0a 20 20 20 20 62 69 74  mdb.test.    bit
7280: 76 65 63 2e 74 65 73 74 20 20 20 20 20 20 20 20  vec.test        
7290: 20 20 20 20 20 20 20 69 6e 64 65 78 32 2e 74 65         index2.te
72a0: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  st              
72b0: 20 6d 65 6d 73 75 62 73 79 73 31 2e 74 65 73 74   memsubsys1.test
72c0: 0a 20 20 20 20 63 61 70 69 33 63 2e 74 65 73 74  .    capi3c.test
72d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
72e0: 6f 65 72 72 2e 74 65 73 74 20 20 20 20 20 20 20  oerr.test       
72f0: 20 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73           memsubs
7300: 79 73 32 2e 74 65 73 74 0a 20 20 20 20 63 61 70  ys2.test.    cap
7310: 69 33 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  i3.test         
7320: 20 20 20 20 20 20 20 6a 6f 69 6e 33 2e 74 65 73         join3.tes
7330: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
7340: 20 70 61 67 65 73 69 7a 65 2e 74 65 73 74 0a 20   pagesize.test. 
7350: 20 20 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74     collate5.test
7360: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6d               lim
7370: 69 74 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  it.test         
7380: 20 20 20 20 20 20 20 7a 65 72 6f 62 6c 6f 62 2e         zeroblob.
7390: 74 65 73 74 0a 20 20 7d 5d 20 2d 69 6e 69 74 69  test.  }] -initi
73a0: 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63 61 74 63  alize {.    catc
73b0: 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20  h {db close}.   
73c0: 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
73d0: 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f  n.    sqlite3_co
73e0: 6e 66 69 67 5f 68 65 61 70 20 32 35 30 30 30 30  nfig_heap 250000
73f0: 30 30 20 36 34 0a 20 20 20 20 73 71 6c 69 74 65  00 64.    sqlite
7400: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69  3_config_lookasi
7410: 64 65 20 30 20 30 0a 20 20 20 20 69 6e 73 74 61  de 0 0.    insta
7420: 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73  ll_malloc_faults
7430: 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65  im 1 .    sqlite
7440: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20  3_initialize.   
7450: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
7460: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 20  t_functions.  } 
7470: 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20  -shutdown {.    
7480: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
7490: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75  .    sqlite3_shu
74a0: 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65  tdown.    sqlite
74b0: 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20 30 20  3_config_heap 0 
74c0: 30 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f  0.    sqlite3_co
74d0: 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31  nfig_lookaside 1
74e0: 30 30 20 35 30 30 0a 20 20 20 20 69 6e 73 74 61  00 500.    insta
74f0: 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73  ll_malloc_faults
7500: 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65  im 1 .    sqlite
7510: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20  3_initialize.   
7520: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
7530: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a  t_functions.  }.
7540: 0a 20 20 74 65 73 74 5f 73 75 69 74 65 20 22 6d  .  test_suite "m
7550: 65 6d 73 79 73 35 2d 32 22 20 2d 64 65 73 63 72  emsys5-2" -descr
7560: 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 52 75 6e  iption {.    Run
7570: 20 74 65 73 74 73 20 75 73 69 6e 67 20 74 68 65   tests using the
7580: 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 20 6d 65   allocator in me
7590: 6d 35 2e 63 20 69 6e 20 61 20 64 69 66 66 65 72  m5.c in a differ
75a0: 65 6e 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ent configuratio
75b0: 6e 2e 0a 20 20 7d 20 2d 66 69 6c 65 73 20 7b 0a  n..  } -files {.
75c0: 20 20 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74      select1.test
75d0: 20 0a 20 20 7d 20 2d 69 6e 69 74 69 61 6c 69 7a   .  } -initializ
75e0: 65 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64  e {.    catch {d
75f0: 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c  b close}.    sql
7600: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
7610: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
7620: 5f 6d 65 6d 73 74 61 74 75 73 20 30 0a 20 20 20  _memstatus 0.   
7630: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
7640: 68 65 61 70 20 34 30 30 30 30 30 30 30 20 31 36  heap 40000000 16
7650: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  .    sqlite3_con
7660: 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20  fig_lookaside 0 
7670: 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61  0.    install_ma
7680: 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20  lloc_faultsim 1 
7690: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69  .    sqlite3_ini
76a0: 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f  tialize.    auto
76b0: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
76c0: 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74  ctions.  } -shut
76d0: 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68  down {.    catch
76e0: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20   {db close}.    
76f0: 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
7700: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  .    sqlite3_con
7710: 66 69 67 5f 68 65 61 70 20 30 20 30 0a 20 20 20  fig_heap 0 0.   
7720: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
7730: 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30  lookaside 100 50
7740: 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61  0.    install_ma
7750: 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20  lloc_faultsim 1 
7760: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69  .    sqlite3_ini
7770: 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f  tialize.    auto
7780: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
7790: 63 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a 69 66  ctions.  }.}..if
77a0: 63 61 70 61 62 6c 65 20 74 68 72 65 61 64 73 61  capable threadsa
77b0: 66 65 20 7b 0a 20 20 74 65 73 74 5f 73 75 69 74  fe {.  test_suit
77c0: 65 20 22 6e 6f 5f 6d 75 74 65 78 5f 74 72 79 22  e "no_mutex_try"
77d0: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
77e0: 20 20 20 20 20 54 68 65 20 73 71 6c 69 74 65 33       The sqlite3
77f0: 5f 6d 75 74 65 78 5f 74 72 79 28 29 20 69 6e 74  _mutex_try() int
7800: 65 72 66 61 63 65 20 61 6c 77 61 79 73 20 66 61  erface always fa
7810: 69 6c 73 0a 20 20 7d 20 2d 66 69 6c 65 73 20 5b  ils.  } -files [
7820: 0a 20 20 20 20 74 65 73 74 5f 73 65 74 20 24 3a  .    test_set $:
7830: 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  :allquicktests -
7840: 65 78 63 6c 75 64 65 20 6d 75 74 65 78 31 2e 74  exclude mutex1.t
7850: 65 73 74 20 6d 75 74 65 78 32 2e 74 65 73 74 0a  est mutex2.test.
7860: 20 20 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20    ] -initialize 
7870: 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62 20  {.    catch {db 
7880: 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74  close}.    sqlit
7890: 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20  e3_shutdown.    
78a0: 69 6e 73 74 61 6c 6c 5f 6d 75 74 65 78 5f 63 6f  install_mutex_co
78b0: 75 6e 74 65 72 73 20 31 0a 20 20 20 20 73 65 74  unters 1.    set
78c0: 20 3a 3a 64 69 73 61 62 6c 65 5f 6d 75 74 65 78   ::disable_mutex
78d0: 5f 74 72 79 20 31 0a 20 20 20 20 73 71 6c 69 74  _try 1.    sqlit
78e0: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20  e3_initialize.  
78f0: 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65    autoinstall_te
7900: 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d  st_functions.  }
7910: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20   -shutdown {.   
7920: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
7930: 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68  }.    sqlite3_sh
7940: 75 74 64 6f 77 6e 0a 20 20 20 20 69 6e 73 74 61  utdown.    insta
7950: 6c 6c 5f 6d 75 74 65 78 5f 63 6f 75 6e 74 65 72  ll_mutex_counter
7960: 73 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  s 0.    sqlite3_
7970: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61  initialize.    a
7980: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
7990: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a  functions.  }.}.
79a0: 0a 23 20 72 75 6e 5f 74 65 73 74 73 20 22 63 72  .# run_tests "cr
79b0: 61 73 68 5f 73 61 66 65 5f 61 70 70 65 6e 64 22  ash_safe_append"
79c0: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
79d0: 23 20 20 20 52 75 6e 20 63 72 61 73 68 2e 74 65  #   Run crash.te
79e0: 73 74 20 77 69 74 68 20 70 65 72 73 69 73 74 65  st with persiste
79f0: 6e 74 20 6a 6f 75 72 6e 61 6c 73 20 6f 6e 20 61  nt journals on a
7a00: 20 53 41 46 45 5f 41 50 50 45 4e 44 20 66 69 6c   SAFE_APPEND fil
7a10: 65 2d 73 79 73 74 65 6d 2e 0a 23 20 7d 20 2d 69  e-system..# } -i
7a20: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 23 20 20 20  nitialize {.#   
7a30: 72 65 6e 61 6d 65 20 63 72 61 73 68 73 71 6c 20  rename crashsql 
7a40: 73 61 5f 63 72 61 73 68 73 71 6c 0a 23 20 20 20  sa_crashsql.#   
7a50: 70 72 6f 63 20 63 72 61 73 68 73 71 6c 20 7b 61  proc crashsql {a
7a60: 72 67 73 7d 20 7b 0a 23 20 20 20 20 20 73 65 74  rgs} {.#     set
7a70: 20 6f 70 74 69 6f 6e 73 20 5b 6c 72 61 6e 67 65   options [lrange
7a80: 20 24 61 72 67 73 20 30 20 5b 65 78 70 72 20 7b   $args 0 [expr {
7a90: 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 5d 2d  [llength $args]-
7aa0: 32 7d 5d 5d 0a 23 20 20 20 20 20 6c 61 70 70 65  2}]].#     lappe
7ab0: 6e 64 20 6f 70 74 69 6f 6e 73 20 2d 63 68 61 72  nd options -char
7ac0: 20 73 61 66 65 5f 61 70 70 65 6e 64 0a 23 20 20   safe_append.#  
7ad0: 20 20 20 73 65 74 20 73 71 6c 20 5b 6c 69 6e 64     set sql [lind
7ae0: 65 78 20 24 61 72 67 73 20 65 6e 64 5d 0a 23 20  ex $args end].# 
7af0: 20 20 20 20 6c 61 70 70 65 6e 64 20 6f 70 74 69      lappend opti
7b00: 6f 6e 73 20 22 0a 23 20 20 20 20 20 20 20 50 52  ons ".#       PR
7b10: 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64  AGMA journal_mod
7b20: 65 3d 70 65 72 73 69 73 74 65 6e 74 3b 0a 23 20  e=persistent;.# 
7b30: 20 20 20 20 20 20 24 73 71 6c 0a 23 20 20 20 20        $sql.#    
7b40: 20 22 0a 23 20 20 20 20 20 73 65 74 20 66 64 20   ".#     set fd 
7b50: 5b 6f 70 65 6e 20 74 65 73 74 2e 64 62 2d 6a 6f  [open test.db-jo
7b60: 75 72 6e 61 6c 20 77 5d 0a 23 20 20 20 20 20 70  urnal w].#     p
7b70: 75 74 73 20 24 66 64 20 5b 73 74 72 69 6e 67 20  uts $fd [string 
7b80: 72 65 70 65 61 74 20 31 32 33 34 35 36 37 38 39  repeat 123456789
7b90: 30 20 31 30 30 30 30 30 5d 0a 23 20 20 20 20 20  0 100000].#     
7ba0: 63 6c 6f 73 65 20 24 66 64 0a 23 20 20 20 20 20  close $fd.#     
7bb0: 65 76 61 6c 20 73 61 5f 63 72 61 73 68 73 71 6c  eval sa_crashsql
7bc0: 20 24 6f 70 74 69 6f 6e 73 0a 23 20 20 20 7d 0a   $options.#   }.
7bd0: 23 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  # } -shutdown {.
7be0: 23 20 20 20 72 65 6e 61 6d 65 20 63 72 61 73 68  #   rename crash
7bf0: 73 71 6c 20 7b 7d 0a 23 20 20 20 72 65 6e 61 6d  sql {}.#   renam
7c00: 65 20 73 61 5f 63 72 61 73 68 73 71 6c 20 63 72  e sa_crashsql cr
7c10: 61 73 68 73 71 6c 0a 23 20 7d 20 2d 66 69 6c 65  ashsql.# } -file
7c20: 73 20 63 72 61 73 68 2e 74 65 73 74 0a 0a 74 65  s crash.test..te
7c30: 73 74 5f 73 75 69 74 65 20 22 73 61 66 65 5f 61  st_suite "safe_a
7c40: 70 70 65 6e 64 22 20 2d 64 65 73 63 72 69 70 74  ppend" -descript
7c50: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 73 6f 6d 65  ion {.  Run some
7c60: 20 74 65 73 74 73 20 6f 6e 20 61 20 53 41 46 45   tests on a SAFE
7c70: 5f 41 50 50 45 4e 44 20 66 69 6c 65 2d 73 79 73  _APPEND file-sys
7c80: 74 65 6d 2e 0a 7d 20 2d 69 6e 69 74 69 61 6c 69  tem..} -initiali
7c90: 7a 65 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  ze {.  rename sq
7ca0: 6c 69 74 65 33 20 73 71 6c 69 74 65 33 5f 73 61  lite3 sqlite3_sa
7cb0: 66 65 61 70 70 65 6e 64 0a 20 20 70 72 6f 63 20  feappend.  proc 
7cc0: 73 71 6c 69 74 65 33 20 7b 61 72 67 73 7d 20 7b  sqlite3 {args} {
7cd0: 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67  .    if {[string
7ce0: 20 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24   range [lindex $
7cf0: 61 72 67 73 20 30 5d 20 30 20 30 5d 20 6e 65 20  args 0] 0 0] ne 
7d00: 22 2d 22 7d 20 7b 0a 20 20 20 20 20 20 6c 61 70  "-"} {.      lap
7d10: 70 65 6e 64 20 61 72 67 73 20 2d 76 66 73 20 64  pend args -vfs d
7d20: 65 76 73 79 6d 0a 20 20 20 20 7d 0a 20 20 20 20  evsym.    }.    
7d30: 75 70 6c 65 76 65 6c 20 5b 63 6f 6e 63 61 74 20  uplevel [concat 
7d40: 73 71 6c 69 74 65 33 5f 73 61 66 65 61 70 70 65  sqlite3_safeappe
7d50: 6e 64 20 24 61 72 67 73 5d 0a 20 20 7d 0a 20 20  nd $args].  }.  
7d60: 73 71 6c 69 74 65 33 5f 73 69 6d 75 6c 61 74 65  sqlite3_simulate
7d70: 5f 64 65 76 69 63 65 20 2d 63 68 61 72 20 73 61  _device -char sa
7d80: 66 65 5f 61 70 70 65 6e 64 0a 7d 20 2d 73 68 75  fe_append.} -shu
7d90: 74 64 6f 77 6e 20 7b 0a 20 20 72 65 6e 61 6d 65  tdown {.  rename
7da0: 20 73 71 6c 69 74 65 33 20 7b 7d 0a 20 20 72 65   sqlite3 {}.  re
7db0: 6e 61 6d 65 20 73 71 6c 69 74 65 33 5f 73 68 75  name sqlite3_shu
7dc0: 74 64 6f 77 6e 20 73 71 6c 69 74 65 33 0a 7d 20  tdown sqlite3.} 
7dd0: 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f  -files [.  test_
7de0: 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74  set $::allquickt
7df0: 65 73 74 73 20 73 68 61 72 65 64 5f 65 72 72 2e  ests shared_err.
7e00: 74 65 73 74 20 2d 65 78 63 6c 75 64 65 20 61 73  test -exclude as
7e10: 79 6e 63 33 2e 74 65 73 74 0a 5d 0a 0a 23 20 54  ync3.test.]..# T
7e20: 68 65 20 73 65 74 20 6f 66 20 74 65 73 74 73 20  he set of tests 
7e30: 74 6f 20 72 75 6e 20 6f 6e 20 74 68 65 20 61 6c  to run on the al
7e40: 74 65 72 6e 61 74 69 76 65 2d 70 63 61 63 68 65  ternative-pcache
7e50: 0a 73 65 74 20 70 65 72 6d 2d 61 6c 74 2d 70 63  .set perm-alt-pc
7e60: 61 63 68 65 2d 74 65 73 74 73 65 74 20 7b 0a 20  ache-testset {. 
7e70: 20 61 73 79 6e 63 2e 74 65 73 74 0a 20 20 61 74   async.test.  at
7e80: 74 61 63 68 2e 74 65 73 74 0a 20 20 64 65 6c 65  tach.test.  dele
7e90: 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e  te.test delete2.
7ea0: 74 65 73 74 0a 20 20 69 6e 64 65 78 2e 74 65 73  test.  index.tes
7eb0: 74 0a 20 20 69 6e 73 65 72 74 2e 74 65 73 74 20  t.  insert.test 
7ec0: 69 6e 73 65 72 74 32 2e 74 65 73 74 0a 20 20 6a  insert2.test.  j
7ed0: 6f 69 6e 2e 74 65 73 74 20 6a 6f 69 6e 32 2e 74  oin.test join2.t
7ee0: 65 73 74 0a 20 20 72 6f 6c 6c 62 61 63 6b 2e 74  est.  rollback.t
7ef0: 65 73 74 0a 20 20 73 65 6c 65 63 74 31 2e 74 65  est.  select1.te
7f00: 73 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74 0a  st select2.test.
7f10: 20 20 74 72 61 6e 73 2e 74 65 73 74 0a 20 20 75    trans.test.  u
7f20: 70 64 61 74 65 2e 74 65 73 74 0a 7d 0a 0a 66 6f  pdate.test.}..fo
7f30: 72 65 61 63 68 20 64 69 73 63 61 72 64 5f 72 61  reach discard_ra
7f40: 74 65 20 7b 30 20 31 30 20 35 30 20 39 30 20 31  te {0 10 50 90 1
7f50: 30 30 7d 20 7b 0a 20 20 74 65 73 74 5f 73 75 69  00} {.  test_sui
7f60: 74 65 20 22 70 63 61 63 68 65 24 7b 64 69 73 63  te "pcache${disc
7f70: 61 72 64 5f 72 61 74 65 7d 22 20 2d 64 65 73 63  ard_rate}" -desc
7f80: 72 69 70 74 69 6f 6e 20 22 0a 20 20 20 20 41 6c  ription ".    Al
7f90: 74 65 72 6e 61 74 69 76 65 20 70 63 61 63 68 65  ternative pcache
7fa0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
7fb0: 77 69 74 68 20 24 7b 64 69 73 63 61 72 64 5f 72  with ${discard_r
7fc0: 61 74 65 7d 25 20 72 61 6e 64 6f 6d 20 64 69 73  ate}% random dis
7fd0: 63 61 72 64 0a 20 20 22 20 2d 69 6e 69 74 69 61  card.  " -initia
7fe0: 6c 69 7a 65 20 22 0a 20 20 20 20 63 61 74 63 68  lize ".    catch
7ff0: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20   {db close}.    
8000: 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
8010: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  .    sqlite3_con
8020: 66 69 67 5f 61 6c 74 5f 70 63 61 63 68 65 20 31  fig_alt_pcache 1
8030: 20 24 64 69 73 63 61 72 64 5f 72 61 74 65 20 31   $discard_rate 1
8040: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69  .    sqlite3_ini
8050: 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f  tialize.    auto
8060: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
8070: 63 74 69 6f 6e 73 0a 20 20 22 20 2d 73 68 75 74  ctions.  " -shut
8080: 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68  down {.    catch
8090: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20   {db close}.    
80a0: 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
80b0: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  .    sqlite3_con
80c0: 66 69 67 5f 61 6c 74 5f 70 63 61 63 68 65 20 30  fig_alt_pcache 0
80d0: 20 30 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33   0 0.    sqlite3
80e0: 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64  _config_lookasid
80f0: 65 20 31 30 30 20 35 30 30 0a 20 20 20 20 69 6e  e 100 500.    in
8100: 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75  stall_malloc_fau
8110: 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c  ltsim 1 .    sql
8120: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
8130: 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f      autoinstall_
8140: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20  test_functions. 
8150: 20 7d 20 2d 66 69 6c 65 73 20 24 7b 70 65 72 6d   } -files ${perm
8160: 2d 61 6c 74 2d 70 63 61 63 68 65 2d 74 65 73 74  -alt-pcache-test
8170: 73 65 74 7d 0a 7d 0a 0a 74 65 73 74 5f 73 75 69  set}.}..test_sui
8180: 74 65 20 22 6a 6f 75 72 6e 61 6c 74 65 73 74 22  te "journaltest"
8190: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
81a0: 20 20 43 68 65 63 6b 20 74 68 61 74 20 70 61 67    Check that pag
81b0: 65 73 20 61 72 65 20 73 79 6e 63 65 64 20 62 65  es are synced be
81c0: 66 6f 72 65 20 62 65 69 6e 67 20 77 72 69 74 74  fore being writt
81d0: 65 6e 20 28 74 65 73 74 5f 6a 6f 75 72 6e 61 6c  en (test_journal
81e0: 2e 63 29 2e 0a 7d 20 2d 69 6e 69 74 69 61 6c 69  .c)..} -initiali
81f0: 7a 65 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62  ze {.  catch {db
8200: 20 63 6c 6f 73 65 7d 0a 20 20 72 65 67 69 73 74   close}.  regist
8210: 65 72 5f 6a 74 5f 76 66 73 20 2d 64 65 66 61 75  er_jt_vfs -defau
8220: 6c 74 20 22 22 0a 7d 20 2d 73 68 75 74 64 6f 77  lt "".} -shutdow
8230: 6e 20 7b 0a 20 20 75 6e 72 65 67 69 73 74 65 72  n {.  unregister
8240: 5f 6a 74 5f 76 66 73 0a 7d 20 2d 66 69 6c 65 73  _jt_vfs.} -files
8250: 20 5b 74 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c   [test_set $::al
8260: 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63  lquicktests -exc
8270: 6c 75 64 65 20 7b 0a 20 20 77 61 6c 2a 20 69 6e  lude {.  wal* in
8280: 63 72 76 61 63 75 75 6d 2e 74 65 73 74 20 69 6f  crvacuum.test io
8290: 65 72 72 2e 74 65 73 74 20 63 6f 72 72 75 70 74  err.test corrupt
82a0: 34 2e 74 65 73 74 20 69 6f 2e 74 65 73 74 20 63  4.test io.test c
82b0: 72 61 73 68 38 2e 74 65 73 74 20 0a 20 20 61 73  rash8.test .  as
82c0: 79 6e 63 34 2e 74 65 73 74 20 62 69 67 66 69 6c  ync4.test bigfil
82d0: 65 2e 74 65 73 74 20 62 61 63 6b 63 6f 6d 70 61  e.test backcompa
82e0: 74 2e 74 65 73 74 20 65 5f 77 61 6c 2a 20 66 73  t.test e_wal* fs
82f0: 74 61 74 2e 74 65 73 74 20 6d 6d 61 70 32 2e 74  tat.test mmap2.t
8300: 65 73 74 0a 20 20 70 61 67 65 72 31 2e 74 65 73  est.  pager1.tes
8310: 74 20 73 79 73 63 61 6c 6c 2e 74 65 73 74 20 74  t syscall.test t
8320: 6b 74 33 34 35 37 2e 74 65 73 74 20 2a 6d 61 6c  kt3457.test *mal
8330: 6c 6f 63 2a 20 6d 6d 61 70 2a 20 6d 75 6c 74 69  loc* mmap* multi
8340: 70 6c 65 78 2a 20 6e 6f 6c 6f 63 6b 2a 0a 20 20  plex* nolock*.  
8350: 70 61 67 65 72 32 2e 74 65 73 74 20 2a 66 61 75  pager2.test *fau
8360: 6c 74 2a 20 72 6f 77 61 6c 2a 20 73 6e 61 70 73  lt* rowal* snaps
8370: 68 6f 74 2a 20 73 75 70 65 72 6c 6f 63 6b 2a 20  hot* superlock* 
8380: 73 79 6d 6c 69 6e 6b 2e 74 65 73 74 0a 20 20 64  symlink.test.  d
8390: 65 6c 65 74 65 5f 64 62 2e 74 65 73 74 0a 7d 5d  elete_db.test.}]
83a0: 0a 0a 69 66 20 7b 5b 69 6e 66 6f 20 63 6f 6d 6d  ..if {[info comm
83b0: 61 6e 64 73 20 72 65 67 69 73 74 65 72 5f 64 65  ands register_de
83c0: 6d 6f 76 66 73 5d 20 21 3d 20 22 22 7d 20 7b 0a  movfs] != ""} {.
83d0: 20 20 74 65 73 74 5f 73 75 69 74 65 20 22 64 65    test_suite "de
83e0: 6d 6f 76 66 73 22 20 2d 64 65 73 63 72 69 70 74  movfs" -descript
83f0: 69 6f 6e 20 7b 0a 20 20 20 20 43 68 65 63 6b 20  ion {.    Check 
8400: 74 68 61 74 20 74 68 65 20 64 65 6d 6f 76 66 73  that the demovfs
8410: 20 28 63 6f 64 65 20 69 6e 20 74 65 73 74 5f 64   (code in test_d
8420: 65 6d 6f 76 66 73 2e 63 29 20 6d 6f 72 65 20 6f  emovfs.c) more o
8430: 72 20 6c 65 73 73 20 77 6f 72 6b 73 2e 0a 20 20  r less works..  
8440: 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a  } -initialize {.
8450: 20 20 20 20 72 65 67 69 73 74 65 72 5f 64 65 6d      register_dem
8460: 6f 76 66 73 0a 20 20 7d 20 2d 73 68 75 74 64 6f  ovfs.  } -shutdo
8470: 77 6e 20 7b 0a 20 20 20 20 75 6e 72 65 67 69 73  wn {.    unregis
8480: 74 65 72 5f 64 65 6d 6f 76 66 73 0a 20 20 7d 20  ter_demovfs.  } 
8490: 2d 66 69 6c 65 73 20 7b 0a 20 20 20 20 69 6e 73  -files {.    ins
84a0: 65 72 74 2e 74 65 73 74 20 20 20 69 6e 73 65 72  ert.test   inser
84b0: 74 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 33  t2.test  insert3
84c0: 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74  .test rollback.t
84d0: 65 73 74 20 0a 20 20 20 20 73 65 6c 65 63 74 31  est .    select1
84e0: 2e 74 65 73 74 20 20 73 65 6c 65 63 74 32 2e 74  .test  select2.t
84f0: 65 73 74 20 20 73 65 6c 65 63 74 33 2e 74 65 73  est  select3.tes
8500: 74 0a 20 20 7d 0a 7d 0a 0a 74 65 73 74 5f 73 75  t.  }.}..test_su
8510: 69 74 65 20 22 77 61 6c 22 20 2d 64 65 73 63 72  ite "wal" -descr
8520: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
8530: 65 73 74 73 20 77 69 74 68 20 6a 6f 75 72 6e 61  ests with journa
8540: 6c 5f 6d 6f 64 65 3d 57 41 4c 0a 7d 20 2d 69 6e  l_mode=WAL.} -in
8550: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 73 65 74  itialize {.  set
8560: 20 3a 3a 47 28 73 61 76 65 70 6f 69 6e 74 36 5f   ::G(savepoint6_
8570: 69 74 65 72 61 74 69 6f 6e 73 29 20 31 30 30 0a  iterations) 100.
8580: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
8590: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69  unset -nocomplai
85a0: 6e 20 3a 3a 47 28 73 61 76 65 70 6f 69 6e 74 36  n ::G(savepoint6
85b0: 5f 69 74 65 72 61 74 69 6f 6e 73 29 0a 7d 20 2d  _iterations).} -
85c0: 66 69 6c 65 73 20 7b 0a 20 20 73 61 76 65 70 6f  files {.  savepo
85d0: 69 6e 74 2e 74 65 73 74 20 20 20 20 20 73 61 76  int.test     sav
85e0: 65 70 6f 69 6e 74 32 2e 74 65 73 74 20 20 20 20  epoint2.test    
85f0: 20 73 61 76 65 70 6f 69 6e 74 36 2e 74 65 73 74   savepoint6.test
8600: 0a 20 20 74 72 61 6e 73 2e 74 65 73 74 20 20 20  .  trans.test   
8610: 20 20 20 20 20 20 61 76 74 72 61 6e 73 2e 74 65        avtrans.te
8620: 73 74 0a 0a 20 20 66 74 73 33 61 61 2e 74 65 73  st..  fts3aa.tes
8630: 74 20 20 66 74 73 33 61 62 2e 74 65 73 74 20 20  t  fts3ab.test  
8640: 66 74 73 33 61 63 2e 74 65 73 74 20 20 66 74 73  fts3ac.test  fts
8650: 33 61 64 2e 74 65 73 74 0a 20 20 66 74 73 33 61  3ad.test.  fts3a
8660: 65 2e 74 65 73 74 20 20 66 74 73 33 61 66 2e 74  e.test  fts3af.t
8670: 65 73 74 20 20 66 74 73 33 61 67 2e 74 65 73 74  est  fts3ag.test
8680: 20 20 66 74 73 33 61 68 2e 74 65 73 74 0a 20 20    fts3ah.test.  
8690: 66 74 73 33 61 69 2e 74 65 73 74 20 20 66 74 73  fts3ai.test  fts
86a0: 33 61 6a 2e 74 65 73 74 20 20 66 74 73 33 61 6b  3aj.test  fts3ak
86b0: 2e 74 65 73 74 20 20 66 74 73 33 61 6c 2e 74 65  .test  fts3al.te
86c0: 73 74 0a 20 20 66 74 73 33 61 6d 2e 74 65 73 74  st.  fts3am.test
86d0: 20 20 66 74 73 33 61 6e 2e 74 65 73 74 20 20 66    fts3an.test  f
86e0: 74 73 33 61 6f 2e 74 65 73 74 20 20 66 74 73 33  ts3ao.test  fts3
86f0: 62 2e 74 65 73 74 0a 20 20 66 74 73 33 63 2e 74  b.test.  fts3c.t
8700: 65 73 74 20 20 20 66 74 73 33 64 2e 74 65 73 74  est   fts3d.test
8710: 20 20 20 66 74 73 33 65 2e 74 65 73 74 20 20 20     fts3e.test   
8720: 66 74 73 33 71 75 65 72 79 2e 74 65 73 74 20 0a  fts3query.test .
8730: 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 72  }..test_suite "r
8740: 74 72 65 65 22 20 2d 64 65 73 63 72 69 70 74 69  tree" -descripti
8750: 6f 6e 20 7b 0a 20 20 41 6c 6c 20 52 2d 74 72 65  on {.  All R-tre
8760: 65 20 72 65 6c 61 74 65 64 20 74 65 73 74 73 2e  e related tests.
8770: 20 50 72 6f 76 69 64 65 73 20 63 6f 76 65 72 61   Provides covera
8780: 67 65 20 6f 66 20 73 6f 75 72 63 65 20 66 69 6c  ge of source fil
8790: 65 20 72 74 72 65 65 2e 63 2e 0a 7d 20 2d 66 69  e rtree.c..} -fi
87a0: 6c 65 73 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d  les [glob -nocom
87b0: 70 6c 61 69 6e 20 24 3a 3a 74 65 73 74 64 69 72  plain $::testdir
87c0: 2f 2e 2e 2f 65 78 74 2f 72 74 72 65 65 2f 2a 2e  /../ext/rtree/*.
87d0: 74 65 73 74 5d 0a 0a 74 65 73 74 5f 73 75 69 74  test]..test_suit
87e0: 65 20 22 73 65 73 73 69 6f 6e 22 20 2d 64 65 73  e "session" -des
87f0: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 41 6c 6c  cription {.  All
8800: 20 73 65 73 73 69 6f 6e 20 6d 6f 64 75 6c 65 20   session module 
8810: 72 65 6c 61 74 65 64 20 74 65 73 74 73 2e 20 0a  related tests. .
8820: 7d 20 2d 66 69 6c 65 73 20 5b 67 6c 6f 62 20 2d  } -files [glob -
8830: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a 74 65  nocomplain $::te
8840: 73 74 64 69 72 2f 2e 2e 2f 65 78 74 2f 73 65 73  stdir/../ext/ses
8850: 73 69 6f 6e 2f 2a 2e 74 65 73 74 5d 0a 0a 74 65  sion/*.test]..te
8860: 73 74 5f 73 75 69 74 65 20 22 73 65 73 73 69 6f  st_suite "sessio
8870: 6e 5f 65 65 63 22 20 2d 64 65 73 63 72 69 70 74  n_eec" -descript
8880: 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20 73 65 73 73  ion {.  All sess
8890: 69 6f 6e 20 6d 6f 64 75 6c 65 20 72 65 6c 61 74  ion module relat
88a0: 65 64 20 74 65 73 74 73 20 77 69 74 68 20 73 71  ed tests with sq
88b0: 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72  lite3_extended_r
88c0: 65 73 75 6c 74 5f 63 6f 64 65 73 28 29 20 73 65  esult_codes() se
88d0: 74 2e 20 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20  t. .} -files [. 
88e0: 20 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69   glob -nocomplai
88f0: 6e 20 24 3a 3a 74 65 73 74 64 69 72 2f 2e 2e 2f  n $::testdir/../
8900: 65 78 74 2f 73 65 73 73 69 6f 6e 2f 2a 2e 74 65  ext/session/*.te
8910: 73 74 0a 5d 20 2d 64 62 63 6f 6e 66 69 67 20 7b  st.] -dbconfig {
8920: 0a 20 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  .  sqlite3_exten
8930: 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
8940: 20 24 3a 3a 64 62 68 61 6e 64 6c 65 20 31 0a 7d   $::dbhandle 1.}
8950: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 73 65  ..test_suite "se
8960: 73 73 69 6f 6e 5f 73 74 72 6d 22 20 2d 64 65 73  ssion_strm" -des
8970: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 41 6c 6c  cription {.  All
8980: 20 73 65 73 73 69 6f 6e 20 6d 6f 64 75 6c 65 20   session module 
8990: 72 65 6c 61 74 65 64 20 74 65 73 74 73 20 75 73  related tests us
89a0: 69 6e 67 20 74 68 65 20 73 74 72 65 61 6d 69 6e  ing the streamin
89b0: 67 20 41 50 49 73 2e 0a 7d 20 2d 66 69 6c 65 73  g APIs..} -files
89c0: 20 5b 0a 20 20 67 6c 6f 62 20 2d 6e 6f 63 6f 6d   [.  glob -nocom
89d0: 70 6c 61 69 6e 20 24 3a 3a 74 65 73 74 64 69 72  plain $::testdir
89e0: 2f 2e 2e 2f 65 78 74 2f 73 65 73 73 69 6f 6e 2f  /../ext/session/
89f0: 2a 2e 74 65 73 74 0a 5d 20 2d 64 62 63 6f 6e 66  *.test.] -dbconf
8a00: 69 67 20 7b 0a 20 20 73 65 74 20 3a 3a 73 71 6c  ig {.  set ::sql
8a10: 69 74 65 33 73 65 73 73 69 6f 6e 5f 73 74 72 65  ite3session_stre
8a20: 61 6d 73 20 31 0a 7d 0a 0a 74 65 73 74 5f 73 75  ams 1.}..test_su
8a30: 69 74 65 20 22 72 62 75 22 20 2d 64 65 73 63 72  ite "rbu" -descr
8a40: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 42 55 20 74  iption {.  RBU t
8a50: 65 73 74 73 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b  ests..} -files [
8a60: 0a 20 20 74 65 73 74 5f 73 65 74 20 5b 67 6c 6f  .  test_set [glo
8a70: 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a  b -nocomplain $:
8a80: 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74 2f  :testdir/../ext/
8a90: 72 62 75 2f 2a 2e 74 65 73 74 5d 20 2d 65 78 63  rbu/*.test] -exc
8aa0: 6c 75 64 65 20 72 62 75 2e 74 65 73 74 0a 5d 0a  lude rbu.test.].
8ab0: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 5f  .test_suite "no_
8ac0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22 20 2d 64  optimization" -d
8ad0: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
8ae0: 75 6e 20 74 65 73 74 20 73 63 72 69 70 74 73 20  un test scripts 
8af0: 77 69 74 68 20 6f 70 74 69 6d 69 7a 61 74 69 6f  with optimizatio
8b00: 6e 73 20 64 69 73 61 62 6c 65 64 20 75 73 69 6e  ns disabled usin
8b10: 67 20 74 68 65 0a 20 20 73 71 6c 69 74 65 33 5f  g the.  sqlite3_
8b20: 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28 53 51 4c  test_control(SQL
8b30: 49 54 45 5f 54 45 53 54 43 54 52 4c 5f 4f 50 54  ITE_TESTCTRL_OPT
8b40: 49 4d 49 5a 41 54 49 4f 4e 53 29 20 69 6e 74 65  IMIZATIONS) inte
8b50: 72 66 61 63 65 2e 0a 7d 20 2d 66 69 6c 65 73 20  rface..} -files 
8b60: 7b 0a 20 20 77 68 65 72 65 2e 74 65 73 74 20 77  {.  where.test w
8b70: 68 65 72 65 32 2e 74 65 73 74 20 77 68 65 72 65  here2.test where
8b80: 33 2e 74 65 73 74 20 77 68 65 72 65 34 2e 74 65  3.test where4.te
8b90: 73 74 20 77 68 65 72 65 35 2e 74 65 73 74 0a 20  st where5.test. 
8ba0: 20 77 68 65 72 65 36 2e 74 65 73 74 20 77 68 65   where6.test whe
8bb0: 72 65 37 2e 74 65 73 74 20 77 68 65 72 65 38 2e  re7.test where8.
8bc0: 74 65 73 74 20 77 68 65 72 65 39 2e 74 65 73 74  test where9.test
8bd0: 0a 20 20 77 68 65 72 65 41 2e 74 65 73 74 20 77  .  whereA.test w
8be0: 68 65 72 65 42 2e 74 65 73 74 20 77 68 65 72 65  hereB.test where
8bf0: 6c 69 6d 69 74 2e 74 65 73 74 0a 20 20 73 65 6c  limit.test.  sel
8c00: 65 63 74 31 2e 74 65 73 74 20 73 65 6c 65 63 74  ect1.test select
8c10: 32 2e 74 65 73 74 20 73 65 6c 65 63 74 33 2e 74  2.test select3.t
8c20: 65 73 74 20 73 65 6c 65 63 74 34 2e 74 65 73 74  est select4.test
8c30: 20 73 65 6c 65 63 74 35 2e 74 65 73 74 0a 20 20   select5.test.  
8c40: 73 65 6c 65 63 74 37 2e 74 65 73 74 20 73 65 6c  select7.test sel
8c50: 65 63 74 38 2e 74 65 73 74 20 73 65 6c 65 63 74  ect8.test select
8c60: 41 2e 74 65 73 74 20 73 65 6c 65 63 74 43 2e 74  A.test selectC.t
8c70: 65 73 74 0a 7d 20 2d 64 62 63 6f 6e 66 69 67 20  est.} -dbconfig 
8c80: 7b 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  {.  optimization
8c90: 5f 63 6f 6e 74 72 6f 6c 20 24 3a 3a 64 62 68 61  _control $::dbha
8ca0: 6e 64 6c 65 20 61 6c 6c 20 30 0a 7d 0a 0a 74 65  ndle all 0.}..te
8cb0: 73 74 5f 73 75 69 74 65 20 22 70 72 65 70 61 72  st_suite "prepar
8cc0: 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  e" -description 
8cd0: 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20 77 69  {.  Run tests wi
8ce0: 74 68 20 74 68 65 20 64 62 20 63 6f 6e 6e 65 63  th the db connec
8cf0: 74 69 6f 6e 20 75 73 69 6e 67 20 73 71 6c 69 74  tion using sqlit
8d00: 65 33 5f 70 72 65 70 61 72 65 28 29 20 69 6e 73  e3_prepare() ins
8d10: 74 65 61 64 20 6f 66 20 5f 76 32 28 29 2e 0a 7d  tead of _v2()..}
8d20: 20 2d 64 62 63 6f 6e 66 69 67 20 7b 0a 20 20 24   -dbconfig {.  $
8d30: 3a 3a 64 62 68 61 6e 64 6c 65 20 76 65 72 73 69  ::dbhandle versi
8d40: 6f 6e 20 2d 75 73 65 2d 6c 65 67 61 63 79 2d 70  on -use-legacy-p
8d50: 72 65 70 61 72 65 20 31 0a 20 20 23 24 3a 3a 64  repare 1.  #$::d
8d60: 62 68 61 6e 64 6c 65 20 63 61 63 68 65 20 73 69  bhandle cache si
8d70: 7a 65 20 30 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a  ze 0.} -files [.
8d80: 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71    test_set $allq
8d90: 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75  uicktests -exclu
8da0: 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65  de *malloc* *ioe
8db0: 72 72 2a 20 2a 66 61 75 6c 74 2a 20 5c 0a 20 20  rr* *fault* \.  
8dc0: 20 20 20 20 73 74 6d 74 76 74 61 62 31 2e 74 65      stmtvtab1.te
8dd0: 73 74 20 69 6e 64 65 78 39 2e 74 65 73 74 0a 5d  st index9.test.]
8de0: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 73 6f  ..test_suite "so
8df0: 72 74 65 72 72 65 66 22 20 2d 70 72 65 66 69 78  rterref" -prefix
8e00: 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e   "" -description
8e10: 20 7b 0a 20 20 52 75 6e 20 74 68 65 20 22 76 65   {.  Run the "ve
8e20: 72 79 71 75 69 63 6b 22 20 74 65 73 74 20 73 75  ryquick" test su
8e30: 69 74 65 20 77 69 74 68 20 53 51 4c 49 54 45 5f  ite with SQLITE_
8e40: 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52 52 45 46  CONFIG_SORTERREF
8e50: 5f 53 49 5a 45 20 73 65 74 0a 20 20 74 6f 20 30  _SIZE set.  to 0
8e60: 20 73 6f 20 74 68 61 74 20 73 6f 72 74 65 72 2d   so that sorter-
8e70: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 75  references are u
8e80: 73 65 64 20 77 68 65 6e 65 76 65 72 20 70 6f 73  sed whenever pos
8e90: 73 69 62 6c 65 2e 0a 7d 20 2d 66 69 6c 65 73 20  sible..} -files 
8ea0: 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c  [.  test_set $al
8eb0: 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63  lquicktests -exc
8ec0: 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69  lude *malloc* *i
8ed0: 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 2a 62  oerr* *fault* *b
8ee0: 69 67 66 69 6c 65 2a 20 2a 5f 65 72 72 2a 20 5c  igfile* *_err* \
8ef0: 0a 20 20 20 20 20 20 2a 66 74 73 35 63 6f 72 72  .      *fts5corr
8f00: 75 70 74 2a 20 2a 66 74 73 35 62 69 67 2a 20 2a  upt* *fts5big* *
8f10: 66 74 73 35 61 6a 2a 0a 5d 20 2d 69 6e 69 74 69  fts5aj*.] -initi
8f20: 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20  alize {.  catch 
8f30: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
8f40: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
8f50: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 73  sqlite3_config_s
8f60: 6f 72 74 65 72 72 65 66 20 30 0a 20 20 73 71 6c  orterref 0.  sql
8f70: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
8f80: 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65    autoinstall_te
8f90: 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d  st_functions.} -
8fa0: 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74  shutdown {.  cat
8fb0: 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20  ch {db close}.  
8fc0: 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
8fd0: 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  .  sqlite3_confi
8fe0: 67 5f 73 6f 72 74 65 72 72 65 66 20 2d 31 0a 20  g_sorterref -1. 
8ff0: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
9000: 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c  ize.  autoinstal
9010: 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73  l_test_functions
9020: 0a 7d 0a 0a 23 20 45 6e 64 20 6f 66 20 74 65 73  .}..# End of tes
9030: 74 73 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  ts.#############
9040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9050: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9060: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9080: 0a 0a 23 20 72 75 6e 5f 74 65 73 74 73 20 4e 41  ..# run_tests NA
9090: 4d 45 20 4f 50 54 49 4f 4e 53 0a 23 0a 23 20 77  ME OPTIONS.#.# w
90a0: 68 65 72 65 20 61 76 61 69 6c 61 62 6c 65 20 6f  here available o
90b0: 70 74 69 6f 6e 73 20 61 72 65 3a 20 20 0a 23 0a  ptions are:  .#.
90c0: 23 20 20 20 20 20 20 20 2d 64 65 73 63 72 69 70  #       -descrip
90d0: 74 69 6f 6e 20 54 49 54 4c 45 0a 23 20 20 20 20  tion TITLE.#    
90e0: 20 20 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 20     -initialize  
90f0: 53 43 52 49 50 54 0a 23 20 20 20 20 20 20 20 2d  SCRIPT.#       -
9100: 73 68 75 74 64 6f 77 6e 20 20 20 20 53 43 52 49  shutdown    SCRI
9110: 50 54 0a 23 20 20 20 20 20 20 20 2d 70 72 65 73  PT.#       -pres
9120: 71 6c 20 20 20 20 20 20 53 51 4c 0a 23 20 20 20  ql      SQL.#   
9130: 20 20 20 20 2d 66 69 6c 65 73 20 20 20 20 20 20      -files      
9140: 20 4c 49 53 54 2d 4f 46 2d 46 49 4c 45 53 0a 23   LIST-OF-FILES.#
9150: 20 20 20 20 20 20 20 2d 70 72 65 66 69 78 20 20         -prefix  
9160: 20 20 20 20 4e 41 4d 45 0a 23 0a 70 72 6f 63 20      NAME.#.proc 
9170: 72 75 6e 5f 74 65 73 74 73 20 7b 6e 61 6d 65 20  run_tests {name 
9180: 61 72 67 73 7d 20 7b 0a 20 20 61 72 72 61 79 20  args} {.  array 
9190: 73 65 74 20 6f 70 74 69 6f 6e 73 20 24 61 72 67  set options $arg
91a0: 73 0a 0a 20 20 73 65 74 20 3a 3a 47 28 70 65 72  s..  set ::G(per
91b0: 6d 3a 6e 61 6d 65 29 20 20 20 20 20 20 20 20 20  m:name)         
91c0: 24 6e 61 6d 65 0a 20 20 73 65 74 20 3a 3a 47 28  $name.  set ::G(
91d0: 70 65 72 6d 3a 70 72 65 66 69 78 29 20 20 20 20  perm:prefix)    
91e0: 20 20 20 24 6f 70 74 69 6f 6e 73 28 2d 70 72 65     $options(-pre
91f0: 66 69 78 29 0a 20 20 73 65 74 20 3a 3a 47 28 70  fix).  set ::G(p
9200: 65 72 6d 3a 70 72 65 73 71 6c 29 20 20 20 20 20  erm:presql)     
9210: 20 20 24 6f 70 74 69 6f 6e 73 28 2d 70 72 65 73    $options(-pres
9220: 71 6c 29 0a 20 20 73 65 74 20 3a 3a 47 28 69 73  ql).  set ::G(is
9230: 71 75 69 63 6b 29 20 20 20 20 20 20 20 20 20 20  quick)          
9240: 20 31 0a 20 20 73 65 74 20 3a 3a 47 28 70 65 72   1.  set ::G(per
9250: 6d 3a 64 62 63 6f 6e 66 69 67 29 20 20 20 20 20  m:dbconfig)     
9260: 24 6f 70 74 69 6f 6e 73 28 2d 64 62 63 6f 6e 66  $options(-dbconf
9270: 69 67 29 0a 0a 20 20 66 6f 72 65 61 63 68 20 66  ig)..  foreach f
9280: 69 6c 65 20 5b 6c 73 6f 72 74 20 24 6f 70 74 69  ile [lsort $opti
9290: 6f 6e 73 28 2d 66 69 6c 65 73 29 5d 20 7b 0a 20  ons(-files)] {. 
92a0: 20 20 20 75 70 6c 65 76 65 6c 20 24 6f 70 74 69     uplevel $opti
92b0: 6f 6e 73 28 2d 69 6e 69 74 69 61 6c 69 7a 65 29  ons(-initialize)
92c0: 0a 20 20 20 20 69 66 20 7b 5b 66 69 6c 65 20 74  .    if {[file t
92d0: 61 69 6c 20 24 66 69 6c 65 5d 20 3d 3d 20 24 66  ail $file] == $f
92e0: 69 6c 65 7d 20 7b 20 73 65 74 20 66 69 6c 65 20  ile} { set file 
92f0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 3a 3a 74 65  [file join $::te
9300: 73 74 64 69 72 20 24 66 69 6c 65 5d 20 7d 0a 20  stdir $file] }. 
9310: 20 20 20 73 6c 61 76 65 5f 74 65 73 74 5f 66 69     slave_test_fi
9320: 6c 65 20 24 66 69 6c 65 0a 20 20 20 20 75 70 6c  le $file.    upl
9330: 65 76 65 6c 20 24 6f 70 74 69 6f 6e 73 28 2d 73  evel $options(-s
9340: 68 75 74 64 6f 77 6e 29 0a 20 20 7d 0a 0a 20 20  hutdown).  }..  
9350: 75 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 6e  unset ::G(perm:n
9360: 61 6d 65 29 0a 20 20 75 6e 73 65 74 20 3a 3a 47  ame).  unset ::G
9370: 28 70 65 72 6d 3a 70 72 65 66 69 78 29 0a 20 20  (perm:prefix).  
9380: 75 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 70  unset ::G(perm:p
9390: 72 65 73 71 6c 29 0a 20 20 75 6e 73 65 74 20 3a  resql).  unset :
93a0: 3a 47 28 70 65 72 6d 3a 64 62 63 6f 6e 66 69 67  :G(perm:dbconfig
93b0: 29 0a 7d 0a 0a 70 72 6f 63 20 72 75 6e 5f 74 65  ).}..proc run_te
93c0: 73 74 5f 73 75 69 74 65 20 7b 6e 61 6d 65 7d 20  st_suite {name} 
93d0: 7b 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78  {.  if {[info ex
93e0: 69 73 74 73 20 3a 3a 74 65 73 74 73 70 65 63 28  ists ::testspec(
93f0: 24 6e 61 6d 65 29 5d 3d 3d 30 7d 20 7b 0a 20 20  $name)]==0} {.  
9400: 20 20 65 72 72 6f 72 20 22 4e 6f 20 73 75 63 68    error "No such
9410: 20 74 65 73 74 20 73 75 69 74 65 3a 20 24 6e 61   test suite: $na
9420: 6d 65 22 0a 20 20 7d 0a 20 20 75 70 6c 65 76 65  me".  }.  upleve
9430: 6c 20 72 75 6e 5f 74 65 73 74 73 20 24 6e 61 6d  l run_tests $nam
9440: 65 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24 6e  e $::testspec($n
9450: 61 6d 65 29 0a 7d 0a 0a 70 72 6f 63 20 68 65 6c  ame).}..proc hel
9460: 70 20 7b 7d 20 7b 0a 20 20 70 75 74 73 20 22 55  p {} {.  puts "U
9470: 73 61 67 65 3a 20 24 3a 3a 61 72 67 76 30 20 54  sage: $::argv0 T
9480: 45 53 54 53 55 49 54 45 20 3f 54 45 53 54 46 49  ESTSUITE ?TESTFI
9490: 4c 45 3f 22 0a 20 20 70 75 74 73 20 22 22 0a 20  LE?".  puts "". 
94a0: 20 70 75 74 73 20 22 41 76 61 69 6c 61 62 6c 65   puts "Available
94b0: 20 74 65 73 74 2d 73 75 69 74 65 73 20 61 72 65   test-suites are
94c0: 3a 22 0a 20 20 66 6f 72 65 61 63 68 20 6b 20 24  :".  foreach k $
94d0: 3a 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74 20  ::testsuitelist 
94e0: 7b 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20  {.    if {[info 
94f0: 65 78 69 73 74 73 20 3a 3a 74 65 73 74 73 70 65  exists ::testspe
9500: 63 28 24 6b 29 5d 3d 3d 30 7d 20 7b 0a 20 20 20  c($k)]==0} {.   
9510: 20 20 20 70 75 74 73 20 22 20 20 20 20 20 20 20     puts "       
9520: 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    --------------
9530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 0a 20 20 20 20  ----------".    
9550: 20 20 70 75 74 73 20 22 22 0a 20 20 20 20 7d 20    puts "".    } 
9560: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 61 72 72  else {.      arr
9570: 61 79 20 73 65 74 20 6f 20 24 3a 3a 74 65 73 74  ay set o $::test
9580: 73 70 65 63 28 24 6b 29 0a 20 20 20 20 20 20 70  spec($k).      p
9590: 75 74 73 20 22 54 65 73 74 20 73 75 69 74 65 3a  uts "Test suite:
95a0: 20 5c 22 24 6b 5c 22 22 0a 20 20 20 20 20 20 73   \"$k\"".      s
95b0: 65 74 20 64 20 5b 73 74 72 69 6e 67 20 74 72 69  et d [string tri
95c0: 6d 20 24 6f 28 2d 64 65 73 63 72 69 70 74 69 6f  m $o(-descriptio
95d0: 6e 29 5d 0a 20 20 20 20 20 20 73 65 74 20 64 20  n)].      set d 
95e0: 5b 72 65 67 73 75 62 20 7b 5c 6e 20 2a 7d 20 24  [regsub {\n *} $
95f0: 64 20 22 5c 6e 20 20 22 5d 0a 20 20 20 20 20 20  d "\n  "].      
9600: 70 75 74 73 20 22 20 20 24 64 22 0a 20 20 20 20  puts "  $d".    
9610: 20 20 70 75 74 73 20 22 22 0a 20 20 20 20 7d 0a    puts "".    }.
9620: 20 20 7d 0a 20 20 65 78 69 74 20 2d 31 0a 7d 0a    }.  exit -1.}.
9630: 0a 69 66 20 7b 5b 66 69 6c 65 20 74 61 69 6c 20  .if {[file tail 
9640: 24 61 72 67 76 30 5d 20 3d 3d 20 22 70 65 72 6d  $argv0] == "perm
9650: 75 74 61 74 69 6f 6e 73 2e 74 65 73 74 22 7d 20  utations.test"} 
9660: 7b 0a 20 20 70 72 6f 63 20 6d 61 69 6e 20 7b 61  {.  proc main {a
9670: 72 67 76 7d 20 7b 0a 20 20 20 20 69 66 20 7b 5b  rgv} {.    if {[
9680: 6c 6c 65 6e 67 74 68 20 24 61 72 67 76 5d 3d 3d  llength $argv]==
9690: 30 7d 20 7b 0a 20 20 20 20 20 20 68 65 6c 70 0a  0} {.      help.
96a0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20      } else {.   
96b0: 20 20 20 73 65 74 20 73 75 69 74 65 20 5b 66 69     set suite [fi
96c0: 6c 65 20 74 61 69 6c 20 5b 6c 69 6e 64 65 78 20  le tail [lindex 
96d0: 24 61 72 67 76 20 30 5d 5d 0a 20 20 20 20 20 20  $argv 0]].      
96e0: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
96f0: 20 3a 3a 74 65 73 74 73 70 65 63 28 24 73 75 69   ::testspec($sui
9700: 74 65 29 5d 3d 3d 30 7d 20 68 65 6c 70 0a 20 20  te)]==0} help.  
9710: 20 20 20 20 73 65 74 20 65 78 74 72 61 20 22 22      set extra ""
9720: 0a 20 20 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e  .      if {[llen
9730: 67 74 68 20 24 61 72 67 76 5d 3e 31 7d 20 7b 20  gth $argv]>1} { 
9740: 73 65 74 20 65 78 74 72 61 20 5b 6c 69 73 74 20  set extra [list 
9750: 2d 66 69 6c 65 73 20 5b 6c 72 61 6e 67 65 20 24  -files [lrange $
9760: 61 72 67 76 20 31 20 65 6e 64 5d 5d 20 7d 0a 20  argv 1 end]] }. 
9770: 20 20 20 20 20 65 76 61 6c 20 72 75 6e 5f 74 65       eval run_te
9780: 73 74 73 20 24 73 75 69 74 65 20 24 3a 3a 74 65  sts $suite $::te
9790: 73 74 73 70 65 63 28 24 73 75 69 74 65 29 20 24  stspec($suite) $
97a0: 65 78 74 72 61 0a 20 20 20 20 7d 0a 20 20 7d 0a  extra.    }.  }.
97b0: 20 20 6d 61 69 6e 20 24 61 72 67 76 0a 20 20 66    main $argv.  f
97c0: 69 6e 69 73 68 5f 74 65 73 74 0a 7d 0a           inish_test.}.