/ Hex Artifact Content
Login

Artifact 10793f1de89a226fa22dde9ba9398de22571fee1bfb53a935a11be4aa014704f:


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 6c 73 6d  .test_suite "lsm
2510: 31 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64  1" -prefix "" -d
2520: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 41  escription {.  A
2530: 6c 6c 20 4c 53 4d 31 20 74 65 73 74 73 2e 0a 7d  ll LSM1 tests..}
2540: 20 2d 66 69 6c 65 73 20 5b 67 6c 6f 62 20 2d 6e   -files [glob -n
2550: 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a 74 65 73  ocomplain $::tes
2560: 74 64 69 72 2f 2e 2e 2f 65 78 74 2f 6c 73 6d 31  tdir/../ext/lsm1
2570: 2f 74 65 73 74 2f 2a 2e 74 65 73 74 5d 0a 0a 74  /test/*.test]..t
2580: 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 66 61 75  est_suite "nofau
2590: 6c 74 73 69 6d 22 20 2d 70 72 65 66 69 78 20 22  ltsim" -prefix "
25a0: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
25b0: 0a 20 20 22 56 65 72 79 22 20 71 75 69 63 6b 20  .  "Very" quick 
25c0: 74 65 73 74 20 73 75 69 74 65 2e 20 52 75 6e 73  test suite. Runs
25d0: 20 69 6e 20 6c 65 73 73 20 74 68 61 6e 20 35 20   in less than 5 
25e0: 6d 69 6e 75 74 65 73 20 6f 6e 20 61 20 77 6f 72  minutes on a wor
25f0: 6b 73 74 61 74 69 6f 6e 2e 20 0a 20 20 54 68 69  kstation. .  Thi
2600: 73 20 74 65 73 74 20 73 75 69 74 65 20 69 73 20  s test suite is 
2610: 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20  the same as the 
2620: 22 71 75 69 63 6b 22 20 74 65 73 74 73 2c 20 65  "quick" tests, e
2630: 78 63 65 70 74 20 74 68 61 74 20 73 6f 6d 65 20  xcept that some 
2640: 66 69 6c 65 73 0a 20 20 74 68 61 74 20 74 65 73  files.  that tes
2650: 74 20 6d 61 6c 6c 6f 63 20 61 6e 64 20 49 4f 20  t malloc and IO 
2660: 65 72 72 6f 72 73 20 61 72 65 20 6f 6d 69 74 74  errors are omitt
2670: 65 64 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20  ed..} -files [. 
2680: 20 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75   test_set $allqu
2690: 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64  icktests -exclud
26a0: 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72  e *malloc* *ioer
26b0: 72 2a 20 2a 66 61 75 6c 74 2a 20 2a 5f 65 72 72  r* *fault* *_err
26c0: 2a 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20  *.] -initialize 
26d0: 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c  {.  catch {db cl
26e0: 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73  ose}.  sqlite3_s
26f0: 68 75 74 64 6f 77 6e 0a 20 20 69 6e 73 74 61 6c  hutdown.  instal
2700: 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69  l_malloc_faultsi
2710: 6d 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e  m 0.  sqlite3_in
2720: 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69  itialize.  autoi
2730: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
2740: 74 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f 77  tions.} -shutdow
2750: 6e 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63  n {.  unset -noc
2760: 6f 6d 70 6c 61 69 6e 20 3a 3a 47 28 76 61 6c 67  omplain ::G(valg
2770: 72 69 6e 64 29 0a 7d 0a 0a 74 65 73 74 5f 73 75  rind).}..test_su
2780: 69 74 65 20 22 71 75 65 72 79 70 6c 61 6e 6e 65  ite "queryplanne
2790: 72 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64  r" -prefix "" -d
27a0: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54  escription {.  T
27b0: 65 73 74 73 20 6f 66 20 74 68 65 20 71 75 65 72  ests of the quer
27c0: 79 20 70 6c 61 6e 6e 65 72 20 61 6e 64 20 71 75  y planner and qu
27d0: 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 0a 7d 20  ery optimizer.} 
27e0: 2d 66 69 6c 65 73 20 7b 0a 20 20 61 6c 74 65 72  -files {.  alter
27f0: 32 2e 74 65 73 74 20 61 6c 74 65 72 33 2e 74 65  2.test alter3.te
2800: 73 74 20 61 6c 74 65 72 34 2e 74 65 73 74 20 61  st alter4.test a
2810: 6c 74 65 72 2e 74 65 73 74 20 61 6e 61 6c 79 7a  lter.test analyz
2820: 65 33 2e 74 65 73 74 0a 20 20 61 6e 61 6c 79 7a  e3.test.  analyz
2830: 65 34 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 35  e4.test analyze5
2840: 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 36 2e 74  .test analyze6.t
2850: 65 73 74 20 61 6e 61 6c 79 7a 65 37 2e 74 65 73  est analyze7.tes
2860: 74 20 61 6e 61 6c 79 7a 65 38 2e 74 65 73 74 0a  t analyze8.test.
2870: 20 20 61 6e 61 6c 79 7a 65 2e 74 65 73 74 20 61    analyze.test a
2880: 74 74 61 63 68 32 2e 74 65 73 74 20 61 74 74 61  ttach2.test atta
2890: 63 68 33 2e 74 65 73 74 20 61 74 74 61 63 68 34  ch3.test attach4
28a0: 2e 74 65 73 74 0a 20 20 61 74 74 61 63 68 2e 74  .test.  attach.t
28b0: 65 73 74 20 61 75 74 6f 69 6e 63 2e 74 65 73 74  est autoinc.test
28c0: 20 61 75 74 6f 69 6e 64 65 78 31 2e 74 65 73 74   autoindex1.test
28d0: 20 62 65 74 77 65 65 6e 2e 74 65 73 74 20 63 61   between.test ca
28e0: 73 74 2e 74 65 73 74 0a 20 20 63 68 65 63 6b 2e  st.test.  check.
28f0: 74 65 73 74 20 63 6c 6f 73 75 72 65 30 31 2e 74  test closure01.t
2900: 65 73 74 20 63 6f 61 6c 65 73 63 65 2e 74 65 73  est coalesce.tes
2910: 74 20 63 6f 6c 6c 61 74 65 31 2e 74 65 73 74 20  t collate1.test 
2920: 63 6f 6c 6c 61 74 65 32 2e 74 65 73 74 0a 20 20  collate2.test.  
2930: 63 6f 6c 6c 61 74 65 33 2e 74 65 73 74 20 63 6f  collate3.test co
2940: 6c 6c 61 74 65 34 2e 74 65 73 74 20 63 6f 6c 6c  llate4.test coll
2950: 61 74 65 35 2e 74 65 73 74 20 63 6f 6c 6c 61 74  ate5.test collat
2960: 65 36 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 37  e6.test collate7
2970: 2e 74 65 73 74 0a 20 20 63 6f 6c 6c 61 74 65 38  .test.  collate8
2980: 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 39 2e 74  .test collate9.t
2990: 65 73 74 20 63 6f 6c 6c 61 74 65 41 2e 74 65 73  est collateA.tes
29a0: 74 20 63 6f 6c 6d 65 74 61 2e 74 65 73 74 20 63  t colmeta.test c
29b0: 6f 6c 6e 61 6d 65 2e 74 65 73 74 0a 20 20 63 6f  olname.test.  co
29c0: 6e 66 6c 69 63 74 2e 74 65 73 74 20 63 6f 75 6e  nflict.test coun
29d0: 74 2e 74 65 73 74 20 63 6f 76 65 72 69 64 78 73  t.test coveridxs
29e0: 63 61 6e 2e 74 65 73 74 20 63 72 65 61 74 65 74  can.test createt
29f0: 61 62 2e 74 65 73 74 20 63 73 65 2e 74 65 73 74  ab.test cse.test
2a00: 0a 20 20 64 61 74 65 2e 74 65 73 74 20 64 62 73  .  date.test dbs
2a10: 74 61 74 75 73 32 2e 74 65 73 74 20 64 62 73 74  tatus2.test dbst
2a20: 61 74 75 73 2e 74 65 73 74 20 64 65 66 61 75 6c  atus.test defaul
2a30: 74 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74  t.test delete2.t
2a40: 65 73 74 0a 20 20 64 65 6c 65 74 65 33 2e 74 65  est.  delete3.te
2a50: 73 74 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64  st delete.test d
2a60: 65 73 63 69 64 78 31 2e 74 65 73 74 20 64 65 73  escidx1.test des
2a70: 63 69 64 78 32 2e 74 65 73 74 20 64 65 73 63 69  cidx2.test desci
2a80: 64 78 33 2e 74 65 73 74 0a 20 20 64 69 73 74 69  dx3.test.  disti
2a90: 6e 63 74 61 67 67 2e 74 65 73 74 20 64 69 73 74  nctagg.test dist
2aa0: 69 6e 63 74 2e 74 65 73 74 20 65 5f 63 72 65 61  inct.test e_crea
2ab0: 74 65 74 61 62 6c 65 2e 74 65 73 74 20 65 5f 64  tetable.test e_d
2ac0: 65 6c 65 74 65 2e 74 65 73 74 0a 20 20 65 5f 64  elete.test.  e_d
2ad0: 72 6f 70 74 72 69 67 67 65 72 2e 74 65 73 74 20  roptrigger.test 
2ae0: 65 5f 64 72 6f 70 76 69 65 77 2e 74 65 73 74 20  e_dropview.test 
2af0: 65 5f 65 78 70 72 2e 74 65 73 74 20 65 5f 69 6e  e_expr.test e_in
2b00: 73 65 72 74 2e 74 65 73 74 0a 20 20 65 71 70 2e  sert.test.  eqp.
2b10: 74 65 73 74 20 65 5f 72 65 69 6e 64 65 78 2e 74  test e_reindex.t
2b20: 65 73 74 20 65 5f 72 65 73 6f 6c 76 65 2e 74 65  est e_resolve.te
2b30: 73 74 20 65 5f 73 65 6c 65 63 74 32 2e 74 65 73  st e_select2.tes
2b40: 74 20 65 5f 73 65 6c 65 63 74 2e 74 65 73 74 0a  t e_select.test.
2b50: 20 20 65 5f 75 70 64 61 74 65 2e 74 65 73 74 20    e_update.test 
2b60: 65 78 69 73 74 73 2e 74 65 73 74 20 65 78 70 72  exists.test expr
2b70: 2e 74 65 73 74 20 66 6b 65 79 31 2e 74 65 73 74  .test fkey1.test
2b80: 20 66 6b 65 79 32 2e 74 65 73 74 20 66 6b 65 79   fkey2.test fkey
2b90: 33 2e 74 65 73 74 0a 20 20 66 6b 65 79 34 2e 74  3.test.  fkey4.t
2ba0: 65 73 74 20 66 6b 65 79 35 2e 74 65 73 74 20 66  est fkey5.test f
2bb0: 75 6e 63 32 2e 74 65 73 74 20 66 75 6e 63 33 2e  unc2.test func3.
2bc0: 74 65 73 74 20 66 75 6e 63 2e 74 65 73 74 20 0a  test func.test .
2bd0: 20 20 69 6e 33 2e 74 65 73 74 20 69 6e 34 2e 74    in3.test in4.t
2be0: 65 73 74 20 69 6e 35 2e 74 65 73 74 20 69 6e 64  est in5.test ind
2bf0: 65 78 32 2e 74 65 73 74 20 69 6e 64 65 78 33 2e  ex2.test index3.
2c00: 74 65 73 74 0a 20 20 69 6e 64 65 78 34 2e 74 65  test.  index4.te
2c10: 73 74 20 69 6e 64 65 78 35 2e 74 65 73 74 20 69  st index5.test i
2c20: 6e 64 65 78 65 64 62 79 2e 74 65 73 74 20 69 6e  ndexedby.test in
2c30: 64 65 78 2e 74 65 73 74 0a 20 20 69 6e 73 65 72  dex.test.  inser
2c40: 74 32 2e 74 65 73 74 20 69 6e 73 65 72 74 33 2e  t2.test insert3.
2c50: 74 65 73 74 20 69 6e 73 65 72 74 34 2e 74 65 73  test insert4.tes
2c60: 74 20 69 6e 73 65 72 74 35 2e 74 65 73 74 20 69  t insert5.test i
2c70: 6e 73 65 72 74 2e 74 65 73 74 0a 20 20 69 6e 73  nsert.test.  ins
2c80: 74 72 2e 74 65 73 74 20 69 6e 2e 74 65 73 74 20  tr.test in.test 
2c90: 69 6e 74 70 6b 65 79 2e 74 65 73 74 20 6a 6f 69  intpkey.test joi
2ca0: 6e 32 2e 74 65 73 74 20 6a 6f 69 6e 33 2e 74 65  n2.test join3.te
2cb0: 73 74 20 6a 6f 69 6e 34 2e 74 65 73 74 0a 20 20  st join4.test.  
2cc0: 6a 6f 69 6e 35 2e 74 65 73 74 20 6a 6f 69 6e 36  join5.test join6
2cd0: 2e 74 65 73 74 20 6a 6f 69 6e 2e 74 65 73 74 20  .test join.test 
2ce0: 6c 69 6b 65 32 2e 74 65 73 74 20 6c 69 6b 65 2e  like2.test like.
2cf0: 74 65 73 74 20 6c 69 6d 69 74 2e 74 65 73 74 0a  test limit.test.
2d00: 20 20 6d 69 6e 6d 61 78 32 2e 74 65 73 74 20 6d    minmax2.test m
2d10: 69 6e 6d 61 78 33 2e 74 65 73 74 20 6d 69 6e 6d  inmax3.test minm
2d20: 61 78 34 2e 74 65 73 74 20 6d 69 6e 6d 61 78 2e  ax4.test minmax.
2d30: 74 65 73 74 20 6d 69 73 63 31 2e 74 65 73 74 20  test misc1.test 
2d40: 6d 69 73 63 32 2e 74 65 73 74 0a 20 20 6d 69 73  misc2.test.  mis
2d50: 63 33 2e 74 65 73 74 20 6d 69 73 63 34 2e 74 65  c3.test misc4.te
2d60: 73 74 20 6d 69 73 63 35 2e 74 65 73 74 20 6d 69  st misc5.test mi
2d70: 73 63 36 2e 74 65 73 74 20 6d 69 73 63 37 2e 74  sc6.test misc7.t
2d80: 65 73 74 20 6f 72 64 65 72 62 79 31 2e 74 65 73  est orderby1.tes
2d90: 74 0a 20 20 6f 72 64 65 72 62 79 32 2e 74 65 73  t.  orderby2.tes
2da0: 74 20 6f 72 64 65 72 62 79 33 2e 74 65 73 74 20  t orderby3.test 
2db0: 6f 72 64 65 72 62 79 34 2e 74 65 73 74 20 72 61  orderby4.test ra
2dc0: 6e 64 65 78 70 72 31 2e 74 65 73 74 20 72 65 67  ndexpr1.test reg
2dd0: 65 78 70 31 2e 74 65 73 74 0a 20 20 72 65 69 6e  exp1.test.  rein
2de0: 64 65 78 2e 74 65 73 74 20 72 6f 77 68 61 73 68  dex.test rowhash
2df0: 2e 74 65 73 74 20 72 6f 77 69 64 2e 74 65 73 74  .test rowid.test
2e00: 20 73 63 68 65 6d 61 32 2e 74 65 73 74 20 73 63   schema2.test sc
2e10: 68 65 6d 61 33 2e 74 65 73 74 0a 20 20 73 63 68  hema3.test.  sch
2e20: 65 6d 61 34 2e 74 65 73 74 20 73 63 68 65 6d 61  ema4.test schema
2e30: 35 2e 74 65 73 74 20 73 63 68 65 6d 61 2e 74 65  5.test schema.te
2e40: 73 74 0a 20 20 73 65 6c 65 63 74 31 2e 74 65 73  st.  select1.tes
2e50: 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20 73  t select2.test s
2e60: 65 6c 65 63 74 33 2e 74 65 73 74 20 73 65 6c 65  elect3.test sele
2e70: 63 74 34 2e 74 65 73 74 20 73 65 6c 65 63 74 35  ct4.test select5
2e80: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 36 2e  .test.  select6.
2e90: 74 65 73 74 20 73 65 6c 65 63 74 37 2e 74 65 73  test select7.tes
2ea0: 74 20 73 65 6c 65 63 74 38 2e 74 65 73 74 20 73  t select8.test s
2eb0: 65 6c 65 63 74 39 2e 74 65 73 74 20 73 65 6c 65  elect9.test sele
2ec0: 63 74 41 2e 74 65 73 74 0a 20 20 73 65 6c 65 63  ctA.test.  selec
2ed0: 74 42 2e 74 65 73 74 20 73 65 6c 65 63 74 43 2e  tB.test selectC.
2ee0: 74 65 73 74 20 73 65 6c 65 63 74 44 2e 74 65 73  test selectD.tes
2ef0: 74 20 73 65 6c 65 63 74 45 2e 74 65 73 74 20 73  t selectE.test s
2f00: 69 64 65 64 65 6c 65 74 65 2e 74 65 73 74 0a 20  idedelete.test. 
2f10: 20 73 6f 72 74 2e 74 65 73 74 20 73 70 65 6c 6c   sort.test spell
2f20: 66 69 78 2e 74 65 73 74 20 73 75 62 71 75 65 72  fix.test subquer
2f30: 79 32 2e 74 65 73 74 20 73 75 62 71 75 65 72 79  y2.test subquery
2f40: 2e 74 65 73 74 20 73 75 62 73 65 6c 65 63 74 2e  .test subselect.
2f50: 74 65 73 74 0a 20 20 73 75 62 73 74 72 2e 74 65  test.  substr.te
2f60: 73 74 20 74 6b 74 2d 30 32 61 38 65 38 31 64 34  st tkt-02a8e81d4
2f70: 34 2e 74 65 73 74 20 74 6b 74 31 34 33 35 2e 74  4.test tkt1435.t
2f80: 65 73 74 20 74 6b 74 31 34 34 33 2e 74 65 73 74  est tkt1443.test
2f90: 20 74 6b 74 31 34 34 34 2e 74 65 73 74 0a 20 20   tkt1444.test.  
2fa0: 74 6b 74 31 34 34 39 2e 74 65 73 74 20 74 6b 74  tkt1449.test tkt
2fb0: 31 34 37 33 2e 74 65 73 74 20 74 6b 74 31 35 30  1473.test tkt150
2fc0: 31 2e 74 65 73 74 20 74 6b 74 31 35 31 32 2e 74  1.test tkt1512.t
2fd0: 65 73 74 20 74 6b 74 31 35 31 34 2e 74 65 73 74  est tkt1514.test
2fe0: 0a 20 20 74 6b 74 31 35 33 36 2e 74 65 73 74 20  .  tkt1536.test 
2ff0: 74 6b 74 31 35 33 37 2e 74 65 73 74 20 74 6b 74  tkt1537.test tkt
3000: 31 35 36 37 2e 74 65 73 74 20 74 6b 74 31 36 34  1567.test tkt164
3010: 34 2e 74 65 73 74 20 74 6b 74 31 36 36 37 2e 74  4.test tkt1667.t
3020: 65 73 74 0a 20 20 74 6b 74 31 38 37 33 2e 74 65  est.  tkt1873.te
3030: 73 74 20 74 6b 74 32 31 34 31 2e 74 65 73 74 20  st tkt2141.test 
3040: 74 6b 74 32 31 39 32 2e 74 65 73 74 20 74 6b 74  tkt2192.test tkt
3050: 32 32 31 33 2e 74 65 73 74 20 74 6b 74 32 32 35  2213.test tkt225
3060: 31 2e 74 65 73 74 0a 20 20 74 6b 74 32 32 38 35  1.test.  tkt2285
3070: 2e 74 65 73 74 20 74 6b 74 32 33 33 32 2e 74 65  .test tkt2332.te
3080: 73 74 20 74 6b 74 32 33 33 39 2e 74 65 73 74 20  st tkt2339.test 
3090: 74 6b 74 32 33 39 31 2e 74 65 73 74 20 74 6b 74  tkt2391.test tkt
30a0: 32 34 30 39 2e 74 65 73 74 0a 20 20 74 6b 74 32  2409.test.  tkt2
30b0: 34 35 30 2e 74 65 73 74 20 74 6b 74 32 35 36 35  450.test tkt2565
30c0: 2e 74 65 73 74 20 74 6b 74 32 36 34 30 2e 74 65  .test tkt2640.te
30d0: 73 74 20 74 6b 74 32 36 34 33 2e 74 65 73 74 20  st tkt2643.test 
30e0: 74 6b 74 32 36 38 36 2e 74 65 73 74 0a 20 20 74  tkt2686.test.  t
30f0: 6b 74 2d 32 36 66 66 30 63 32 64 31 65 2e 74 65  kt-26ff0c2d1e.te
3100: 73 74 20 74 6b 74 32 37 36 37 2e 74 65 73 74 20  st tkt2767.test 
3110: 74 6b 74 32 38 31 37 2e 74 65 73 74 20 74 6b 74  tkt2817.test tkt
3120: 32 38 32 30 2e 74 65 73 74 20 74 6b 74 32 38 32  2820.test tkt282
3130: 32 2e 74 65 73 74 0a 20 20 74 6b 74 32 38 33 32  2.test.  tkt2832
3140: 2e 74 65 73 74 20 74 6b 74 32 38 35 34 2e 74 65  .test tkt2854.te
3150: 73 74 20 74 6b 74 32 39 32 30 2e 74 65 73 74 20  st tkt2920.test 
3160: 74 6b 74 32 39 32 37 2e 74 65 73 74 20 74 6b 74  tkt2927.test tkt
3170: 32 39 34 32 2e 74 65 73 74 0a 20 20 74 6b 74 2d  2942.test.  tkt-
3180: 32 61 35 36 32 39 32 30 32 66 2e 74 65 73 74 20  2a5629202f.test 
3190: 74 6b 74 2d 32 64 31 61 35 63 36 37 64 2e 74 65  tkt-2d1a5c67d.te
31a0: 73 74 20 74 6b 74 2d 32 65 61 32 34 32 35 64 33  st tkt-2ea2425d3
31b0: 34 2e 74 65 73 74 20 74 6b 74 33 30 38 30 2e 74  4.test tkt3080.t
31c0: 65 73 74 0a 20 20 74 6b 74 33 30 39 33 2e 74 65  est.  tkt3093.te
31d0: 73 74 20 74 6b 74 33 31 32 31 2e 74 65 73 74 20  st tkt3121.test 
31e0: 74 6b 74 2d 33 31 33 33 38 64 63 61 37 65 2e 74  tkt-31338dca7e.t
31f0: 65 73 74 20 74 6b 74 2d 33 31 33 37 32 33 63 33  est tkt-313723c3
3200: 35 36 2e 74 65 73 74 0a 20 20 74 6b 74 33 32 30  56.test.  tkt320
3210: 31 2e 74 65 73 74 20 74 6b 74 33 32 39 32 2e 74  1.test tkt3292.t
3220: 65 73 74 20 74 6b 74 33 32 39 38 2e 74 65 73 74  est tkt3298.test
3230: 20 74 6b 74 33 33 33 34 2e 74 65 73 74 20 74 6b   tkt3334.test tk
3240: 74 33 33 34 36 2e 74 65 73 74 0a 20 20 74 6b 74  t3346.test.  tkt
3250: 33 33 35 37 2e 74 65 73 74 20 74 6b 74 33 34 31  3357.test tkt341
3260: 39 2e 74 65 73 74 20 74 6b 74 33 34 32 34 2e 74  9.test tkt3424.t
3270: 65 73 74 20 74 6b 74 33 34 34 32 2e 74 65 73 74  est tkt3442.test
3280: 20 74 6b 74 33 34 35 37 2e 74 65 73 74 0a 20 20   tkt3457.test.  
3290: 74 6b 74 33 34 36 31 2e 74 65 73 74 20 74 6b 74  tkt3461.test tkt
32a0: 33 34 39 33 2e 74 65 73 74 20 74 6b 74 33 35 30  3493.test tkt350
32b0: 38 2e 74 65 73 74 20 74 6b 74 33 35 32 32 2e 74  8.test tkt3522.t
32c0: 65 73 74 20 74 6b 74 33 35 32 37 2e 74 65 73 74  est tkt3527.test
32d0: 0a 20 20 74 6b 74 33 35 34 31 2e 74 65 73 74 20  .  tkt3541.test 
32e0: 74 6b 74 33 35 35 34 2e 74 65 73 74 20 74 6b 74  tkt3554.test tkt
32f0: 33 35 38 31 2e 74 65 73 74 20 74 6b 74 33 35 78  3581.test tkt35x
3300: 78 2e 74 65 73 74 20 74 6b 74 33 36 33 30 2e 74  x.test tkt3630.t
3310: 65 73 74 0a 20 20 74 6b 74 33 37 31 38 2e 74 65  est.  tkt3718.te
3320: 73 74 20 74 6b 74 33 37 33 31 2e 74 65 73 74 20  st tkt3731.test 
3330: 74 6b 74 33 37 35 37 2e 74 65 73 74 20 74 6b 74  tkt3757.test tkt
3340: 33 37 36 31 2e 74 65 73 74 20 74 6b 74 33 37 36  3761.test tkt376
3350: 32 2e 74 65 73 74 0a 20 20 74 6b 74 33 37 37 33  2.test.  tkt3773
3360: 2e 74 65 73 74 20 74 6b 74 33 37 39 31 2e 74 65  .test tkt3791.te
3370: 73 74 20 74 6b 74 33 37 39 33 2e 74 65 73 74 20  st tkt3793.test 
3380: 74 6b 74 33 38 31 30 2e 74 65 73 74 20 74 6b 74  tkt3810.test tkt
3390: 33 38 32 34 2e 74 65 73 74 0a 20 20 74 6b 74 33  3824.test.  tkt3
33a0: 38 33 32 2e 74 65 73 74 20 74 6b 74 33 38 33 38  832.test tkt3838
33b0: 2e 74 65 73 74 20 74 6b 74 33 38 34 31 2e 74 65  .test tkt3841.te
33c0: 73 74 20 74 6b 74 2d 33 38 35 61 35 62 35 36 62  st tkt-385a5b56b
33d0: 39 2e 74 65 73 74 20 74 6b 74 33 38 37 31 2e 74  9.test tkt3871.t
33e0: 65 73 74 0a 20 20 74 6b 74 33 38 37 39 2e 74 65  est.  tkt3879.te
33f0: 73 74 20 74 6b 74 2d 33 38 63 62 35 64 66 33 37  st tkt-38cb5df37
3400: 35 2e 74 65 73 74 20 74 6b 74 33 39 31 31 2e 74  5.test tkt3911.t
3410: 65 73 74 20 74 6b 74 33 39 31 38 2e 74 65 73 74  est tkt3918.test
3420: 20 74 6b 74 33 39 32 32 2e 74 65 73 74 0a 20 20   tkt3922.test.  
3430: 74 6b 74 33 39 32 39 2e 74 65 73 74 20 74 6b 74  tkt3929.test tkt
3440: 33 39 33 35 2e 74 65 73 74 20 74 6b 74 33 39 39  3935.test tkt399
3450: 32 2e 74 65 73 74 20 74 6b 74 33 39 39 37 2e 74  2.test tkt3997.t
3460: 65 73 74 20 74 6b 74 2d 33 39 39 38 36 38 33 61  est tkt-3998683a
3470: 31 36 2e 74 65 73 74 0a 20 20 74 6b 74 2d 33 61  16.test.  tkt-3a
3480: 37 37 63 39 37 31 34 65 2e 74 65 73 74 20 74 6b  77c9714e.test tk
3490: 74 2d 33 66 65 38 39 37 33 35 32 65 2e 74 65 73  t-3fe897352e.tes
34a0: 74 20 74 6b 74 34 30 31 38 2e 74 65 73 74 20 74  t tkt4018.test t
34b0: 6b 74 2d 34 61 30 33 65 64 63 34 63 38 2e 74 65  kt-4a03edc4c8.te
34c0: 73 74 0a 20 20 74 6b 74 2d 34 64 64 39 35 66 36  st.  tkt-4dd95f6
34d0: 39 34 33 2e 74 65 73 74 20 74 6b 74 2d 35 34 38  943.test tkt-548
34e0: 34 34 65 65 61 33 66 2e 74 65 73 74 20 74 6b 74  44eea3f.test tkt
34f0: 2d 35 64 38 36 33 66 38 37 36 65 2e 74 65 73 74  -5d863f876e.test
3500: 0a 20 20 74 6b 74 2d 35 65 31 30 34 32 30 65 38  .  tkt-5e10420e8
3510: 64 2e 74 65 73 74 20 74 6b 74 2d 35 65 65 32 33  d.test tkt-5ee23
3520: 37 33 31 66 2e 74 65 73 74 20 74 6b 74 2d 36 62  731f.test tkt-6b
3530: 66 62 39 38 64 66 63 30 2e 74 65 73 74 0a 20 20  fb98dfc0.test.  
3540: 74 6b 74 2d 37 35 32 65 31 36 34 36 66 63 2e 74  tkt-752e1646fc.t
3550: 65 73 74 20 74 6b 74 2d 37 38 65 30 34 65 35 32  est tkt-78e04e52
3560: 65 61 2e 74 65 73 74 20 74 6b 74 2d 37 61 33 31  ea.test tkt-7a31
3570: 37 30 35 61 37 65 36 2e 74 65 73 74 0a 20 20 74  705a7e6.test.  t
3580: 6b 74 2d 37 62 62 66 62 37 64 34 34 32 2e 74 65  kt-7bbfb7d442.te
3590: 73 74 20 74 6b 74 2d 38 30 62 61 32 30 31 30 37  st tkt-80ba20107
35a0: 39 2e 74 65 73 74 20 74 6b 74 2d 38 30 65 30 33  9.test tkt-80e03
35b0: 31 61 30 30 66 2e 74 65 73 74 0a 20 20 74 6b 74  1a00f.test.  tkt
35c0: 2d 38 34 35 34 61 32 30 37 62 39 2e 74 65 73 74  -8454a207b9.test
35d0: 20 74 6b 74 2d 39 31 65 32 65 38 62 61 36 66 2e   tkt-91e2e8ba6f.
35e0: 74 65 73 74 20 74 6b 74 2d 39 34 63 30 34 65 61  test tkt-94c04ea
35f0: 61 64 62 2e 74 65 73 74 0a 20 20 74 6b 74 2d 39  adb.test.  tkt-9
3600: 64 36 38 63 38 38 33 2e 74 65 73 74 20 74 6b 74  d68c883.test tkt
3610: 2d 61 37 62 37 38 30 33 65 2e 74 65 73 74 20 74  -a7b7803e.test t
3620: 6b 74 2d 62 31 64 33 61 32 65 35 33 31 2e 74 65  kt-b1d3a2e531.te
3630: 73 74 0a 20 20 74 6b 74 2d 62 33 35 31 64 39 35  st.  tkt-b351d95
3640: 66 39 2e 74 65 73 74 20 74 6b 74 2d 62 37 32 37  f9.test tkt-b727
3650: 38 37 62 31 2e 74 65 73 74 20 74 6b 74 2d 62 64  87b1.test tkt-bd
3660: 34 38 34 61 30 39 30 63 2e 74 65 73 74 0a 20 20  484a090c.test.  
3670: 74 6b 74 2d 62 64 63 36 62 62 62 62 33 38 2e 74  tkt-bdc6bbbb38.t
3680: 65 73 74 20 74 6b 74 2d 63 34 38 64 39 39 64 36  est tkt-c48d99d6
3690: 39 30 2e 74 65 73 74 20 74 6b 74 2d 63 62 64 30  90.test tkt-cbd0
36a0: 35 34 66 61 36 62 2e 74 65 73 74 0a 20 20 74 6b  54fa6b.test.  tk
36b0: 74 2d 64 31 31 66 30 39 64 33 36 65 2e 74 65 73  t-d11f09d36e.tes
36c0: 74 20 74 6b 74 2d 64 36 33 35 32 33 36 33 37 35  t tkt-d635236375
36d0: 2e 74 65 73 74 20 74 6b 74 2d 64 38 32 65 33 66  .test tkt-d82e3f
36e0: 33 37 32 31 2e 74 65 73 74 0a 20 20 74 6b 74 2d  3721.test.  tkt-
36f0: 66 33 65 35 61 62 65 64 35 35 2e 74 65 73 74 20  f3e5abed55.test 
3700: 74 6b 74 2d 66 37 37 37 32 35 31 64 63 37 61 2e  tkt-f777251dc7a.
3710: 74 65 73 74 20 74 6b 74 2d 66 37 62 34 65 64 65  test tkt-f7b4ede
3720: 63 2e 74 65 73 74 0a 20 20 74 6b 74 2d 66 39 37  c.test.  tkt-f97
3730: 33 63 37 61 63 33 31 2e 74 65 73 74 20 74 6b 74  3c7ac31.test tkt
3740: 2d 66 61 37 62 66 35 65 63 2e 74 65 73 74 20 74  -fa7bf5ec.test t
3750: 6b 74 2d 66 63 36 32 61 66 34 35 32 33 2e 74 65  kt-fc62af4523.te
3760: 73 74 0a 20 20 74 6b 74 2d 66 63 37 62 64 36 33  st.  tkt-fc7bd63
3770: 35 38 66 2e 74 65 73 74 20 74 72 69 67 67 65 72  58f.test trigger
3780: 31 2e 74 65 73 74 20 74 72 69 67 67 65 72 32 2e  1.test trigger2.
3790: 74 65 73 74 20 74 72 69 67 67 65 72 33 2e 74 65  test trigger3.te
37a0: 73 74 0a 20 20 74 72 69 67 67 65 72 34 2e 74 65  st.  trigger4.te
37b0: 73 74 20 74 72 69 67 67 65 72 35 2e 74 65 73 74  st trigger5.test
37c0: 20 74 72 69 67 67 65 72 36 2e 74 65 73 74 20 74   trigger6.test t
37d0: 72 69 67 67 65 72 37 2e 74 65 73 74 20 74 72 69  rigger7.test tri
37e0: 67 67 65 72 38 2e 74 65 73 74 0a 20 20 74 72 69  gger8.test.  tri
37f0: 67 67 65 72 39 2e 74 65 73 74 20 74 72 69 67 67  gger9.test trigg
3800: 65 72 41 2e 74 65 73 74 20 74 72 69 67 67 65 72  erA.test trigger
3810: 42 2e 74 65 73 74 20 74 72 69 67 67 65 72 43 2e  B.test triggerC.
3820: 74 65 73 74 20 74 72 69 67 67 65 72 44 2e 74 65  test triggerD.te
3830: 73 74 0a 20 20 74 79 70 65 73 32 2e 74 65 73 74  st.  types2.test
3840: 20 74 79 70 65 73 33 2e 74 65 73 74 20 74 79 70   types3.test typ
3850: 65 73 2e 74 65 73 74 20 75 6e 69 71 75 65 2e 74  es.test unique.t
3860: 65 73 74 20 75 6e 6f 72 64 65 72 65 64 2e 74 65  est unordered.te
3870: 73 74 0a 20 20 75 70 64 61 74 65 2e 74 65 73 74  st.  update.test
3880: 20 76 69 65 77 2e 74 65 73 74 20 76 74 61 62 31   view.test vtab1
3890: 2e 74 65 73 74 20 76 74 61 62 32 2e 74 65 73 74  .test vtab2.test
38a0: 20 76 74 61 62 33 2e 74 65 73 74 20 76 74 61 62   vtab3.test vtab
38b0: 34 2e 74 65 73 74 0a 20 20 76 74 61 62 35 2e 74  4.test.  vtab5.t
38c0: 65 73 74 20 76 74 61 62 36 2e 74 65 73 74 20 76  est vtab6.test v
38d0: 74 61 62 37 2e 74 65 73 74 20 76 74 61 62 38 2e  tab7.test vtab8.
38e0: 74 65 73 74 20 76 74 61 62 39 2e 74 65 73 74 20  test vtab9.test 
38f0: 76 74 61 62 5f 61 6c 74 65 72 2e 74 65 73 74 0a  vtab_alter.test.
3900: 20 20 76 74 61 62 41 2e 74 65 73 74 20 76 74 61    vtabA.test vta
3910: 62 42 2e 74 65 73 74 20 76 74 61 62 43 2e 74 65  bB.test vtabC.te
3920: 73 74 20 76 74 61 62 44 2e 74 65 73 74 20 76 74  st vtabD.test vt
3930: 61 62 45 2e 74 65 73 74 0a 20 20 76 74 61 62 46  abE.test.  vtabF
3940: 2e 74 65 73 74 20 77 68 65 72 65 32 2e 74 65 73  .test where2.tes
3950: 74 20 77 68 65 72 65 33 2e 74 65 73 74 20 77 68  t where3.test wh
3960: 65 72 65 34 2e 74 65 73 74 20 77 68 65 72 65 35  ere4.test where5
3970: 2e 74 65 73 74 20 77 68 65 72 65 36 2e 74 65 73  .test where6.tes
3980: 74 0a 20 20 77 68 65 72 65 37 2e 74 65 73 74 20  t.  where7.test 
3990: 77 68 65 72 65 38 6d 2e 74 65 73 74 20 77 68 65  where8m.test whe
39a0: 72 65 38 2e 74 65 73 74 20 77 68 65 72 65 39 2e  re8.test where9.
39b0: 74 65 73 74 20 77 68 65 72 65 41 2e 74 65 73 74  test whereA.test
39c0: 20 77 68 65 72 65 42 2e 74 65 73 74 0a 20 20 77   whereB.test.  w
39d0: 68 65 72 65 43 2e 74 65 73 74 20 77 68 65 72 65  hereC.test where
39e0: 44 2e 74 65 73 74 20 77 68 65 72 65 45 2e 74 65  D.test whereE.te
39f0: 73 74 20 77 68 65 72 65 46 2e 74 65 73 74 20 77  st whereF.test w
3a00: 68 65 72 65 6c 69 6d 69 74 2e 74 65 73 74 0a 20  herelimit.test. 
3a10: 20 77 68 65 72 65 2e 74 65 73 74 0a 7d 0a 0a 74   where.test.}..t
3a20: 65 73 74 5f 73 75 69 74 65 20 22 76 66 73 6c 6f  est_suite "vfslo
3a30: 67 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64  g" -prefix "" -d
3a40: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 22  escription {.  "
3a50: 56 66 73 6c 6f 67 22 20 71 75 69 63 6b 20 74 65  Vfslog" quick te
3a60: 73 74 20 73 75 69 74 65 2e 20 4c 69 6b 65 20 22  st suite. Like "
3a70: 76 65 72 79 71 75 69 63 6b 22 20 65 78 63 65 70  veryquick" excep
3a80: 74 20 64 6f 65 73 20 6e 6f 74 20 6f 6d 69 74 73  t does not omits
3a90: 0a 20 20 61 20 66 65 77 20 74 65 73 74 73 20 74  .  a few tests t
3aa0: 68 61 74 20 64 6f 20 6e 6f 74 20 77 6f 72 6b 20  hat do not work 
3ab0: 77 69 74 68 20 61 20 76 65 72 73 69 6f 6e 20 31  with a version 1
3ac0: 20 56 46 53 2e 20 41 6e 64 20 74 68 65 20 71 75   VFS. And the qu
3ad0: 6f 74 61 2a 20 74 65 73 74 73 2c 0a 20 20 77 68  ota* tests,.  wh
3ae0: 69 63 68 20 64 6f 20 6e 6f 74 20 77 6f 72 6b 20  ich do not work 
3af0: 77 69 74 68 20 61 20 56 46 53 20 74 68 61 74 20  with a VFS that 
3b00: 75 73 65 73 20 74 68 65 20 70 56 66 73 20 61 72  uses the pVfs ar
3b10: 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20 74 6f  gument passed to
3b20: 0a 20 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6d  .  sqlite3_vfs m
3b30: 65 74 68 6f 64 73 2e 0a 7d 20 2d 66 69 6c 65 73  ethods..} -files
3b40: 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61   [.  test_set $a
3b50: 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78  llquicktests -ex
3b60: 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a  clude *malloc* *
3b70: 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 6f  ioerr* *fault* o
3b80: 73 65 72 72 6f 72 2e 74 65 73 74 20 5c 0a 20 20  serror.test \.  
3b90: 70 61 67 65 72 31 2e 74 65 73 74 20 73 79 73 63  pager1.test sysc
3ba0: 61 6c 6c 2e 74 65 73 74 20 73 79 73 66 61 75 6c  all.test sysfaul
3bb0: 74 2e 74 65 73 74 20 74 6b 74 33 34 35 37 2e 74  t.test tkt3457.t
3bc0: 65 73 74 20 71 75 6f 74 61 2a 20 73 75 70 65 72  est quota* super
3bd0: 6c 6f 63 6b 2a 20 5c 0a 20 20 77 61 6c 2a 20 6d  lock* \.  wal* m
3be0: 6d 61 70 2a 0a 5d 0a 0a 74 65 73 74 5f 73 75 69  map*.]..test_sui
3bf0: 74 65 20 22 61 74 6f 6d 69 63 2d 62 61 74 63 68  te "atomic-batch
3c00: 2d 77 72 69 74 65 22 20 2d 70 72 65 66 69 78 20  -write" -prefix 
3c10: 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  "" -description 
3c20: 7b 0a 20 20 4c 69 6b 65 20 76 65 72 79 71 75 69  {.  Like veryqui
3c30: 63 6b 2e 74 65 73 74 2c 20 62 75 74 20 6d 75 73  ck.test, but mus
3c40: 74 20 62 65 20 72 75 6e 20 6f 6e 20 61 20 66 69  t be run on a fi
3c50: 6c 65 2d 73 79 73 74 65 6d 20 74 68 61 74 20 73  le-system that s
3c60: 75 70 70 6f 72 74 73 0a 20 20 61 74 6f 6d 69 63  upports.  atomic
3c70: 2d 62 61 74 63 68 2d 77 72 69 74 65 73 2e 20 54  -batch-writes. T
3c80: 65 73 74 73 20 74 68 61 74 20 64 65 70 65 6e 64  ests that depend
3c90: 20 6f 6e 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20   on the journal 
3ca0: 66 69 6c 65 20 62 65 69 6e 67 20 70 72 65 73 65  file being prese
3cb0: 6e 74 0a 20 20 61 72 65 20 6f 6d 69 74 74 65 64  nt.  are omitted
3cc0: 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74  ..} -files [.  t
3cd0: 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63  est_set $allquic
3ce0: 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20  ktests -exclude 
3cf0: 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a  *malloc* *ioerr*
3d00: 20 2a 66 61 75 6c 74 2a 20 2a 62 69 67 66 69 6c   *fault* *bigfil
3d10: 65 2a 20 2a 5f 65 72 72 2a 20 5c 0a 20 20 20 20  e* *_err* \.    
3d20: 20 20 2a 66 74 73 35 63 6f 72 72 75 70 74 2a 20    *fts5corrupt* 
3d30: 2a 66 74 73 35 62 69 67 2a 20 2a 66 74 73 35 61  *fts5big* *fts5a
3d40: 6a 2a 20 20 5c 0a 20 20 20 20 20 20 63 72 61 73  j*  \.      cras
3d50: 68 38 2e 74 65 73 74 20 64 65 6c 65 74 65 5f 64  h8.test delete_d
3d60: 62 2e 74 65 73 74 20 20 20 20 20 20 20 20 5c 0a  b.test        \.
3d70: 20 20 20 20 20 20 65 78 63 6c 75 73 69 76 65 2e        exclusive.
3d80: 74 65 73 74 20 6a 6f 75 72 6e 61 6c 33 2e 74 65  test journal3.te
3d90: 73 74 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20  st      \.      
3da0: 6a 6f 75 72 6e 61 6c 31 2e 74 65 73 74 20 20 20  journal1.test   
3db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3dc0: 20 20 5c 0a 20 20 20 20 20 20 6a 72 6e 6c 6d 6f    \.      jrnlmo
3dd0: 64 65 2e 74 65 73 74 20 6a 72 6e 6c 6d 6f 64 65  de.test jrnlmode
3de0: 32 2e 74 65 73 74 20 20 20 20 20 20 5c 0a 20 20  2.test      \.  
3df0: 20 20 20 20 6c 6f 63 6b 34 2e 74 65 73 74 20 70      lock4.test p
3e00: 61 67 65 72 31 2e 74 65 73 74 20 20 20 20 20 20  ager1.test      
3e10: 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 70 61        \.      pa
3e20: 67 65 72 33 2e 74 65 73 74 20 73 68 61 72 65 64  ger3.test shared
3e30: 41 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20  A.test          
3e40: 5c 0a 20 20 20 20 20 20 73 79 6d 6c 69 6e 6b 2e  \.      symlink.
3e50: 74 65 73 74 20 73 74 6d 74 2e 74 65 73 74 20 20  test stmt.test  
3e60: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
3e70: 20 20 73 79 6e 63 2e 74 65 73 74 20 73 79 6e 63    sync.test sync
3e80: 32 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20  2.test          
3e90: 20 20 20 20 5c 0a 20 20 20 20 20 20 74 65 6d 70      \.      temp
3ea0: 64 62 2e 74 65 73 74 20 74 6b 74 33 34 35 37 2e  db.test tkt3457.
3eb0: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 5c 0a  test          \.
3ec0: 20 20 20 20 20 20 76 61 63 75 75 6d 35 2e 74 65        vacuum5.te
3ed0: 73 74 20 77 61 6c 32 2e 74 65 73 74 20 20 20 20  st wal2.test    
3ee0: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20          \.      
3ef0: 77 61 6c 6d 6f 64 65 2e 74 65 73 74 20 7a 65 72  walmode.test zer
3f00: 6f 64 61 6d 61 67 65 2e 74 65 73 74 0a 5d 20 2d  odamage.test.] -
3f10: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 69  initialize {.  i
3f20: 66 20 7b 5b 61 74 6f 6d 69 63 5f 62 61 74 63 68  f {[atomic_batch
3f30: 5f 77 72 69 74 65 20 74 65 73 74 2e 64 62 5d 3d  _write test.db]=
3f40: 3d 30 7d 20 7b 0a 20 20 20 20 65 72 72 6f 72 20  =0} {.    error 
3f50: 22 46 69 6c 65 20 73 79 73 74 65 6d 20 64 6f 65  "File system doe
3f60: 73 20 4e 4f 54 20 73 75 70 70 6f 72 74 20 61 74  s NOT support at
3f70: 6f 6d 69 63 2d 62 61 74 63 68 2d 77 72 69 74 65  omic-batch-write
3f80: 22 0a 20 20 7d 0a 7d 0a 0a 6c 61 70 70 65 6e 64  ".  }.}..lappend
3f90: 20 3a 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74   ::testsuitelist
3fa0: 20 78 78 78 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   xxx.#----------
3fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
3ff0: 23 20 44 65 66 69 6e 65 20 74 68 65 20 63 6f 76  # Define the cov
4000: 65 72 61 67 65 20 72 65 6c 61 74 65 64 20 74 65  erage related te
4010: 73 74 20 73 75 69 74 65 73 3a 0a 23 0a 23 20 20  st suites:.#.#  
4020: 20 63 6f 76 65 72 61 67 65 2d 77 61 6c 0a 23 0a   coverage-wal.#.
4030: 74 65 73 74 5f 73 75 69 74 65 20 22 63 6f 76 65  test_suite "cove
4040: 72 61 67 65 2d 77 61 6c 22 20 2d 64 65 73 63 72  rage-wal" -descr
4050: 69 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65 72  iption {.  Cover
4060: 61 67 65 20 74 65 73 74 73 20 66 6f 72 20 66 69  age tests for fi
4070: 6c 65 20 77 61 6c 2e 63 2e 0a 7d 20 2d 66 69 6c  le wal.c..} -fil
4080: 65 73 20 7b 0a 20 20 77 61 6c 2e 74 65 73 74 20  es {.  wal.test 
4090: 20 20 20 20 20 20 77 61 6c 32 2e 74 65 73 74 20        wal2.test 
40a0: 20 20 20 20 77 61 6c 33 2e 74 65 73 74 20 20 20      wal3.test   
40b0: 20 20 20 20 77 61 6c 6d 6f 64 65 2e 74 65 73 74      walmode.test
40c0: 20 20 20 20 0a 20 20 77 61 6c 62 61 6b 2e 74 65      .  walbak.te
40d0: 73 74 20 20 20 20 77 61 6c 68 6f 6f 6b 2e 74 65  st    walhook.te
40e0: 73 74 20 20 77 61 6c 63 72 61 73 68 32 2e 74 65  st  walcrash2.te
40f0: 73 74 20 20 77 61 6c 63 6b 73 75 6d 2e 74 65 73  st  walcksum.tes
4100: 74 0a 20 20 77 61 6c 66 61 75 6c 74 2e 74 65 73  t.  walfault.tes
4110: 74 20 20 77 61 6c 62 69 67 2e 74 65 73 74 20 20  t  walbig.test  
4120: 20 77 61 6c 6e 6f 73 68 6d 2e 74 65 73 74 0a 20   walnoshm.test. 
4130: 20 77 61 6c 35 2e 74 65 73 74 0a 7d 20 0a 0a 74   wal5.test.} ..t
4140: 65 73 74 5f 73 75 69 74 65 20 22 63 6f 76 65 72  est_suite "cover
4150: 61 67 65 2d 70 61 67 65 72 22 20 2d 64 65 73 63  age-pager" -desc
4160: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65  ription {.  Cove
4170: 72 61 67 65 20 74 65 73 74 73 20 66 6f 72 20 66  rage tests for f
4180: 69 6c 65 20 70 61 67 65 72 2e 63 2e 0a 7d 20 2d  ile pager.c..} -
4190: 66 69 6c 65 73 20 7b 0a 20 20 70 61 67 65 72 31  files {.  pager1
41a0: 2e 74 65 73 74 20 20 20 20 70 61 67 65 72 32 2e  .test    pager2.
41b0: 74 65 73 74 20 20 70 61 67 65 72 66 61 75 6c 74  test  pagerfault
41c0: 2e 74 65 73 74 20 20 70 61 67 65 72 66 61 75 6c  .test  pagerfaul
41d0: 74 32 2e 74 65 73 74 0a 20 20 77 61 6c 66 61 75  t2.test.  walfau
41e0: 6c 74 2e 74 65 73 74 20 20 77 61 6c 62 61 6b 2e  lt.test  walbak.
41f0: 74 65 73 74 20 20 6a 6f 75 72 6e 61 6c 32 2e 74  test  journal2.t
4200: 65 73 74 20 20 20 20 74 6b 74 2d 39 64 36 38 63  est    tkt-9d68c
4210: 38 38 33 2e 74 65 73 74 0a 7d 20 0a 0a 74 65 73  883.test.} ..tes
4220: 74 5f 73 75 69 74 65 20 22 63 6f 76 65 72 61 67  t_suite "coverag
4230: 65 2d 61 6e 61 6c 79 7a 65 22 20 2d 64 65 73 63  e-analyze" -desc
4240: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65  ription {.  Cove
4250: 72 61 67 65 20 74 65 73 74 73 20 66 6f 72 20 66  rage tests for f
4260: 69 6c 65 20 61 6e 61 6c 79 7a 65 2e 63 2e 0a 7d  ile analyze.c..}
4270: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 61 6e 61 6c   -files {.  anal
4280: 79 7a 65 33 2e 74 65 73 74 20 61 6e 61 6c 79 7a  yze3.test analyz
4290: 65 34 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 35  e4.test analyze5
42a0: 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 36 2e 74  .test analyze6.t
42b0: 65 73 74 0a 20 20 61 6e 61 6c 79 7a 65 37 2e 74  est.  analyze7.t
42c0: 65 73 74 20 61 6e 61 6c 79 7a 65 38 2e 74 65 73  est analyze8.tes
42d0: 74 20 61 6e 61 6c 79 7a 65 39 2e 74 65 73 74 20  t analyze9.test 
42e0: 61 6e 61 6c 79 7a 65 41 2e 74 65 73 74 0a 20 20  analyzeA.test.  
42f0: 61 6e 61 6c 79 7a 65 2e 74 65 73 74 20 61 6e 61  analyze.test ana
4300: 6c 79 7a 65 42 2e 74 65 73 74 20 6d 61 6c 6c 6f  lyzeB.test mallo
4310: 63 41 2e 74 65 73 74 0a 7d 20 0a 0a 74 65 73 74  cA.test.} ..test
4320: 5f 73 75 69 74 65 20 22 63 6f 76 65 72 61 67 65  _suite "coverage
4330: 2d 73 6f 72 74 65 72 22 20 2d 64 65 73 63 72 69  -sorter" -descri
4340: 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65 72 61  ption {.  Covera
4350: 67 65 20 74 65 73 74 73 20 66 6f 72 20 66 69 6c  ge tests for fil
4360: 65 20 76 64 62 65 73 6f 72 74 2e 63 2e 0a 7d 20  e vdbesort.c..} 
4370: 2d 66 69 6c 65 73 20 7b 0a 20 20 73 6f 72 74 2e  -files {.  sort.
4380: 74 65 73 74 20 73 6f 72 74 66 61 75 6c 74 2e 74  test sortfault.t
4390: 65 73 74 0a 7d 20 0a 0a 0a 6c 61 70 70 65 6e 64  est.} ...lappend
43a0: 20 3a 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74   ::testsuitelist
43b0: 20 78 78 78 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   xxx.#----------
43c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
43d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
43e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
43f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
4400: 23 20 44 65 66 69 6e 65 20 74 68 65 20 70 65 72  # Define the per
4410: 6d 75 74 61 74 69 6f 6e 20 74 65 73 74 20 73 75  mutation test su
4420: 69 74 65 73 3a 0a 23 0a 0a 23 20 52 75 6e 20 73  ites:.#..# Run s
4430: 6f 6d 65 20 74 65 73 74 73 20 75 73 69 6e 67 20  ome tests using 
4440: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61  pre-allocated pa
4450: 67 65 20 62 6c 6f 63 6b 73 2e 0a 23 0a 23 20 6d  ge blocks..#.# m
4460: 6d 61 70 31 2e 74 65 73 74 20 69 73 20 65 78 63  map1.test is exc
4470: 6c 75 64 65 64 20 62 65 63 61 75 73 65 20 61 20  luded because a 
4480: 67 6f 6f 64 20 6e 75 6d 62 65 72 20 6f 66 20 69  good number of i
4490: 74 73 20 74 65 73 74 73 20 64 65 70 65 6e 64 20  ts tests depend 
44a0: 6f 6e 20 0a 23 20 74 68 65 20 70 61 67 65 2d 63  on .# the page-c
44b0: 61 63 68 65 20 62 65 69 6e 67 20 6c 61 72 67 65  ache being large
44c0: 72 20 74 68 61 6e 20 74 68 65 20 64 61 74 61 62  r than the datab
44d0: 61 73 65 2e 20 42 75 74 20 74 68 69 73 20 70 65  ase. But this pe
44e0: 72 6d 75 74 61 74 69 6f 6e 0a 23 20 63 61 75 73  rmutation.# caus
44f0: 65 73 20 74 68 65 20 65 66 66 65 63 74 69 76 65  es the effective
4500: 20 6c 69 6d 69 74 20 6f 6e 20 74 68 65 20 70 61   limit on the pa
4510: 67 65 2d 63 61 63 68 65 20 74 6f 20 62 65 20 6a  ge-cache to be j
4520: 75 73 74 20 32 34 20 70 61 67 65 73 2e 0a 23 0a  ust 24 pages..#.
4530: 74 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73  test_suite "mems
4540: 75 62 73 79 73 31 22 20 2d 64 65 73 63 72 69 70  ubsys1" -descrip
4550: 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 75  tion {.  Tests u
4560: 73 69 6e 67 20 70 72 65 2d 61 6c 6c 6f 63 61 74  sing pre-allocat
4570: 65 64 20 70 61 67 65 20 62 6c 6f 63 6b 73 0a 7d  ed page blocks.}
4580: 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74   -files [.  test
4590: 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b  _set $::allquick
45a0: 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 69  tests -exclude i
45b0: 6f 65 72 72 35 2e 74 65 73 74 20 6d 61 6c 6c 6f  oerr5.test mallo
45c0: 63 35 2e 74 65 73 74 20 6d 6d 61 70 31 2e 74 65  c5.test mmap1.te
45d0: 73 74 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  st.] -initialize
45e0: 20 7b 0a 20 20 74 65 73 74 5f 73 65 74 5f 63 6f   {.  test_set_co
45f0: 6e 66 69 67 5f 70 61 67 65 63 61 63 68 65 20 34  nfig_pagecache 4
4600: 30 39 36 20 32 34 0a 20 20 63 61 74 63 68 20 7b  096 24.  catch {
4610: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69  db close}.  sqli
4620: 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73  te3_shutdown.  s
4630: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
4640: 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f  e.  autoinstall_
4650: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d  test_functions.}
4660: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 74   -shutdown {.  t
4670: 65 73 74 5f 72 65 73 74 6f 72 65 5f 63 6f 6e 66  est_restore_conf
4680: 69 67 5f 70 61 67 65 63 61 63 68 65 0a 20 20 63  ig_pagecache.  c
4690: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
46a0: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
46b0: 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69  wn.  sqlite3_ini
46c0: 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e  tialize.  autoin
46d0: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
46e0: 69 6f 6e 73 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f  ions.}..# Run so
46f0: 6d 65 20 74 65 73 74 73 20 75 73 69 6e 67 20 70  me tests using p
4700: 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67  re-allocated pag
4710: 65 20 62 6c 6f 63 6b 73 2e 20 54 68 69 73 20 74  e blocks. This t
4720: 69 6d 65 0a 23 20 74 68 65 20 61 6c 6c 6f 63 61  ime.# the alloca
4730: 74 69 6f 6e 73 20 61 72 65 20 74 6f 6f 20 73 6d  tions are too sm
4740: 61 6c 6c 20 74 6f 20 75 73 65 20 69 6e 20 6d 6f  all to use in mo
4750: 73 74 20 63 61 73 65 73 2e 0a 23 0a 23 20 42 6f  st cases..#.# Bo
4760: 74 68 20 69 6f 65 72 72 35 2e 74 65 73 74 20 61  th ioerr5.test a
4770: 6e 64 20 6d 61 6c 6c 6f 63 35 2e 74 65 73 74 20  nd malloc5.test 
4780: 61 72 65 20 65 78 63 6c 75 64 65 64 20 62 65 63  are excluded bec
4790: 61 75 73 65 20 74 68 65 79 20 74 65 73 74 20 74  ause they test t
47a0: 68 65 0a 23 20 73 71 6c 69 74 65 33 5f 73 6f 66  he.# sqlite3_sof
47b0: 74 5f 68 65 61 70 5f 6c 69 6d 69 74 28 29 20 61  t_heap_limit() a
47c0: 6e 64 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61  nd sqlite3_relea
47d0: 73 65 5f 6d 65 6d 6f 72 79 28 29 20 66 75 6e 63  se_memory() func
47e0: 74 69 6f 6e 61 6c 69 74 79 2e 0a 23 20 54 68 69  tionality..# Thi
47f0: 73 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20  s functionality 
4800: 69 73 20 64 69 73 61 62 6c 65 64 20 69 66 20 61  is disabled if a
4810: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70   pre-allocated p
4820: 61 67 65 20 62 6c 6f 63 6b 20 69 73 20 70 72 6f  age block is pro
4830: 76 69 64 65 64 2e 0a 23 0a 74 65 73 74 5f 73 75  vided..#.test_su
4840: 69 74 65 20 22 6d 65 6d 73 75 62 73 79 73 32 22  ite "memsubsys2"
4850: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
4860: 20 20 54 65 73 74 73 20 75 73 69 6e 67 20 73 6d    Tests using sm
4870: 61 6c 6c 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  all pre-allocate
4880: 64 20 70 61 67 65 20 62 6c 6f 63 6b 73 0a 7d 20  d page blocks.} 
4890: 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f  -files [.  test_
48a0: 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74  set $::allquickt
48b0: 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 69 6f  ests -exclude io
48c0: 65 72 72 35 2e 74 65 73 74 20 6d 61 6c 6c 6f 63  err5.test malloc
48d0: 35 2e 74 65 73 74 0a 5d 20 2d 69 6e 69 74 69 61  5.test.] -initia
48e0: 6c 69 7a 65 20 7b 0a 20 20 74 65 73 74 5f 73 65  lize {.  test_se
48f0: 74 5f 63 6f 6e 66 69 67 5f 70 61 67 65 63 61 63  t_config_pagecac
4900: 68 65 20 35 31 32 20 35 0a 20 20 63 61 74 63 68  he 512 5.  catch
4910: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71   {db close}.  sq
4920: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
4930: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
4940: 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c  ize.  autoinstal
4950: 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73  l_test_functions
4960: 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20  .} -shutdown {. 
4970: 20 74 65 73 74 5f 72 65 73 74 6f 72 65 5f 63 6f   test_restore_co
4980: 6e 66 69 67 5f 70 61 67 65 63 61 63 68 65 0a 20  nfig_pagecache. 
4990: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
49a0: 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74  }.  sqlite3_shut
49b0: 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 69  down.  sqlite3_i
49c0: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f  nitialize.  auto
49d0: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
49e0: 63 74 69 6f 6e 73 0a 7d 0a 0a 23 20 52 75 6e 20  ctions.}..# Run 
49f0: 61 6c 6c 20 74 65 73 74 73 20 77 69 74 68 20 74  all tests with t
4a00: 68 65 20 6c 6f 6f 6b 61 73 69 64 65 20 61 6c 6c  he lookaside all
4a10: 6f 63 61 74 6f 72 20 64 69 73 61 62 6c 65 64 2e  ocator disabled.
4a20: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e  .#.test_suite "n
4a30: 6f 6c 6f 6f 6b 61 73 69 64 65 22 20 2d 64 65 73  olookaside" -des
4a40: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 4f 4f 4d  cription {.  OOM
4a50: 20 74 65 73 74 73 20 77 69 74 68 20 6c 6f 6f 6b   tests with look
4a60: 61 73 69 64 65 20 64 69 73 61 62 6c 65 64 0a 7d  aside disabled.}
4a70: 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20   -initialize {. 
4a80: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
4a90: 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74  }.  sqlite3_shut
4aa0: 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63  down.  sqlite3_c
4ab0: 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20  onfig_lookaside 
4ac0: 30 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e  0 0.  sqlite3_in
4ad0: 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69  itialize.  autoi
4ae0: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
4af0: 74 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f 77  tions.} -shutdow
4b00: 6e 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20  n {.  catch {db 
4b10: 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33  close}.  sqlite3
4b20: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69  _shutdown.  sqli
4b30: 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61  te3_config_looka
4b40: 73 69 64 65 20 31 30 30 20 35 30 30 0a 20 20 73  side 100 500.  s
4b50: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
4b60: 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f  e.  autoinstall_
4b70: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d  test_functions.}
4b80: 20 2d 66 69 6c 65 73 20 24 3a 3a 61 6c 6c 71 75   -files $::allqu
4b90: 69 63 6b 74 65 73 74 73 0a 0a 23 20 52 75 6e 20  icktests..# Run 
4ba0: 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 53 51  some tests in SQ
4bb0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47  LITE_CONFIG_SING
4bc0: 4c 45 54 48 52 45 41 44 20 6d 6f 64 65 2e 0a 23  LETHREAD mode..#
4bd0: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 73 69 6e  .test_suite "sin
4be0: 67 6c 65 74 68 72 65 61 64 22 20 2d 64 65 73 63  glethread" -desc
4bf0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74  ription {.  Test
4c00: 73 20 72 75 6e 20 69 6e 20 53 51 4c 49 54 45 5f  s run in SQLITE_
4c10: 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52  CONFIG_SINGLETHR
4c20: 45 41 44 20 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74  EAD mode.} -init
4c30: 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68  ialize {.  catch
4c40: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71   {db close}.  sq
4c50: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
4c60: 20 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f   catch {sqlite3_
4c70: 63 6f 6e 66 69 67 20 73 69 6e 67 6c 65 74 68 72  config singlethr
4c80: 65 61 64 7d 0a 20 20 73 71 6c 69 74 65 33 5f 69  ead}.  sqlite3_i
4c90: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f  nitialize.  auto
4ca0: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
4cb0: 63 74 69 6f 6e 73 0a 7d 20 2d 66 69 6c 65 73 20  ctions.} -files 
4cc0: 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20  {.  delete.test 
4cd0: 20 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20 20    delete2.test  
4ce0: 69 6e 73 65 72 74 2e 74 65 73 74 20 20 72 6f 6c  insert.test  rol
4cf0: 6c 62 61 63 6b 2e 74 65 73 74 20 20 73 65 6c 65  lback.test  sele
4d00: 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65 63  ct1.test.  selec
4d10: 74 32 2e 74 65 73 74 20 20 74 72 61 6e 73 2e 74  t2.test  trans.t
4d20: 65 73 74 20 20 20 20 75 70 64 61 74 65 2e 74 65  est    update.te
4d30: 73 74 20 20 76 61 63 75 75 6d 2e 74 65 73 74 20  st  vacuum.test 
4d40: 20 20 20 74 79 70 65 73 2e 74 65 73 74 0a 20 20     types.test.  
4d50: 74 79 70 65 73 32 2e 74 65 73 74 20 20 20 74 79  types2.test   ty
4d60: 70 65 73 33 2e 74 65 73 74 0a 7d 20 2d 73 68 75  pes3.test.} -shu
4d70: 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68 20  tdown {.  catch 
4d80: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
4d90: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
4da0: 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 63  catch {sqlite3_c
4db0: 6f 6e 66 69 67 20 73 65 72 69 61 6c 69 7a 65 64  onfig serialized
4dc0: 7d 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  }.  sqlite3_init
4dd0: 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73  ialize.  autoins
4de0: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
4df0: 6f 6e 73 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74  ons.}..test_suit
4e00: 65 20 22 6e 6f 6d 75 74 65 78 22 20 2d 64 65 73  e "nomutex" -des
4e10: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73  cription {.  Tes
4e20: 74 73 20 72 75 6e 20 77 69 74 68 20 74 68 65 20  ts run with the 
4e30: 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 55 4c 54  SQLITE_OPEN_MULT
4e40: 49 54 48 52 45 41 44 45 44 20 66 6c 61 67 20 70  ITHREADED flag p
4e50: 61 73 73 65 64 20 74 6f 20 73 71 6c 69 74 65 33  assed to sqlite3
4e60: 5f 6f 70 65 6e 28 29 2e 0a 7d 20 2d 69 6e 69 74  _open()..} -init
4e70: 69 61 6c 69 7a 65 20 7b 0a 20 20 72 65 6e 61 6d  ialize {.  renam
4e80: 65 20 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65  e sqlite3 sqlite
4e90: 33 5f 6e 6f 6d 75 74 65 78 0a 20 20 70 72 6f 63  3_nomutex.  proc
4ea0: 20 73 71 6c 69 74 65 33 20 7b 61 72 67 73 7d 20   sqlite3 {args} 
4eb0: 7b 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e  {.    if {[strin
4ec0: 67 20 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20  g range [lindex 
4ed0: 24 61 72 67 73 20 30 5d 20 30 20 30 5d 20 6e 65  $args 0] 0 0] ne
4ee0: 20 22 2d 22 7d 20 7b 0a 20 20 20 20 20 20 6c 61   "-"} {.      la
4ef0: 70 70 65 6e 64 20 61 72 67 73 20 2d 66 75 6c 6c  ppend args -full
4f00: 6d 75 74 65 78 20 30 20 2d 6e 6f 6d 75 74 65 78  mutex 0 -nomutex
4f10: 20 31 0a 20 20 20 20 7d 0a 20 20 20 20 75 70 6c   1.    }.    upl
4f20: 65 76 65 6c 20 5b 63 6f 6e 63 61 74 20 73 71 6c  evel [concat sql
4f30: 69 74 65 33 5f 6e 6f 6d 75 74 65 78 20 24 61 72  ite3_nomutex $ar
4f40: 67 73 5d 0a 20 20 7d 0a 7d 20 2d 66 69 6c 65 73  gs].  }.} -files
4f50: 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74   {.  delete.test
4f60: 20 20 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20     delete2.test 
4f70: 20 69 6e 73 65 72 74 2e 74 65 73 74 20 20 72 6f   insert.test  ro
4f80: 6c 6c 62 61 63 6b 2e 74 65 73 74 20 20 73 65 6c  llback.test  sel
4f90: 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65  ect1.test.  sele
4fa0: 63 74 32 2e 74 65 73 74 20 20 74 72 61 6e 73 2e  ct2.test  trans.
4fb0: 74 65 73 74 20 20 20 20 75 70 64 61 74 65 2e 74  test    update.t
4fc0: 65 73 74 20 20 76 61 63 75 75 6d 2e 74 65 73 74  est  vacuum.test
4fd0: 20 20 20 20 74 79 70 65 73 2e 74 65 73 74 0a 20      types.test. 
4fe0: 20 74 79 70 65 73 32 2e 74 65 73 74 20 20 20 74   types2.test   t
4ff0: 79 70 65 73 33 2e 74 65 73 74 0a 7d 20 2d 73 68  ypes3.test.} -sh
5000: 75 74 64 6f 77 6e 20 7b 0a 20 20 72 65 6e 61 6d  utdown {.  renam
5010: 65 20 73 71 6c 69 74 65 33 20 7b 7d 0a 20 20 72  e sqlite3 {}.  r
5020: 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 5f 6e 6f  ename sqlite3_no
5030: 6d 75 74 65 78 20 73 71 6c 69 74 65 33 0a 7d 0a  mutex sqlite3.}.
5040: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74  .# Run some test
5050: 73 20 69 6e 20 53 51 4c 49 54 45 5f 43 4f 4e 46  s in SQLITE_CONF
5060: 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 20 6d  IG_MULTITHREAD m
5070: 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74  ode..#.test_suit
5080: 65 20 22 6d 75 6c 74 69 74 68 72 65 61 64 22 20  e "multithread" 
5090: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
50a0: 20 54 65 73 74 73 20 72 75 6e 20 69 6e 20 53 51   Tests run in SQ
50b0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54  LITE_CONFIG_MULT
50c0: 49 54 48 52 45 41 44 20 6d 6f 64 65 0a 7d 20 2d  ITHREAD mode.} -
50d0: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63  initialize {.  c
50e0: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
50f0: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
5100: 77 6e 0a 20 20 63 61 74 63 68 20 7b 73 71 6c 69  wn.  catch {sqli
5110: 74 65 33 5f 63 6f 6e 66 69 67 20 6d 75 6c 74 69  te3_config multi
5120: 74 68 72 65 61 64 7d 0a 20 20 73 71 6c 69 74 65  thread}.  sqlite
5130: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61  3_initialize.  a
5140: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
5150: 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 66 69 6c  functions.} -fil
5160: 65 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65  es {.  delete.te
5170: 73 74 20 20 20 64 65 6c 65 74 65 32 2e 74 65 73  st   delete2.tes
5180: 74 20 20 69 6e 73 65 72 74 2e 74 65 73 74 20 20  t  insert.test  
5190: 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 20 73  rollback.test  s
51a0: 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65  elect1.test.  se
51b0: 6c 65 63 74 32 2e 74 65 73 74 20 20 74 72 61 6e  lect2.test  tran
51c0: 73 2e 74 65 73 74 20 20 20 20 75 70 64 61 74 65  s.test    update
51d0: 2e 74 65 73 74 20 20 76 61 63 75 75 6d 2e 74 65  .test  vacuum.te
51e0: 73 74 20 20 20 20 74 79 70 65 73 2e 74 65 73 74  st    types.test
51f0: 0a 20 20 74 79 70 65 73 32 2e 74 65 73 74 20 20  .  types2.test  
5200: 20 74 79 70 65 73 33 2e 74 65 73 74 20 20 20 73   types3.test   s
5210: 6f 72 74 34 2e 74 65 73 74 0a 7d 20 2d 73 68 75  ort4.test.} -shu
5220: 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68 20  tdown {.  catch 
5230: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
5240: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
5250: 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 63  catch {sqlite3_c
5260: 6f 6e 66 69 67 20 73 65 72 69 61 6c 69 7a 65 64  onfig serialized
5270: 7d 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  }.  sqlite3_init
5280: 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73  ialize.  autoins
5290: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
52a0: 6f 6e 73 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d  ons.}..# Run som
52b0: 65 20 74 65 73 74 73 20 69 6e 20 53 51 4c 49 54  e tests in SQLIT
52c0: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
52d0: 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75   mode..#.test_su
52e0: 69 74 65 20 22 66 75 6c 6c 6d 75 74 65 78 22 20  ite "fullmutex" 
52f0: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
5300: 20 54 65 73 74 73 20 72 75 6e 20 69 6e 20 53 51   Tests run in SQ
5310: 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55  LITE_OPEN_FULLMU
5320: 54 45 58 20 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74  TEX mode.} -init
5330: 69 61 6c 69 7a 65 20 7b 0a 20 20 72 65 6e 61 6d  ialize {.  renam
5340: 65 20 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65  e sqlite3 sqlite
5350: 33 5f 66 75 6c 6c 6d 75 74 65 78 0a 20 20 70 72  3_fullmutex.  pr
5360: 6f 63 20 73 71 6c 69 74 65 33 20 7b 61 72 67 73  oc sqlite3 {args
5370: 7d 20 7b 0a 20 20 20 20 69 66 20 7b 5b 73 74 72  } {.    if {[str
5380: 69 6e 67 20 72 61 6e 67 65 20 5b 6c 69 6e 64 65  ing range [linde
5390: 78 20 24 61 72 67 73 20 30 5d 20 30 20 30 5d 20  x $args 0] 0 0] 
53a0: 6e 65 20 22 2d 22 7d 20 7b 0a 20 20 20 20 20 20  ne "-"} {.      
53b0: 6c 61 70 70 65 6e 64 20 61 72 67 73 20 2d 6e 6f  lappend args -no
53c0: 6d 75 74 65 78 20 30 20 2d 66 75 6c 6c 6d 75 74  mutex 0 -fullmut
53d0: 65 78 20 31 0a 20 20 20 20 7d 0a 20 20 20 20 75  ex 1.    }.    u
53e0: 70 6c 65 76 65 6c 20 5b 63 6f 6e 63 61 74 20 73  plevel [concat s
53f0: 71 6c 69 74 65 33 5f 66 75 6c 6c 6d 75 74 65 78  qlite3_fullmutex
5400: 20 24 61 72 67 73 5d 0a 20 20 7d 0a 7d 20 2d 66   $args].  }.} -f
5410: 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e  iles {.  delete.
5420: 74 65 73 74 20 20 20 64 65 6c 65 74 65 32 2e 74  test   delete2.t
5430: 65 73 74 20 20 69 6e 73 65 72 74 2e 74 65 73 74  est  insert.test
5440: 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20    rollback.test 
5450: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20   select1.test.  
5460: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 20 74 72  select2.test  tr
5470: 61 6e 73 2e 74 65 73 74 20 20 20 20 75 70 64 61  ans.test    upda
5480: 74 65 2e 74 65 73 74 20 20 76 61 63 75 75 6d 2e  te.test  vacuum.
5490: 74 65 73 74 20 20 20 20 74 79 70 65 73 2e 74 65  test    types.te
54a0: 73 74 0a 20 20 74 79 70 65 73 32 2e 74 65 73 74  st.  types2.test
54b0: 20 20 20 74 79 70 65 73 33 2e 74 65 73 74 0a 7d     types3.test.}
54c0: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 72   -shutdown {.  r
54d0: 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 20 7b 7d  ename sqlite3 {}
54e0: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
54f0: 33 5f 66 75 6c 6c 6d 75 74 65 78 20 73 71 6c 69  3_fullmutex sqli
5500: 74 65 33 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d  te3.}..# Run som
5510: 65 20 74 65 73 74 73 20 75 73 69 6e 67 20 74 68  e tests using th
5520: 65 20 22 6f 6e 65 66 69 6c 65 22 20 64 65 6d 6f  e "onefile" demo
5530: 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22  ..#.test_suite "
5540: 6f 6e 65 66 69 6c 65 22 20 2d 64 65 73 63 72 69  onefile" -descri
5550: 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 73 6f  ption {.  Run so
5560: 6d 65 20 74 65 73 74 73 20 75 73 69 6e 67 20 74  me tests using t
5570: 68 65 20 22 74 65 73 74 5f 6f 6e 65 66 69 6c 65  he "test_onefile
5580: 2e 63 22 20 64 65 6d 6f 0a 7d 20 2d 69 6e 69 74  .c" demo.} -init
5590: 69 61 6c 69 7a 65 20 7b 0a 20 20 72 65 6e 61 6d  ialize {.  renam
55a0: 65 20 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65  e sqlite3 sqlite
55b0: 33 5f 6f 6e 65 66 69 6c 65 0a 20 20 70 72 6f 63  3_onefile.  proc
55c0: 20 73 71 6c 69 74 65 33 20 7b 61 72 67 73 7d 20   sqlite3 {args} 
55d0: 7b 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e  {.    if {[strin
55e0: 67 20 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20  g range [lindex 
55f0: 24 61 72 67 73 20 30 5d 20 30 20 30 5d 20 6e 65  $args 0] 0 0] ne
5600: 20 22 2d 22 7d 20 7b 0a 20 20 20 20 20 20 6c 61   "-"} {.      la
5610: 70 70 65 6e 64 20 61 72 67 73 20 2d 76 66 73 20  ppend args -vfs 
5620: 66 73 0a 20 20 20 20 7d 0a 20 20 20 20 75 70 6c  fs.    }.    upl
5630: 65 76 65 6c 20 5b 63 6f 6e 63 61 74 20 73 71 6c  evel [concat sql
5640: 69 74 65 33 5f 6f 6e 65 66 69 6c 65 20 24 61 72  ite3_onefile $ar
5650: 67 73 5d 0a 20 20 7d 0a 7d 20 2d 66 69 6c 65 73  gs].  }.} -files
5660: 20 7b 0a 20 20 63 6f 6e 66 6c 69 63 74 2e 74 65   {.  conflict.te
5670: 73 74 20 20 69 6e 73 65 72 74 2e 74 65 73 74 20  st  insert.test 
5680: 20 20 69 6e 73 65 72 74 32 2e 74 65 73 74 20 20    insert2.test  
5690: 69 6e 73 65 72 74 33 2e 74 65 73 74 0a 20 20 72  insert3.test.  r
56a0: 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 20 73 65  ollback.test  se
56b0: 6c 65 63 74 31 2e 74 65 73 74 20 20 73 65 6c 65  lect1.test  sele
56c0: 63 74 32 2e 74 65 73 74 20 20 73 65 6c 65 63 74  ct2.test  select
56d0: 33 2e 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f  3.test.} -shutdo
56e0: 77 6e 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  wn {.  rename sq
56f0: 6c 69 74 65 33 20 7b 7d 0a 20 20 72 65 6e 61 6d  lite3 {}.  renam
5700: 65 20 73 71 6c 69 74 65 33 5f 6f 6e 65 66 69 6c  e sqlite3_onefil
5710: 65 20 73 71 6c 69 74 65 33 0a 7d 0a 0a 23 20 52  e sqlite3.}..# R
5720: 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 75 73  un some tests us
5730: 69 6e 67 20 55 54 46 2d 31 36 20 64 61 74 61 62  ing UTF-16 datab
5740: 61 73 65 73 2e 0a 23 0a 74 65 73 74 5f 73 75 69  ases..#.test_sui
5750: 74 65 20 22 75 74 66 31 36 22 20 2d 64 65 73 63  te "utf16" -desc
5760: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20  ription {.  Run 
5770: 74 65 73 74 73 20 75 73 69 6e 67 20 55 54 46 2d  tests using UTF-
5780: 31 36 20 64 61 74 61 62 61 73 65 73 0a 7d 20 2d  16 databases.} -
5790: 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d  presql {.  pragm
57a0: 61 20 65 6e 63 6f 64 69 6e 67 20 3d 20 27 55 54  a encoding = 'UT
57b0: 46 2d 31 36 27 0a 7d 20 2d 66 69 6c 65 73 20 7b  F-16'.} -files {
57c0: 0a 20 20 20 20 61 6c 74 65 72 2e 74 65 73 74 20  .    alter.test 
57d0: 61 6c 74 65 72 33 2e 74 65 73 74 0a 20 20 20 20  alter3.test.    
57e0: 61 6e 61 6c 79 7a 65 2e 74 65 73 74 20 61 6e 61  analyze.test ana
57f0: 6c 79 7a 65 33 2e 74 65 73 74 20 61 6e 61 6c 79  lyze3.test analy
5800: 7a 65 34 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  ze4.test analyze
5810: 35 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 36 2e  5.test analyze6.
5820: 74 65 73 74 0a 20 20 20 20 61 6e 61 6c 79 7a 65  test.    analyze
5830: 37 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 38 2e  7.test analyze8.
5840: 74 65 73 74 20 61 6e 61 6c 79 7a 65 39 2e 74 65  test analyze9.te
5850: 73 74 20 61 6e 61 6c 79 7a 65 41 2e 74 65 73 74  st analyzeA.test
5860: 20 61 6e 61 6c 79 7a 65 42 2e 74 65 73 74 0a 20   analyzeB.test. 
5870: 20 20 20 61 75 74 68 2e 74 65 73 74 20 62 69 6e     auth.test bin
5880: 64 2e 74 65 73 74 20 62 6c 6f 62 2e 74 65 73 74  d.test blob.test
5890: 20 63 61 70 69 32 2e 74 65 73 74 20 63 61 70 69   capi2.test capi
58a0: 33 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 31 2e  3.test collate1.
58b0: 74 65 73 74 0a 20 20 20 20 63 6f 6c 6c 61 74 65  test.    collate
58c0: 32 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 33 2e  2.test collate3.
58d0: 74 65 73 74 20 63 6f 6c 6c 61 74 65 34 2e 74 65  test collate4.te
58e0: 73 74 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74  st collate5.test
58f0: 20 63 6f 6c 6c 61 74 65 36 2e 74 65 73 74 0a 20   collate6.test. 
5900: 20 20 20 63 6f 6e 66 6c 69 63 74 2e 74 65 73 74     conflict.test
5910: 20 64 61 74 65 2e 74 65 73 74 20 64 65 6c 65 74   date.test delet
5920: 65 2e 74 65 73 74 20 65 78 70 72 2e 74 65 73 74  e.test expr.test
5930: 20 66 6b 65 79 31 2e 74 65 73 74 20 66 75 6e 63   fkey1.test func
5940: 2e 74 65 73 74 0a 20 20 20 20 68 6f 6f 6b 2e 74  .test.    hook.t
5950: 65 73 74 20 69 6e 64 65 78 2e 74 65 73 74 20 69  est index.test i
5960: 6e 73 65 72 74 32 2e 74 65 73 74 20 69 6e 73 65  nsert2.test inse
5970: 72 74 2e 74 65 73 74 20 69 6e 74 65 72 72 75 70  rt.test interrup
5980: 74 2e 74 65 73 74 20 69 6e 2e 74 65 73 74 0a 20  t.test in.test. 
5990: 20 20 20 69 6e 74 70 6b 65 79 2e 74 65 73 74 20     intpkey.test 
59a0: 69 6f 65 72 72 2e 74 65 73 74 20 6a 6f 69 6e 32  ioerr.test join2
59b0: 2e 74 65 73 74 20 6a 6f 69 6e 2e 74 65 73 74 20  .test join.test 
59c0: 6c 61 73 74 69 6e 73 65 72 74 2e 74 65 73 74 0a  lastinsert.test.
59d0: 20 20 20 20 6c 61 73 74 73 74 6d 74 63 68 61 6e      laststmtchan
59e0: 67 65 73 2e 74 65 73 74 20 6c 69 6d 69 74 2e 74  ges.test limit.t
59f0: 65 73 74 20 6c 6f 63 6b 32 2e 74 65 73 74 20 6c  est lock2.test l
5a00: 6f 63 6b 2e 74 65 73 74 20 6d 61 69 6e 2e 74 65  ock.test main.te
5a10: 73 74 20 0a 20 20 20 20 6d 65 6d 64 62 2e 74 65  st .    memdb.te
5a20: 73 74 20 6d 69 6e 6d 61 78 2e 74 65 73 74 20 6d  st minmax.test m
5a30: 69 73 63 31 2e 74 65 73 74 20 6d 69 73 63 32 2e  isc1.test misc2.
5a40: 74 65 73 74 20 6d 69 73 63 33 2e 74 65 73 74 20  test misc3.test 
5a50: 6e 6f 74 6e 75 6c 6c 2e 74 65 73 74 0a 20 20 20  notnull.test.   
5a60: 20 6e 75 6c 6c 2e 74 65 73 74 20 70 72 6f 67 72   null.test progr
5a70: 65 73 73 2e 74 65 73 74 20 71 75 6f 74 65 2e 74  ess.test quote.t
5a80: 65 73 74 20 72 6f 77 69 64 2e 74 65 73 74 20 73  est rowid.test s
5a90: 65 6c 65 63 74 31 2e 74 65 73 74 20 73 65 6c 65  elect1.test sele
5aa0: 63 74 32 2e 74 65 73 74 0a 20 20 20 20 73 65 6c  ct2.test.    sel
5ab0: 65 63 74 33 2e 74 65 73 74 20 73 65 6c 65 63 74  ect3.test select
5ac0: 34 2e 74 65 73 74 20 73 65 6c 65 63 74 35 2e 74  4.test select5.t
5ad0: 65 73 74 20 73 65 6c 65 63 74 36 2e 74 65 73 74  est select6.test
5ae0: 20 73 6f 72 74 2e 74 65 73 74 20 0a 20 20 20 20   sort.test .    
5af0: 73 75 62 73 65 6c 65 63 74 2e 74 65 73 74 20 74  subselect.test t
5b00: 61 62 6c 65 61 70 69 2e 74 65 73 74 20 74 61 62  ableapi.test tab
5b10: 6c 65 2e 74 65 73 74 20 74 65 6d 70 74 61 62 6c  le.test temptabl
5b20: 65 2e 74 65 73 74 0a 20 20 20 20 74 72 61 63 65  e.test.    trace
5b30: 2e 74 65 73 74 20 74 72 69 67 67 65 72 31 2e 74  .test trigger1.t
5b40: 65 73 74 20 74 72 69 67 67 65 72 32 2e 74 65 73  est trigger2.tes
5b50: 74 20 74 72 69 67 67 65 72 33 2e 74 65 73 74 0a  t trigger3.test.
5b60: 20 20 20 20 74 72 69 67 67 65 72 34 2e 74 65 73      trigger4.tes
5b70: 74 20 74 79 70 65 73 32 2e 74 65 73 74 20 74 79  t types2.test ty
5b80: 70 65 73 2e 74 65 73 74 20 75 6e 69 71 75 65 2e  pes.test unique.
5b90: 74 65 73 74 20 75 70 64 61 74 65 2e 74 65 73 74  test update.test
5ba0: 0a 20 20 20 20 76 61 63 75 75 6d 2e 74 65 73 74  .    vacuum.test
5bb0: 20 76 69 65 77 2e 74 65 73 74 20 77 68 65 72 65   view.test where
5bc0: 2e 74 65 73 74 0a 20 20 20 20 62 65 73 74 69 6e  .test.    bestin
5bd0: 64 65 78 31 2e 74 65 73 74 0a 7d 0a 0a 23 20 52  dex1.test.}..# R
5be0: 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e  un some tests in
5bf0: 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 69   exclusive locki
5c00: 6e 67 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f  ng mode..#.test_
5c10: 73 75 69 74 65 20 22 65 78 63 6c 75 73 69 76 65  suite "exclusive
5c20: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
5c30: 0a 20 20 52 75 6e 20 74 65 73 74 73 20 69 6e 20  .  Run tests in 
5c40: 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 69 6e  exclusive lockin
5c50: 67 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71  g mode..} -presq
5c60: 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6c 6f 63  l {.  pragma loc
5c70: 6b 69 6e 67 5f 6d 6f 64 65 20 3d 20 27 65 78 63  king_mode = 'exc
5c80: 6c 75 73 69 76 65 27 0a 7d 20 2d 66 69 6c 65 73  lusive'.} -files
5c90: 20 7b 0a 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65   {.  rollback.te
5ca0: 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20  st select1.test 
5cb0: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 0a 20 20  select2.test .  
5cc0: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65 72  malloc.test ioer
5cd0: 72 2e 74 65 73 74 0a 7d 20 0a 0a 23 20 52 75 6e  r.test.} ..# Run
5ce0: 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 65   some tests in e
5cf0: 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 69 6e 67  xclusive locking
5d00: 20 6d 6f 64 65 20 77 69 74 68 20 74 72 75 6e 63   mode with trunc
5d10: 61 74 65 64 20 6a 6f 75 72 6e 61 6c 73 2e 0a 23  ated journals..#
5d20: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 65 78 63  .test_suite "exc
5d30: 6c 75 73 69 76 65 2d 74 72 75 6e 63 61 74 65 22  lusive-truncate"
5d40: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
5d50: 20 20 52 75 6e 20 74 65 73 74 73 20 69 6e 20 65    Run tests in e
5d60: 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 69 6e 67  xclusive locking
5d70: 20 6d 6f 64 65 20 61 6e 64 20 74 72 75 6e 63 61   mode and trunca
5d80: 74 65 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  te journal mode.
5d90: 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70  .} -presql {.  p
5da0: 72 61 67 6d 61 20 6c 6f 63 6b 69 6e 67 5f 6d 6f  ragma locking_mo
5db0: 64 65 20 3d 20 27 65 78 63 6c 75 73 69 76 65 27  de = 'exclusive'
5dc0: 3b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e  ;.  pragma journ
5dd0: 61 6c 5f 6d 6f 64 65 20 3d 20 54 52 55 4e 43 41  al_mode = TRUNCA
5de0: 54 45 3b 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  TE;.} -files {. 
5df0: 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64 65 6c   delete.test del
5e00: 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65 72 74  ete2.test insert
5e10: 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74  .test rollback.t
5e20: 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73 74  est select1.test
5e30: 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20  .  select2.test 
5e40: 75 70 64 61 74 65 2e 74 65 73 74 20 6d 61 6c 6c  update.test mall
5e50: 6f 63 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65  oc.test ioerr.te
5e60: 73 74 0a 7d 20 0a 0a 23 20 52 75 6e 20 73 6f 6d  st.} ..# Run som
5e70: 65 20 74 65 73 74 73 20 69 6e 20 70 65 72 73 69  e tests in persi
5e80: 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f  stent journal mo
5e90: 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65  de..#.test_suite
5ea0: 20 22 70 65 72 73 69 73 74 65 6e 74 5f 6a 6f 75   "persistent_jou
5eb0: 72 6e 61 6c 22 20 2d 64 65 73 63 72 69 70 74 69  rnal" -descripti
5ec0: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73  on {.  Run tests
5ed0: 20 69 6e 20 70 65 72 73 69 73 74 65 6e 74 2d 6a   in persistent-j
5ee0: 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d  ournal mode..} -
5ef0: 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d  presql {.  pragm
5f00: 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d  a journal_mode =
5f10: 20 70 65 72 73 69 73 74 0a 7d 20 2d 66 69 6c 65   persist.} -file
5f20: 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73  s {.  delete.tes
5f30: 74 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20 69  t delete2.test i
5f40: 6e 73 65 72 74 2e 74 65 73 74 20 72 6f 6c 6c 62  nsert.test rollb
5f50: 61 63 6b 2e 74 65 73 74 20 73 65 6c 65 63 74 31  ack.test select1
5f60: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
5f70: 74 65 73 74 20 74 72 61 6e 73 2e 74 65 73 74 20  test trans.test 
5f80: 75 70 64 61 74 65 2e 74 65 73 74 20 76 61 63 75  update.test vacu
5f90: 75 6d 2e 74 65 73 74 20 0a 7d 0a 0a 23 20 52 75  um.test .}..# Ru
5fa0: 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20  n some tests in 
5fb0: 74 72 75 6e 63 61 74 69 6e 67 20 6a 6f 75 72 6e  truncating journ
5fc0: 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f  al mode..#.test_
5fd0: 73 75 69 74 65 20 22 74 72 75 6e 63 61 74 65 5f  suite "truncate_
5fe0: 6a 6f 75 72 6e 61 6c 22 20 2d 64 65 73 63 72 69  journal" -descri
5ff0: 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65  ption {.  Run te
6000: 73 74 73 20 69 6e 20 70 65 72 73 69 73 74 65 6e  sts in persisten
6010: 74 2d 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a  t-journal mode..
6020: 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72  } -presql {.  pr
6030: 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64  agma journal_mod
6040: 65 20 3d 20 74 72 75 6e 63 61 74 65 0a 7d 20 2d  e = truncate.} -
6050: 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65  files {.  delete
6060: 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65  .test delete2.te
6070: 73 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20 72  st insert.test r
6080: 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c  ollback.test sel
6090: 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65  ect1.test.  sele
60a0: 63 74 32 2e 74 65 73 74 20 74 72 61 6e 73 2e 74  ct2.test trans.t
60b0: 65 73 74 20 75 70 64 61 74 65 2e 74 65 73 74 20  est update.test 
60c0: 76 61 63 75 75 6d 2e 74 65 73 74 20 0a 20 20 6d  vacuum.test .  m
60d0: 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65 72 72  alloc.test ioerr
60e0: 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75 6e 20 73  .test.}..# Run s
60f0: 6f 6d 65 20 65 72 72 6f 72 20 74 65 73 74 73 20  ome error tests 
6100: 69 6e 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f  in persistent jo
6110: 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65  urnal mode..#.te
6120: 73 74 5f 73 75 69 74 65 20 22 70 65 72 73 69 73  st_suite "persis
6130: 74 65 6e 74 5f 6a 6f 75 72 6e 61 6c 5f 65 72 72  tent_journal_err
6140: 6f 72 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  or" -description
6150: 20 7b 0a 20 20 52 75 6e 20 6d 61 6c 6c 6f 63 2e   {.  Run malloc.
6160: 74 65 73 74 20 61 6e 64 20 69 6f 65 72 72 2e 74  test and ioerr.t
6170: 65 73 74 20 69 6e 20 70 65 72 73 69 73 74 65 6e  est in persisten
6180: 74 2d 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a  t-journal mode..
6190: 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72  } -presql {.  pr
61a0: 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64  agma journal_mod
61b0: 65 20 3d 20 70 65 72 73 69 73 74 0a 7d 20 2d 66  e = persist.} -f
61c0: 69 6c 65 73 20 7b 0a 20 20 6d 61 6c 6c 6f 63 2e  iles {.  malloc.
61d0: 74 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a  test ioerr.test.
61e0: 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65  }..# Run some te
61f0: 73 74 73 20 69 6e 20 6e 6f 20 6a 6f 75 72 6e 61  sts in no journa
6200: 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73  l mode..#.test_s
6210: 75 69 74 65 20 22 6e 6f 5f 6a 6f 75 72 6e 61 6c  uite "no_journal
6220: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
6230: 0a 20 20 52 75 6e 20 74 65 73 74 73 20 69 6e 20  .  Run tests in 
6240: 6e 6f 2d 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  no-journal mode.
6250: 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70  .} -presql {.  p
6260: 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f  ragma journal_mo
6270: 64 65 20 3d 20 70 65 72 73 69 73 74 0a 7d 20 2d  de = persist.} -
6280: 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65  files {.  delete
6290: 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65  .test delete2.te
62a0: 73 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20 72  st insert.test r
62b0: 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c  ollback.test sel
62c0: 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65  ect1.test.  sele
62d0: 63 74 32 2e 74 65 73 74 20 74 72 61 6e 73 2e 74  ct2.test trans.t
62e0: 65 73 74 20 75 70 64 61 74 65 2e 74 65 73 74 20  est update.test 
62f0: 76 61 63 75 75 6d 2e 74 65 73 74 20 0a 7d 0a 0a  vacuum.test .}..
6300: 23 20 52 75 6e 20 73 6f 6d 65 20 65 72 72 6f 72  # Run some error
6310: 20 74 65 73 74 73 20 69 6e 20 6e 6f 20 6a 6f 75   tests in no jou
6320: 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65 73  rnal mode..#.tes
6330: 74 5f 73 75 69 74 65 20 22 6e 6f 5f 6a 6f 75 72  t_suite "no_jour
6340: 6e 61 6c 5f 65 72 72 6f 72 22 20 2d 64 65 73 63  nal_error" -desc
6350: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20  ription {.  Run 
6360: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 61 6e 64 20  malloc.test and 
6370: 69 6f 65 72 72 2e 74 65 73 74 20 69 6e 20 6e 6f  ioerr.test in no
6380: 2d 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 7d  -journal mode..}
6390: 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61   -presql {.  pra
63a0: 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65  gma journal_mode
63b0: 20 3d 20 70 65 72 73 69 73 74 0a 7d 20 2d 66 69   = persist.} -fi
63c0: 6c 65 73 20 7b 0a 20 20 6d 61 6c 6c 6f 63 2e 74  les {.  malloc.t
63d0: 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d  est ioerr.test.}
63e0: 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 63 72 61  ..# Run some cra
63f0: 73 68 2d 74 65 73 74 73 20 69 6e 20 61 75 74 6f  sh-tests in auto
6400: 76 61 63 75 75 6d 20 6d 6f 64 65 2e 0a 23 0a 74  vacuum mode..#.t
6410: 65 73 74 5f 73 75 69 74 65 20 22 61 75 74 6f 76  est_suite "autov
6420: 61 63 75 75 6d 5f 63 72 61 73 68 22 20 2d 64 65  acuum_crash" -de
6430: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75  scription {.  Ru
6440: 6e 20 63 72 61 73 68 2e 74 65 73 74 20 69 6e 20  n crash.test in 
6450: 61 75 74 6f 76 61 63 75 75 6d 20 6d 6f 64 65 2e  autovacuum mode.
6460: 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70  .} -presql {.  p
6470: 72 61 67 6d 61 20 61 75 74 6f 5f 76 61 63 75 75  ragma auto_vacuu
6480: 6d 20 3d 20 31 0a 7d 20 2d 66 69 6c 65 73 20 63  m = 1.} -files c
6490: 72 61 73 68 2e 74 65 73 74 0a 0a 23 20 52 75 6e  rash.test..# Run
64a0: 20 73 6f 6d 65 20 69 6f 65 72 72 2d 74 65 73 74   some ioerr-test
64b0: 73 20 69 6e 20 61 75 74 6f 76 61 63 75 75 6d 20  s in autovacuum 
64c0: 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69  mode..#.test_sui
64d0: 74 65 20 22 61 75 74 6f 76 61 63 75 75 6d 5f 69  te "autovacuum_i
64e0: 6f 65 72 72 22 20 2d 64 65 73 63 72 69 70 74 69  oerr" -descripti
64f0: 6f 6e 20 7b 0a 20 20 52 75 6e 20 69 6f 65 72 72  on {.  Run ioerr
6500: 2e 74 65 73 74 20 69 6e 20 61 75 74 6f 76 61 63  .test in autovac
6510: 75 75 6d 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65  uum mode..} -pre
6520: 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 61  sql {.  pragma a
6530: 75 74 6f 5f 76 61 63 75 75 6d 20 3d 20 31 0a 7d  uto_vacuum = 1.}
6540: 20 2d 66 69 6c 65 73 20 69 6f 65 72 72 2e 74 65   -files ioerr.te
6550: 73 74 0a 0a 23 20 52 75 6e 20 74 65 73 74 73 20  st..# Run tests 
6560: 77 69 74 68 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72  with an in-memor
6570: 79 20 6a 6f 75 72 6e 61 6c 2e 0a 23 0a 74 65 73  y journal..#.tes
6580: 74 5f 73 75 69 74 65 20 22 69 6e 6d 65 6d 6f 72  t_suite "inmemor
6590: 79 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64 65 73 63  y_journal" -desc
65a0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20  ription {.  Run 
65b0: 74 65 73 74 73 20 77 69 74 68 20 61 6e 20 69 6e  tests with an in
65c0: 2d 6d 65 6d 6f 72 79 20 6a 6f 75 72 6e 61 6c 20  -memory journal 
65d0: 66 69 6c 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20  file..} -presql 
65e0: 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e  {.  pragma journ
65f0: 61 6c 5f 6d 6f 64 65 20 3d 20 27 6d 65 6d 6f 72  al_mode = 'memor
6600: 79 27 0a 7d 20 2d 66 69 6c 65 73 20 5b 74 65 73  y'.} -files [tes
6610: 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63  t_set $::allquic
6620: 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20  ktests -exclude 
6630: 7b 0a 20 20 23 20 45 78 63 6c 75 64 65 20 61 6c  {.  # Exclude al
6640: 6c 20 74 65 73 74 73 20 74 68 61 74 20 73 69 6d  l tests that sim
6650: 75 6c 61 74 65 20 49 4f 20 65 72 72 6f 72 73 2e  ulate IO errors.
6660: 0a 20 20 61 75 74 6f 76 61 63 75 75 6d 5f 69 6f  .  autovacuum_io
6670: 65 72 72 32 2e 74 65 73 74 20 63 66 66 61 75 6c  err2.test cffaul
6680: 74 2e 74 65 73 74 20 69 6e 63 72 76 61 63 75 75  t.test incrvacuu
6690: 6d 5f 69 6f 65 72 72 2e 74 65 73 74 20 69 6f 65  m_ioerr.test ioe
66a0: 72 72 2e 74 65 73 74 0a 20 20 69 6f 65 72 72 2e  rr.test.  ioerr.
66b0: 74 65 73 74 20 69 6f 65 72 72 32 2e 74 65 73 74  test ioerr2.test
66c0: 20 69 6f 65 72 72 33 2e 74 65 73 74 20 69 6f 65   ioerr3.test ioe
66d0: 72 72 34 2e 74 65 73 74 20 69 6f 65 72 72 35 2e  rr4.test ioerr5.
66e0: 74 65 73 74 0a 20 20 76 61 63 75 75 6d 33 2e 74  test.  vacuum3.t
66f0: 65 73 74 20 69 6e 63 72 62 6c 6f 62 5f 65 72 72  est incrblob_err
6700: 2e 74 65 73 74 20 64 69 73 6b 66 75 6c 6c 2e 74  .test diskfull.t
6710: 65 73 74 20 62 61 63 6b 75 70 5f 69 6f 65 72 72  est backup_ioerr
6720: 2e 74 65 73 74 0a 20 20 65 5f 66 74 73 33 2e 74  .test.  e_fts3.t
6730: 65 73 74 20 66 74 73 33 63 6f 76 2e 74 65 73 74  est fts3cov.test
6740: 20 66 74 73 33 6d 61 6c 6c 6f 63 2e 74 65 73 74   fts3malloc.test
6750: 20 66 74 73 33 72 6e 64 2e 74 65 73 74 0a 20 20   fts3rnd.test.  
6760: 66 74 73 33 73 6e 69 70 70 65 74 2e 74 65 73 74  fts3snippet.test
6770: 20 6d 6d 61 70 66 61 75 6c 74 2e 74 65 73 74 20   mmapfault.test 
6780: 73 65 73 73 69 6f 6e 66 61 75 6c 74 2e 74 65 73  sessionfault.tes
6790: 74 20 73 65 73 73 69 6f 6e 66 61 75 6c 74 32 2e  t sessionfault2.
67a0: 74 65 73 74 0a 0a 20 20 23 20 45 78 63 6c 75 64  test..  # Exclud
67b0: 65 20 74 65 73 74 20 73 63 72 69 70 74 73 20 74  e test scripts t
67c0: 68 61 74 20 75 73 65 20 74 63 6c 20 49 4f 20 74  hat use tcl IO t
67d0: 6f 20 61 63 63 65 73 73 20 6a 6f 75 72 6e 61 6c  o access journal
67e0: 20 66 69 6c 65 73 20 6f 72 20 63 6f 75 6e 74 0a   files or count.
67f0: 20 20 23 20 74 68 65 20 6e 75 6d 62 65 72 20 6f    # the number o
6800: 66 20 66 73 79 6e 63 28 29 20 63 61 6c 6c 73 2e  f fsync() calls.
6810: 0a 20 20 70 61 67 65 72 2e 74 65 73 74 20 65 78  .  pager.test ex
6820: 63 6c 75 73 69 76 65 2e 74 65 73 74 20 6a 72 6e  clusive.test jrn
6830: 6c 6d 6f 64 65 2e 74 65 73 74 20 73 79 6e 63 2e  lmode.test sync.
6840: 74 65 73 74 20 6d 69 73 63 31 2e 74 65 73 74 20  test misc1.test 
6850: 0a 20 20 6a 6f 75 72 6e 61 6c 31 2e 74 65 73 74  .  journal1.test
6860: 20 63 6f 6e 66 6c 69 63 74 2e 74 65 73 74 20 63   conflict.test c
6870: 72 61 73 68 38 2e 74 65 73 74 20 74 6b 74 33 34  rash8.test tkt34
6880: 35 37 2e 74 65 73 74 20 69 6f 2e 74 65 73 74 0a  57.test io.test.
6890: 20 20 6a 6f 75 72 6e 61 6c 33 2e 74 65 73 74 20    journal3.test 
68a0: 38 5f 33 5f 6e 61 6d 65 73 2e 74 65 73 74 0a 0a  8_3_names.test..
68b0: 20 20 70 61 67 65 72 31 2e 74 65 73 74 20 61 73    pager1.test as
68c0: 79 6e 63 34 2e 74 65 73 74 20 63 6f 72 72 75 70  ync4.test corrup
68d0: 74 2e 74 65 73 74 20 66 69 6c 65 66 6d 74 2e 74  t.test filefmt.t
68e0: 65 73 74 20 70 61 67 65 72 32 2e 74 65 73 74 0a  est pager2.test.
68f0: 20 20 63 6f 72 72 75 70 74 35 2e 74 65 73 74 20    corrupt5.test 
6900: 63 6f 72 72 75 70 74 41 2e 74 65 73 74 20 70 61  corruptA.test pa
6910: 67 65 72 6f 70 74 2e 74 65 73 74 0a 0a 20 20 23  geropt.test..  #
6920: 20 45 78 63 6c 75 64 65 20 73 74 6d 74 2e 74 65   Exclude stmt.te
6930: 73 74 2c 20 77 68 69 63 68 20 65 78 70 65 63 74  st, which expect
6940: 73 20 73 75 62 2d 6a 6f 75 72 6e 61 6c 73 20 74  s sub-journals t
6950: 6f 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79 20  o use temporary 
6960: 66 69 6c 65 73 2e 0a 20 20 73 74 6d 74 2e 74 65  files..  stmt.te
6970: 73 74 20 73 79 6d 6c 69 6e 6b 2e 74 65 73 74 0a  st symlink.test.
6980: 0a 20 20 7a 65 72 6f 64 61 6d 61 67 65 2e 74 65  .  zerodamage.te
6990: 73 74 0a 0a 20 20 23 20 57 41 4c 20 6d 6f 64 65  st..  # WAL mode
69a0: 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e 0a 20   is different.. 
69b0: 20 77 61 6c 2a 20 74 6b 74 2d 32 64 31 61 35 63   wal* tkt-2d1a5c
69c0: 36 37 64 2e 74 65 73 74 20 62 61 63 6b 63 6f 6d  67d.test backcom
69d0: 70 61 74 2e 74 65 73 74 20 65 5f 77 61 6c 2a 20  pat.test e_wal* 
69e0: 72 6f 77 61 6c 6c 6f 63 6b 2e 74 65 73 74 0a 0a  rowallock.test..
69f0: 20 20 23 20 54 68 69 73 20 74 65 73 74 20 64 6f    # This test do
6a00: 65 73 20 6e 6f 74 20 77 6f 72 6b 20 61 73 20 74  es not work as t
6a10: 68 65 20 22 50 52 41 47 4d 41 20 6a 6f 75 72 6e  he "PRAGMA journ
6a20: 61 6c 5f 6d 6f 64 65 20 3d 20 6d 65 6d 6f 72 79  al_mode = memory
6a30: 22 0a 20 20 23 20 73 74 61 74 65 6d 65 6e 74 20  ".  # statement 
6a40: 73 77 69 74 63 68 65 73 20 74 68 65 20 64 61 74  switches the dat
6a50: 61 62 61 73 65 20 6f 75 74 20 6f 66 20 77 61 6c  abase out of wal
6a60: 20 6d 6f 64 65 20 61 74 20 69 6e 6f 70 70 6f 72   mode at inoppor
6a70: 74 75 6e 65 0a 20 20 23 20 74 69 6d 65 73 2e 0a  tune.  # times..
6a80: 20 20 73 6e 61 70 73 68 6f 74 5f 66 61 75 6c 74    snapshot_fault
6a90: 2e 74 65 73 74 0a 20 20 0a 20 20 23 20 54 68 69  .test.  .  # Thi
6aa0: 73 20 74 65 73 74 20 61 73 73 75 6d 65 73 20 61  s test assumes a
6ab0: 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 69 73   journal file is
6ac0: 20 63 72 65 61 74 65 64 20 6f 6e 20 64 69 73 6b   created on disk
6ad0: 2e 0a 20 20 64 65 6c 65 74 65 5f 64 62 2e 74 65  ..  delete_db.te
6ae0: 73 74 0a 20 20 0a 20 20 23 20 54 68 69 73 20 74  st.  .  # This t
6af0: 65 73 74 20 64 65 70 65 6e 64 73 20 6f 6e 20 61  est depends on a
6b00: 20 73 75 63 63 65 73 73 66 75 6c 20 72 65 63 6f   successful reco
6b10: 76 65 72 79 20 66 72 6f 6d 20 74 68 65 20 70 61  very from the pa
6b20: 67 65 72 20 65 72 72 6f 72 20 0a 20 20 23 20 73  ger error .  # s
6b30: 74 61 74 65 2e 20 57 68 69 63 68 20 69 73 20 6e  tate. Which is n
6b40: 6f 74 20 70 6f 73 73 69 62 6c 65 20 77 69 74 68  ot possible with
6b50: 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 6a 6f   an in-memory jo
6b60: 75 72 6e 61 6c 0a 20 20 66 74 73 35 66 61 75 6c  urnal.  fts5faul
6b70: 74 31 2e 74 65 73 74 0a 7d 5d 0a 0a 69 66 63 61  t1.test.}]..ifca
6b80: 70 61 62 6c 65 20 6d 65 6d 33 20 7b 0a 20 20 74  pable mem3 {.  t
6b90: 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73 79  est_suite "memsy
6ba0: 73 33 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  s3" -description
6bb0: 20 7b 0a 20 20 20 20 52 75 6e 20 74 65 73 74 73   {.    Run tests
6bc0: 20 75 73 69 6e 67 20 74 68 65 20 61 6c 6c 6f 63   using the alloc
6bd0: 61 74 6f 72 20 69 6e 20 6d 65 6d 33 2e 63 2e 0a  ator in mem3.c..
6be0: 20 20 7d 20 2d 66 69 6c 65 73 20 5b 74 65 73 74    } -files [test
6bf0: 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b  _set $::allquick
6c00: 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 7b  tests -exclude {
6c10: 0a 20 20 20 20 61 75 74 6f 76 61 63 75 75 6d 2e  .    autovacuum.
6c20: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 64  test           d
6c30: 65 6c 65 74 65 33 2e 74 65 73 74 20 20 20 20 20  elete3.test     
6c40: 20 20 20 20 20 20 20 20 20 6d 61 6e 79 64 62 2e           manydb.
6c50: 74 65 73 74 0a 20 20 20 20 62 69 67 72 6f 77 2e  test.    bigrow.
6c60: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20  test            
6c70: 20 20 20 69 6e 63 72 62 6c 6f 62 32 2e 74 65 73     incrblob2.tes
6c80: 74 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d  t            mem
6c90: 64 62 2e 74 65 73 74 0a 20 20 20 20 62 69 74 76  db.test.    bitv
6ca0: 65 63 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  ec.test         
6cb0: 20 20 20 20 20 20 69 6e 64 65 78 32 2e 74 65 73        index2.tes
6cc0: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
6cd0: 6d 65 6d 73 75 62 73 79 73 31 2e 74 65 73 74 0a  memsubsys1.test.
6ce0: 20 20 20 20 63 61 70 69 33 63 2e 74 65 73 74 20      capi3c.test 
6cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6f                io
6d00: 65 72 72 2e 74 65 73 74 20 20 20 20 20 20 20 20  err.test        
6d10: 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73 79          memsubsy
6d20: 73 32 2e 74 65 73 74 0a 20 20 20 20 63 61 70 69  s2.test.    capi
6d30: 33 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20  3.test          
6d40: 20 20 20 20 20 20 6a 6f 69 6e 33 2e 74 65 73 74        join3.test
6d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6d60: 70 61 67 65 73 69 7a 65 2e 74 65 73 74 0a 20 20  pagesize.test.  
6d70: 20 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74 20    collate5.test 
6d80: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6d 69              limi
6d90: 74 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20  t.test          
6da0: 20 20 20 20 20 20 62 61 63 6b 75 70 5f 69 6f 65        backup_ioe
6db0: 72 72 2e 74 65 73 74 0a 20 20 20 20 62 61 63 6b  rr.test.    back
6dc0: 75 70 5f 6d 61 6c 6c 6f 63 2e 74 65 73 74 0a 20  up_malloc.test. 
6dd0: 20 7d 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20   }] -initialize 
6de0: 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62 20  {.    catch {db 
6df0: 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74  close}.    sqlit
6e00: 65 33 5f 72 65 73 65 74 5f 61 75 74 6f 5f 65 78  e3_reset_auto_ex
6e10: 74 65 6e 73 69 6f 6e 0a 20 20 20 20 73 71 6c 69  tension.    sqli
6e20: 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20  te3_shutdown.   
6e30: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
6e40: 68 65 61 70 20 32 35 30 30 30 30 30 30 20 30 0a  heap 25000000 0.
6e50: 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66      sqlite3_conf
6e60: 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20 30  ig_lookaside 0 0
6e70: 0a 20 20 20 20 69 66 63 61 70 61 62 6c 65 20 6d  .    ifcapable m
6e80: 65 6d 35 20 7b 0a 20 20 20 20 20 20 23 20 49 66  em5 {.      # If
6e90: 20 62 6f 74 68 20 6d 65 6d 73 79 73 33 20 61 6e   both memsys3 an
6ea0: 64 20 6d 65 6d 73 79 73 35 20 61 72 65 20 65 6e  d memsys5 are en
6eb0: 61 62 6c 65 64 20 69 6e 20 74 68 65 20 62 75 69  abled in the bui
6ec0: 6c 64 2c 20 74 68 65 20 63 61 6c 6c 20 74 6f 0a  ld, the call to.
6ed0: 20 20 20 20 20 20 23 20 5b 73 71 6c 69 74 65 33        # [sqlite3
6ee0: 5f 63 6f 6e 66 69 67 5f 68 65 61 70 5d 20 77 69  _config_heap] wi
6ef0: 6c 6c 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68  ll initialize th
6f00: 65 20 73 79 73 74 65 6d 20 74 6f 20 75 73 65 20  e system to use 
6f10: 6d 65 6d 73 79 73 35 2e 0a 20 20 20 20 20 20 23  memsys5..      #
6f20: 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f   The following o
6f30: 76 65 72 72 69 64 65 73 20 74 68 69 73 20 70 72  verrides this pr
6f40: 65 66 65 72 65 6e 63 65 20 61 6e 64 20 69 6e 73  eference and ins
6f50: 74 61 6c 6c 73 20 74 68 65 20 6d 65 6d 73 79 73  talls the memsys
6f60: 33 0a 20 20 20 20 20 20 23 20 61 6c 6c 6f 63 61  3.      # alloca
6f70: 74 6f 72 2e 0a 20 20 20 20 20 20 73 71 6c 69 74  tor..      sqlit
6f80: 65 33 5f 69 6e 73 74 61 6c 6c 5f 6d 65 6d 73 79  e3_install_memsy
6f90: 73 33 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 73  s3.    }.    ins
6fa0: 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c  tall_malloc_faul
6fb0: 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69  tsim 1 .    sqli
6fc0: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
6fd0: 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74     autoinstall_t
6fe0: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20  est_functions.  
6ff0: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
7000: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
7010: 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73  e}.    sqlite3_s
7020: 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69  hutdown.    sqli
7030: 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20  te3_config_heap 
7040: 30 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  0 0.    sqlite3_
7050: 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65  config_lookaside
7060: 20 31 30 30 20 35 30 30 0a 20 20 20 20 69 6e 73   100 500.    ins
7070: 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c  tall_malloc_faul
7080: 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69  tsim 1 .    sqli
7090: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
70a0: 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74     autoinstall_t
70b0: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20  est_functions.  
70c0: 7d 0a 7d 0a 0a 69 66 63 61 70 61 62 6c 65 20 6d  }.}..ifcapable m
70d0: 65 6d 35 20 7b 0a 20 20 74 65 73 74 5f 73 75 69  em5 {.  test_sui
70e0: 74 65 20 22 6d 65 6d 73 79 73 35 22 20 2d 64 65  te "memsys5" -de
70f0: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20  scription {.    
7100: 52 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67 20  Run tests using 
7110: 74 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e  the allocator in
7120: 20 6d 65 6d 35 2e 63 2e 0a 20 20 7d 20 2d 66 69   mem5.c..  } -fi
7130: 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a  les [test_set $:
7140: 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  :allquicktests -
7150: 65 78 63 6c 75 64 65 20 7b 0a 20 20 20 20 61 75  exclude {.    au
7160: 74 6f 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20  tovacuum.test   
7170: 20 20 20 20 20 20 20 20 64 65 6c 65 74 65 33 2e          delete3.
7180: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20  test            
7190: 20 20 6d 61 6e 79 64 62 2e 74 65 73 74 0a 20 20    manydb.test.  
71a0: 20 20 62 69 67 72 6f 77 2e 74 65 73 74 20 20 20    bigrow.test   
71b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 63 72              incr
71c0: 62 6c 6f 62 32 2e 74 65 73 74 20 20 20 20 20 20  blob2.test      
71d0: 20 20 20 20 20 20 6d 65 6d 64 62 2e 74 65 73 74        memdb.test
71e0: 0a 20 20 20 20 62 69 74 76 65 63 2e 74 65 73 74  .    bitvec.test
71f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7200: 6e 64 65 78 32 2e 74 65 73 74 20 20 20 20 20 20  ndex2.test      
7210: 20 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73           memsubs
7220: 79 73 31 2e 74 65 73 74 0a 20 20 20 20 63 61 70  ys1.test.    cap
7230: 69 33 63 2e 74 65 73 74 20 20 20 20 20 20 20 20  i3c.test        
7240: 20 20 20 20 20 20 20 69 6f 65 72 72 2e 74 65 73         ioerr.tes
7250: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
7260: 20 6d 65 6d 73 75 62 73 79 73 32 2e 74 65 73 74   memsubsys2.test
7270: 0a 20 20 20 20 63 61 70 69 33 2e 74 65 73 74 20  .    capi3.test 
7280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a                 j
7290: 6f 69 6e 33 2e 74 65 73 74 20 20 20 20 20 20 20  oin3.test       
72a0: 20 20 20 20 20 20 20 20 20 70 61 67 65 73 69 7a           pagesiz
72b0: 65 2e 74 65 73 74 0a 20 20 20 20 63 6f 6c 6c 61  e.test.    colla
72c0: 74 65 35 2e 74 65 73 74 20 20 20 20 20 20 20 20  te5.test        
72d0: 20 20 20 20 20 6c 69 6d 69 74 2e 74 65 73 74 20       limit.test 
72e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7a                 z
72f0: 65 72 6f 62 6c 6f 62 2e 74 65 73 74 0a 20 20 7d  eroblob.test.  }
7300: 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a  ] -initialize {.
7310: 20 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c      catch {db cl
7320: 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33  ose}.    sqlite3
7330: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71  _shutdown.    sq
7340: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65 61  lite3_config_hea
7350: 70 20 32 35 30 30 30 30 30 30 20 36 34 0a 20 20  p 25000000 64.  
7360: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
7370: 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a 20  _lookaside 0 0. 
7380: 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f     install_mallo
7390: 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20  c_faultsim 1 .  
73a0: 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61    sqlite3_initia
73b0: 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73  lize.    autoins
73c0: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
73d0: 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74 64 6f 77  ons.  } -shutdow
73e0: 6e 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64  n {.    catch {d
73f0: 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c  b close}.    sql
7400: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
7410: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
7420: 5f 68 65 61 70 20 30 20 30 0a 20 20 20 20 73 71  _heap 0 0.    sq
7430: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f  lite3_config_loo
7440: 6b 61 73 69 64 65 20 31 30 30 20 35 30 30 0a 20  kaside 100 500. 
7450: 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f     install_mallo
7460: 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20  c_faultsim 1 .  
7470: 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61    sqlite3_initia
7480: 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73  lize.    autoins
7490: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
74a0: 6f 6e 73 0a 20 20 7d 0a 0a 20 20 74 65 73 74 5f  ons.  }..  test_
74b0: 73 75 69 74 65 20 22 6d 65 6d 73 79 73 35 2d 32  suite "memsys5-2
74c0: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
74d0: 0a 20 20 20 20 52 75 6e 20 74 65 73 74 73 20 75  .    Run tests u
74e0: 73 69 6e 67 20 74 68 65 20 61 6c 6c 6f 63 61 74  sing the allocat
74f0: 6f 72 20 69 6e 20 6d 65 6d 35 2e 63 20 69 6e 20  or in mem5.c in 
7500: 61 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 66  a different conf
7510: 69 67 75 72 61 74 69 6f 6e 2e 0a 20 20 7d 20 2d  iguration..  } -
7520: 66 69 6c 65 73 20 7b 0a 20 20 20 20 73 65 6c 65  files {.    sele
7530: 63 74 31 2e 74 65 73 74 20 0a 20 20 7d 20 2d 69  ct1.test .  } -i
7540: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20  nitialize {.    
7550: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
7560: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75  .    sqlite3_shu
7570: 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65  tdown.    sqlite
7580: 33 5f 63 6f 6e 66 69 67 5f 6d 65 6d 73 74 61 74  3_config_memstat
7590: 75 73 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33  us 0.    sqlite3
75a0: 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20 34 30 30  _config_heap 400
75b0: 30 30 30 30 30 20 31 36 0a 20 20 20 20 73 71 6c  00000 16.    sql
75c0: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b  ite3_config_look
75d0: 61 73 69 64 65 20 30 20 30 0a 20 20 20 20 69 6e  aside 0 0.    in
75e0: 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75  stall_malloc_fau
75f0: 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c  ltsim 1 .    sql
7600: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
7610: 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f      autoinstall_
7620: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20  test_functions. 
7630: 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20   } -shutdown {. 
7640: 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f     catch {db clo
7650: 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  se}.    sqlite3_
7660: 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c  shutdown.    sql
7670: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70  ite3_config_heap
7680: 20 30 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33   0 0.    sqlite3
7690: 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64  _config_lookasid
76a0: 65 20 31 30 30 20 35 30 30 0a 20 20 20 20 69 6e  e 100 500.    in
76b0: 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75  stall_malloc_fau
76c0: 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c  ltsim 1 .    sql
76d0: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
76e0: 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f      autoinstall_
76f0: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20  test_functions. 
7700: 20 7d 0a 7d 0a 0a 69 66 63 61 70 61 62 6c 65 20   }.}..ifcapable 
7710: 74 68 72 65 61 64 73 61 66 65 20 7b 0a 20 20 74  threadsafe {.  t
7720: 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 5f 6d 75  est_suite "no_mu
7730: 74 65 78 5f 74 72 79 22 20 2d 64 65 73 63 72 69  tex_try" -descri
7740: 70 74 69 6f 6e 20 7b 0a 20 20 20 20 20 54 68 65  ption {.     The
7750: 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 74   sqlite3_mutex_t
7760: 72 79 28 29 20 69 6e 74 65 72 66 61 63 65 20 61  ry() interface a
7770: 6c 77 61 79 73 20 66 61 69 6c 73 0a 20 20 7d 20  lways fails.  } 
7780: 2d 66 69 6c 65 73 20 5b 0a 20 20 20 20 74 65 73  -files [.    tes
7790: 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63  t_set $::allquic
77a0: 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20  ktests -exclude 
77b0: 6d 75 74 65 78 31 2e 74 65 73 74 20 6d 75 74 65  mutex1.test mute
77c0: 78 32 2e 74 65 73 74 0a 20 20 5d 20 2d 69 6e 69  x2.test.  ] -ini
77d0: 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63 61  tialize {.    ca
77e0: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
77f0: 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64     sqlite3_shutd
7800: 6f 77 6e 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f  own.    install_
7810: 6d 75 74 65 78 5f 63 6f 75 6e 74 65 72 73 20 31  mutex_counters 1
7820: 0a 20 20 20 20 73 65 74 20 3a 3a 64 69 73 61 62  .    set ::disab
7830: 6c 65 5f 6d 75 74 65 78 5f 74 72 79 20 31 0a 20  le_mutex_try 1. 
7840: 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69     sqlite3_initi
7850: 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e  alize.    autoin
7860: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
7870: 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74 64 6f  ions.  } -shutdo
7880: 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b  wn {.    catch {
7890: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71  db close}.    sq
78a0: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
78b0: 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 75 74 65 78     install_mutex
78c0: 5f 63 6f 75 6e 74 65 72 73 20 30 0a 20 20 20 20  _counters 0.    
78d0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
78e0: 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61  ze.    autoinsta
78f0: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
7900: 73 0a 20 20 7d 0a 7d 0a 0a 23 20 72 75 6e 5f 74  s.  }.}..# run_t
7910: 65 73 74 73 20 22 63 72 61 73 68 5f 73 61 66 65  ests "crash_safe
7920: 5f 61 70 70 65 6e 64 22 20 2d 64 65 73 63 72 69  _append" -descri
7930: 70 74 69 6f 6e 20 7b 0a 23 20 20 20 52 75 6e 20  ption {.#   Run 
7940: 63 72 61 73 68 2e 74 65 73 74 20 77 69 74 68 20  crash.test with 
7950: 70 65 72 73 69 73 74 65 6e 74 20 6a 6f 75 72 6e  persistent journ
7960: 61 6c 73 20 6f 6e 20 61 20 53 41 46 45 5f 41 50  als on a SAFE_AP
7970: 50 45 4e 44 20 66 69 6c 65 2d 73 79 73 74 65 6d  PEND file-system
7980: 2e 0a 23 20 7d 20 2d 69 6e 69 74 69 61 6c 69 7a  ..# } -initializ
7990: 65 20 7b 0a 23 20 20 20 72 65 6e 61 6d 65 20 63  e {.#   rename c
79a0: 72 61 73 68 73 71 6c 20 73 61 5f 63 72 61 73 68  rashsql sa_crash
79b0: 73 71 6c 0a 23 20 20 20 70 72 6f 63 20 63 72 61  sql.#   proc cra
79c0: 73 68 73 71 6c 20 7b 61 72 67 73 7d 20 7b 0a 23  shsql {args} {.#
79d0: 20 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e 73       set options
79e0: 20 5b 6c 72 61 6e 67 65 20 24 61 72 67 73 20 30   [lrange $args 0
79f0: 20 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68   [expr {[llength
7a00: 20 24 61 72 67 73 5d 2d 32 7d 5d 5d 0a 23 20 20   $args]-2}]].#  
7a10: 20 20 20 6c 61 70 70 65 6e 64 20 6f 70 74 69 6f     lappend optio
7a20: 6e 73 20 2d 63 68 61 72 20 73 61 66 65 5f 61 70  ns -char safe_ap
7a30: 70 65 6e 64 0a 23 20 20 20 20 20 73 65 74 20 73  pend.#     set s
7a40: 71 6c 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73  ql [lindex $args
7a50: 20 65 6e 64 5d 0a 23 20 20 20 20 20 6c 61 70 70   end].#     lapp
7a60: 65 6e 64 20 6f 70 74 69 6f 6e 73 20 22 0a 23 20  end options ".# 
7a70: 20 20 20 20 20 20 50 52 41 47 4d 41 20 6a 6f 75        PRAGMA jou
7a80: 72 6e 61 6c 5f 6d 6f 64 65 3d 70 65 72 73 69 73  rnal_mode=persis
7a90: 74 65 6e 74 3b 0a 23 20 20 20 20 20 20 20 24 73  tent;.#       $s
7aa0: 71 6c 0a 23 20 20 20 20 20 22 0a 23 20 20 20 20  ql.#     ".#    
7ab0: 20 73 65 74 20 66 64 20 5b 6f 70 65 6e 20 74 65   set fd [open te
7ac0: 73 74 2e 64 62 2d 6a 6f 75 72 6e 61 6c 20 77 5d  st.db-journal w]
7ad0: 0a 23 20 20 20 20 20 70 75 74 73 20 24 66 64 20  .#     puts $fd 
7ae0: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 31  [string repeat 1
7af0: 32 33 34 35 36 37 38 39 30 20 31 30 30 30 30 30  234567890 100000
7b00: 5d 0a 23 20 20 20 20 20 63 6c 6f 73 65 20 24 66  ].#     close $f
7b10: 64 0a 23 20 20 20 20 20 65 76 61 6c 20 73 61 5f  d.#     eval sa_
7b20: 63 72 61 73 68 73 71 6c 20 24 6f 70 74 69 6f 6e  crashsql $option
7b30: 73 0a 23 20 20 20 7d 0a 23 20 7d 20 2d 73 68 75  s.#   }.# } -shu
7b40: 74 64 6f 77 6e 20 7b 0a 23 20 20 20 72 65 6e 61  tdown {.#   rena
7b50: 6d 65 20 63 72 61 73 68 73 71 6c 20 7b 7d 0a 23  me crashsql {}.#
7b60: 20 20 20 72 65 6e 61 6d 65 20 73 61 5f 63 72 61     rename sa_cra
7b70: 73 68 73 71 6c 20 63 72 61 73 68 73 71 6c 0a 23  shsql crashsql.#
7b80: 20 7d 20 2d 66 69 6c 65 73 20 63 72 61 73 68 2e   } -files crash.
7b90: 74 65 73 74 0a 0a 74 65 73 74 5f 73 75 69 74 65  test..test_suite
7ba0: 20 22 73 61 66 65 5f 61 70 70 65 6e 64 22 20 2d   "safe_append" -
7bb0: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
7bc0: 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 6f  Run some tests o
7bd0: 6e 20 61 20 53 41 46 45 5f 41 50 50 45 4e 44 20  n a SAFE_APPEND 
7be0: 66 69 6c 65 2d 73 79 73 74 65 6d 2e 0a 7d 20 2d  file-system..} -
7bf0: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 72  initialize {.  r
7c00: 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 20 73 71  ename sqlite3 sq
7c10: 6c 69 74 65 33 5f 73 61 66 65 61 70 70 65 6e 64  lite3_safeappend
7c20: 0a 20 20 70 72 6f 63 20 73 71 6c 69 74 65 33 20  .  proc sqlite3 
7c30: 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20 69 66 20  {args} {.    if 
7c40: 7b 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b  {[string range [
7c50: 6c 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d 20  lindex $args 0] 
7c60: 30 20 30 5d 20 6e 65 20 22 2d 22 7d 20 7b 0a 20  0 0] ne "-"} {. 
7c70: 20 20 20 20 20 6c 61 70 70 65 6e 64 20 61 72 67       lappend arg
7c80: 73 20 2d 76 66 73 20 64 65 76 73 79 6d 0a 20 20  s -vfs devsym.  
7c90: 20 20 7d 0a 20 20 20 20 75 70 6c 65 76 65 6c 20    }.    uplevel 
7ca0: 5b 63 6f 6e 63 61 74 20 73 71 6c 69 74 65 33 5f  [concat sqlite3_
7cb0: 73 61 66 65 61 70 70 65 6e 64 20 24 61 72 67 73  safeappend $args
7cc0: 5d 0a 20 20 7d 0a 20 20 73 71 6c 69 74 65 33 5f  ].  }.  sqlite3_
7cd0: 73 69 6d 75 6c 61 74 65 5f 64 65 76 69 63 65 20  simulate_device 
7ce0: 2d 63 68 61 72 20 73 61 66 65 5f 61 70 70 65 6e  -char safe_appen
7cf0: 64 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  d.} -shutdown {.
7d00: 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65 33    rename sqlite3
7d10: 20 7b 7d 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c   {}.  rename sql
7d20: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 20 73 71  ite3_shutdown sq
7d30: 6c 69 74 65 33 0a 7d 20 2d 66 69 6c 65 73 20 5b  lite3.} -files [
7d40: 0a 20 20 74 65 73 74 5f 73 65 74 20 24 3a 3a 61  .  test_set $::a
7d50: 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 73 68 61  llquicktests sha
7d60: 72 65 64 5f 65 72 72 2e 74 65 73 74 20 2d 65 78  red_err.test -ex
7d70: 63 6c 75 64 65 20 61 73 79 6e 63 33 2e 74 65 73  clude async3.tes
7d80: 74 0a 5d 0a 0a 23 20 54 68 65 20 73 65 74 20 6f  t.]..# The set o
7d90: 66 20 74 65 73 74 73 20 74 6f 20 72 75 6e 20 6f  f tests to run o
7da0: 6e 20 74 68 65 20 61 6c 74 65 72 6e 61 74 69 76  n the alternativ
7db0: 65 2d 70 63 61 63 68 65 0a 73 65 74 20 70 65 72  e-pcache.set per
7dc0: 6d 2d 61 6c 74 2d 70 63 61 63 68 65 2d 74 65 73  m-alt-pcache-tes
7dd0: 74 73 65 74 20 7b 0a 20 20 61 73 79 6e 63 2e 74  tset {.  async.t
7de0: 65 73 74 0a 20 20 61 74 74 61 63 68 2e 74 65 73  est.  attach.tes
7df0: 74 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20  t.  delete.test 
7e00: 64 65 6c 65 74 65 32 2e 74 65 73 74 0a 20 20 69  delete2.test.  i
7e10: 6e 64 65 78 2e 74 65 73 74 0a 20 20 69 6e 73 65  ndex.test.  inse
7e20: 72 74 2e 74 65 73 74 20 69 6e 73 65 72 74 32 2e  rt.test insert2.
7e30: 74 65 73 74 0a 20 20 6a 6f 69 6e 2e 74 65 73 74  test.  join.test
7e40: 20 6a 6f 69 6e 32 2e 74 65 73 74 0a 20 20 72 6f   join2.test.  ro
7e50: 6c 6c 62 61 63 6b 2e 74 65 73 74 0a 20 20 73 65  llback.test.  se
7e60: 6c 65 63 74 31 2e 74 65 73 74 20 73 65 6c 65 63  lect1.test selec
7e70: 74 32 2e 74 65 73 74 0a 20 20 74 72 61 6e 73 2e  t2.test.  trans.
7e80: 74 65 73 74 0a 20 20 75 70 64 61 74 65 2e 74 65  test.  update.te
7e90: 73 74 0a 7d 0a 0a 66 6f 72 65 61 63 68 20 64 69  st.}..foreach di
7ea0: 73 63 61 72 64 5f 72 61 74 65 20 7b 30 20 31 30  scard_rate {0 10
7eb0: 20 35 30 20 39 30 20 31 30 30 7d 20 7b 0a 20 20   50 90 100} {.  
7ec0: 74 65 73 74 5f 73 75 69 74 65 20 22 70 63 61 63  test_suite "pcac
7ed0: 68 65 24 7b 64 69 73 63 61 72 64 5f 72 61 74 65  he${discard_rate
7ee0: 7d 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  }" -description 
7ef0: 22 0a 20 20 20 20 41 6c 74 65 72 6e 61 74 69 76  ".    Alternativ
7f00: 65 20 70 63 61 63 68 65 20 69 6d 70 6c 65 6d 65  e pcache impleme
7f10: 6e 74 61 74 69 6f 6e 20 77 69 74 68 20 24 7b 64  ntation with ${d
7f20: 69 73 63 61 72 64 5f 72 61 74 65 7d 25 20 72 61  iscard_rate}% ra
7f30: 6e 64 6f 6d 20 64 69 73 63 61 72 64 0a 20 20 22  ndom discard.  "
7f40: 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 22 0a 20   -initialize ". 
7f50: 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f     catch {db clo
7f60: 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  se}.    sqlite3_
7f70: 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c  shutdown.    sql
7f80: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 61 6c 74 5f  ite3_config_alt_
7f90: 70 63 61 63 68 65 20 31 20 24 64 69 73 63 61 72  pcache 1 $discar
7fa0: 64 5f 72 61 74 65 20 31 0a 20 20 20 20 73 71 6c  d_rate 1.    sql
7fb0: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
7fc0: 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f      autoinstall_
7fd0: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20  test_functions. 
7fe0: 20 22 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20   " -shutdown {. 
7ff0: 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f     catch {db clo
8000: 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  se}.    sqlite3_
8010: 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c  shutdown.    sql
8020: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 61 6c 74 5f  ite3_config_alt_
8030: 70 63 61 63 68 65 20 30 20 30 20 30 0a 20 20 20  pcache 0 0 0.   
8040: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
8050: 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30  lookaside 100 50
8060: 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61  0.    install_ma
8070: 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20  lloc_faultsim 1 
8080: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69  .    sqlite3_ini
8090: 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f  tialize.    auto
80a0: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
80b0: 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 66 69 6c 65  ctions.  } -file
80c0: 73 20 24 7b 70 65 72 6d 2d 61 6c 74 2d 70 63 61  s ${perm-alt-pca
80d0: 63 68 65 2d 74 65 73 74 73 65 74 7d 0a 7d 0a 0a  che-testset}.}..
80e0: 74 65 73 74 5f 73 75 69 74 65 20 22 6a 6f 75 72  test_suite "jour
80f0: 6e 61 6c 74 65 73 74 22 20 2d 64 65 73 63 72 69  naltest" -descri
8100: 70 74 69 6f 6e 20 7b 0a 20 20 43 68 65 63 6b 20  ption {.  Check 
8110: 74 68 61 74 20 70 61 67 65 73 20 61 72 65 20 73  that pages are s
8120: 79 6e 63 65 64 20 62 65 66 6f 72 65 20 62 65 69  ynced before bei
8130: 6e 67 20 77 72 69 74 74 65 6e 20 28 74 65 73 74  ng written (test
8140: 5f 6a 6f 75 72 6e 61 6c 2e 63 29 2e 0a 7d 20 2d  _journal.c)..} -
8150: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63  initialize {.  c
8160: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
8170: 20 20 72 65 67 69 73 74 65 72 5f 6a 74 5f 76 66    register_jt_vf
8180: 73 20 2d 64 65 66 61 75 6c 74 20 22 22 0a 7d 20  s -default "".} 
8190: 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 75 6e  -shutdown {.  un
81a0: 72 65 67 69 73 74 65 72 5f 6a 74 5f 76 66 73 0a  register_jt_vfs.
81b0: 7d 20 2d 66 69 6c 65 73 20 5b 74 65 73 74 5f 73  } -files [test_s
81c0: 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65  et $::allquickte
81d0: 73 74 73 20 2d 65 78 63 6c 75 64 65 20 7b 0a 20  sts -exclude {. 
81e0: 20 77 61 6c 2a 20 69 6e 63 72 76 61 63 75 75 6d   wal* incrvacuum
81f0: 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74  .test ioerr.test
8200: 20 63 6f 72 72 75 70 74 34 2e 74 65 73 74 20 69   corrupt4.test i
8210: 6f 2e 74 65 73 74 20 63 72 61 73 68 38 2e 74 65  o.test crash8.te
8220: 73 74 20 0a 20 20 61 73 79 6e 63 34 2e 74 65 73  st .  async4.tes
8230: 74 20 62 69 67 66 69 6c 65 2e 74 65 73 74 20 62  t bigfile.test b
8240: 61 63 6b 63 6f 6d 70 61 74 2e 74 65 73 74 20 65  ackcompat.test e
8250: 5f 77 61 6c 2a 20 66 73 74 61 74 2e 74 65 73 74  _wal* fstat.test
8260: 20 6d 6d 61 70 32 2e 74 65 73 74 0a 20 20 70 61   mmap2.test.  pa
8270: 67 65 72 31 2e 74 65 73 74 20 73 79 73 63 61 6c  ger1.test syscal
8280: 6c 2e 74 65 73 74 20 74 6b 74 33 34 35 37 2e 74  l.test tkt3457.t
8290: 65 73 74 20 2a 6d 61 6c 6c 6f 63 2a 20 6d 6d 61  est *malloc* mma
82a0: 70 2a 20 6d 75 6c 74 69 70 6c 65 78 2a 20 6e 6f  p* multiplex* no
82b0: 6c 6f 63 6b 2a 0a 20 20 70 61 67 65 72 32 2e 74  lock*.  pager2.t
82c0: 65 73 74 20 2a 66 61 75 6c 74 2a 20 72 6f 77 61  est *fault* rowa
82d0: 6c 2a 20 73 6e 61 70 73 68 6f 74 2a 20 73 75 70  l* snapshot* sup
82e0: 65 72 6c 6f 63 6b 2a 20 73 79 6d 6c 69 6e 6b 2e  erlock* symlink.
82f0: 74 65 73 74 0a 20 20 64 65 6c 65 74 65 5f 64 62  test.  delete_db
8300: 2e 74 65 73 74 0a 7d 5d 0a 0a 69 66 20 7b 5b 69  .test.}]..if {[i
8310: 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 72 65 67  nfo commands reg
8320: 69 73 74 65 72 5f 64 65 6d 6f 76 66 73 5d 20 21  ister_demovfs] !
8330: 3d 20 22 22 7d 20 7b 0a 20 20 74 65 73 74 5f 73  = ""} {.  test_s
8340: 75 69 74 65 20 22 64 65 6d 6f 76 66 73 22 20 2d  uite "demovfs" -
8350: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
8360: 20 20 43 68 65 63 6b 20 74 68 61 74 20 74 68 65    Check that the
8370: 20 64 65 6d 6f 76 66 73 20 28 63 6f 64 65 20 69   demovfs (code i
8380: 6e 20 74 65 73 74 5f 64 65 6d 6f 76 66 73 2e 63  n test_demovfs.c
8390: 29 20 6d 6f 72 65 20 6f 72 20 6c 65 73 73 20 77  ) more or less w
83a0: 6f 72 6b 73 2e 0a 20 20 7d 20 2d 69 6e 69 74 69  orks..  } -initi
83b0: 61 6c 69 7a 65 20 7b 0a 20 20 20 20 72 65 67 69  alize {.    regi
83c0: 73 74 65 72 5f 64 65 6d 6f 76 66 73 0a 20 20 7d  ster_demovfs.  }
83d0: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20   -shutdown {.   
83e0: 20 75 6e 72 65 67 69 73 74 65 72 5f 64 65 6d 6f   unregister_demo
83f0: 76 66 73 0a 20 20 7d 20 2d 66 69 6c 65 73 20 7b  vfs.  } -files {
8400: 0a 20 20 20 20 69 6e 73 65 72 74 2e 74 65 73 74  .    insert.test
8410: 20 20 20 69 6e 73 65 72 74 32 2e 74 65 73 74 20     insert2.test 
8420: 20 69 6e 73 65 72 74 33 2e 74 65 73 74 20 72 6f   insert3.test ro
8430: 6c 6c 62 61 63 6b 2e 74 65 73 74 20 0a 20 20 20  llback.test .   
8440: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20 20 73   select1.test  s
8450: 65 6c 65 63 74 32 2e 74 65 73 74 20 20 73 65 6c  elect2.test  sel
8460: 65 63 74 33 2e 74 65 73 74 0a 20 20 7d 0a 7d 0a  ect3.test.  }.}.
8470: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 77 61 6c  .test_suite "wal
8480: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
8490: 0a 20 20 52 75 6e 20 74 65 73 74 73 20 77 69 74  .  Run tests wit
84a0: 68 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3d 57  h journal_mode=W
84b0: 41 4c 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  AL.} -initialize
84c0: 20 7b 0a 20 20 73 65 74 20 3a 3a 47 28 73 61 76   {.  set ::G(sav
84d0: 65 70 6f 69 6e 74 36 5f 69 74 65 72 61 74 69 6f  epoint6_iteratio
84e0: 6e 73 29 20 31 30 30 0a 7d 20 2d 73 68 75 74 64  ns) 100.} -shutd
84f0: 6f 77 6e 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e  own {.  unset -n
8500: 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a 47 28 73 61  ocomplain ::G(sa
8510: 76 65 70 6f 69 6e 74 36 5f 69 74 65 72 61 74 69  vepoint6_iterati
8520: 6f 6e 73 29 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  ons).} -files {.
8530: 20 20 73 61 76 65 70 6f 69 6e 74 2e 74 65 73 74    savepoint.test
8540: 20 20 20 20 20 73 61 76 65 70 6f 69 6e 74 32 2e       savepoint2.
8550: 74 65 73 74 20 20 20 20 20 73 61 76 65 70 6f 69  test     savepoi
8560: 6e 74 36 2e 74 65 73 74 0a 20 20 74 72 61 6e 73  nt6.test.  trans
8570: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 61 76  .test         av
8580: 74 72 61 6e 73 2e 74 65 73 74 0a 0a 20 20 66 74  trans.test..  ft
8590: 73 33 61 61 2e 74 65 73 74 20 20 66 74 73 33 61  s3aa.test  fts3a
85a0: 62 2e 74 65 73 74 20 20 66 74 73 33 61 63 2e 74  b.test  fts3ac.t
85b0: 65 73 74 20 20 66 74 73 33 61 64 2e 74 65 73 74  est  fts3ad.test
85c0: 0a 20 20 66 74 73 33 61 65 2e 74 65 73 74 20 20  .  fts3ae.test  
85d0: 66 74 73 33 61 66 2e 74 65 73 74 20 20 66 74 73  fts3af.test  fts
85e0: 33 61 67 2e 74 65 73 74 20 20 66 74 73 33 61 68  3ag.test  fts3ah
85f0: 2e 74 65 73 74 0a 20 20 66 74 73 33 61 69 2e 74  .test.  fts3ai.t
8600: 65 73 74 20 20 66 74 73 33 61 6a 2e 74 65 73 74  est  fts3aj.test
8610: 20 20 66 74 73 33 61 6b 2e 74 65 73 74 20 20 66    fts3ak.test  f
8620: 74 73 33 61 6c 2e 74 65 73 74 0a 20 20 66 74 73  ts3al.test.  fts
8630: 33 61 6d 2e 74 65 73 74 20 20 66 74 73 33 61 6e  3am.test  fts3an
8640: 2e 74 65 73 74 20 20 66 74 73 33 61 6f 2e 74 65  .test  fts3ao.te
8650: 73 74 20 20 66 74 73 33 62 2e 74 65 73 74 0a 20  st  fts3b.test. 
8660: 20 66 74 73 33 63 2e 74 65 73 74 20 20 20 66 74   fts3c.test   ft
8670: 73 33 64 2e 74 65 73 74 20 20 20 66 74 73 33 65  s3d.test   fts3e
8680: 2e 74 65 73 74 20 20 20 66 74 73 33 71 75 65 72  .test   fts3quer
8690: 79 2e 74 65 73 74 20 0a 7d 0a 0a 74 65 73 74 5f  y.test .}..test_
86a0: 73 75 69 74 65 20 22 72 74 72 65 65 22 20 2d 64  suite "rtree" -d
86b0: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 41  escription {.  A
86c0: 6c 6c 20 52 2d 74 72 65 65 20 72 65 6c 61 74 65  ll R-tree relate
86d0: 64 20 74 65 73 74 73 2e 20 50 72 6f 76 69 64 65  d tests. Provide
86e0: 73 20 63 6f 76 65 72 61 67 65 20 6f 66 20 73 6f  s coverage of so
86f0: 75 72 63 65 20 66 69 6c 65 20 72 74 72 65 65 2e  urce file rtree.
8700: 63 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 67 6c 6f  c..} -files [glo
8710: 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a  b -nocomplain $:
8720: 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74 2f  :testdir/../ext/
8730: 72 74 72 65 65 2f 2a 2e 74 65 73 74 5d 0a 0a 74  rtree/*.test]..t
8740: 65 73 74 5f 73 75 69 74 65 20 22 73 65 73 73 69  est_suite "sessi
8750: 6f 6e 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  on" -description
8760: 20 7b 0a 20 20 41 6c 6c 20 73 65 73 73 69 6f 6e   {.  All session
8770: 20 6d 6f 64 75 6c 65 20 72 65 6c 61 74 65 64 20   module related 
8780: 74 65 73 74 73 2e 20 0a 7d 20 2d 66 69 6c 65 73  tests. .} -files
8790: 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61   [glob -nocompla
87a0: 69 6e 20 24 3a 3a 74 65 73 74 64 69 72 2f 2e 2e  in $::testdir/..
87b0: 2f 65 78 74 2f 73 65 73 73 69 6f 6e 2f 2a 2e 74  /ext/session/*.t
87c0: 65 73 74 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65  est]..test_suite
87d0: 20 22 73 65 73 73 69 6f 6e 5f 65 65 63 22 20 2d   "session_eec" -
87e0: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
87f0: 41 6c 6c 20 73 65 73 73 69 6f 6e 20 6d 6f 64 75  All session modu
8800: 6c 65 20 72 65 6c 61 74 65 64 20 74 65 73 74 73  le related tests
8810: 20 77 69 74 68 20 73 71 6c 69 74 65 33 5f 65 78   with sqlite3_ex
8820: 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f  tended_result_co
8830: 64 65 73 28 29 20 73 65 74 2e 20 0a 7d 20 2d 66  des() set. .} -f
8840: 69 6c 65 73 20 5b 0a 20 20 67 6c 6f 62 20 2d 6e  iles [.  glob -n
8850: 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a 74 65 73  ocomplain $::tes
8860: 74 64 69 72 2f 2e 2e 2f 65 78 74 2f 73 65 73 73  tdir/../ext/sess
8870: 69 6f 6e 2f 2a 2e 74 65 73 74 0a 5d 20 2d 64 62  ion/*.test.] -db
8880: 63 6f 6e 66 69 67 20 7b 0a 20 20 73 71 6c 69 74  config {.  sqlit
8890: 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75  e3_extended_resu
88a0: 6c 74 5f 63 6f 64 65 73 20 24 3a 3a 64 62 68 61  lt_codes $::dbha
88b0: 6e 64 6c 65 20 31 0a 7d 0a 0a 74 65 73 74 5f 73  ndle 1.}..test_s
88c0: 75 69 74 65 20 22 73 65 73 73 69 6f 6e 5f 73 74  uite "session_st
88d0: 72 6d 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  rm" -description
88e0: 20 7b 0a 20 20 41 6c 6c 20 73 65 73 73 69 6f 6e   {.  All session
88f0: 20 6d 6f 64 75 6c 65 20 72 65 6c 61 74 65 64 20   module related 
8900: 74 65 73 74 73 20 75 73 69 6e 67 20 74 68 65 20  tests using the 
8910: 73 74 72 65 61 6d 69 6e 67 20 41 50 49 73 2e 0a  streaming APIs..
8920: 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 67 6c 6f  } -files [.  glo
8930: 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a  b -nocomplain $:
8940: 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74 2f  :testdir/../ext/
8950: 73 65 73 73 69 6f 6e 2f 2a 2e 74 65 73 74 0a 5d  session/*.test.]
8960: 20 2d 64 62 63 6f 6e 66 69 67 20 7b 0a 20 20 73   -dbconfig {.  s
8970: 65 74 20 3a 3a 73 71 6c 69 74 65 33 73 65 73 73  et ::sqlite3sess
8980: 69 6f 6e 5f 73 74 72 65 61 6d 73 20 31 0a 7d 0a  ion_streams 1.}.
8990: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 72 62 75  .test_suite "rbu
89a0: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
89b0: 0a 20 20 52 42 55 20 74 65 73 74 73 2e 0a 7d 20  .  RBU tests..} 
89c0: 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f  -files [.  test_
89d0: 73 65 74 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d  set [glob -nocom
89e0: 70 6c 61 69 6e 20 24 3a 3a 74 65 73 74 64 69 72  plain $::testdir
89f0: 2f 2e 2e 2f 65 78 74 2f 72 62 75 2f 2a 2e 74 65  /../ext/rbu/*.te
8a00: 73 74 5d 20 2d 65 78 63 6c 75 64 65 20 72 62 75  st] -exclude rbu
8a10: 2e 74 65 73 74 0a 5d 0a 0a 74 65 73 74 5f 73 75  .test.]..test_su
8a20: 69 74 65 20 22 6e 6f 5f 6f 70 74 69 6d 69 7a 61  ite "no_optimiza
8a30: 74 69 6f 6e 22 20 2d 64 65 73 63 72 69 70 74 69  tion" -descripti
8a40: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 20  on {.  Run test 
8a50: 73 63 72 69 70 74 73 20 77 69 74 68 20 6f 70 74  scripts with opt
8a60: 69 6d 69 7a 61 74 69 6f 6e 73 20 64 69 73 61 62  imizations disab
8a70: 6c 65 64 20 75 73 69 6e 67 20 74 68 65 0a 20 20  led using the.  
8a80: 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63 6f 6e  sqlite3_test_con
8a90: 74 72 6f 6c 28 53 51 4c 49 54 45 5f 54 45 53 54  trol(SQLITE_TEST
8aa0: 43 54 52 4c 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  CTRL_OPTIMIZATIO
8ab0: 4e 53 29 20 69 6e 74 65 72 66 61 63 65 2e 0a 7d  NS) interface..}
8ac0: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 77 68 65 72   -files {.  wher
8ad0: 65 2e 74 65 73 74 20 77 68 65 72 65 32 2e 74 65  e.test where2.te
8ae0: 73 74 20 77 68 65 72 65 33 2e 74 65 73 74 20 77  st where3.test w
8af0: 68 65 72 65 34 2e 74 65 73 74 20 77 68 65 72 65  here4.test where
8b00: 35 2e 74 65 73 74 0a 20 20 77 68 65 72 65 36 2e  5.test.  where6.
8b10: 74 65 73 74 20 77 68 65 72 65 37 2e 74 65 73 74  test where7.test
8b20: 20 77 68 65 72 65 38 2e 74 65 73 74 20 77 68 65   where8.test whe
8b30: 72 65 39 2e 74 65 73 74 0a 20 20 77 68 65 72 65  re9.test.  where
8b40: 41 2e 74 65 73 74 20 77 68 65 72 65 42 2e 74 65  A.test whereB.te
8b50: 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2e 74 65  st wherelimit.te
8b60: 73 74 0a 20 20 73 65 6c 65 63 74 31 2e 74 65 73  st.  select1.tes
8b70: 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20 73  t select2.test s
8b80: 65 6c 65 63 74 33 2e 74 65 73 74 20 73 65 6c 65  elect3.test sele
8b90: 63 74 34 2e 74 65 73 74 20 73 65 6c 65 63 74 35  ct4.test select5
8ba0: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 37 2e  .test.  select7.
8bb0: 74 65 73 74 20 73 65 6c 65 63 74 38 2e 74 65 73  test select8.tes
8bc0: 74 20 73 65 6c 65 63 74 41 2e 74 65 73 74 20 73  t selectA.test s
8bd0: 65 6c 65 63 74 43 2e 74 65 73 74 0a 7d 20 2d 64  electC.test.} -d
8be0: 62 63 6f 6e 66 69 67 20 7b 0a 20 20 6f 70 74 69  bconfig {.  opti
8bf0: 6d 69 7a 61 74 69 6f 6e 5f 63 6f 6e 74 72 6f 6c  mization_control
8c00: 20 24 3a 3a 64 62 68 61 6e 64 6c 65 20 61 6c 6c   $::dbhandle all
8c10: 20 30 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65   0.}..test_suite
8c20: 20 22 70 72 65 70 61 72 65 22 20 2d 64 65 73 63   "prepare" -desc
8c30: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20  ription {.  Run 
8c40: 74 65 73 74 73 20 77 69 74 68 20 74 68 65 20 64  tests with the d
8c50: 62 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69  b connection usi
8c60: 6e 67 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  ng sqlite3_prepa
8c70: 72 65 28 29 20 69 6e 73 74 65 61 64 20 6f 66 20  re() instead of 
8c80: 5f 76 32 28 29 2e 0a 7d 20 2d 64 62 63 6f 6e 66  _v2()..} -dbconf
8c90: 69 67 20 7b 0a 20 20 24 3a 3a 64 62 68 61 6e 64  ig {.  $::dbhand
8ca0: 6c 65 20 76 65 72 73 69 6f 6e 20 2d 75 73 65 2d  le version -use-
8cb0: 6c 65 67 61 63 79 2d 70 72 65 70 61 72 65 20 31  legacy-prepare 1
8cc0: 0a 20 20 23 24 3a 3a 64 62 68 61 6e 64 6c 65 20  .  #$::dbhandle 
8cd0: 63 61 63 68 65 20 73 69 7a 65 20 30 0a 7d 20 2d  cache size 0.} -
8ce0: 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73  files [.  test_s
8cf0: 65 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73 74  et $allquicktest
8d00: 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c  s -exclude *mall
8d10: 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75  oc* *ioerr* *fau
8d20: 6c 74 2a 20 5c 0a 20 20 20 20 20 20 73 74 6d 74  lt* \.      stmt
8d30: 76 74 61 62 31 2e 74 65 73 74 20 69 6e 64 65 78  vtab1.test index
8d40: 39 2e 74 65 73 74 0a 5d 0a 0a 74 65 73 74 5f 73  9.test.]..test_s
8d50: 75 69 74 65 20 22 73 6f 72 74 65 72 72 65 66 22  uite "sorterref"
8d60: 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65 73   -prefix "" -des
8d70: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e  cription {.  Run
8d80: 20 74 68 65 20 22 76 65 72 79 71 75 69 63 6b 22   the "veryquick"
8d90: 20 74 65 73 74 20 73 75 69 74 65 20 77 69 74 68   test suite with
8da0: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53   SQLITE_CONFIG_S
8db0: 4f 52 54 45 52 52 45 46 5f 53 49 5a 45 20 73 65  ORTERREF_SIZE se
8dc0: 74 0a 20 20 74 6f 20 30 20 73 6f 20 74 68 61 74  t.  to 0 so that
8dd0: 20 73 6f 72 74 65 72 2d 72 65 66 65 72 65 6e 63   sorter-referenc
8de0: 65 73 20 61 72 65 20 75 73 65 64 20 77 68 65 6e  es are used when
8df0: 65 76 65 72 20 70 6f 73 73 69 62 6c 65 2e 0a 7d  ever possible..}
8e00: 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74   -files [.  test
8e10: 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74 65  _set $allquickte
8e20: 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61  sts -exclude *ma
8e30: 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66  lloc* *ioerr* *f
8e40: 61 75 6c 74 2a 20 2a 62 69 67 66 69 6c 65 2a 20  ault* *bigfile* 
8e50: 2a 5f 65 72 72 2a 20 5c 0a 20 20 20 20 20 20 2a  *_err* \.      *
8e60: 66 74 73 35 63 6f 72 72 75 70 74 2a 20 2a 66 74  fts5corrupt* *ft
8e70: 73 35 62 69 67 2a 20 2a 66 74 73 35 61 6a 2a 0a  s5big* *fts5aj*.
8e80: 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a  ] -initialize {.
8e90: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
8ea0: 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75  e}.  sqlite3_shu
8eb0: 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f  tdown.  sqlite3_
8ec0: 63 6f 6e 66 69 67 5f 73 6f 72 74 65 72 72 65 66  config_sorterref
8ed0: 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69   0.  sqlite3_ini
8ee0: 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e  tialize.  autoin
8ef0: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
8f00: 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  ions.} -shutdown
8f10: 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   {.  catch {db c
8f20: 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f  lose}.  sqlite3_
8f30: 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74  shutdown.  sqlit
8f40: 65 33 5f 63 6f 6e 66 69 67 5f 73 6f 72 74 65 72  e3_config_sorter
8f50: 72 65 66 20 2d 31 0a 20 20 73 71 6c 69 74 65 33  ref -1.  sqlite3
8f60: 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75  _initialize.  au
8f70: 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66  toinstall_test_f
8f80: 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a 23 20 45 6e  unctions.}..# En
8f90: 64 20 6f 66 20 74 65 73 74 73 0a 23 23 23 23 23  d of tests.#####
8fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8fc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8fd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8fe0: 23 23 23 23 23 23 23 23 0a 0a 23 20 72 75 6e 5f  ########..# run_
8ff0: 74 65 73 74 73 20 4e 41 4d 45 20 4f 50 54 49 4f  tests NAME OPTIO
9000: 4e 53 0a 23 0a 23 20 77 68 65 72 65 20 61 76 61  NS.#.# where ava
9010: 69 6c 61 62 6c 65 20 6f 70 74 69 6f 6e 73 20 61  ilable options a
9020: 72 65 3a 20 20 0a 23 0a 23 20 20 20 20 20 20 20  re:  .#.#       
9030: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 54 49 54  -description TIT
9040: 4c 45 0a 23 20 20 20 20 20 20 20 2d 69 6e 69 74  LE.#       -init
9050: 69 61 6c 69 7a 65 20 20 53 43 52 49 50 54 0a 23  ialize  SCRIPT.#
9060: 20 20 20 20 20 20 20 2d 73 68 75 74 64 6f 77 6e         -shutdown
9070: 20 20 20 20 53 43 52 49 50 54 0a 23 20 20 20 20      SCRIPT.#    
9080: 20 20 20 2d 70 72 65 73 71 6c 20 20 20 20 20 20     -presql      
9090: 53 51 4c 0a 23 20 20 20 20 20 20 20 2d 66 69 6c  SQL.#       -fil
90a0: 65 73 20 20 20 20 20 20 20 4c 49 53 54 2d 4f 46  es       LIST-OF
90b0: 2d 46 49 4c 45 53 0a 23 20 20 20 20 20 20 20 2d  -FILES.#       -
90c0: 70 72 65 66 69 78 20 20 20 20 20 20 4e 41 4d 45  prefix      NAME
90d0: 0a 23 0a 70 72 6f 63 20 72 75 6e 5f 74 65 73 74  .#.proc run_test
90e0: 73 20 7b 6e 61 6d 65 20 61 72 67 73 7d 20 7b 0a  s {name args} {.
90f0: 20 20 61 72 72 61 79 20 73 65 74 20 6f 70 74 69    array set opti
9100: 6f 6e 73 20 24 61 72 67 73 0a 0a 20 20 73 65 74  ons $args..  set
9110: 20 3a 3a 47 28 70 65 72 6d 3a 6e 61 6d 65 29 20   ::G(perm:name) 
9120: 20 20 20 20 20 20 20 20 24 6e 61 6d 65 0a 20 20          $name.  
9130: 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65  set ::G(perm:pre
9140: 66 69 78 29 20 20 20 20 20 20 20 24 6f 70 74 69  fix)       $opti
9150: 6f 6e 73 28 2d 70 72 65 66 69 78 29 0a 20 20 73  ons(-prefix).  s
9160: 65 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65 73  et ::G(perm:pres
9170: 71 6c 29 20 20 20 20 20 20 20 24 6f 70 74 69 6f  ql)       $optio
9180: 6e 73 28 2d 70 72 65 73 71 6c 29 0a 20 20 73 65  ns(-presql).  se
9190: 74 20 3a 3a 47 28 69 73 71 75 69 63 6b 29 20 20  t ::G(isquick)  
91a0: 20 20 20 20 20 20 20 20 20 31 0a 20 20 73 65 74           1.  set
91b0: 20 3a 3a 47 28 70 65 72 6d 3a 64 62 63 6f 6e 66   ::G(perm:dbconf
91c0: 69 67 29 20 20 20 20 20 24 6f 70 74 69 6f 6e 73  ig)     $options
91d0: 28 2d 64 62 63 6f 6e 66 69 67 29 0a 0a 20 20 66  (-dbconfig)..  f
91e0: 6f 72 65 61 63 68 20 66 69 6c 65 20 5b 6c 73 6f  oreach file [lso
91f0: 72 74 20 24 6f 70 74 69 6f 6e 73 28 2d 66 69 6c  rt $options(-fil
9200: 65 73 29 5d 20 7b 0a 20 20 20 20 75 70 6c 65 76  es)] {.    uplev
9210: 65 6c 20 24 6f 70 74 69 6f 6e 73 28 2d 69 6e 69  el $options(-ini
9220: 74 69 61 6c 69 7a 65 29 0a 20 20 20 20 69 66 20  tialize).    if 
9230: 7b 5b 66 69 6c 65 20 74 61 69 6c 20 24 66 69 6c  {[file tail $fil
9240: 65 5d 20 3d 3d 20 24 66 69 6c 65 7d 20 7b 20 73  e] == $file} { s
9250: 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f  et file [file jo
9260: 69 6e 20 24 3a 3a 74 65 73 74 64 69 72 20 24 66  in $::testdir $f
9270: 69 6c 65 5d 20 7d 0a 20 20 20 20 73 6c 61 76 65  ile] }.    slave
9280: 5f 74 65 73 74 5f 66 69 6c 65 20 24 66 69 6c 65  _test_file $file
9290: 0a 20 20 20 20 75 70 6c 65 76 65 6c 20 24 6f 70  .    uplevel $op
92a0: 74 69 6f 6e 73 28 2d 73 68 75 74 64 6f 77 6e 29  tions(-shutdown)
92b0: 0a 20 20 7d 0a 0a 20 20 75 6e 73 65 74 20 3a 3a  .  }..  unset ::
92c0: 47 28 70 65 72 6d 3a 6e 61 6d 65 29 0a 20 20 75  G(perm:name).  u
92d0: 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72  nset ::G(perm:pr
92e0: 65 66 69 78 29 0a 20 20 75 6e 73 65 74 20 3a 3a  efix).  unset ::
92f0: 47 28 70 65 72 6d 3a 70 72 65 73 71 6c 29 0a 20  G(perm:presql). 
9300: 20 75 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a   unset ::G(perm:
9310: 64 62 63 6f 6e 66 69 67 29 0a 7d 0a 0a 70 72 6f  dbconfig).}..pro
9320: 63 20 72 75 6e 5f 74 65 73 74 5f 73 75 69 74 65  c run_test_suite
9330: 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 69 66 20 7b   {name} {.  if {
9340: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 74  [info exists ::t
9350: 65 73 74 73 70 65 63 28 24 6e 61 6d 65 29 5d 3d  estspec($name)]=
9360: 3d 30 7d 20 7b 0a 20 20 20 20 65 72 72 6f 72 20  =0} {.    error 
9370: 22 4e 6f 20 73 75 63 68 20 74 65 73 74 20 73 75  "No such test su
9380: 69 74 65 3a 20 24 6e 61 6d 65 22 0a 20 20 7d 0a  ite: $name".  }.
9390: 20 20 75 70 6c 65 76 65 6c 20 72 75 6e 5f 74 65    uplevel run_te
93a0: 73 74 73 20 24 6e 61 6d 65 20 24 3a 3a 74 65 73  sts $name $::tes
93b0: 74 73 70 65 63 28 24 6e 61 6d 65 29 0a 7d 0a 0a  tspec($name).}..
93c0: 70 72 6f 63 20 68 65 6c 70 20 7b 7d 20 7b 0a 20  proc help {} {. 
93d0: 20 70 75 74 73 20 22 55 73 61 67 65 3a 20 24 3a   puts "Usage: $:
93e0: 3a 61 72 67 76 30 20 54 45 53 54 53 55 49 54 45  :argv0 TESTSUITE
93f0: 20 3f 54 45 53 54 46 49 4c 45 3f 22 0a 20 20 70   ?TESTFILE?".  p
9400: 75 74 73 20 22 22 0a 20 20 70 75 74 73 20 22 41  uts "".  puts "A
9410: 76 61 69 6c 61 62 6c 65 20 74 65 73 74 2d 73 75  vailable test-su
9420: 69 74 65 73 20 61 72 65 3a 22 0a 20 20 66 6f 72  ites are:".  for
9430: 65 61 63 68 20 6b 20 24 3a 3a 74 65 73 74 73 75  each k $::testsu
9440: 69 74 65 6c 69 73 74 20 7b 0a 20 20 20 20 69 66  itelist {.    if
9450: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a   {[info exists :
9460: 3a 74 65 73 74 73 70 65 63 28 24 6b 29 5d 3d 3d  :testspec($k)]==
9470: 30 7d 20 7b 0a 20 20 20 20 20 20 70 75 74 73 20  0} {.      puts 
9480: 22 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d  "         ------
9490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
94a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
94b0: 2d 2d 22 0a 20 20 20 20 20 20 70 75 74 73 20 22  --".      puts "
94c0: 22 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20  ".    } else {. 
94d0: 20 20 20 20 20 61 72 72 61 79 20 73 65 74 20 6f       array set o
94e0: 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24 6b 29   $::testspec($k)
94f0: 0a 20 20 20 20 20 20 70 75 74 73 20 22 54 65 73  .      puts "Tes
9500: 74 20 73 75 69 74 65 3a 20 5c 22 24 6b 5c 22 22  t suite: \"$k\""
9510: 0a 20 20 20 20 20 20 73 65 74 20 64 20 5b 73 74  .      set d [st
9520: 72 69 6e 67 20 74 72 69 6d 20 24 6f 28 2d 64 65  ring trim $o(-de
9530: 73 63 72 69 70 74 69 6f 6e 29 5d 0a 20 20 20 20  scription)].    
9540: 20 20 73 65 74 20 64 20 5b 72 65 67 73 75 62 20    set d [regsub 
9550: 7b 5c 6e 20 2a 7d 20 24 64 20 22 5c 6e 20 20 22  {\n *} $d "\n  "
9560: 5d 0a 20 20 20 20 20 20 70 75 74 73 20 22 20 20  ].      puts "  
9570: 24 64 22 0a 20 20 20 20 20 20 70 75 74 73 20 22  $d".      puts "
9580: 22 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 65 78  ".    }.  }.  ex
9590: 69 74 20 2d 31 0a 7d 0a 0a 69 66 20 7b 5b 66 69  it -1.}..if {[fi
95a0: 6c 65 20 74 61 69 6c 20 24 61 72 67 76 30 5d 20  le tail $argv0] 
95b0: 3d 3d 20 22 70 65 72 6d 75 74 61 74 69 6f 6e 73  == "permutations
95c0: 2e 74 65 73 74 22 7d 20 7b 0a 20 20 70 72 6f 63  .test"} {.  proc
95d0: 20 6d 61 69 6e 20 7b 61 72 67 76 7d 20 7b 0a 20   main {argv} {. 
95e0: 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20     if {[llength 
95f0: 24 61 72 67 76 5d 3d 3d 30 7d 20 7b 0a 20 20 20  $argv]==0} {.   
9600: 20 20 20 68 65 6c 70 0a 20 20 20 20 7d 20 65 6c     help.    } el
9610: 73 65 20 7b 0a 20 20 20 20 20 20 73 65 74 20 73  se {.      set s
9620: 75 69 74 65 20 5b 66 69 6c 65 20 74 61 69 6c 20  uite [file tail 
9630: 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20 30 5d  [lindex $argv 0]
9640: 5d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69 6e 66  ].      if {[inf
9650: 6f 20 65 78 69 73 74 73 20 3a 3a 74 65 73 74 73  o exists ::tests
9660: 70 65 63 28 24 73 75 69 74 65 29 5d 3d 3d 30 7d  pec($suite)]==0}
9670: 20 68 65 6c 70 0a 20 20 20 20 20 20 73 65 74 20   help.      set 
9680: 65 78 74 72 61 20 22 22 0a 20 20 20 20 20 20 69  extra "".      i
9690: 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67  f {[llength $arg
96a0: 76 5d 3e 31 7d 20 7b 20 73 65 74 20 65 78 74 72  v]>1} { set extr
96b0: 61 20 5b 6c 69 73 74 20 2d 66 69 6c 65 73 20 5b  a [list -files [
96c0: 6c 72 61 6e 67 65 20 24 61 72 67 76 20 31 20 65  lrange $argv 1 e
96d0: 6e 64 5d 5d 20 7d 0a 20 20 20 20 20 20 65 76 61  nd]] }.      eva
96e0: 6c 20 72 75 6e 5f 74 65 73 74 73 20 24 73 75 69  l run_tests $sui
96f0: 74 65 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24  te $::testspec($
9700: 73 75 69 74 65 29 20 24 65 78 74 72 61 0a 20 20  suite) $extra.  
9710: 20 20 7d 0a 20 20 7d 0a 20 20 6d 61 69 6e 20 24    }.  }.  main $
9720: 61 72 67 76 0a 20 20 66 69 6e 69 73 68 5f 74 65  argv.  finish_te
9730: 73 74 0a 7d 0a                                   st.}.