/ Hex Artifact Content
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact 4282fb00e5ac0f8c2cd1be62652f6da4ac03ce3c58b7d785fa17f4684492a0e0:


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 20 20 20   session.test   
0cb0: 20 72 62 75 2e 74 65 73 74 0a 7d 5d 0a 0a 73 65   rbu.test.}]..se
0cc0: 74 20 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20  t allquicktests 
0cd0: 5b 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 74 65  [test_set $allte
0ce0: 73 74 73 20 2d 65 78 63 6c 75 64 65 20 7b 0a 20  sts -exclude {. 
0cf0: 20 61 73 79 6e 63 32 2e 74 65 73 74 20 61 73 79   async2.test asy
0d00: 6e 63 33 2e 74 65 73 74 20 62 61 63 6b 75 70 5f  nc3.test backup_
0d10: 69 6f 65 72 72 2e 74 65 73 74 20 63 6f 72 72 75  ioerr.test corru
0d20: 70 74 2e 74 65 73 74 0a 20 20 63 6f 72 72 75 70  pt.test.  corrup
0d30: 74 43 2e 74 65 73 74 20 63 72 61 73 68 2e 74 65  tC.test crash.te
0d40: 73 74 20 63 72 61 73 68 32 2e 74 65 73 74 20 63  st crash2.test c
0d50: 72 61 73 68 33 2e 74 65 73 74 20 63 72 61 73 68  rash3.test crash
0d60: 34 2e 74 65 73 74 20 63 72 61 73 68 35 2e 74 65  4.test crash5.te
0d70: 73 74 0a 20 20 63 72 61 73 68 36 2e 74 65 73 74  st.  crash6.test
0d80: 20 63 72 61 73 68 37 2e 74 65 73 74 20 64 65 6c   crash7.test del
0d90: 65 74 65 33 2e 74 65 73 74 20 65 5f 66 74 73 33  ete3.test e_fts3
0da0: 2e 74 65 73 74 20 66 74 73 33 72 6e 64 2e 74 65  .test fts3rnd.te
0db0: 73 74 0a 20 20 66 6b 65 79 5f 6d 61 6c 6c 6f 63  st.  fkey_malloc
0dc0: 2e 74 65 73 74 20 66 75 7a 7a 2e 74 65 73 74 20  .test fuzz.test 
0dd0: 66 75 7a 7a 33 2e 74 65 73 74 20 66 75 7a 7a 5f  fuzz3.test fuzz_
0de0: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6e 32 2e  malloc.test in2.
0df0: 74 65 73 74 20 6c 6f 61 64 65 78 74 2e 74 65 73  test loadext.tes
0e00: 74 0a 20 20 6d 69 73 63 37 2e 74 65 73 74 20 6d  t.  misc7.test m
0e10: 75 74 65 78 32 2e 74 65 73 74 20 6e 6f 74 69 66  utex2.test notif
0e20: 79 32 2e 74 65 73 74 20 6f 6e 65 66 69 6c 65 2e  y2.test onefile.
0e30: 74 65 73 74 20 70 61 67 65 72 66 61 75 6c 74 32  test pagerfault2
0e40: 2e 74 65 73 74 20 0a 20 20 73 61 76 65 70 6f 69  .test .  savepoi
0e50: 6e 74 34 2e 74 65 73 74 20 73 61 76 65 70 6f 69  nt4.test savepoi
0e60: 6e 74 36 2e 74 65 73 74 20 73 65 6c 65 63 74 39  nt6.test select9
0e70: 2e 74 65 73 74 20 0a 20 20 73 70 65 65 64 31 2e  .test .  speed1.
0e80: 74 65 73 74 20 73 70 65 65 64 31 70 2e 74 65 73  test speed1p.tes
0e90: 74 20 73 70 65 65 64 32 2e 74 65 73 74 20 73 70  t speed2.test sp
0ea0: 65 65 64 33 2e 74 65 73 74 20 73 70 65 65 64 34  eed3.test speed4
0eb0: 2e 74 65 73 74 20 0a 20 20 73 70 65 65 64 34 70  .test .  speed4p
0ec0: 2e 74 65 73 74 20 73 71 6c 6c 69 6d 69 74 73 31  .test sqllimits1
0ed0: 2e 74 65 73 74 20 74 6b 74 32 36 38 36 2e 74 65  .test tkt2686.te
0ee0: 73 74 20 74 68 72 65 61 64 30 30 31 2e 74 65 73  st thread001.tes
0ef0: 74 20 74 68 72 65 61 64 30 30 32 2e 74 65 73 74  t thread002.test
0f00: 0a 20 20 74 68 72 65 61 64 30 30 33 2e 74 65 73  .  thread003.tes
0f10: 74 20 74 68 72 65 61 64 30 30 34 2e 74 65 73 74  t thread004.test
0f20: 20 74 68 72 65 61 64 30 30 35 2e 74 65 73 74 20   thread005.test 
0f30: 74 72 61 6e 73 32 2e 74 65 73 74 20 76 61 63 75  trans2.test vacu
0f40: 75 6d 33 2e 74 65 73 74 20 0a 20 20 69 6e 63 72  um3.test .  incr
0f50: 76 61 63 75 75 6d 5f 69 6f 65 72 72 2e 74 65 73  vacuum_ioerr.tes
0f60: 74 20 61 75 74 6f 76 61 63 75 75 6d 5f 63 72 61  t autovacuum_cra
0f70: 73 68 2e 74 65 73 74 20 62 74 72 65 65 38 2e 74  sh.test btree8.t
0f80: 65 73 74 20 73 68 61 72 65 64 5f 65 72 72 2e 74  est shared_err.t
0f90: 65 73 74 0a 20 20 76 74 61 62 5f 65 72 72 2e 74  est.  vtab_err.t
0fa0: 65 73 74 20 77 61 6c 73 6c 6f 77 2e 74 65 73 74  est walslow.test
0fb0: 20 77 61 6c 63 72 61 73 68 2e 74 65 73 74 20 77   walcrash.test w
0fc0: 61 6c 63 72 61 73 68 33 2e 74 65 73 74 0a 20 20  alcrash3.test.  
0fd0: 77 61 6c 74 68 72 65 61 64 2e 74 65 73 74 20 72  walthread.test r
0fe0: 74 72 65 65 33 2e 74 65 73 74 20 69 6e 64 65 78  tree3.test index
0ff0: 66 61 75 6c 74 2e 74 65 73 74 20 73 65 63 75 72  fault.test secur
1000: 65 64 65 6c 32 2e 74 65 73 74 0a 20 20 73 6f 72  edel2.test.  sor
1010: 74 33 2e 74 65 73 74 20 73 6f 72 74 34 2e 74 65  t3.test sort4.te
1020: 73 74 20 66 74 73 34 67 72 6f 77 74 68 2e 74 65  st fts4growth.te
1030: 73 74 20 66 74 73 34 67 72 6f 77 74 68 32 2e 74  st fts4growth2.t
1040: 65 73 74 0a 20 20 62 69 67 73 6f 72 74 2e 74 65  est.  bigsort.te
1050: 73 74 20 77 61 6c 70 72 6f 74 6f 63 6f 6c 2e 74  st walprotocol.t
1060: 65 73 74 20 6d 6d 61 70 34 2e 74 65 73 74 20 66  est mmap4.test f
1070: 75 7a 7a 65 72 32 2e 74 65 73 74 0a 20 20 77 61  uzzer2.test.  wa
1080: 6c 63 72 61 73 68 32 2e 74 65 73 74 20 65 5f 66  lcrash2.test e_f
1090: 6b 65 79 2e 74 65 73 74 20 62 61 63 6b 75 70 2e  key.test backup.
10a0: 74 65 73 74 0a 0a 20 20 66 74 73 34 6d 65 72 67  test..  fts4merg
10b0: 65 2e 74 65 73 74 20 66 74 73 34 6d 65 72 67 65  e.test fts4merge
10c0: 32 2e 74 65 73 74 20 66 74 73 34 6d 65 72 67 65  2.test fts4merge
10d0: 34 2e 74 65 73 74 20 66 74 73 34 63 68 65 63 6b  4.test fts4check
10e0: 2e 74 65 73 74 0a 20 20 66 74 73 33 63 6f 76 2e  .test.  fts3cov.
10f0: 74 65 73 74 20 66 74 73 33 73 6e 69 70 70 65 74  test fts3snippet
1100: 2e 74 65 73 74 20 66 74 73 33 63 6f 72 72 75 70  .test fts3corrup
1110: 74 32 2e 74 65 73 74 20 66 74 73 33 61 6e 2e 74  t2.test fts3an.t
1120: 65 73 74 0a 20 20 66 74 73 33 64 65 66 65 72 2e  est.  fts3defer.
1130: 74 65 73 74 20 66 74 73 34 6c 61 6e 67 69 64 2e  test fts4langid.
1140: 74 65 73 74 20 66 74 73 33 73 6f 72 74 2e 74 65  test fts3sort.te
1150: 73 74 20 66 74 73 35 75 6e 69 63 6f 64 65 2e 74  st fts5unicode.t
1160: 65 73 74 0a 0a 20 20 72 74 72 65 65 34 2e 74 65  est..  rtree4.te
1170: 73 74 0a 7d 5d 0a 69 66 20 7b 5b 69 6e 66 6f 20  st.}].if {[info 
1180: 65 78 69 73 74 73 20 3a 3a 65 6e 76 28 51 55 49  exists ::env(QUI
1190: 43 4b 54 45 53 54 5f 49 4e 43 4c 55 44 45 29 5d  CKTEST_INCLUDE)]
11a0: 7d 20 7b 0a 20 20 73 65 74 20 61 6c 6c 71 75 69  } {.  set allqui
11b0: 63 6b 74 65 73 74 73 20 5b 63 6f 6e 63 61 74 20  cktests [concat 
11c0: 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 24  $allquicktests $
11d0: 3a 3a 65 6e 76 28 51 55 49 43 4b 54 45 53 54 5f  ::env(QUICKTEST_
11e0: 49 4e 43 4c 55 44 45 29 5d 0a 7d 0a 69 66 20 7b  INCLUDE)].}.if {
11f0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 65  [info exists ::e
1200: 6e 76 28 51 55 49 43 4b 54 45 53 54 5f 4f 4d 49  nv(QUICKTEST_OMI
1210: 54 29 5d 7d 20 7b 0a 20 20 66 6f 72 65 61 63 68  T)]} {.  foreach
1220: 20 78 20 5b 73 70 6c 69 74 20 24 3a 3a 65 6e 76   x [split $::env
1230: 28 51 55 49 43 4b 54 45 53 54 5f 4f 4d 49 54 29  (QUICKTEST_OMIT)
1240: 20 2c 5d 20 7b 0a 20 20 20 20 72 65 67 73 75 62   ,] {.    regsub
1250: 20 2d 61 6c 6c 20 5c 5c 79 24 78 5c 5c 79 20 24   -all \\y$x\\y $
1260: 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 7b 7d  allquicktests {}
1270: 20 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 0a 20   allquicktests. 
1280: 20 7d 0a 7d 0a 0a 23 20 49 66 20 74 68 65 20 54   }.}..# If the T
1290: 45 53 54 5f 46 41 49 4c 55 52 45 20 65 6e 76 69  EST_FAILURE envi
12a0: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65  ronment variable
12b0: 20 69 73 20 73 65 74 2c 20 69 74 20 6d 65 61 6e   is set, it mean
12c0: 73 20 74 68 61 74 20 77 65 20 77 68 61 74 20 74  s that we what t
12d0: 6f 0a 23 20 64 65 6c 69 62 65 72 61 74 65 6c 79  o.# deliberately
12e0: 20 70 72 6f 76 6f 6b 65 20 74 65 73 74 20 66 61   provoke test fa
12f0: 69 6c 75 72 65 73 20 69 6e 20 6f 72 64 65 72 20  ilures in order 
1300: 74 6f 20 74 65 73 74 20 74 68 65 20 74 65 73 74  to test the test
1310: 20 69 6e 66 72 61 73 74 72 75 63 74 75 72 65 2e   infrastructure.
1320: 0a 23 20 4f 6e 6c 79 20 74 68 65 20 6d 61 69 6e  .# Only the main
1330: 2e 74 65 73 74 20 6d 6f 64 75 6c 65 20 69 73 20  .test module is 
1340: 6e 65 65 64 65 64 20 66 6f 72 20 74 68 69 73 2e  needed for this.
1350: 0a 23 0a 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69  .#.if {[info exi
1360: 73 74 73 20 3a 3a 65 6e 76 28 54 45 53 54 5f 46  sts ::env(TEST_F
1370: 41 49 4c 55 52 45 29 5d 7d 20 7b 0a 20 20 73 65  AILURE)]} {.  se
1380: 74 20 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20  t allquicktests 
1390: 6d 61 69 6e 2e 74 65 73 74 0a 7d 0a 0a 23 23 23  main.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 23 23 23 0a 23 20 53 74 61  ##########.# Sta
13f0: 72 74 20 6f 66 20 74 65 73 74 73 0a 23 0a 0a 23  rt 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 2d 2d 2d 0a 23 20 44 65 66 69  ---------.# Defi
1450: 6e 65 20 74 68 65 20 67 65 6e 65 72 69 63 20 74  ne the generic t
1460: 65 73 74 20 73 75 69 74 65 73 3a 0a 23 0a 23 20  est suites:.#.# 
1470: 20 20 76 65 72 79 71 75 69 63 6b 0a 23 20 20 20    veryquick.#   
1480: 71 75 69 63 6b 0a 23 20 20 20 66 75 6c 6c 0a 23  quick.#   full.#
1490: 0a 6c 61 70 70 65 6e 64 20 3a 3a 74 65 73 74 73  .lappend ::tests
14a0: 75 69 74 65 6c 69 73 74 20 78 78 78 0a 0a 74 65  uitelist xxx..te
14b0: 73 74 5f 73 75 69 74 65 20 22 76 65 72 79 71 75  st_suite "veryqu
14c0: 69 63 6b 22 20 2d 70 72 65 66 69 78 20 22 22 20  ick" -prefix "" 
14d0: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
14e0: 20 22 56 65 72 79 22 20 71 75 69 63 6b 20 74 65   "Very" quick te
14f0: 73 74 20 73 75 69 74 65 2e 20 52 75 6e 73 20 69  st suite. Runs i
1500: 6e 20 6d 69 6e 75 74 65 73 20 6f 6e 20 61 20 77  n minutes on a w
1510: 6f 72 6b 73 74 61 74 69 6f 6e 2e 0a 20 20 54 68  orkstation..  Th
1520: 69 73 20 74 65 73 74 20 73 75 69 74 65 20 69 73  is test suite is
1530: 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65   the same as the
1540: 20 22 71 75 69 63 6b 22 20 74 65 73 74 73 2c 20   "quick" tests, 
1550: 65 78 63 65 70 74 20 74 68 61 74 20 73 6f 6d 65  except that some
1560: 20 66 69 6c 65 73 0a 20 20 74 68 61 74 20 74 65   files.  that te
1570: 73 74 20 6d 61 6c 6c 6f 63 20 61 6e 64 20 49 4f  st malloc and IO
1580: 20 65 72 72 6f 72 73 20 61 72 65 20 6f 6d 69 74   errors are omit
1590: 74 65 64 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a  ted..} -files [.
15a0: 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71    test_set $allq
15b0: 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75  uicktests -exclu
15c0: 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65  de *malloc* *ioe
15d0: 72 72 2a 20 2a 66 61 75 6c 74 2a 20 2a 62 69 67  rr* *fault* *big
15e0: 66 69 6c 65 2a 20 2a 5f 65 72 72 2a 20 5c 0a 20  file* *_err* \. 
15f0: 20 20 20 20 20 2a 66 74 73 35 63 6f 72 72 75 70       *fts5corrup
1600: 74 2a 20 2a 66 74 73 35 62 69 67 2a 20 2a 66 74  t* *fts5big* *ft
1610: 73 35 61 6a 2a 0a 5d 0a 0a 74 65 73 74 5f 73 75  s5aj*.]..test_su
1620: 69 74 65 20 22 65 78 74 72 61 71 75 69 63 6b 22  ite "extraquick"
1630: 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65 73   -prefix "" -des
1640: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 22 45 78  cription {.  "Ex
1650: 74 72 61 22 20 71 75 69 63 6b 20 74 65 73 74 20  tra" quick test 
1660: 73 75 69 74 65 2e 20 52 75 6e 73 20 69 6e 20 61  suite. Runs in a
1670: 20 66 65 77 20 6d 69 6e 75 74 65 73 20 6f 6e 20   few minutes on 
1680: 61 20 77 6f 72 6b 73 74 61 74 69 6f 6e 2e 0a 20  a workstation.. 
1690: 20 54 68 69 73 20 74 65 73 74 20 73 75 69 74 65   This test suite
16a0: 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20   is the same as 
16b0: 74 68 65 20 22 76 65 72 79 71 75 69 63 6b 22 20  the "veryquick" 
16c0: 74 65 73 74 73 2c 20 65 78 63 65 70 74 20 74 68  tests, except th
16d0: 61 74 0a 20 20 73 6c 6f 77 65 72 20 74 65 73 74  at.  slower test
16e0: 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 7d  s are omitted..}
16f0: 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74   -files [.  test
1700: 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74 65  _set $allquickte
1710: 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61  sts -exclude *ma
1720: 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66  lloc* *ioerr* *f
1730: 61 75 6c 74 2a 20 2a 62 69 67 66 69 6c 65 2a 20  ault* *bigfile* 
1740: 2a 5f 65 72 72 2a 20 5c 0a 20 20 20 20 20 77 61  *_err* \.     wa
1750: 6c 33 2e 74 65 73 74 20 66 74 73 34 6d 65 72 67  l3.test fts4merg
1760: 65 2a 20 73 6f 72 74 32 2e 74 65 73 74 20 6d 6d  e* sort2.test mm
1770: 61 70 31 2e 74 65 73 74 20 77 61 6c 63 72 61 73  ap1.test walcras
1780: 68 2a 20 5c 0a 20 20 20 20 20 70 65 72 63 65 6e  h* \.     percen
1790: 74 69 6c 65 2e 74 65 73 74 20 77 68 65 72 65 38  tile.test where8
17a0: 6d 2e 74 65 73 74 20 77 61 6c 63 6b 73 75 6d 2e  m.test walcksum.
17b0: 74 65 73 74 20 73 61 76 65 70 6f 69 6e 74 33 2e  test savepoint3.
17c0: 74 65 73 74 20 5c 0a 20 20 20 20 20 66 75 7a 7a  test \.     fuzz
17d0: 65 72 31 2e 74 65 73 74 20 66 75 7a 7a 65 72 33  er1.test fuzzer3
17e0: 2e 74 65 73 74 20 66 74 73 33 65 78 70 72 33 2e  .test fts3expr3.
17f0: 74 65 73 74 0a 5d 0a 0a 74 65 73 74 5f 73 75 69  test.]..test_sui
1800: 74 65 20 22 6d 6d 61 70 22 20 2d 70 72 65 66 69  te "mmap" -prefi
1810: 78 20 22 6d 6d 2d 22 20 2d 64 65 73 63 72 69 70  x "mm-" -descrip
1820: 74 69 6f 6e 20 7b 0a 20 20 53 69 6d 69 6c 61 72  tion {.  Similar
1830: 20 74 6f 20 76 65 72 79 71 75 69 63 6b 2e 20 45   to veryquick. E
1840: 78 63 65 70 74 20 77 69 74 68 20 6d 65 6d 6f 72  xcept with memor
1850: 79 20 6d 61 70 70 69 6e 67 20 65 6e 61 62 6c 65  y mapping enable
1860: 64 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20  d..} -presql {. 
1870: 20 70 72 61 67 6d 61 20 6d 6d 61 70 5f 73 69 7a   pragma mmap_siz
1880: 65 20 3d 20 32 36 38 34 33 35 34 35 36 3b 0a 7d  e = 268435456;.}
1890: 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74   -files [.  test
18a0: 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74 65  _set $allquickte
18b0: 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61  sts -exclude *ma
18c0: 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66  lloc* *ioerr* *f
18d0: 61 75 6c 74 2a 20 2d 69 6e 63 6c 75 64 65 20 6d  ault* -include m
18e0: 61 6c 6c 6f 63 2e 74 65 73 74 0a 5d 0a 0a 74 65  alloc.test.]..te
18f0: 73 74 5f 73 75 69 74 65 20 22 76 61 6c 67 72 69  st_suite "valgri
1900: 6e 64 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d  nd" -prefix "" -
1910: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
1920: 52 75 6e 20 74 68 65 20 22 76 65 72 79 71 75 69  Run the "veryqui
1930: 63 6b 22 20 74 65 73 74 20 73 75 69 74 65 20 77  ck" test suite w
1940: 69 74 68 20 61 20 63 6f 75 70 6c 65 20 6f 66 20  ith a couple of 
1950: 6d 75 6c 74 69 2d 70 72 6f 63 65 73 73 20 74 65  multi-process te
1960: 73 74 73 20 28 74 68 61 74 0a 20 20 66 61 69 6c  sts (that.  fail
1970: 20 75 6e 64 65 72 20 76 61 6c 67 72 69 6e 64 29   under valgrind)
1980: 20 6f 6d 69 74 74 65 64 2e 0a 7d 20 2d 66 69 6c   omitted..} -fil
1990: 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20  es [.  test_set 
19a0: 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  $allquicktests -
19b0: 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a  exclude *malloc*
19c0: 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a   *ioerr* *fault*
19d0: 20 2a 5f 65 72 72 2a 20 77 61 6c 2e 74 65 73 74   *_err* wal.test
19e0: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
19f0: 20 73 68 65 6c 6c 2a 2e 74 65 73 74 20 63 72 61   shell*.test cra
1a00: 73 68 38 2e 74 65 73 74 20 61 74 6f 66 31 2e 74  sh8.test atof1.t
1a10: 65 73 74 20 73 65 6c 65 63 74 47 2e 74 65 73 74  est selectG.test
1a20: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
1a30: 20 74 6b 74 2d 66 63 36 32 61 66 34 35 32 33 2e   tkt-fc62af4523.
1a40: 74 65 73 74 20 6e 75 6d 69 6e 64 65 78 31 2e 74  test numindex1.t
1a50: 65 73 74 20 63 6f 72 72 75 70 74 4b 2e 74 65 73  est corruptK.tes
1a60: 74 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20  t.] -initialize 
1a70: 7b 0a 20 20 73 65 74 20 3a 3a 47 28 76 61 6c 67  {.  set ::G(valg
1a80: 72 69 6e 64 29 20 31 0a 7d 20 2d 73 68 75 74 64  rind) 1.} -shutd
1a90: 6f 77 6e 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e  own {.  unset -n
1aa0: 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a 47 28 76 61  ocomplain ::G(va
1ab0: 6c 67 72 69 6e 64 29 0a 7d 0a 0a 74 65 73 74 5f  lgrind).}..test_
1ac0: 73 75 69 74 65 20 22 76 61 6c 67 72 69 6e 64 2d  suite "valgrind-
1ad0: 6e 6f 6c 6f 6f 6b 61 73 69 64 65 22 20 2d 70 72  nolookaside" -pr
1ae0: 65 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70  efix "" -descrip
1af0: 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 68 65  tion {.  Run the
1b00: 20 22 76 65 72 79 71 75 69 63 6b 22 20 74 65 73   "veryquick" tes
1b10: 74 20 73 75 69 74 65 20 77 69 74 68 20 61 20 63  t suite with a c
1b20: 6f 75 70 6c 65 20 6f 66 20 6d 75 6c 74 69 2d 70  ouple of multi-p
1b30: 72 6f 63 65 73 73 20 74 65 73 74 73 20 28 74 68  rocess tests (th
1b40: 61 74 0a 20 20 66 61 69 6c 20 75 6e 64 65 72 20  at.  fail under 
1b50: 76 61 6c 67 72 69 6e 64 29 20 6f 6d 69 74 74 65  valgrind) omitte
1b60: 64 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20  d..} -files [.  
1b70: 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69  test_set $allqui
1b80: 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  cktests -exclude
1b90: 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72   *malloc* *ioerr
1ba0: 2a 20 2a 66 61 75 6c 74 2a 20 2a 5f 65 72 72 2a  * *fault* *_err*
1bb0: 20 5c 0a 20 20 20 20 20 20 77 61 6c 2e 74 65 73   \.      wal.tes
1bc0: 74 20 61 74 6f 66 31 2e 74 65 73 74 0a 5d 20 2d  t atof1.test.] -
1bd0: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 73  initialize {.  s
1be0: 65 74 20 3a 3a 47 28 76 61 6c 67 72 69 6e 64 29  et ::G(valgrind)
1bf0: 20 31 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   1.  catch {db c
1c00: 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f  lose}.  sqlite3_
1c10: 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74  shutdown.  sqlit
1c20: 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73  e3_config_lookas
1c30: 69 64 65 20 30 20 30 0a 20 20 73 71 6c 69 74 65  ide 0 0.  sqlite
1c40: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61  3_initialize.  a
1c50: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
1c60: 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73 68 75  functions.} -shu
1c70: 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68 20  tdown {.  catch 
1c80: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
1c90: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
1ca0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c  sqlite3_config_l
1cb0: 6f 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30 30  ookaside 100 500
1cc0: 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  .  sqlite3_initi
1cd0: 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74  alize.  autoinst
1ce0: 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f  all_test_functio
1cf0: 6e 73 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f  ns.  unset -noco
1d00: 6d 70 6c 61 69 6e 20 3a 3a 47 28 76 61 6c 67 72  mplain ::G(valgr
1d10: 69 6e 64 29 0a 7d 0a 0a 0a 74 65 73 74 5f 73 75  ind).}...test_su
1d20: 69 74 65 20 22 71 75 69 63 6b 22 20 2d 70 72 65  ite "quick" -pre
1d30: 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74  fix "" -descript
1d40: 69 6f 6e 20 7b 0a 20 20 51 75 69 63 6b 20 74 65  ion {.  Quick te
1d50: 73 74 20 73 75 69 74 65 2e 20 52 75 6e 73 20 69  st suite. Runs i
1d60: 6e 20 61 72 6f 75 6e 64 20 31 30 20 6d 69 6e 75  n around 10 minu
1d70: 74 65 73 20 6f 6e 20 61 20 77 6f 72 6b 73 74 61  tes on a worksta
1d80: 74 69 6f 6e 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b  tion..} -files [
1d90: 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c 6c  .  test_set $all
1da0: 71 75 69 63 6b 74 65 73 74 73 0a 5d 0a 0a 74 65  quicktests.]..te
1db0: 73 74 5f 73 75 69 74 65 20 22 66 75 6c 6c 22 20  st_suite "full" 
1dc0: 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65 73 63  -prefix "" -desc
1dd0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 46 75 6c 6c  ription {.  Full
1de0: 20 74 65 73 74 20 73 75 69 74 65 2e 20 54 61 6b   test suite. Tak
1df0: 65 73 20 61 20 6c 6f 6e 67 20 74 69 6d 65 2e 0a  es a long time..
1e00: 7d 20 2d 66 69 6c 65 73 20 5b 20 0a 20 20 74 65  } -files [ .  te
1e10: 73 74 5f 73 65 74 20 24 61 6c 6c 74 65 73 74 73  st_set $alltests
1e20: 20 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20   .] -initialize 
1e30: 7b 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d  {.  unset -nocom
1e40: 70 6c 61 69 6e 20 3a 3a 47 28 69 73 71 75 69 63  plain ::G(isquic
1e50: 6b 29 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65  k).}..test_suite
1e60: 20 22 74 68 72 65 61 64 73 22 20 2d 70 72 65 66   "threads" -pref
1e70: 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74 69  ix "" -descripti
1e80: 6f 6e 20 7b 0a 20 20 41 6c 6c 20 6d 75 6c 74 69  on {.  All multi
1e90: 2d 74 68 72 65 61 64 65 64 20 74 65 73 74 73 2e  -threaded tests.
1ea0: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 6e 6f  .} -files {.  no
1eb0: 74 69 66 79 32 2e 74 65 73 74 20 20 20 74 68 72  tify2.test   thr
1ec0: 65 61 64 30 30 31 2e 74 65 73 74 20 74 68 72 65  ead001.test thre
1ed0: 61 64 30 30 32 2e 74 65 73 74 20 74 68 72 65 61  ad002.test threa
1ee0: 64 30 30 33 2e 74 65 73 74 20 0a 20 20 74 68 72  d003.test .  thr
1ef0: 65 61 64 30 30 34 2e 74 65 73 74 20 74 68 72 65  ead004.test thre
1f00: 61 64 30 30 35 2e 74 65 73 74 20 77 61 6c 74 68  ad005.test walth
1f10: 72 65 61 64 2e 74 65 73 74 0a 7d 0a 0a 74 65 73  read.test.}..tes
1f20: 74 5f 73 75 69 74 65 20 22 66 74 73 33 22 20 2d  t_suite "fts3" -
1f30: 70 72 65 66 69 78 20 22 22 20 2d 64 65 73 63 72  prefix "" -descr
1f40: 69 70 74 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20 46  iption {.  All F
1f50: 54 53 33 20 74 65 73 74 73 20 65 78 63 65 70 74  TS3 tests except
1f60: 20 66 74 73 33 72 6e 64 2e 74 65 73 74 2e 0a 7d   fts3rnd.test..}
1f70: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 66 74 73 33   -files {.  fts3
1f80: 61 61 2e 74 65 73 74 20 66 74 73 33 61 62 2e 74  aa.test fts3ab.t
1f90: 65 73 74 20 66 74 73 33 61 63 2e 74 65 73 74 20  est fts3ac.test 
1fa0: 66 74 73 33 61 64 2e 74 65 73 74 0a 20 20 66 74  fts3ad.test.  ft
1fb0: 73 33 61 65 2e 74 65 73 74 20 66 74 73 33 61 66  s3ae.test fts3af
1fc0: 2e 74 65 73 74 20 66 74 73 33 61 67 2e 74 65 73  .test fts3ag.tes
1fd0: 74 20 66 74 73 33 61 68 2e 74 65 73 74 0a 20 20  t fts3ah.test.  
1fe0: 66 74 73 33 61 69 2e 74 65 73 74 20 66 74 73 33  fts3ai.test fts3
1ff0: 61 6a 2e 74 65 73 74 20 66 74 73 33 61 6b 2e 74  aj.test fts3ak.t
2000: 65 73 74 20 66 74 73 33 61 6c 2e 74 65 73 74 0a  est fts3al.test.
2010: 20 20 66 74 73 33 61 6d 2e 74 65 73 74 20 66 74    fts3am.test ft
2020: 73 33 61 6e 2e 74 65 73 74 20 66 74 73 33 61 6f  s3an.test fts3ao
2030: 2e 74 65 73 74 20 66 74 73 33 61 74 6f 6b 65 6e  .test fts3atoken
2040: 2e 74 65 73 74 0a 20 20 66 74 73 33 61 75 74 6f  .test.  fts3auto
2050: 2e 74 65 73 74 20 66 74 73 33 61 75 78 31 2e 74  .test fts3aux1.t
2060: 65 73 74 20 66 74 73 33 61 75 78 32 2e 74 65 73  est fts3aux2.tes
2070: 74 20 66 74 73 33 62 2e 74 65 73 74 0a 20 20 66  t fts3b.test.  f
2080: 74 73 33 63 6f 6d 70 31 2e 74 65 73 74 20 66 74  ts3comp1.test ft
2090: 73 33 63 6f 6e 66 2e 74 65 73 74 20 66 74 73 33  s3conf.test fts3
20a0: 63 6f 72 72 75 70 74 32 2e 74 65 73 74 20 66 74  corrupt2.test ft
20b0: 73 33 63 6f 72 72 75 70 74 2e 74 65 73 74 0a 20  s3corrupt.test. 
20c0: 20 66 74 73 33 63 6f 72 72 75 70 74 34 2e 74 65   fts3corrupt4.te
20d0: 73 74 0a 20 20 66 74 73 33 63 6f 76 2e 74 65 73  st.  fts3cov.tes
20e0: 74 20 66 74 73 33 63 2e 74 65 73 74 20 66 74 73  t fts3c.test fts
20f0: 33 64 65 66 65 72 32 2e 74 65 73 74 20 66 74 73  3defer2.test fts
2100: 33 64 65 66 65 72 33 2e 74 65 73 74 0a 20 20 66  3defer3.test.  f
2110: 74 73 33 64 65 66 65 72 2e 74 65 73 74 20 66 74  ts3defer.test ft
2120: 73 33 64 72 6f 70 2e 74 65 73 74 20 66 74 73 33  s3drop.test fts3
2130: 64 2e 74 65 73 74 20 66 74 73 33 65 2e 74 65 73  d.test fts3e.tes
2140: 74 0a 20 20 66 74 73 33 65 78 70 72 32 2e 74 65  t.  fts3expr2.te
2150: 73 74 20 66 74 73 33 65 78 70 72 33 2e 74 65 73  st fts3expr3.tes
2160: 74 20 66 74 73 33 65 78 70 72 34 2e 74 65 73 74  t fts3expr4.test
2170: 20 66 74 73 33 65 78 70 72 35 2e 74 65 73 74 0a   fts3expr5.test.
2180: 20 20 66 74 73 33 65 78 70 72 2e 74 65 73 74 20    fts3expr.test 
2190: 66 74 73 33 66 61 75 6c 74 32 2e 74 65 73 74 20  fts3fault2.test 
21a0: 66 74 73 33 66 61 75 6c 74 2e 74 65 73 74 20 66  fts3fault.test f
21b0: 74 73 33 66 69 72 73 74 2e 74 65 73 74 0a 20 20  ts3first.test.  
21c0: 66 74 73 33 6a 6f 69 6e 2e 74 65 73 74 20 66 74  fts3join.test ft
21d0: 73 33 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 66 74  s3malloc.test ft
21e0: 73 33 6d 61 74 63 68 69 6e 66 6f 2e 74 65 73 74  s3matchinfo.test
21f0: 20 66 74 73 33 6e 65 61 72 2e 74 65 73 74 0a 20   fts3near.test. 
2200: 20 66 74 73 33 6f 66 66 73 65 74 73 2e 74 65 73   fts3offsets.tes
2210: 74 20 66 74 73 33 70 72 65 66 69 78 32 2e 74 65  t fts3prefix2.te
2220: 73 74 20 66 74 73 33 70 72 65 66 69 78 2e 74 65  st fts3prefix.te
2230: 73 74 20 66 74 73 33 71 75 65 72 79 2e 74 65 73  st fts3query.tes
2240: 74 0a 20 20 66 74 73 33 73 68 61 72 65 64 2e 74  t.  fts3shared.t
2250: 65 73 74 20 66 74 73 33 73 6e 69 70 70 65 74 2e  est fts3snippet.
2260: 74 65 73 74 20 66 74 73 33 73 6f 72 74 2e 74 65  test fts3sort.te
2270: 73 74 20 66 74 73 33 74 6f 6b 31 2e 74 65 73 74  st fts3tok1.test
2280: 0a 20 20 66 74 73 33 74 6f 6b 5f 65 72 72 2e 74  .  fts3tok_err.t
2290: 65 73 74 20 66 74 73 33 76 61 72 69 6e 74 2e 74  est fts3varint.t
22a0: 65 73 74 20 66 74 73 34 61 61 2e 74 65 73 74 20  est fts4aa.test 
22b0: 66 74 73 34 63 68 65 63 6b 2e 74 65 73 74 0a 20  fts4check.test. 
22c0: 20 66 74 73 34 63 6f 6e 74 65 6e 74 2e 74 65 73   fts4content.tes
22d0: 74 20 66 74 73 34 64 6f 63 69 64 2e 74 65 73 74  t fts4docid.test
22e0: 20 66 74 73 34 67 72 6f 77 74 68 32 2e 74 65 73   fts4growth2.tes
22f0: 74 20 66 74 73 34 67 72 6f 77 74 68 2e 74 65 73  t fts4growth.tes
2300: 74 0a 20 20 66 74 73 34 69 6e 63 72 2e 74 65 73  t.  fts4incr.tes
2310: 74 20 66 74 73 34 6c 61 6e 67 69 64 2e 74 65 73  t fts4langid.tes
2320: 74 20 66 74 73 34 6c 61 73 74 72 6f 77 69 64 2e  t fts4lastrowid.
2330: 74 65 73 74 20 66 74 73 34 6d 65 72 67 65 32 2e  test fts4merge2.
2340: 74 65 73 74 0a 20 20 66 74 73 34 6d 65 72 67 65  test.  fts4merge
2350: 34 2e 74 65 73 74 20 66 74 73 34 6d 65 72 67 65  4.test fts4merge
2360: 2e 74 65 73 74 20 66 74 73 34 6e 6f 74 69 2e 74  .test fts4noti.t
2370: 65 73 74 20 66 74 73 34 6f 6e 65 70 61 73 73 2e  est fts4onepass.
2380: 74 65 73 74 20 0a 20 20 66 74 73 34 6f 70 74 2e  test .  fts4opt.
2390: 74 65 73 74 20 66 74 73 34 75 6e 69 63 6f 64 65  test fts4unicode
23a0: 2e 74 65 73 74 0a 20 20 66 74 73 33 63 6f 72 72  .test.  fts3corr
23b0: 75 70 74 33 2e 74 65 73 74 0a 20 20 66 74 73 33  upt3.test.  fts3
23c0: 6d 69 73 63 2e 74 65 73 74 0a 7d 0a 0a 74 65 73  misc.test.}..tes
23d0: 74 5f 73 75 69 74 65 20 22 66 74 73 35 22 20 2d  t_suite "fts5" -
23e0: 70 72 65 66 69 78 20 22 22 20 2d 64 65 73 63 72  prefix "" -descr
23f0: 69 70 74 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20 46  iption {.  All F
2400: 54 53 35 20 74 65 73 74 73 2e 0a 7d 20 2d 66 69  TS5 tests..} -fi
2410: 6c 65 73 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d  les [glob -nocom
2420: 70 6c 61 69 6e 20 24 3a 3a 74 65 73 74 64 69 72  plain $::testdir
2430: 2f 2e 2e 2f 65 78 74 2f 66 74 73 35 2f 74 65 73  /../ext/fts5/tes
2440: 74 2f 2a 2e 74 65 73 74 5d 0a 0a 74 65 73 74 5f  t/*.test]..test_
2450: 73 75 69 74 65 20 22 66 74 73 35 2d 6c 69 67 68  suite "fts5-ligh
2460: 74 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64  t" -prefix "" -d
2470: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 41  escription {.  A
2480: 6c 6c 20 46 54 53 35 20 74 65 73 74 73 2e 0a 7d  ll FTS5 tests..}
2490: 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74   -files [.  test
24a0: 5f 73 65 74 20 5c 0a 20 20 20 20 20 20 5b 67 6c  _set \.      [gl
24b0: 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24  ob -nocomplain $
24c0: 3a 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74  ::testdir/../ext
24d0: 2f 66 74 73 35 2f 74 65 73 74 2f 2a 2e 74 65 73  /fts5/test/*.tes
24e0: 74 5d 20 5c 0a 20 20 20 20 20 20 2d 65 78 63 6c  t] \.      -excl
24f0: 75 64 65 20 2a 63 6f 72 72 75 70 74 2a 20 2a 66  ude *corrupt* *f
2500: 61 75 6c 74 2a 20 2a 62 69 67 2a 20 2a 66 74 73  ault* *big* *fts
2510: 35 61 6a 2a 0a 5d 0a 0a 74 65 73 74 5f 73 75 69  5aj*.]..test_sui
2520: 74 65 20 22 77 69 6e 64 6f 77 22 20 2d 70 72 65  te "window" -pre
2530: 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74  fix "" -descript
2540: 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20 77 69 6e 64  ion {.  All wind
2550: 6f 77 20 66 75 6e 63 74 69 6f 6e 20 72 65 6c 61  ow function rela
2560: 74 65 64 20 74 65 73 74 73 20 2e 0a 7d 20 2d 66  ted tests ..} -f
2570: 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65  iles [.  test_se
2580: 74 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c  t [glob -nocompl
2590: 61 69 6e 20 24 3a 3a 74 65 73 74 64 69 72 2f 77  ain $::testdir/w
25a0: 69 6e 64 6f 77 2a 2e 74 65 73 74 5d 0a 5d 0a 0a  indow*.test].]..
25b0: 74 65 73 74 5f 73 75 69 74 65 20 22 6c 73 6d 31  test_suite "lsm1
25c0: 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65  " -prefix "" -de
25d0: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 41 6c  scription {.  Al
25e0: 6c 20 4c 53 4d 31 20 74 65 73 74 73 2e 0a 7d 20  l LSM1 tests..} 
25f0: 2d 66 69 6c 65 73 20 5b 67 6c 6f 62 20 2d 6e 6f  -files [glob -no
2600: 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a 74 65 73 74  complain $::test
2610: 64 69 72 2f 2e 2e 2f 65 78 74 2f 6c 73 6d 31 2f  dir/../ext/lsm1/
2620: 74 65 73 74 2f 2a 2e 74 65 73 74 5d 0a 0a 74 65  test/*.test]..te
2630: 73 74 5f 73 75 69 74 65 20 22 6e 6f 66 61 75 6c  st_suite "nofaul
2640: 74 73 69 6d 22 20 2d 70 72 65 66 69 78 20 22 22  tsim" -prefix ""
2650: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
2660: 20 20 22 56 65 72 79 22 20 71 75 69 63 6b 20 74    "Very" quick t
2670: 65 73 74 20 73 75 69 74 65 2e 20 52 75 6e 73 20  est suite. Runs 
2680: 69 6e 20 6c 65 73 73 20 74 68 61 6e 20 35 20 6d  in less than 5 m
2690: 69 6e 75 74 65 73 20 6f 6e 20 61 20 77 6f 72 6b  inutes on a work
26a0: 73 74 61 74 69 6f 6e 2e 20 0a 20 20 54 68 69 73  station. .  This
26b0: 20 74 65 73 74 20 73 75 69 74 65 20 69 73 20 74   test suite is t
26c0: 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20 22  he same as the "
26d0: 71 75 69 63 6b 22 20 74 65 73 74 73 2c 20 65 78  quick" tests, ex
26e0: 63 65 70 74 20 74 68 61 74 20 73 6f 6d 65 20 66  cept that some f
26f0: 69 6c 65 73 0a 20 20 74 68 61 74 20 74 65 73 74  iles.  that test
2700: 20 6d 61 6c 6c 6f 63 20 61 6e 64 20 49 4f 20 65   malloc and IO e
2710: 72 72 6f 72 73 20 61 72 65 20 6f 6d 69 74 74 65  rrors are omitte
2720: 64 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20  d..} -files [.  
2730: 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69  test_set $allqui
2740: 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  cktests -exclude
2750: 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72   *malloc* *ioerr
2760: 2a 20 2a 66 61 75 6c 74 2a 20 2a 5f 65 72 72 2a  * *fault* *_err*
2770: 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  .] -initialize {
2780: 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f  .  catch {db clo
2790: 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68  se}.  sqlite3_sh
27a0: 75 74 64 6f 77 6e 0a 20 20 69 6e 73 74 61 6c 6c  utdown.  install
27b0: 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d  _malloc_faultsim
27c0: 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69   0.  sqlite3_ini
27d0: 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e  tialize.  autoin
27e0: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
27f0: 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  ions.} -shutdown
2800: 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f   {.  unset -noco
2810: 6d 70 6c 61 69 6e 20 3a 3a 47 28 76 61 6c 67 72  mplain ::G(valgr
2820: 69 6e 64 29 0a 7d 0a 0a 74 65 73 74 5f 73 75 69  ind).}..test_sui
2830: 74 65 20 22 71 75 65 72 79 70 6c 61 6e 6e 65 72  te "queryplanner
2840: 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65  " -prefix "" -de
2850: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65  scription {.  Te
2860: 73 74 73 20 6f 66 20 74 68 65 20 71 75 65 72 79  sts of the query
2870: 20 70 6c 61 6e 6e 65 72 20 61 6e 64 20 71 75 65   planner and que
2880: 72 79 20 6f 70 74 69 6d 69 7a 65 72 0a 7d 20 2d  ry optimizer.} -
2890: 66 69 6c 65 73 20 7b 0a 20 20 61 6c 74 65 72 32  files {.  alter2
28a0: 2e 74 65 73 74 20 61 6c 74 65 72 33 2e 74 65 73  .test alter3.tes
28b0: 74 20 61 6c 74 65 72 34 2e 74 65 73 74 20 61 6c  t alter4.test al
28c0: 74 65 72 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  ter.test analyze
28d0: 33 2e 74 65 73 74 0a 20 20 61 6e 61 6c 79 7a 65  3.test.  analyze
28e0: 34 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 35 2e  4.test analyze5.
28f0: 74 65 73 74 20 61 6e 61 6c 79 7a 65 36 2e 74 65  test analyze6.te
2900: 73 74 20 61 6e 61 6c 79 7a 65 37 2e 74 65 73 74  st analyze7.test
2910: 20 61 6e 61 6c 79 7a 65 38 2e 74 65 73 74 0a 20   analyze8.test. 
2920: 20 61 6e 61 6c 79 7a 65 2e 74 65 73 74 20 61 74   analyze.test at
2930: 74 61 63 68 32 2e 74 65 73 74 20 61 74 74 61 63  tach2.test attac
2940: 68 33 2e 74 65 73 74 20 61 74 74 61 63 68 34 2e  h3.test attach4.
2950: 74 65 73 74 0a 20 20 61 74 74 61 63 68 2e 74 65  test.  attach.te
2960: 73 74 20 61 75 74 6f 69 6e 63 2e 74 65 73 74 20  st autoinc.test 
2970: 61 75 74 6f 69 6e 64 65 78 31 2e 74 65 73 74 20  autoindex1.test 
2980: 62 65 74 77 65 65 6e 2e 74 65 73 74 20 63 61 73  between.test cas
2990: 74 2e 74 65 73 74 0a 20 20 63 68 65 63 6b 2e 74  t.test.  check.t
29a0: 65 73 74 20 63 6c 6f 73 75 72 65 30 31 2e 74 65  est closure01.te
29b0: 73 74 20 63 6f 61 6c 65 73 63 65 2e 74 65 73 74  st coalesce.test
29c0: 20 63 6f 6c 6c 61 74 65 31 2e 74 65 73 74 20 63   collate1.test c
29d0: 6f 6c 6c 61 74 65 32 2e 74 65 73 74 0a 20 20 63  ollate2.test.  c
29e0: 6f 6c 6c 61 74 65 33 2e 74 65 73 74 20 63 6f 6c  ollate3.test col
29f0: 6c 61 74 65 34 2e 74 65 73 74 20 63 6f 6c 6c 61  late4.test colla
2a00: 74 65 35 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65  te5.test collate
2a10: 36 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 37 2e  6.test collate7.
2a20: 74 65 73 74 0a 20 20 63 6f 6c 6c 61 74 65 38 2e  test.  collate8.
2a30: 74 65 73 74 20 63 6f 6c 6c 61 74 65 39 2e 74 65  test collate9.te
2a40: 73 74 20 63 6f 6c 6c 61 74 65 41 2e 74 65 73 74  st collateA.test
2a50: 20 63 6f 6c 6d 65 74 61 2e 74 65 73 74 20 63 6f   colmeta.test co
2a60: 6c 6e 61 6d 65 2e 74 65 73 74 0a 20 20 63 6f 6e  lname.test.  con
2a70: 66 6c 69 63 74 2e 74 65 73 74 20 63 6f 75 6e 74  flict.test count
2a80: 2e 74 65 73 74 20 63 6f 76 65 72 69 64 78 73 63  .test coveridxsc
2a90: 61 6e 2e 74 65 73 74 20 63 72 65 61 74 65 74 61  an.test createta
2aa0: 62 2e 74 65 73 74 20 63 73 65 2e 74 65 73 74 0a  b.test cse.test.
2ab0: 20 20 64 61 74 65 2e 74 65 73 74 20 64 62 73 74    date.test dbst
2ac0: 61 74 75 73 32 2e 74 65 73 74 20 64 62 73 74 61  atus2.test dbsta
2ad0: 74 75 73 2e 74 65 73 74 20 64 65 66 61 75 6c 74  tus.test default
2ae0: 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65  .test delete2.te
2af0: 73 74 0a 20 20 64 65 6c 65 74 65 33 2e 74 65 73  st.  delete3.tes
2b00: 74 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64 65  t delete.test de
2b10: 73 63 69 64 78 31 2e 74 65 73 74 20 64 65 73 63  scidx1.test desc
2b20: 69 64 78 32 2e 74 65 73 74 20 64 65 73 63 69 64  idx2.test descid
2b30: 78 33 2e 74 65 73 74 0a 20 20 64 69 73 74 69 6e  x3.test.  distin
2b40: 63 74 61 67 67 2e 74 65 73 74 20 64 69 73 74 69  ctagg.test disti
2b50: 6e 63 74 2e 74 65 73 74 20 65 5f 63 72 65 61 74  nct.test e_creat
2b60: 65 74 61 62 6c 65 2e 74 65 73 74 20 65 5f 64 65  etable.test e_de
2b70: 6c 65 74 65 2e 74 65 73 74 0a 20 20 65 5f 64 72  lete.test.  e_dr
2b80: 6f 70 74 72 69 67 67 65 72 2e 74 65 73 74 20 65  optrigger.test e
2b90: 5f 64 72 6f 70 76 69 65 77 2e 74 65 73 74 20 65  _dropview.test e
2ba0: 5f 65 78 70 72 2e 74 65 73 74 20 65 5f 69 6e 73  _expr.test e_ins
2bb0: 65 72 74 2e 74 65 73 74 0a 20 20 65 71 70 2e 74  ert.test.  eqp.t
2bc0: 65 73 74 20 65 5f 72 65 69 6e 64 65 78 2e 74 65  est e_reindex.te
2bd0: 73 74 20 65 5f 72 65 73 6f 6c 76 65 2e 74 65 73  st e_resolve.tes
2be0: 74 20 65 5f 73 65 6c 65 63 74 32 2e 74 65 73 74  t e_select2.test
2bf0: 20 65 5f 73 65 6c 65 63 74 2e 74 65 73 74 0a 20   e_select.test. 
2c00: 20 65 5f 75 70 64 61 74 65 2e 74 65 73 74 20 65   e_update.test e
2c10: 78 69 73 74 73 2e 74 65 73 74 20 65 78 70 72 2e  xists.test expr.
2c20: 74 65 73 74 20 66 6b 65 79 31 2e 74 65 73 74 20  test fkey1.test 
2c30: 66 6b 65 79 32 2e 74 65 73 74 20 66 6b 65 79 33  fkey2.test fkey3
2c40: 2e 74 65 73 74 0a 20 20 66 6b 65 79 34 2e 74 65  .test.  fkey4.te
2c50: 73 74 20 66 6b 65 79 35 2e 74 65 73 74 20 66 75  st fkey5.test fu
2c60: 6e 63 32 2e 74 65 73 74 20 66 75 6e 63 33 2e 74  nc2.test func3.t
2c70: 65 73 74 20 66 75 6e 63 2e 74 65 73 74 20 0a 20  est func.test . 
2c80: 20 69 6e 33 2e 74 65 73 74 20 69 6e 34 2e 74 65   in3.test in4.te
2c90: 73 74 20 69 6e 35 2e 74 65 73 74 20 69 6e 64 65  st in5.test inde
2ca0: 78 32 2e 74 65 73 74 20 69 6e 64 65 78 33 2e 74  x2.test index3.t
2cb0: 65 73 74 0a 20 20 69 6e 64 65 78 34 2e 74 65 73  est.  index4.tes
2cc0: 74 20 69 6e 64 65 78 35 2e 74 65 73 74 20 69 6e  t index5.test in
2cd0: 64 65 78 65 64 62 79 2e 74 65 73 74 20 69 6e 64  dexedby.test ind
2ce0: 65 78 2e 74 65 73 74 0a 20 20 69 6e 73 65 72 74  ex.test.  insert
2cf0: 32 2e 74 65 73 74 20 69 6e 73 65 72 74 33 2e 74  2.test insert3.t
2d00: 65 73 74 20 69 6e 73 65 72 74 34 2e 74 65 73 74  est insert4.test
2d10: 20 69 6e 73 65 72 74 35 2e 74 65 73 74 20 69 6e   insert5.test in
2d20: 73 65 72 74 2e 74 65 73 74 0a 20 20 69 6e 73 74  sert.test.  inst
2d30: 72 2e 74 65 73 74 20 69 6e 2e 74 65 73 74 20 69  r.test in.test i
2d40: 6e 74 70 6b 65 79 2e 74 65 73 74 20 6a 6f 69 6e  ntpkey.test join
2d50: 32 2e 74 65 73 74 20 6a 6f 69 6e 33 2e 74 65 73  2.test join3.tes
2d60: 74 20 6a 6f 69 6e 34 2e 74 65 73 74 0a 20 20 6a  t join4.test.  j
2d70: 6f 69 6e 35 2e 74 65 73 74 20 6a 6f 69 6e 36 2e  oin5.test join6.
2d80: 74 65 73 74 20 6a 6f 69 6e 2e 74 65 73 74 20 6c  test join.test l
2d90: 69 6b 65 32 2e 74 65 73 74 20 6c 69 6b 65 2e 74  ike2.test like.t
2da0: 65 73 74 20 6c 69 6d 69 74 2e 74 65 73 74 0a 20  est limit.test. 
2db0: 20 6d 69 6e 6d 61 78 32 2e 74 65 73 74 20 6d 69   minmax2.test mi
2dc0: 6e 6d 61 78 33 2e 74 65 73 74 20 6d 69 6e 6d 61  nmax3.test minma
2dd0: 78 34 2e 74 65 73 74 20 6d 69 6e 6d 61 78 2e 74  x4.test minmax.t
2de0: 65 73 74 20 6d 69 73 63 31 2e 74 65 73 74 20 6d  est misc1.test m
2df0: 69 73 63 32 2e 74 65 73 74 0a 20 20 6d 69 73 63  isc2.test.  misc
2e00: 33 2e 74 65 73 74 20 6d 69 73 63 34 2e 74 65 73  3.test misc4.tes
2e10: 74 20 6d 69 73 63 35 2e 74 65 73 74 20 6d 69 73  t misc5.test mis
2e20: 63 36 2e 74 65 73 74 20 6d 69 73 63 37 2e 74 65  c6.test misc7.te
2e30: 73 74 20 6f 72 64 65 72 62 79 31 2e 74 65 73 74  st orderby1.test
2e40: 0a 20 20 6f 72 64 65 72 62 79 32 2e 74 65 73 74  .  orderby2.test
2e50: 20 6f 72 64 65 72 62 79 33 2e 74 65 73 74 20 6f   orderby3.test o
2e60: 72 64 65 72 62 79 34 2e 74 65 73 74 20 72 61 6e  rderby4.test ran
2e70: 64 65 78 70 72 31 2e 74 65 73 74 20 72 65 67 65  dexpr1.test rege
2e80: 78 70 31 2e 74 65 73 74 0a 20 20 72 65 69 6e 64  xp1.test.  reind
2e90: 65 78 2e 74 65 73 74 20 72 6f 77 68 61 73 68 2e  ex.test rowhash.
2ea0: 74 65 73 74 20 72 6f 77 69 64 2e 74 65 73 74 20  test rowid.test 
2eb0: 73 63 68 65 6d 61 32 2e 74 65 73 74 20 73 63 68  schema2.test sch
2ec0: 65 6d 61 33 2e 74 65 73 74 0a 20 20 73 63 68 65  ema3.test.  sche
2ed0: 6d 61 34 2e 74 65 73 74 20 73 63 68 65 6d 61 35  ma4.test schema5
2ee0: 2e 74 65 73 74 20 73 63 68 65 6d 61 2e 74 65 73  .test schema.tes
2ef0: 74 0a 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74  t.  select1.test
2f00: 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20 73 65   select2.test se
2f10: 6c 65 63 74 33 2e 74 65 73 74 20 73 65 6c 65 63  lect3.test selec
2f20: 74 34 2e 74 65 73 74 20 73 65 6c 65 63 74 35 2e  t4.test select5.
2f30: 74 65 73 74 0a 20 20 73 65 6c 65 63 74 36 2e 74  test.  select6.t
2f40: 65 73 74 20 73 65 6c 65 63 74 37 2e 74 65 73 74  est select7.test
2f50: 20 73 65 6c 65 63 74 38 2e 74 65 73 74 20 73 65   select8.test se
2f60: 6c 65 63 74 39 2e 74 65 73 74 20 73 65 6c 65 63  lect9.test selec
2f70: 74 41 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74  tA.test.  select
2f80: 42 2e 74 65 73 74 20 73 65 6c 65 63 74 43 2e 74  B.test selectC.t
2f90: 65 73 74 20 73 65 6c 65 63 74 44 2e 74 65 73 74  est selectD.test
2fa0: 20 73 65 6c 65 63 74 45 2e 74 65 73 74 20 73 69   selectE.test si
2fb0: 64 65 64 65 6c 65 74 65 2e 74 65 73 74 0a 20 20  dedelete.test.  
2fc0: 73 6f 72 74 2e 74 65 73 74 20 73 70 65 6c 6c 66  sort.test spellf
2fd0: 69 78 2e 74 65 73 74 20 73 75 62 71 75 65 72 79  ix.test subquery
2fe0: 32 2e 74 65 73 74 20 73 75 62 71 75 65 72 79 2e  2.test subquery.
2ff0: 74 65 73 74 20 73 75 62 73 65 6c 65 63 74 2e 74  test subselect.t
3000: 65 73 74 0a 20 20 73 75 62 73 74 72 2e 74 65 73  est.  substr.tes
3010: 74 20 74 6b 74 2d 30 32 61 38 65 38 31 64 34 34  t tkt-02a8e81d44
3020: 2e 74 65 73 74 20 74 6b 74 31 34 33 35 2e 74 65  .test tkt1435.te
3030: 73 74 20 74 6b 74 31 34 34 33 2e 74 65 73 74 20  st tkt1443.test 
3040: 74 6b 74 31 34 34 34 2e 74 65 73 74 0a 20 20 74  tkt1444.test.  t
3050: 6b 74 31 34 34 39 2e 74 65 73 74 20 74 6b 74 31  kt1449.test tkt1
3060: 34 37 33 2e 74 65 73 74 20 74 6b 74 31 35 30 31  473.test tkt1501
3070: 2e 74 65 73 74 20 74 6b 74 31 35 31 32 2e 74 65  .test tkt1512.te
3080: 73 74 20 74 6b 74 31 35 31 34 2e 74 65 73 74 0a  st tkt1514.test.
3090: 20 20 74 6b 74 31 35 33 36 2e 74 65 73 74 20 74    tkt1536.test t
30a0: 6b 74 31 35 33 37 2e 74 65 73 74 20 74 6b 74 31  kt1537.test tkt1
30b0: 35 36 37 2e 74 65 73 74 20 74 6b 74 31 36 34 34  567.test tkt1644
30c0: 2e 74 65 73 74 20 74 6b 74 31 36 36 37 2e 74 65  .test tkt1667.te
30d0: 73 74 0a 20 20 74 6b 74 31 38 37 33 2e 74 65 73  st.  tkt1873.tes
30e0: 74 20 74 6b 74 32 31 34 31 2e 74 65 73 74 20 74  t tkt2141.test t
30f0: 6b 74 32 31 39 32 2e 74 65 73 74 20 74 6b 74 32  kt2192.test tkt2
3100: 32 31 33 2e 74 65 73 74 20 74 6b 74 32 32 35 31  213.test tkt2251
3110: 2e 74 65 73 74 0a 20 20 74 6b 74 32 32 38 35 2e  .test.  tkt2285.
3120: 74 65 73 74 20 74 6b 74 32 33 33 32 2e 74 65 73  test tkt2332.tes
3130: 74 20 74 6b 74 32 33 33 39 2e 74 65 73 74 20 74  t tkt2339.test t
3140: 6b 74 32 33 39 31 2e 74 65 73 74 20 74 6b 74 32  kt2391.test tkt2
3150: 34 30 39 2e 74 65 73 74 0a 20 20 74 6b 74 32 34  409.test.  tkt24
3160: 35 30 2e 74 65 73 74 20 74 6b 74 32 35 36 35 2e  50.test tkt2565.
3170: 74 65 73 74 20 74 6b 74 32 36 34 30 2e 74 65 73  test tkt2640.tes
3180: 74 20 74 6b 74 32 36 34 33 2e 74 65 73 74 20 74  t tkt2643.test t
3190: 6b 74 32 36 38 36 2e 74 65 73 74 0a 20 20 74 6b  kt2686.test.  tk
31a0: 74 2d 32 36 66 66 30 63 32 64 31 65 2e 74 65 73  t-26ff0c2d1e.tes
31b0: 74 20 74 6b 74 32 37 36 37 2e 74 65 73 74 20 74  t tkt2767.test t
31c0: 6b 74 32 38 31 37 2e 74 65 73 74 20 74 6b 74 32  kt2817.test tkt2
31d0: 38 32 30 2e 74 65 73 74 20 74 6b 74 32 38 32 32  820.test tkt2822
31e0: 2e 74 65 73 74 0a 20 20 74 6b 74 32 38 33 32 2e  .test.  tkt2832.
31f0: 74 65 73 74 20 74 6b 74 32 38 35 34 2e 74 65 73  test tkt2854.tes
3200: 74 20 74 6b 74 32 39 32 30 2e 74 65 73 74 20 74  t tkt2920.test t
3210: 6b 74 32 39 32 37 2e 74 65 73 74 20 74 6b 74 32  kt2927.test tkt2
3220: 39 34 32 2e 74 65 73 74 0a 20 20 74 6b 74 2d 32  942.test.  tkt-2
3230: 61 35 36 32 39 32 30 32 66 2e 74 65 73 74 20 74  a5629202f.test t
3240: 6b 74 2d 32 64 31 61 35 63 36 37 64 2e 74 65 73  kt-2d1a5c67d.tes
3250: 74 20 74 6b 74 2d 32 65 61 32 34 32 35 64 33 34  t tkt-2ea2425d34
3260: 2e 74 65 73 74 20 74 6b 74 33 30 38 30 2e 74 65  .test tkt3080.te
3270: 73 74 0a 20 20 74 6b 74 33 30 39 33 2e 74 65 73  st.  tkt3093.tes
3280: 74 20 74 6b 74 33 31 32 31 2e 74 65 73 74 20 74  t tkt3121.test t
3290: 6b 74 2d 33 31 33 33 38 64 63 61 37 65 2e 74 65  kt-31338dca7e.te
32a0: 73 74 20 74 6b 74 2d 33 31 33 37 32 33 63 33 35  st tkt-313723c35
32b0: 36 2e 74 65 73 74 0a 20 20 74 6b 74 33 32 30 31  6.test.  tkt3201
32c0: 2e 74 65 73 74 20 74 6b 74 33 32 39 32 2e 74 65  .test tkt3292.te
32d0: 73 74 20 74 6b 74 33 32 39 38 2e 74 65 73 74 20  st tkt3298.test 
32e0: 74 6b 74 33 33 33 34 2e 74 65 73 74 20 74 6b 74  tkt3334.test tkt
32f0: 33 33 34 36 2e 74 65 73 74 0a 20 20 74 6b 74 33  3346.test.  tkt3
3300: 33 35 37 2e 74 65 73 74 20 74 6b 74 33 34 31 39  357.test tkt3419
3310: 2e 74 65 73 74 20 74 6b 74 33 34 32 34 2e 74 65  .test tkt3424.te
3320: 73 74 20 74 6b 74 33 34 34 32 2e 74 65 73 74 20  st tkt3442.test 
3330: 74 6b 74 33 34 35 37 2e 74 65 73 74 0a 20 20 74  tkt3457.test.  t
3340: 6b 74 33 34 36 31 2e 74 65 73 74 20 74 6b 74 33  kt3461.test tkt3
3350: 34 39 33 2e 74 65 73 74 20 74 6b 74 33 35 30 38  493.test tkt3508
3360: 2e 74 65 73 74 20 74 6b 74 33 35 32 32 2e 74 65  .test tkt3522.te
3370: 73 74 20 74 6b 74 33 35 32 37 2e 74 65 73 74 0a  st tkt3527.test.
3380: 20 20 74 6b 74 33 35 34 31 2e 74 65 73 74 20 74    tkt3541.test t
3390: 6b 74 33 35 35 34 2e 74 65 73 74 20 74 6b 74 33  kt3554.test tkt3
33a0: 35 38 31 2e 74 65 73 74 20 74 6b 74 33 35 78 78  581.test tkt35xx
33b0: 2e 74 65 73 74 20 74 6b 74 33 36 33 30 2e 74 65  .test tkt3630.te
33c0: 73 74 0a 20 20 74 6b 74 33 37 31 38 2e 74 65 73  st.  tkt3718.tes
33d0: 74 20 74 6b 74 33 37 33 31 2e 74 65 73 74 20 74  t tkt3731.test t
33e0: 6b 74 33 37 35 37 2e 74 65 73 74 20 74 6b 74 33  kt3757.test tkt3
33f0: 37 36 31 2e 74 65 73 74 20 74 6b 74 33 37 36 32  761.test tkt3762
3400: 2e 74 65 73 74 0a 20 20 74 6b 74 33 37 37 33 2e  .test.  tkt3773.
3410: 74 65 73 74 20 74 6b 74 33 37 39 31 2e 74 65 73  test tkt3791.tes
3420: 74 20 74 6b 74 33 37 39 33 2e 74 65 73 74 20 74  t tkt3793.test t
3430: 6b 74 33 38 31 30 2e 74 65 73 74 20 74 6b 74 33  kt3810.test tkt3
3440: 38 32 34 2e 74 65 73 74 0a 20 20 74 6b 74 33 38  824.test.  tkt38
3450: 33 32 2e 74 65 73 74 20 74 6b 74 33 38 33 38 2e  32.test tkt3838.
3460: 74 65 73 74 20 74 6b 74 33 38 34 31 2e 74 65 73  test tkt3841.tes
3470: 74 20 74 6b 74 2d 33 38 35 61 35 62 35 36 62 39  t tkt-385a5b56b9
3480: 2e 74 65 73 74 20 74 6b 74 33 38 37 31 2e 74 65  .test tkt3871.te
3490: 73 74 0a 20 20 74 6b 74 33 38 37 39 2e 74 65 73  st.  tkt3879.tes
34a0: 74 20 74 6b 74 2d 33 38 63 62 35 64 66 33 37 35  t tkt-38cb5df375
34b0: 2e 74 65 73 74 20 74 6b 74 33 39 31 31 2e 74 65  .test tkt3911.te
34c0: 73 74 20 74 6b 74 33 39 31 38 2e 74 65 73 74 20  st tkt3918.test 
34d0: 74 6b 74 33 39 32 32 2e 74 65 73 74 0a 20 20 74  tkt3922.test.  t
34e0: 6b 74 33 39 32 39 2e 74 65 73 74 20 74 6b 74 33  kt3929.test tkt3
34f0: 39 33 35 2e 74 65 73 74 20 74 6b 74 33 39 39 32  935.test tkt3992
3500: 2e 74 65 73 74 20 74 6b 74 33 39 39 37 2e 74 65  .test tkt3997.te
3510: 73 74 20 74 6b 74 2d 33 39 39 38 36 38 33 61 31  st tkt-3998683a1
3520: 36 2e 74 65 73 74 0a 20 20 74 6b 74 2d 33 61 37  6.test.  tkt-3a7
3530: 37 63 39 37 31 34 65 2e 74 65 73 74 20 74 6b 74  7c9714e.test tkt
3540: 2d 33 66 65 38 39 37 33 35 32 65 2e 74 65 73 74  -3fe897352e.test
3550: 20 74 6b 74 34 30 31 38 2e 74 65 73 74 20 74 6b   tkt4018.test tk
3560: 74 2d 34 61 30 33 65 64 63 34 63 38 2e 74 65 73  t-4a03edc4c8.tes
3570: 74 0a 20 20 74 6b 74 2d 34 64 64 39 35 66 36 39  t.  tkt-4dd95f69
3580: 34 33 2e 74 65 73 74 20 74 6b 74 2d 35 34 38 34  43.test tkt-5484
3590: 34 65 65 61 33 66 2e 74 65 73 74 20 74 6b 74 2d  4eea3f.test tkt-
35a0: 35 64 38 36 33 66 38 37 36 65 2e 74 65 73 74 0a  5d863f876e.test.
35b0: 20 20 74 6b 74 2d 35 65 31 30 34 32 30 65 38 64    tkt-5e10420e8d
35c0: 2e 74 65 73 74 20 74 6b 74 2d 35 65 65 32 33 37  .test tkt-5ee237
35d0: 33 31 66 2e 74 65 73 74 20 74 6b 74 2d 36 62 66  31f.test tkt-6bf
35e0: 62 39 38 64 66 63 30 2e 74 65 73 74 0a 20 20 74  b98dfc0.test.  t
35f0: 6b 74 2d 37 35 32 65 31 36 34 36 66 63 2e 74 65  kt-752e1646fc.te
3600: 73 74 20 74 6b 74 2d 37 38 65 30 34 65 35 32 65  st tkt-78e04e52e
3610: 61 2e 74 65 73 74 20 74 6b 74 2d 37 61 33 31 37  a.test tkt-7a317
3620: 30 35 61 37 65 36 2e 74 65 73 74 0a 20 20 74 6b  05a7e6.test.  tk
3630: 74 2d 37 62 62 66 62 37 64 34 34 32 2e 74 65 73  t-7bbfb7d442.tes
3640: 74 20 74 6b 74 2d 38 30 62 61 32 30 31 30 37 39  t tkt-80ba201079
3650: 2e 74 65 73 74 20 74 6b 74 2d 38 30 65 30 33 31  .test tkt-80e031
3660: 61 30 30 66 2e 74 65 73 74 0a 20 20 74 6b 74 2d  a00f.test.  tkt-
3670: 38 34 35 34 61 32 30 37 62 39 2e 74 65 73 74 20  8454a207b9.test 
3680: 74 6b 74 2d 39 31 65 32 65 38 62 61 36 66 2e 74  tkt-91e2e8ba6f.t
3690: 65 73 74 20 74 6b 74 2d 39 34 63 30 34 65 61 61  est tkt-94c04eaa
36a0: 64 62 2e 74 65 73 74 0a 20 20 74 6b 74 2d 39 64  db.test.  tkt-9d
36b0: 36 38 63 38 38 33 2e 74 65 73 74 20 74 6b 74 2d  68c883.test tkt-
36c0: 61 37 62 37 38 30 33 65 2e 74 65 73 74 20 74 6b  a7b7803e.test tk
36d0: 74 2d 62 31 64 33 61 32 65 35 33 31 2e 74 65 73  t-b1d3a2e531.tes
36e0: 74 0a 20 20 74 6b 74 2d 62 33 35 31 64 39 35 66  t.  tkt-b351d95f
36f0: 39 2e 74 65 73 74 20 74 6b 74 2d 62 37 32 37 38  9.test tkt-b7278
3700: 37 62 31 2e 74 65 73 74 20 74 6b 74 2d 62 64 34  7b1.test tkt-bd4
3710: 38 34 61 30 39 30 63 2e 74 65 73 74 0a 20 20 74  84a090c.test.  t
3720: 6b 74 2d 62 64 63 36 62 62 62 62 33 38 2e 74 65  kt-bdc6bbbb38.te
3730: 73 74 20 74 6b 74 2d 63 34 38 64 39 39 64 36 39  st tkt-c48d99d69
3740: 30 2e 74 65 73 74 20 74 6b 74 2d 63 62 64 30 35  0.test tkt-cbd05
3750: 34 66 61 36 62 2e 74 65 73 74 0a 20 20 74 6b 74  4fa6b.test.  tkt
3760: 2d 64 31 31 66 30 39 64 33 36 65 2e 74 65 73 74  -d11f09d36e.test
3770: 20 74 6b 74 2d 64 36 33 35 32 33 36 33 37 35 2e   tkt-d635236375.
3780: 74 65 73 74 20 74 6b 74 2d 64 38 32 65 33 66 33  test tkt-d82e3f3
3790: 37 32 31 2e 74 65 73 74 0a 20 20 74 6b 74 2d 66  721.test.  tkt-f
37a0: 33 65 35 61 62 65 64 35 35 2e 74 65 73 74 20 74  3e5abed55.test t
37b0: 6b 74 2d 66 37 37 37 32 35 31 64 63 37 61 2e 74  kt-f777251dc7a.t
37c0: 65 73 74 20 74 6b 74 2d 66 37 62 34 65 64 65 63  est tkt-f7b4edec
37d0: 2e 74 65 73 74 0a 20 20 74 6b 74 2d 66 39 37 33  .test.  tkt-f973
37e0: 63 37 61 63 33 31 2e 74 65 73 74 20 74 6b 74 2d  c7ac31.test tkt-
37f0: 66 61 37 62 66 35 65 63 2e 74 65 73 74 20 74 6b  fa7bf5ec.test tk
3800: 74 2d 66 63 36 32 61 66 34 35 32 33 2e 74 65 73  t-fc62af4523.tes
3810: 74 0a 20 20 74 6b 74 2d 66 63 37 62 64 36 33 35  t.  tkt-fc7bd635
3820: 38 66 2e 74 65 73 74 20 74 72 69 67 67 65 72 31  8f.test trigger1
3830: 2e 74 65 73 74 20 74 72 69 67 67 65 72 32 2e 74  .test trigger2.t
3840: 65 73 74 20 74 72 69 67 67 65 72 33 2e 74 65 73  est trigger3.tes
3850: 74 0a 20 20 74 72 69 67 67 65 72 34 2e 74 65 73  t.  trigger4.tes
3860: 74 20 74 72 69 67 67 65 72 35 2e 74 65 73 74 20  t trigger5.test 
3870: 74 72 69 67 67 65 72 36 2e 74 65 73 74 20 74 72  trigger6.test tr
3880: 69 67 67 65 72 37 2e 74 65 73 74 20 74 72 69 67  igger7.test trig
3890: 67 65 72 38 2e 74 65 73 74 0a 20 20 74 72 69 67  ger8.test.  trig
38a0: 67 65 72 39 2e 74 65 73 74 20 74 72 69 67 67 65  ger9.test trigge
38b0: 72 41 2e 74 65 73 74 20 74 72 69 67 67 65 72 42  rA.test triggerB
38c0: 2e 74 65 73 74 20 74 72 69 67 67 65 72 43 2e 74  .test triggerC.t
38d0: 65 73 74 20 74 72 69 67 67 65 72 44 2e 74 65 73  est triggerD.tes
38e0: 74 0a 20 20 74 79 70 65 73 32 2e 74 65 73 74 20  t.  types2.test 
38f0: 74 79 70 65 73 33 2e 74 65 73 74 20 74 79 70 65  types3.test type
3900: 73 2e 74 65 73 74 20 75 6e 69 71 75 65 2e 74 65  s.test unique.te
3910: 73 74 20 75 6e 6f 72 64 65 72 65 64 2e 74 65 73  st unordered.tes
3920: 74 0a 20 20 75 70 64 61 74 65 2e 74 65 73 74 20  t.  update.test 
3930: 76 69 65 77 2e 74 65 73 74 20 76 74 61 62 31 2e  view.test vtab1.
3940: 74 65 73 74 20 76 74 61 62 32 2e 74 65 73 74 20  test vtab2.test 
3950: 76 74 61 62 33 2e 74 65 73 74 20 76 74 61 62 34  vtab3.test vtab4
3960: 2e 74 65 73 74 0a 20 20 76 74 61 62 35 2e 74 65  .test.  vtab5.te
3970: 73 74 20 76 74 61 62 36 2e 74 65 73 74 20 76 74  st vtab6.test vt
3980: 61 62 37 2e 74 65 73 74 20 76 74 61 62 38 2e 74  ab7.test vtab8.t
3990: 65 73 74 20 76 74 61 62 39 2e 74 65 73 74 20 76  est vtab9.test v
39a0: 74 61 62 5f 61 6c 74 65 72 2e 74 65 73 74 0a 20  tab_alter.test. 
39b0: 20 76 74 61 62 41 2e 74 65 73 74 20 76 74 61 62   vtabA.test vtab
39c0: 42 2e 74 65 73 74 20 76 74 61 62 43 2e 74 65 73  B.test vtabC.tes
39d0: 74 20 76 74 61 62 44 2e 74 65 73 74 20 76 74 61  t vtabD.test vta
39e0: 62 45 2e 74 65 73 74 0a 20 20 76 74 61 62 46 2e  bE.test.  vtabF.
39f0: 74 65 73 74 20 77 68 65 72 65 32 2e 74 65 73 74  test where2.test
3a00: 20 77 68 65 72 65 33 2e 74 65 73 74 20 77 68 65   where3.test whe
3a10: 72 65 34 2e 74 65 73 74 20 77 68 65 72 65 35 2e  re4.test where5.
3a20: 74 65 73 74 20 77 68 65 72 65 36 2e 74 65 73 74  test where6.test
3a30: 0a 20 20 77 68 65 72 65 37 2e 74 65 73 74 20 77  .  where7.test w
3a40: 68 65 72 65 38 6d 2e 74 65 73 74 20 77 68 65 72  here8m.test wher
3a50: 65 38 2e 74 65 73 74 20 77 68 65 72 65 39 2e 74  e8.test where9.t
3a60: 65 73 74 20 77 68 65 72 65 41 2e 74 65 73 74 20  est whereA.test 
3a70: 77 68 65 72 65 42 2e 74 65 73 74 0a 20 20 77 68  whereB.test.  wh
3a80: 65 72 65 43 2e 74 65 73 74 20 77 68 65 72 65 44  ereC.test whereD
3a90: 2e 74 65 73 74 20 77 68 65 72 65 45 2e 74 65 73  .test whereE.tes
3aa0: 74 20 77 68 65 72 65 46 2e 74 65 73 74 20 77 68  t whereF.test wh
3ab0: 65 72 65 6c 69 6d 69 74 2e 74 65 73 74 0a 20 20  erelimit.test.  
3ac0: 77 68 65 72 65 2e 74 65 73 74 0a 7d 0a 0a 74 65  where.test.}..te
3ad0: 73 74 5f 73 75 69 74 65 20 22 76 66 73 6c 6f 67  st_suite "vfslog
3ae0: 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65  " -prefix "" -de
3af0: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 22 56  scription {.  "V
3b00: 66 73 6c 6f 67 22 20 71 75 69 63 6b 20 74 65 73  fslog" quick tes
3b10: 74 20 73 75 69 74 65 2e 20 4c 69 6b 65 20 22 76  t suite. Like "v
3b20: 65 72 79 71 75 69 63 6b 22 20 65 78 63 65 70 74  eryquick" except
3b30: 20 64 6f 65 73 20 6e 6f 74 20 6f 6d 69 74 73 0a   does not omits.
3b40: 20 20 61 20 66 65 77 20 74 65 73 74 73 20 74 68    a few tests th
3b50: 61 74 20 64 6f 20 6e 6f 74 20 77 6f 72 6b 20 77  at do not work w
3b60: 69 74 68 20 61 20 76 65 72 73 69 6f 6e 20 31 20  ith a version 1 
3b70: 56 46 53 2e 20 41 6e 64 20 74 68 65 20 71 75 6f  VFS. And the quo
3b80: 74 61 2a 20 74 65 73 74 73 2c 0a 20 20 77 68 69  ta* tests,.  whi
3b90: 63 68 20 64 6f 20 6e 6f 74 20 77 6f 72 6b 20 77  ch do not work w
3ba0: 69 74 68 20 61 20 56 46 53 20 74 68 61 74 20 75  ith a VFS that u
3bb0: 73 65 73 20 74 68 65 20 70 56 66 73 20 61 72 67  ses the pVfs arg
3bc0: 75 6d 65 6e 74 20 70 61 73 73 65 64 20 74 6f 0a  ument passed to.
3bd0: 20 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6d 65    sqlite3_vfs me
3be0: 74 68 6f 64 73 2e 0a 7d 20 2d 66 69 6c 65 73 20  thods..} -files 
3bf0: 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c  [.  test_set $al
3c00: 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63  lquicktests -exc
3c10: 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69  lude *malloc* *i
3c20: 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 6f 73  oerr* *fault* os
3c30: 65 72 72 6f 72 2e 74 65 73 74 20 5c 0a 20 20 70  error.test \.  p
3c40: 61 67 65 72 31 2e 74 65 73 74 20 73 79 73 63 61  ager1.test sysca
3c50: 6c 6c 2e 74 65 73 74 20 73 79 73 66 61 75 6c 74  ll.test sysfault
3c60: 2e 74 65 73 74 20 74 6b 74 33 34 35 37 2e 74 65  .test tkt3457.te
3c70: 73 74 20 71 75 6f 74 61 2a 20 73 75 70 65 72 6c  st quota* superl
3c80: 6f 63 6b 2a 20 5c 0a 20 20 77 61 6c 2a 20 6d 6d  ock* \.  wal* mm
3c90: 61 70 2a 0a 5d 0a 0a 74 65 73 74 5f 73 75 69 74  ap*.]..test_suit
3ca0: 65 20 22 61 74 6f 6d 69 63 2d 62 61 74 63 68 2d  e "atomic-batch-
3cb0: 77 72 69 74 65 22 20 2d 70 72 65 66 69 78 20 22  write" -prefix "
3cc0: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
3cd0: 0a 20 20 4c 69 6b 65 20 76 65 72 79 71 75 69 63  .  Like veryquic
3ce0: 6b 2e 74 65 73 74 2c 20 62 75 74 20 6d 75 73 74  k.test, but must
3cf0: 20 62 65 20 72 75 6e 20 6f 6e 20 61 20 66 69 6c   be run on a fil
3d00: 65 2d 73 79 73 74 65 6d 20 74 68 61 74 20 73 75  e-system that su
3d10: 70 70 6f 72 74 73 0a 20 20 61 74 6f 6d 69 63 2d  pports.  atomic-
3d20: 62 61 74 63 68 2d 77 72 69 74 65 73 2e 20 54 65  batch-writes. Te
3d30: 73 74 73 20 74 68 61 74 20 64 65 70 65 6e 64 20  sts that depend 
3d40: 6f 6e 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66  on the journal f
3d50: 69 6c 65 20 62 65 69 6e 67 20 70 72 65 73 65 6e  ile being presen
3d60: 74 0a 20 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  t.  are omitted.
3d70: 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65  .} -files [.  te
3d80: 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b  st_set $allquick
3d90: 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a  tests -exclude *
3da0: 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20  malloc* *ioerr* 
3db0: 2a 66 61 75 6c 74 2a 20 2a 62 69 67 66 69 6c 65  *fault* *bigfile
3dc0: 2a 20 2a 5f 65 72 72 2a 20 5c 0a 20 20 20 20 20  * *_err* \.     
3dd0: 20 2a 66 74 73 35 63 6f 72 72 75 70 74 2a 20 2a   *fts5corrupt* *
3de0: 66 74 73 35 62 69 67 2a 20 2a 66 74 73 35 61 6a  fts5big* *fts5aj
3df0: 2a 20 20 5c 0a 20 20 20 20 20 20 63 72 61 73 68  *  \.      crash
3e00: 38 2e 74 65 73 74 20 64 65 6c 65 74 65 5f 64 62  8.test delete_db
3e10: 2e 74 65 73 74 20 20 20 20 20 20 20 20 5c 0a 20  .test        \. 
3e20: 20 20 20 20 20 65 78 63 6c 75 73 69 76 65 2e 74       exclusive.t
3e30: 65 73 74 20 6a 6f 75 72 6e 61 6c 33 2e 74 65 73  est journal3.tes
3e40: 74 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 6a  t      \.      j
3e50: 6f 75 72 6e 61 6c 31 2e 74 65 73 74 20 20 20 20  ournal1.test    
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e70: 20 5c 0a 20 20 20 20 20 20 6a 72 6e 6c 6d 6f 64   \.      jrnlmod
3e80: 65 2e 74 65 73 74 20 6a 72 6e 6c 6d 6f 64 65 32  e.test jrnlmode2
3e90: 2e 74 65 73 74 20 20 20 20 20 20 5c 0a 20 20 20  .test      \.   
3ea0: 20 20 20 6c 6f 63 6b 34 2e 74 65 73 74 20 70 61     lock4.test pa
3eb0: 67 65 72 31 2e 74 65 73 74 20 20 20 20 20 20 20  ger1.test       
3ec0: 20 20 20 20 20 5c 0a 20 20 20 20 20 20 70 61 67       \.      pag
3ed0: 65 72 33 2e 74 65 73 74 20 73 68 61 72 65 64 41  er3.test sharedA
3ee0: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 5c  .test          \
3ef0: 0a 20 20 20 20 20 20 73 79 6d 6c 69 6e 6b 2e 74  .      symlink.t
3f00: 65 73 74 20 73 74 6d 74 2e 74 65 73 74 20 20 20  est stmt.test   
3f10: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20           \.     
3f20: 20 73 79 6e 63 2e 74 65 73 74 20 73 79 6e 63 32   sync.test sync2
3f30: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
3f40: 20 20 20 5c 0a 20 20 20 20 20 20 74 65 6d 70 64     \.      tempd
3f50: 62 2e 74 65 73 74 20 74 6b 74 33 34 35 37 2e 74  b.test tkt3457.t
3f60: 65 73 74 20 20 20 20 20 20 20 20 20 20 5c 0a 20  est          \. 
3f70: 20 20 20 20 20 76 61 63 75 75 6d 35 2e 74 65 73       vacuum5.tes
3f80: 74 20 77 61 6c 32 2e 74 65 73 74 20 20 20 20 20  t wal2.test     
3f90: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 77         \.      w
3fa0: 61 6c 6d 6f 64 65 2e 74 65 73 74 20 7a 65 72 6f  almode.test zero
3fb0: 64 61 6d 61 67 65 2e 74 65 73 74 0a 5d 20 2d 69  damage.test.] -i
3fc0: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 69 66  nitialize {.  if
3fd0: 20 7b 5b 61 74 6f 6d 69 63 5f 62 61 74 63 68 5f   {[atomic_batch_
3fe0: 77 72 69 74 65 20 74 65 73 74 2e 64 62 5d 3d 3d  write test.db]==
3ff0: 30 7d 20 7b 0a 20 20 20 20 65 72 72 6f 72 20 22  0} {.    error "
4000: 46 69 6c 65 20 73 79 73 74 65 6d 20 64 6f 65 73  File system does
4010: 20 4e 4f 54 20 73 75 70 70 6f 72 74 20 61 74 6f   NOT support ato
4020: 6d 69 63 2d 62 61 74 63 68 2d 77 72 69 74 65 22  mic-batch-write"
4030: 0a 20 20 7d 0a 7d 0a 0a 6c 61 70 70 65 6e 64 20  .  }.}..lappend 
4040: 3a 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74 20  ::testsuitelist 
4050: 78 78 78 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  xxx.#-----------
4060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23  --------------.#
40a0: 20 44 65 66 69 6e 65 20 74 68 65 20 63 6f 76 65   Define the cove
40b0: 72 61 67 65 20 72 65 6c 61 74 65 64 20 74 65 73  rage related tes
40c0: 74 20 73 75 69 74 65 73 3a 0a 23 0a 23 20 20 20  t suites:.#.#   
40d0: 63 6f 76 65 72 61 67 65 2d 77 61 6c 0a 23 0a 74  coverage-wal.#.t
40e0: 65 73 74 5f 73 75 69 74 65 20 22 63 6f 76 65 72  est_suite "cover
40f0: 61 67 65 2d 77 61 6c 22 20 2d 64 65 73 63 72 69  age-wal" -descri
4100: 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65 72 61  ption {.  Covera
4110: 67 65 20 74 65 73 74 73 20 66 6f 72 20 66 69 6c  ge tests for fil
4120: 65 20 77 61 6c 2e 63 2e 0a 7d 20 2d 66 69 6c 65  e wal.c..} -file
4130: 73 20 7b 0a 20 20 77 61 6c 2e 74 65 73 74 20 77  s {.  wal.test w
4140: 61 6c 32 2e 74 65 73 74 20 77 61 6c 33 2e 74 65  al2.test wal3.te
4150: 73 74 20 77 61 6c 34 2e 74 65 73 74 20 77 61 6c  st wal4.test wal
4160: 35 2e 74 65 73 74 0a 20 20 77 61 6c 36 34 6b 2e  5.test.  wal64k.
4170: 74 65 73 74 20 77 61 6c 36 2e 74 65 73 74 20 77  test wal6.test w
4180: 61 6c 37 2e 74 65 73 74 20 77 61 6c 38 2e 74 65  al7.test wal8.te
4190: 73 74 20 77 61 6c 39 2e 74 65 73 74 0a 20 20 77  st wal9.test.  w
41a0: 61 6c 62 61 6b 2e 74 65 73 74 20 77 61 6c 62 69  albak.test walbi
41b0: 67 2e 74 65 73 74 20 77 61 6c 62 6c 6f 63 6b 2e  g.test walblock.
41c0: 74 65 73 74 20 77 61 6c 63 6b 73 75 6d 2e 74 65  test walcksum.te
41d0: 73 74 20 77 61 6c 63 72 61 73 68 32 2e 74 65 73  st walcrash2.tes
41e0: 74 0a 20 20 77 61 6c 63 72 61 73 68 33 2e 74 65  t.  walcrash3.te
41f0: 73 74 20 77 61 6c 63 72 61 73 68 34 2e 74 65 73  st walcrash4.tes
4200: 74 20 77 61 6c 63 72 61 73 68 2e 74 65 73 74 20  t walcrash.test 
4210: 77 61 6c 66 61 75 6c 74 2e 74 65 73 74 20 77 61  walfault.test wa
4220: 6c 68 6f 6f 6b 2e 74 65 73 74 0a 20 20 77 61 6c  lhook.test.  wal
4230: 6d 6f 64 65 2e 74 65 73 74 20 77 61 6c 6e 6f 73  mode.test walnos
4240: 68 6d 2e 74 65 73 74 20 77 61 6c 6f 76 65 72 77  hm.test waloverw
4250: 72 69 74 65 2e 74 65 73 74 20 77 61 6c 70 65 72  rite.test walper
4260: 73 69 73 74 2e 74 65 73 74 20 0a 20 20 77 61 6c  sist.test .  wal
4270: 70 72 6f 74 6f 63 6f 6c 32 2e 74 65 73 74 20 77  protocol2.test w
4280: 61 6c 70 72 6f 74 6f 63 6f 6c 2e 74 65 73 74 20  alprotocol.test 
4290: 77 61 6c 72 6f 32 2e 74 65 73 74 20 77 61 6c 72  walro2.test walr
42a0: 6f 66 61 75 6c 74 2e 74 65 73 74 20 0a 20 20 77  ofault.test .  w
42b0: 61 6c 72 6f 2e 74 65 73 74 20 77 61 6c 73 68 61  alro.test walsha
42c0: 72 65 64 2e 74 65 73 74 20 77 61 6c 73 6c 6f 77  red.test walslow
42d0: 2e 74 65 73 74 20 77 61 6c 76 66 73 2e 74 65 73  .test walvfs.tes
42e0: 74 0a 20 20 77 61 6c 66 61 75 6c 74 32 2e 74 65  t.  walfault2.te
42f0: 73 74 0a 20 20 6e 6f 63 6b 70 74 2e 74 65 73 74  st.  nockpt.test
4300: 0a 0a 20 20 73 6e 61 70 73 68 6f 74 32 2e 74 65  ..  snapshot2.te
4310: 73 74 20 73 6e 61 70 73 68 6f 74 33 2e 74 65 73  st snapshot3.tes
4320: 74 20 73 6e 61 70 73 68 6f 74 34 2e 74 65 73 74  t snapshot4.test
4330: 0a 20 20 73 6e 61 70 73 68 6f 74 5f 66 61 75 6c  .  snapshot_faul
4340: 74 2e 74 65 73 74 20 73 6e 61 70 73 68 6f 74 2e  t.test snapshot.
4350: 74 65 73 74 20 73 6e 61 70 73 68 6f 74 5f 75 70  test snapshot_up
4360: 2e 74 65 73 74 0a 7d 20 0a 0a 74 65 73 74 5f 73  .test.} ..test_s
4370: 75 69 74 65 20 22 63 6f 76 65 72 61 67 65 2d 70  uite "coverage-p
4380: 61 67 65 72 22 20 2d 64 65 73 63 72 69 70 74 69  ager" -descripti
4390: 6f 6e 20 7b 0a 20 20 43 6f 76 65 72 61 67 65 20  on {.  Coverage 
43a0: 74 65 73 74 73 20 66 6f 72 20 66 69 6c 65 20 70  tests for file p
43b0: 61 67 65 72 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73  ager.c..} -files
43c0: 20 7b 0a 20 20 70 61 67 65 72 31 2e 74 65 73 74   {.  pager1.test
43d0: 20 20 20 20 70 61 67 65 72 32 2e 74 65 73 74 20      pager2.test 
43e0: 20 70 61 67 65 72 66 61 75 6c 74 2e 74 65 73 74   pagerfault.test
43f0: 20 20 70 61 67 65 72 66 61 75 6c 74 32 2e 74 65    pagerfault2.te
4400: 73 74 0a 20 20 77 61 6c 66 61 75 6c 74 2e 74 65  st.  walfault.te
4410: 73 74 20 20 77 61 6c 62 61 6b 2e 74 65 73 74 20  st  walbak.test 
4420: 20 6a 6f 75 72 6e 61 6c 32 2e 74 65 73 74 20 20   journal2.test  
4430: 20 20 74 6b 74 2d 39 64 36 38 63 38 38 33 2e 74    tkt-9d68c883.t
4440: 65 73 74 0a 7d 20 0a 0a 74 65 73 74 5f 73 75 69  est.} ..test_sui
4450: 74 65 20 22 63 6f 76 65 72 61 67 65 2d 61 6e 61  te "coverage-ana
4460: 6c 79 7a 65 22 20 2d 64 65 73 63 72 69 70 74 69  lyze" -descripti
4470: 6f 6e 20 7b 0a 20 20 43 6f 76 65 72 61 67 65 20  on {.  Coverage 
4480: 74 65 73 74 73 20 66 6f 72 20 66 69 6c 65 20 61  tests for file a
4490: 6e 61 6c 79 7a 65 2e 63 2e 0a 7d 20 2d 66 69 6c  nalyze.c..} -fil
44a0: 65 73 20 7b 0a 20 20 61 6e 61 6c 79 7a 65 33 2e  es {.  analyze3.
44b0: 74 65 73 74 20 61 6e 61 6c 79 7a 65 34 2e 74 65  test analyze4.te
44c0: 73 74 20 61 6e 61 6c 79 7a 65 35 2e 74 65 73 74  st analyze5.test
44d0: 20 61 6e 61 6c 79 7a 65 36 2e 74 65 73 74 0a 20   analyze6.test. 
44e0: 20 61 6e 61 6c 79 7a 65 37 2e 74 65 73 74 20 61   analyze7.test a
44f0: 6e 61 6c 79 7a 65 38 2e 74 65 73 74 20 61 6e 61  nalyze8.test ana
4500: 6c 79 7a 65 39 2e 74 65 73 74 20 61 6e 61 6c 79  lyze9.test analy
4510: 7a 65 41 2e 74 65 73 74 0a 20 20 61 6e 61 6c 79  zeA.test.  analy
4520: 7a 65 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 42  ze.test analyzeB
4530: 2e 74 65 73 74 20 6d 61 6c 6c 6f 63 41 2e 74 65  .test mallocA.te
4540: 73 74 0a 7d 20 0a 0a 74 65 73 74 5f 73 75 69 74  st.} ..test_suit
4550: 65 20 22 63 6f 76 65 72 61 67 65 2d 73 6f 72 74  e "coverage-sort
4560: 65 72 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  er" -description
4570: 20 7b 0a 20 20 43 6f 76 65 72 61 67 65 20 74 65   {.  Coverage te
4580: 73 74 73 20 66 6f 72 20 66 69 6c 65 20 76 64 62  sts for file vdb
4590: 65 73 6f 72 74 2e 63 2e 0a 7d 20 2d 66 69 6c 65  esort.c..} -file
45a0: 73 20 7b 0a 20 20 73 6f 72 74 2e 74 65 73 74 20  s {.  sort.test 
45b0: 73 6f 72 74 66 61 75 6c 74 2e 74 65 73 74 0a 7d  sortfault.test.}
45c0: 20 0a 0a 0a 6c 61 70 70 65 6e 64 20 3a 3a 74 65   ...lappend ::te
45d0: 73 74 73 75 69 74 65 6c 69 73 74 20 78 78 78 0a  stsuitelist xxx.
45e0: 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  #---------------
45f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4600: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4610: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4620: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 44 65 66  ----------.# Def
4630: 69 6e 65 20 74 68 65 20 70 65 72 6d 75 74 61 74  ine the permutat
4640: 69 6f 6e 20 74 65 73 74 20 73 75 69 74 65 73 3a  ion test suites:
4650: 0a 23 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74  .#..# Run some t
4660: 65 73 74 73 20 75 73 69 6e 67 20 70 72 65 2d 61  ests using pre-a
4670: 6c 6c 6f 63 61 74 65 64 20 70 61 67 65 20 62 6c  llocated page bl
4680: 6f 63 6b 73 2e 0a 23 0a 23 20 6d 6d 61 70 31 2e  ocks..#.# mmap1.
4690: 74 65 73 74 20 69 73 20 65 78 63 6c 75 64 65 64  test is excluded
46a0: 20 62 65 63 61 75 73 65 20 61 20 67 6f 6f 64 20   because a good 
46b0: 6e 75 6d 62 65 72 20 6f 66 20 69 74 73 20 74 65  number of its te
46c0: 73 74 73 20 64 65 70 65 6e 64 20 6f 6e 20 0a 23  sts depend on .#
46d0: 20 74 68 65 20 70 61 67 65 2d 63 61 63 68 65 20   the page-cache 
46e0: 62 65 69 6e 67 20 6c 61 72 67 65 72 20 74 68 61  being larger tha
46f0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20  n the database. 
4700: 42 75 74 20 74 68 69 73 20 70 65 72 6d 75 74 61  But this permuta
4710: 74 69 6f 6e 0a 23 20 63 61 75 73 65 73 20 74 68  tion.# causes th
4720: 65 20 65 66 66 65 63 74 69 76 65 20 6c 69 6d 69  e effective limi
4730: 74 20 6f 6e 20 74 68 65 20 70 61 67 65 2d 63 61  t on the page-ca
4740: 63 68 65 20 74 6f 20 62 65 20 6a 75 73 74 20 32  che to be just 2
4750: 34 20 70 61 67 65 73 2e 0a 23 0a 74 65 73 74 5f  4 pages..#.test_
4760: 73 75 69 74 65 20 22 6d 65 6d 73 75 62 73 79 73  suite "memsubsys
4770: 31 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  1" -description 
4780: 7b 0a 20 20 54 65 73 74 73 20 75 73 69 6e 67 20  {.  Tests using 
4790: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61  pre-allocated pa
47a0: 67 65 20 62 6c 6f 63 6b 73 0a 7d 20 2d 66 69 6c  ge blocks.} -fil
47b0: 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20  es [.  test_set 
47c0: 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  $::allquicktests
47d0: 20 2d 65 78 63 6c 75 64 65 20 69 6f 65 72 72 35   -exclude ioerr5
47e0: 2e 74 65 73 74 20 6d 61 6c 6c 6f 63 35 2e 74 65  .test malloc5.te
47f0: 73 74 20 6d 6d 61 70 31 2e 74 65 73 74 0a 5d 20  st mmap1.test.] 
4800: 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20  -initialize {.  
4810: 74 65 73 74 5f 73 65 74 5f 63 6f 6e 66 69 67 5f  test_set_config_
4820: 70 61 67 65 63 61 63 68 65 20 34 30 39 36 20 32  pagecache 4096 2
4830: 34 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c  4.  catch {db cl
4840: 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73  ose}.  sqlite3_s
4850: 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65  hutdown.  sqlite
4860: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61  3_initialize.  a
4870: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
4880: 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73 68 75  functions.} -shu
4890: 74 64 6f 77 6e 20 7b 0a 20 20 74 65 73 74 5f 72  tdown {.  test_r
48a0: 65 73 74 6f 72 65 5f 63 6f 6e 66 69 67 5f 70 61  estore_config_pa
48b0: 67 65 63 61 63 68 65 0a 20 20 63 61 74 63 68 20  gecache.  catch 
48c0: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
48d0: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
48e0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
48f0: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
4900: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
4910: 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65  }..# Run some te
4920: 73 74 73 20 75 73 69 6e 67 20 70 72 65 2d 61 6c  sts using pre-al
4930: 6c 6f 63 61 74 65 64 20 70 61 67 65 20 62 6c 6f  located page blo
4940: 63 6b 73 2e 20 54 68 69 73 20 74 69 6d 65 0a 23  cks. This time.#
4950: 20 74 68 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 73   the allocations
4960: 20 61 72 65 20 74 6f 6f 20 73 6d 61 6c 6c 20 74   are too small t
4970: 6f 20 75 73 65 20 69 6e 20 6d 6f 73 74 20 63 61  o use in most ca
4980: 73 65 73 2e 0a 23 0a 23 20 42 6f 74 68 20 69 6f  ses..#.# Both io
4990: 65 72 72 35 2e 74 65 73 74 20 61 6e 64 20 6d 61  err5.test and ma
49a0: 6c 6c 6f 63 35 2e 74 65 73 74 20 61 72 65 20 65  lloc5.test are e
49b0: 78 63 6c 75 64 65 64 20 62 65 63 61 75 73 65 20  xcluded because 
49c0: 74 68 65 79 20 74 65 73 74 20 74 68 65 0a 23 20  they test the.# 
49d0: 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61  sqlite3_soft_hea
49e0: 70 5f 6c 69 6d 69 74 28 29 20 61 6e 64 20 73 71  p_limit() and sq
49f0: 6c 69 74 65 33 5f 72 65 6c 65 61 73 65 5f 6d 65  lite3_release_me
4a00: 6d 6f 72 79 28 29 20 66 75 6e 63 74 69 6f 6e 61  mory() functiona
4a10: 6c 69 74 79 2e 0a 23 20 54 68 69 73 20 66 75 6e  lity..# This fun
4a20: 63 74 69 6f 6e 61 6c 69 74 79 20 69 73 20 64 69  ctionality is di
4a30: 73 61 62 6c 65 64 20 69 66 20 61 20 70 72 65 2d  sabled if a pre-
4a40: 61 6c 6c 6f 63 61 74 65 64 20 70 61 67 65 20 62  allocated page b
4a50: 6c 6f 63 6b 20 69 73 20 70 72 6f 76 69 64 65 64  lock is provided
4a60: 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22  ..#.test_suite "
4a70: 6d 65 6d 73 75 62 73 79 73 32 22 20 2d 64 65 73  memsubsys2" -des
4a80: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73  cription {.  Tes
4a90: 74 73 20 75 73 69 6e 67 20 73 6d 61 6c 6c 20 70  ts using small p
4aa0: 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67  re-allocated pag
4ab0: 65 20 62 6c 6f 63 6b 73 0a 7d 20 2d 66 69 6c 65  e blocks.} -file
4ac0: 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24  s [.  test_set $
4ad0: 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20  ::allquicktests 
4ae0: 2d 65 78 63 6c 75 64 65 20 69 6f 65 72 72 35 2e  -exclude ioerr5.
4af0: 74 65 73 74 20 6d 61 6c 6c 6f 63 35 2e 74 65 73  test malloc5.tes
4b00: 74 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20  t.] -initialize 
4b10: 7b 0a 20 20 74 65 73 74 5f 73 65 74 5f 63 6f 6e  {.  test_set_con
4b20: 66 69 67 5f 70 61 67 65 63 61 63 68 65 20 35 31  fig_pagecache 51
4b30: 32 20 35 0a 20 20 63 61 74 63 68 20 7b 64 62 20  2 5.  catch {db 
4b40: 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33  close}.  sqlite3
4b50: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69  _shutdown.  sqli
4b60: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
4b70: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
4b80: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73  t_functions.} -s
4b90: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 74 65 73 74  hutdown {.  test
4ba0: 5f 72 65 73 74 6f 72 65 5f 63 6f 6e 66 69 67 5f  _restore_config_
4bb0: 70 61 67 65 63 61 63 68 65 0a 20 20 63 61 74 63  pagecache.  catc
4bc0: 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73  h {db close}.  s
4bd0: 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a  qlite3_shutdown.
4be0: 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61    sqlite3_initia
4bf0: 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61  lize.  autoinsta
4c00: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
4c10: 73 0a 7d 0a 0a 23 20 52 75 6e 20 61 6c 6c 20 74  s.}..# Run all t
4c20: 65 73 74 73 20 77 69 74 68 20 74 68 65 20 6c 6f  ests with the lo
4c30: 6f 6b 61 73 69 64 65 20 61 6c 6c 6f 63 61 74 6f  okaside allocato
4c40: 72 20 64 69 73 61 62 6c 65 64 2e 0a 23 0a 74 65  r disabled..#.te
4c50: 73 74 5f 73 75 69 74 65 20 22 6e 6f 6c 6f 6f 6b  st_suite "nolook
4c60: 61 73 69 64 65 22 20 2d 64 65 73 63 72 69 70 74  aside" -descript
4c70: 69 6f 6e 20 7b 0a 20 20 4f 4f 4d 20 74 65 73 74  ion {.  OOM test
4c80: 73 20 77 69 74 68 20 6c 6f 6f 6b 61 73 69 64 65  s with lookaside
4c90: 20 64 69 73 61 62 6c 65 64 0a 7d 20 2d 69 6e 69   disabled.} -ini
4ca0: 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63  tialize {.  catc
4cb0: 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73  h {db close}.  s
4cc0: 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a  qlite3_shutdown.
4cd0: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
4ce0: 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a 20  _lookaside 0 0. 
4cf0: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
4d00: 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c  ize.  autoinstal
4d10: 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73  l_test_functions
4d20: 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20  .} -shutdown {. 
4d30: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
4d40: 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74  }.  sqlite3_shut
4d50: 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63  down.  sqlite3_c
4d60: 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20  onfig_lookaside 
4d70: 31 30 30 20 35 30 30 0a 20 20 73 71 6c 69 74 65  100 500.  sqlite
4d80: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61  3_initialize.  a
4d90: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
4da0: 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 66 69 6c  functions.} -fil
4db0: 65 73 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65  es $::allquickte
4dc0: 73 74 73 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20  sts..# Run some 
4dd0: 74 65 73 74 73 20 69 6e 20 53 51 4c 49 54 45 5f  tests in SQLITE_
4de0: 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52  CONFIG_SINGLETHR
4df0: 45 41 44 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74  EAD mode..#.test
4e00: 5f 73 75 69 74 65 20 22 73 69 6e 67 6c 65 74 68  _suite "singleth
4e10: 72 65 61 64 22 20 2d 64 65 73 63 72 69 70 74 69  read" -descripti
4e20: 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75 6e  on {.  Tests run
4e30: 20 69 6e 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49   in SQLITE_CONFI
4e40: 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20 6d  G_SINGLETHREAD m
4e50: 6f 64 65 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a  ode.} -initializ
4e60: 65 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20  e {.  catch {db 
4e70: 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33  close}.  sqlite3
4e80: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63  _shutdown.  catc
4e90: 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  h {sqlite3_confi
4ea0: 67 20 73 69 6e 67 6c 65 74 68 72 65 61 64 7d 0a  g singlethread}.
4eb0: 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61    sqlite3_initia
4ec0: 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61  lize.  autoinsta
4ed0: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
4ee0: 73 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64  s.} -files {.  d
4ef0: 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64 65 6c  elete.test   del
4f00: 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73 65 72  ete2.test  inser
4f10: 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b  t.test  rollback
4f20: 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74  .test  select1.t
4f30: 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65  est.  select2.te
4f40: 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74 20 20  st  trans.test  
4f50: 20 20 75 70 64 61 74 65 2e 74 65 73 74 20 20 76    update.test  v
4f60: 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20 74 79  acuum.test    ty
4f70: 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70 65 73  pes.test.  types
4f80: 32 2e 74 65 73 74 20 20 20 74 79 70 65 73 33 2e  2.test   types3.
4f90: 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  test.} -shutdown
4fa0: 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   {.  catch {db c
4fb0: 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f  lose}.  sqlite3_
4fc0: 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63 68  shutdown.  catch
4fd0: 20 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   {sqlite3_config
4fe0: 20 73 65 72 69 61 6c 69 7a 65 64 7d 0a 20 20 73   serialized}.  s
4ff0: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
5000: 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f  e.  autoinstall_
5010: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d  test_functions.}
5020: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f  ..test_suite "no
5030: 6d 75 74 65 78 22 20 2d 64 65 73 63 72 69 70 74  mutex" -descript
5040: 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75  ion {.  Tests ru
5050: 6e 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54  n with the SQLIT
5060: 45 5f 4f 50 45 4e 5f 4d 55 4c 54 49 54 48 52 45  E_OPEN_MULTITHRE
5070: 41 44 45 44 20 66 6c 61 67 20 70 61 73 73 65 64  ADED flag passed
5080: 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   to sqlite3_open
5090: 28 29 2e 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a  ()..} -initializ
50a0: 65 20 7b 0a 20 20 73 65 74 20 3a 3a 47 28 70 65  e {.  set ::G(pe
50b0: 72 6d 3a 73 71 6c 69 74 65 33 5f 61 72 67 73 29  rm:sqlite3_args)
50c0: 20 5b 6c 69 73 74 20 2d 66 75 6c 6c 6d 75 74 65   [list -fullmute
50d0: 78 20 30 20 2d 6e 6f 6d 75 74 65 78 20 31 5d 0a  x 0 -nomutex 1].
50e0: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c  } -files {.  del
50f0: 65 74 65 2e 74 65 73 74 20 20 20 64 65 6c 65 74  ete.test   delet
5100: 65 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 2e  e2.test  insert.
5110: 74 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b 2e 74  test  rollback.t
5120: 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65 73  est  select1.tes
5130: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
5140: 20 20 74 72 61 6e 73 2e 74 65 73 74 20 20 20 20    trans.test    
5150: 75 70 64 61 74 65 2e 74 65 73 74 20 20 76 61 63  update.test  vac
5160: 75 75 6d 2e 74 65 73 74 20 20 20 20 74 79 70 65  uum.test    type
5170: 73 2e 74 65 73 74 0a 20 20 74 79 70 65 73 32 2e  s.test.  types2.
5180: 74 65 73 74 20 20 20 74 79 70 65 73 33 2e 74 65  test   types3.te
5190: 73 74 0a 7d 20 0a 0a 23 20 52 75 6e 20 73 6f 6d  st.} ..# Run som
51a0: 65 20 74 65 73 74 73 20 69 6e 20 53 51 4c 49 54  e tests in SQLIT
51b0: 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48  E_CONFIG_MULTITH
51c0: 52 45 41 44 20 6d 6f 64 65 2e 0a 23 0a 74 65 73  READ mode..#.tes
51d0: 74 5f 73 75 69 74 65 20 22 6d 75 6c 74 69 74 68  t_suite "multith
51e0: 72 65 61 64 22 20 2d 64 65 73 63 72 69 70 74 69  read" -descripti
51f0: 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75 6e  on {.  Tests run
5200: 20 69 6e 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49   in SQLITE_CONFI
5210: 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 20 6d 6f  G_MULTITHREAD mo
5220: 64 65 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  de.} -initialize
5230: 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   {.  catch {db c
5240: 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f  lose}.  sqlite3_
5250: 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63 68  shutdown.  catch
5260: 20 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   {sqlite3_config
5270: 20 6d 75 6c 74 69 74 68 72 65 61 64 7d 0a 20 20   multithread}.  
5280: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
5290: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
52a0: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
52b0: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c  } -files {.  del
52c0: 65 74 65 2e 74 65 73 74 20 20 20 64 65 6c 65 74  ete.test   delet
52d0: 65 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 2e  e2.test  insert.
52e0: 74 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b 2e 74  test  rollback.t
52f0: 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65 73  est  select1.tes
5300: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
5310: 20 20 74 72 61 6e 73 2e 74 65 73 74 20 20 20 20    trans.test    
5320: 75 70 64 61 74 65 2e 74 65 73 74 20 20 76 61 63  update.test  vac
5330: 75 75 6d 2e 74 65 73 74 20 20 20 20 74 79 70 65  uum.test    type
5340: 73 2e 74 65 73 74 0a 20 20 74 79 70 65 73 32 2e  s.test.  types2.
5350: 74 65 73 74 20 20 20 74 79 70 65 73 33 2e 74 65  test   types3.te
5360: 73 74 20 20 20 73 6f 72 74 34 2e 74 65 73 74 0a  st   sort4.test.
5370: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
5380: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
5390: 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  .  sqlite3_shutd
53a0: 6f 77 6e 0a 20 20 63 61 74 63 68 20 7b 73 71 6c  own.  catch {sql
53b0: 69 74 65 33 5f 63 6f 6e 66 69 67 20 73 65 72 69  ite3_config seri
53c0: 61 6c 69 7a 65 64 7d 0a 20 20 73 71 6c 69 74 65  alized}.  sqlite
53d0: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61  3_initialize.  a
53e0: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
53f0: 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a 23 20 52  functions.}..# R
5400: 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e  un some tests in
5410: 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c   SQLITE_OPEN_FUL
5420: 4c 4d 55 54 45 58 20 6d 6f 64 65 2e 0a 23 0a 74  LMUTEX mode..#.t
5430: 65 73 74 5f 73 75 69 74 65 20 22 66 75 6c 6c 6d  est_suite "fullm
5440: 75 74 65 78 22 20 2d 64 65 73 63 72 69 70 74 69  utex" -descripti
5450: 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75 6e  on {.  Tests run
5460: 20 69 6e 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f   in SQLITE_OPEN_
5470: 46 55 4c 4c 4d 55 54 45 58 20 6d 6f 64 65 0a 7d  FULLMUTEX mode.}
5480: 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20   -initialize {. 
5490: 20 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 73 71   set ::G(perm:sq
54a0: 6c 69 74 65 33 5f 61 72 67 73 29 20 5b 6c 69 73  lite3_args) [lis
54b0: 74 20 2d 6e 6f 6d 75 74 65 78 20 30 20 2d 66 75  t -nomutex 0 -fu
54c0: 6c 6c 6d 75 74 65 78 20 31 5d 0a 7d 20 2d 66 69  llmutex 1].} -fi
54d0: 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74  les {.  delete.t
54e0: 65 73 74 20 20 20 64 65 6c 65 74 65 32 2e 74 65  est   delete2.te
54f0: 73 74 20 20 69 6e 73 65 72 74 2e 74 65 73 74 20  st  insert.test 
5500: 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 20   rollback.test  
5510: 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20 73  select1.test.  s
5520: 65 6c 65 63 74 32 2e 74 65 73 74 20 20 74 72 61  elect2.test  tra
5530: 6e 73 2e 74 65 73 74 20 20 20 20 75 70 64 61 74  ns.test    updat
5540: 65 2e 74 65 73 74 20 20 76 61 63 75 75 6d 2e 74  e.test  vacuum.t
5550: 65 73 74 20 20 20 20 74 79 70 65 73 2e 74 65 73  est    types.tes
5560: 74 0a 20 20 74 79 70 65 73 32 2e 74 65 73 74 20  t.  types2.test 
5570: 20 20 74 79 70 65 73 33 2e 74 65 73 74 0a 7d 0a    types3.test.}.
5580: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74  .# Run some test
5590: 73 20 75 73 69 6e 67 20 74 68 65 20 22 6f 6e 65  s using the "one
55a0: 66 69 6c 65 22 20 64 65 6d 6f 2e 0a 23 0a 74 65  file" demo..#.te
55b0: 73 74 5f 73 75 69 74 65 20 22 6f 6e 65 66 69 6c  st_suite "onefil
55c0: 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  e" -description 
55d0: 7b 0a 20 20 52 75 6e 20 73 6f 6d 65 20 74 65 73  {.  Run some tes
55e0: 74 73 20 75 73 69 6e 67 20 74 68 65 20 22 74 65  ts using the "te
55f0: 73 74 5f 6f 6e 65 66 69 6c 65 2e 63 22 20 64 65  st_onefile.c" de
5600: 6d 6f 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  mo.} -initialize
5610: 20 7b 0a 20 20 73 65 74 20 3a 3a 47 28 70 65 72   {.  set ::G(per
5620: 6d 3a 73 71 6c 69 74 65 33 5f 61 72 67 73 29 20  m:sqlite3_args) 
5630: 5b 6c 69 73 74 20 2d 76 66 73 20 66 73 5d 0a 7d  [list -vfs fs].}
5640: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 63 6f 6e 66   -files {.  conf
5650: 6c 69 63 74 2e 74 65 73 74 20 20 69 6e 73 65 72  lict.test  inser
5660: 74 2e 74 65 73 74 20 20 20 69 6e 73 65 72 74 32  t.test   insert2
5670: 2e 74 65 73 74 20 20 69 6e 73 65 72 74 33 2e 74  .test  insert3.t
5680: 65 73 74 0a 20 20 72 6f 6c 6c 62 61 63 6b 2e 74  est.  rollback.t
5690: 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65 73  est  select1.tes
56a0: 74 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20  t  select2.test 
56b0: 20 73 65 6c 65 63 74 33 2e 74 65 73 74 0a 7d 0a   select3.test.}.
56c0: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74  .# Run some test
56d0: 73 20 75 73 69 6e 67 20 55 54 46 2d 31 36 20 64  s using UTF-16 d
56e0: 61 74 61 62 61 73 65 73 2e 0a 23 0a 74 65 73 74  atabases..#.test
56f0: 5f 73 75 69 74 65 20 22 75 74 66 31 36 22 20 2d  _suite "utf16" -
5700: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
5710: 52 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67 20  Run tests using 
5720: 55 54 46 2d 31 36 20 64 61 74 61 62 61 73 65 73  UTF-16 databases
5730: 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70  .} -presql {.  p
5740: 72 61 67 6d 61 20 65 6e 63 6f 64 69 6e 67 20 3d  ragma encoding =
5750: 20 27 55 54 46 2d 31 36 27 0a 7d 20 2d 66 69 6c   'UTF-16'.} -fil
5760: 65 73 20 7b 0a 20 20 20 20 61 6c 74 65 72 2e 74  es {.    alter.t
5770: 65 73 74 20 61 6c 74 65 72 33 2e 74 65 73 74 0a  est alter3.test.
5780: 20 20 20 20 61 6e 61 6c 79 7a 65 2e 74 65 73 74      analyze.test
5790: 20 61 6e 61 6c 79 7a 65 33 2e 74 65 73 74 20 61   analyze3.test a
57a0: 6e 61 6c 79 7a 65 34 2e 74 65 73 74 20 61 6e 61  nalyze4.test ana
57b0: 6c 79 7a 65 35 2e 74 65 73 74 20 61 6e 61 6c 79  lyze5.test analy
57c0: 7a 65 36 2e 74 65 73 74 0a 20 20 20 20 61 6e 61  ze6.test.    ana
57d0: 6c 79 7a 65 37 2e 74 65 73 74 20 61 6e 61 6c 79  lyze7.test analy
57e0: 7a 65 38 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  ze8.test analyze
57f0: 39 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 41 2e  9.test analyzeA.
5800: 74 65 73 74 20 61 6e 61 6c 79 7a 65 42 2e 74 65  test analyzeB.te
5810: 73 74 0a 20 20 20 20 61 75 74 68 2e 74 65 73 74  st.    auth.test
5820: 20 62 69 6e 64 2e 74 65 73 74 20 62 6c 6f 62 2e   bind.test blob.
5830: 74 65 73 74 20 63 61 70 69 32 2e 74 65 73 74 20  test capi2.test 
5840: 63 61 70 69 33 2e 74 65 73 74 20 63 6f 6c 6c 61  capi3.test colla
5850: 74 65 31 2e 74 65 73 74 0a 20 20 20 20 63 6f 6c  te1.test.    col
5860: 6c 61 74 65 32 2e 74 65 73 74 20 63 6f 6c 6c 61  late2.test colla
5870: 74 65 33 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65  te3.test collate
5880: 34 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 35 2e  4.test collate5.
5890: 74 65 73 74 20 63 6f 6c 6c 61 74 65 36 2e 74 65  test collate6.te
58a0: 73 74 0a 20 20 20 20 63 6f 6e 66 6c 69 63 74 2e  st.    conflict.
58b0: 74 65 73 74 20 64 61 74 65 2e 74 65 73 74 20 64  test date.test d
58c0: 65 6c 65 74 65 2e 74 65 73 74 20 65 78 70 72 2e  elete.test expr.
58d0: 74 65 73 74 20 66 6b 65 79 31 2e 74 65 73 74 20  test fkey1.test 
58e0: 66 75 6e 63 2e 74 65 73 74 0a 20 20 20 20 68 6f  func.test.    ho
58f0: 6f 6b 2e 74 65 73 74 20 69 6e 64 65 78 2e 74 65  ok.test index.te
5900: 73 74 20 69 6e 73 65 72 74 32 2e 74 65 73 74 20  st insert2.test 
5910: 69 6e 73 65 72 74 2e 74 65 73 74 20 69 6e 74 65  insert.test inte
5920: 72 72 75 70 74 2e 74 65 73 74 20 69 6e 2e 74 65  rrupt.test in.te
5930: 73 74 0a 20 20 20 20 69 6e 74 70 6b 65 79 2e 74  st.    intpkey.t
5940: 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 20 6a  est ioerr.test j
5950: 6f 69 6e 32 2e 74 65 73 74 20 6a 6f 69 6e 2e 74  oin2.test join.t
5960: 65 73 74 20 6c 61 73 74 69 6e 73 65 72 74 2e 74  est lastinsert.t
5970: 65 73 74 0a 20 20 20 20 6c 61 73 74 73 74 6d 74  est.    laststmt
5980: 63 68 61 6e 67 65 73 2e 74 65 73 74 20 6c 69 6d  changes.test lim
5990: 69 74 2e 74 65 73 74 20 6c 6f 63 6b 32 2e 74 65  it.test lock2.te
59a0: 73 74 20 6c 6f 63 6b 2e 74 65 73 74 20 6d 61 69  st lock.test mai
59b0: 6e 2e 74 65 73 74 20 0a 20 20 20 20 6d 65 6d 64  n.test .    memd
59c0: 62 2e 74 65 73 74 20 6d 69 6e 6d 61 78 2e 74 65  b.test minmax.te
59d0: 73 74 20 6d 69 73 63 31 2e 74 65 73 74 20 6d 69  st misc1.test mi
59e0: 73 63 32 2e 74 65 73 74 20 6d 69 73 63 33 2e 74  sc2.test misc3.t
59f0: 65 73 74 20 6e 6f 74 6e 75 6c 6c 2e 74 65 73 74  est notnull.test
5a00: 0a 20 20 20 20 6e 75 6c 6c 2e 74 65 73 74 20 70  .    null.test p
5a10: 72 6f 67 72 65 73 73 2e 74 65 73 74 20 71 75 6f  rogress.test quo
5a20: 74 65 2e 74 65 73 74 20 72 6f 77 69 64 2e 74 65  te.test rowid.te
5a30: 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20  st select1.test 
5a40: 73 65 6c 65 63 74 32 2e 74 65 73 74 0a 20 20 20  select2.test.   
5a50: 20 73 65 6c 65 63 74 33 2e 74 65 73 74 20 73 65   select3.test se
5a60: 6c 65 63 74 34 2e 74 65 73 74 20 73 65 6c 65 63  lect4.test selec
5a70: 74 35 2e 74 65 73 74 20 73 65 6c 65 63 74 36 2e  t5.test select6.
5a80: 74 65 73 74 20 73 6f 72 74 2e 74 65 73 74 20 0a  test sort.test .
5a90: 20 20 20 20 73 75 62 73 65 6c 65 63 74 2e 74 65      subselect.te
5aa0: 73 74 20 74 61 62 6c 65 61 70 69 2e 74 65 73 74  st tableapi.test
5ab0: 20 74 61 62 6c 65 2e 74 65 73 74 20 74 65 6d 70   table.test temp
5ac0: 74 61 62 6c 65 2e 74 65 73 74 0a 20 20 20 20 74  table.test.    t
5ad0: 72 61 63 65 2e 74 65 73 74 20 74 72 69 67 67 65  race.test trigge
5ae0: 72 31 2e 74 65 73 74 20 74 72 69 67 67 65 72 32  r1.test trigger2
5af0: 2e 74 65 73 74 20 74 72 69 67 67 65 72 33 2e 74  .test trigger3.t
5b00: 65 73 74 0a 20 20 20 20 74 72 69 67 67 65 72 34  est.    trigger4
5b10: 2e 74 65 73 74 20 74 79 70 65 73 32 2e 74 65 73  .test types2.tes
5b20: 74 20 74 79 70 65 73 2e 74 65 73 74 20 75 6e 69  t types.test uni
5b30: 71 75 65 2e 74 65 73 74 20 75 70 64 61 74 65 2e  que.test update.
5b40: 74 65 73 74 0a 20 20 20 20 76 61 63 75 75 6d 2e  test.    vacuum.
5b50: 74 65 73 74 20 76 69 65 77 2e 74 65 73 74 20 77  test view.test w
5b60: 68 65 72 65 2e 74 65 73 74 0a 20 20 20 20 62 65  here.test.    be
5b70: 73 74 69 6e 64 65 78 31 2e 74 65 73 74 0a 7d 0a  stindex1.test.}.
5b80: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74  .# Run some test
5b90: 73 20 69 6e 20 65 78 63 6c 75 73 69 76 65 20 6c  s in exclusive l
5ba0: 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e 0a 23 0a 74  ocking mode..#.t
5bb0: 65 73 74 5f 73 75 69 74 65 20 22 65 78 63 6c 75  est_suite "exclu
5bc0: 73 69 76 65 22 20 2d 64 65 73 63 72 69 70 74 69  sive" -descripti
5bd0: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73  on {.  Run tests
5be0: 20 69 6e 20 65 78 63 6c 75 73 69 76 65 20 6c 6f   in exclusive lo
5bf0: 63 6b 69 6e 67 20 6d 6f 64 65 2e 0a 7d 20 2d 70  cking mode..} -p
5c00: 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61  resql {.  pragma
5c10: 20 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 3d 20   locking_mode = 
5c20: 27 65 78 63 6c 75 73 69 76 65 27 0a 7d 20 2d 66  'exclusive'.} -f
5c30: 69 6c 65 73 20 7b 0a 20 20 72 6f 6c 6c 62 61 63  iles {.  rollbac
5c40: 6b 2e 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74  k.test select1.t
5c50: 65 73 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74  est select2.test
5c60: 20 0a 20 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20   .  malloc.test 
5c70: 69 6f 65 72 72 2e 74 65 73 74 0a 7d 20 0a 0a 23  ioerr.test.} ..#
5c80: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
5c90: 69 6e 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63  in exclusive loc
5ca0: 6b 69 6e 67 20 6d 6f 64 65 20 77 69 74 68 20 74  king mode with t
5cb0: 72 75 6e 63 61 74 65 64 20 6a 6f 75 72 6e 61 6c  runcated journal
5cc0: 73 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  s..#.test_suite 
5cd0: 22 65 78 63 6c 75 73 69 76 65 2d 74 72 75 6e 63  "exclusive-trunc
5ce0: 61 74 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ate" -descriptio
5cf0: 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20  n {.  Run tests 
5d00: 69 6e 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63  in exclusive loc
5d10: 6b 69 6e 67 20 6d 6f 64 65 20 61 6e 64 20 74 72  king mode and tr
5d20: 75 6e 63 61 74 65 20 6a 6f 75 72 6e 61 6c 20 6d  uncate journal m
5d30: 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ode..} -presql {
5d40: 0a 20 20 70 72 61 67 6d 61 20 6c 6f 63 6b 69 6e  .  pragma lockin
5d50: 67 5f 6d 6f 64 65 20 3d 20 27 65 78 63 6c 75 73  g_mode = 'exclus
5d60: 69 76 65 27 3b 0a 20 20 70 72 61 67 6d 61 20 6a  ive';.  pragma j
5d70: 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 54 52  ournal_mode = TR
5d80: 55 4e 43 41 54 45 3b 0a 7d 20 2d 66 69 6c 65 73  UNCATE;.} -files
5d90: 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74   {.  delete.test
5da0: 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20 69 6e   delete2.test in
5db0: 73 65 72 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61  sert.test rollba
5dc0: 63 6b 2e 74 65 73 74 20 73 65 6c 65 63 74 31 2e  ck.test select1.
5dd0: 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74  test.  select2.t
5de0: 65 73 74 20 75 70 64 61 74 65 2e 74 65 73 74 20  est update.test 
5df0: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65 72  malloc.test ioer
5e00: 72 2e 74 65 73 74 0a 7d 20 0a 0a 23 20 52 75 6e  r.test.} ..# Run
5e10: 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 70   some tests in p
5e20: 65 72 73 69 73 74 65 6e 74 20 6a 6f 75 72 6e 61  ersistent journa
5e30: 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73  l mode..#.test_s
5e40: 75 69 74 65 20 22 70 65 72 73 69 73 74 65 6e 74  uite "persistent
5e50: 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64 65 73 63 72  _journal" -descr
5e60: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
5e70: 65 73 74 73 20 69 6e 20 70 65 72 73 69 73 74 65  ests in persiste
5e80: 6e 74 2d 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  nt-journal mode.
5e90: 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70  .} -presql {.  p
5ea0: 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f  ragma journal_mo
5eb0: 64 65 20 3d 20 70 65 72 73 69 73 74 0a 7d 20 2d  de = persist.} -
5ec0: 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65  files {.  delete
5ed0: 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65  .test delete2.te
5ee0: 73 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20 72  st insert.test r
5ef0: 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c  ollback.test sel
5f00: 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65  ect1.test.  sele
5f10: 63 74 32 2e 74 65 73 74 20 74 72 61 6e 73 2e 74  ct2.test trans.t
5f20: 65 73 74 20 75 70 64 61 74 65 2e 74 65 73 74 20  est update.test 
5f30: 76 61 63 75 75 6d 2e 74 65 73 74 20 0a 7d 0a 0a  vacuum.test .}..
5f40: 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73  # Run some tests
5f50: 20 69 6e 20 74 72 75 6e 63 61 74 69 6e 67 20 6a   in truncating j
5f60: 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74  ournal mode..#.t
5f70: 65 73 74 5f 73 75 69 74 65 20 22 74 72 75 6e 63  est_suite "trunc
5f80: 61 74 65 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64 65  ate_journal" -de
5f90: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75  scription {.  Ru
5fa0: 6e 20 74 65 73 74 73 20 69 6e 20 70 65 72 73 69  n tests in persi
5fb0: 73 74 65 6e 74 2d 6a 6f 75 72 6e 61 6c 20 6d 6f  stent-journal mo
5fc0: 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a  de..} -presql {.
5fd0: 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c    pragma journal
5fe0: 5f 6d 6f 64 65 20 3d 20 74 72 75 6e 63 61 74 65  _mode = truncate
5ff0: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65  .} -files {.  de
6000: 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65  lete.test delete
6010: 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65  2.test insert.te
6020: 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74  st rollback.test
6030: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20   select1.test.  
6040: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 74 72 61  select2.test tra
6050: 6e 73 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  ns.test update.t
6060: 65 73 74 20 76 61 63 75 75 6d 2e 74 65 73 74 20  est vacuum.test 
6070: 0a 20 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69  .  malloc.test i
6080: 6f 65 72 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52  oerr.test.}..# R
6090: 75 6e 20 73 6f 6d 65 20 65 72 72 6f 72 20 74 65  un some error te
60a0: 73 74 73 20 69 6e 20 70 65 72 73 69 73 74 65 6e  sts in persisten
60b0: 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a  t journal mode..
60c0: 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 70 65  #.test_suite "pe
60d0: 72 73 69 73 74 65 6e 74 5f 6a 6f 75 72 6e 61 6c  rsistent_journal
60e0: 5f 65 72 72 6f 72 22 20 2d 64 65 73 63 72 69 70  _error" -descrip
60f0: 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 6d 61 6c  tion {.  Run mal
6100: 6c 6f 63 2e 74 65 73 74 20 61 6e 64 20 69 6f 65  loc.test and ioe
6110: 72 72 2e 74 65 73 74 20 69 6e 20 70 65 72 73 69  rr.test in persi
6120: 73 74 65 6e 74 2d 6a 6f 75 72 6e 61 6c 20 6d 6f  stent-journal mo
6130: 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a  de..} -presql {.
6140: 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c    pragma journal
6150: 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69 73 74 0a  _mode = persist.
6160: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 6d 61 6c  } -files {.  mal
6170: 6c 6f 63 2e 74 65 73 74 20 69 6f 65 72 72 2e 74  loc.test ioerr.t
6180: 65 73 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d  est.}..# Run som
6190: 65 20 74 65 73 74 73 20 69 6e 20 6e 6f 20 6a 6f  e tests in no jo
61a0: 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65  urnal mode..#.te
61b0: 73 74 5f 73 75 69 74 65 20 22 6e 6f 5f 6a 6f 75  st_suite "no_jou
61c0: 72 6e 61 6c 22 20 2d 64 65 73 63 72 69 70 74 69  rnal" -descripti
61d0: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73  on {.  Run tests
61e0: 20 69 6e 20 6e 6f 2d 6a 6f 75 72 6e 61 6c 20 6d   in no-journal m
61f0: 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ode..} -presql {
6200: 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61  .  pragma journa
6210: 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69 73 74  l_mode = persist
6220: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65  .} -files {.  de
6230: 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65  lete.test delete
6240: 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65  2.test insert.te
6250: 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74  st rollback.test
6260: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20   select1.test.  
6270: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 74 72 61  select2.test tra
6280: 6e 73 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  ns.test update.t
6290: 65 73 74 20 76 61 63 75 75 6d 2e 74 65 73 74 20  est vacuum.test 
62a0: 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 65  .}..# Run some e
62b0: 72 72 6f 72 20 74 65 73 74 73 20 69 6e 20 6e 6f  rror tests in no
62c0: 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23   journal mode..#
62d0: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 5f  .test_suite "no_
62e0: 6a 6f 75 72 6e 61 6c 5f 65 72 72 6f 72 22 20 2d  journal_error" -
62f0: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
6300: 52 75 6e 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20  Run malloc.test 
6310: 61 6e 64 20 69 6f 65 72 72 2e 74 65 73 74 20 69  and ioerr.test i
6320: 6e 20 6e 6f 2d 6a 6f 75 72 6e 61 6c 20 6d 6f 64  n no-journal mod
6330: 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20  e..} -presql {. 
6340: 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f   pragma journal_
6350: 6d 6f 64 65 20 3d 20 70 65 72 73 69 73 74 0a 7d  mode = persist.}
6360: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 6d 61 6c 6c   -files {.  mall
6370: 6f 63 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65  oc.test ioerr.te
6380: 73 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65  st.}..# Run some
6390: 20 63 72 61 73 68 2d 74 65 73 74 73 20 69 6e 20   crash-tests in 
63a0: 61 75 74 6f 76 61 63 75 75 6d 20 6d 6f 64 65 2e  autovacuum mode.
63b0: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 61  .#.test_suite "a
63c0: 75 74 6f 76 61 63 75 75 6d 5f 63 72 61 73 68 22  utovacuum_crash"
63d0: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
63e0: 20 20 52 75 6e 20 63 72 61 73 68 2e 74 65 73 74    Run crash.test
63f0: 20 69 6e 20 61 75 74 6f 76 61 63 75 75 6d 20 6d   in autovacuum m
6400: 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ode..} -presql {
6410: 0a 20 20 70 72 61 67 6d 61 20 61 75 74 6f 5f 76  .  pragma auto_v
6420: 61 63 75 75 6d 20 3d 20 31 0a 7d 20 2d 66 69 6c  acuum = 1.} -fil
6430: 65 73 20 63 72 61 73 68 2e 74 65 73 74 0a 0a 23  es crash.test..#
6440: 20 52 75 6e 20 73 6f 6d 65 20 69 6f 65 72 72 2d   Run some ioerr-
6450: 74 65 73 74 73 20 69 6e 20 61 75 74 6f 76 61 63  tests in autovac
6460: 75 75 6d 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74  uum mode..#.test
6470: 5f 73 75 69 74 65 20 22 61 75 74 6f 76 61 63 75  _suite "autovacu
6480: 75 6d 5f 69 6f 65 72 72 22 20 2d 64 65 73 63 72  um_ioerr" -descr
6490: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 69  iption {.  Run i
64a0: 6f 65 72 72 2e 74 65 73 74 20 69 6e 20 61 75 74  oerr.test in aut
64b0: 6f 76 61 63 75 75 6d 20 6d 6f 64 65 2e 0a 7d 20  ovacuum mode..} 
64c0: 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67  -presql {.  prag
64d0: 6d 61 20 61 75 74 6f 5f 76 61 63 75 75 6d 20 3d  ma auto_vacuum =
64e0: 20 31 0a 7d 20 2d 66 69 6c 65 73 20 69 6f 65 72   1.} -files ioer
64f0: 72 2e 74 65 73 74 0a 0a 23 20 52 75 6e 20 74 65  r.test..# Run te
6500: 73 74 73 20 77 69 74 68 20 61 6e 20 69 6e 2d 6d  sts with an in-m
6510: 65 6d 6f 72 79 20 6a 6f 75 72 6e 61 6c 2e 0a 23  emory journal..#
6520: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 69 6e 6d  .test_suite "inm
6530: 65 6d 6f 72 79 5f 6a 6f 75 72 6e 61 6c 22 20 2d  emory_journal" -
6540: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
6550: 52 75 6e 20 74 65 73 74 73 20 77 69 74 68 20 61  Run tests with a
6560: 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 6a 6f 75 72  n in-memory jour
6570: 6e 61 6c 20 66 69 6c 65 2e 0a 7d 20 2d 70 72 65  nal file..} -pre
6580: 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a  sql {.  pragma j
6590: 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 27 6d  ournal_mode = 'm
65a0: 65 6d 6f 72 79 27 0a 7d 20 2d 66 69 6c 65 73 20  emory'.} -files 
65b0: 5b 74 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c  [test_set $::all
65c0: 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c  quicktests -excl
65d0: 75 64 65 20 7b 0a 20 20 23 20 45 78 63 6c 75 64  ude {.  # Exclud
65e0: 65 20 61 6c 6c 20 74 65 73 74 73 20 74 68 61 74  e all tests that
65f0: 20 73 69 6d 75 6c 61 74 65 20 49 4f 20 65 72 72   simulate IO err
6600: 6f 72 73 2e 0a 20 20 61 75 74 6f 76 61 63 75 75  ors..  autovacuu
6610: 6d 5f 69 6f 65 72 72 32 2e 74 65 73 74 20 63 66  m_ioerr2.test cf
6620: 66 61 75 6c 74 2e 74 65 73 74 20 69 6e 63 72 76  fault.test incrv
6630: 61 63 75 75 6d 5f 69 6f 65 72 72 2e 74 65 73 74  acuum_ioerr.test
6640: 20 69 6f 65 72 72 2e 74 65 73 74 0a 20 20 69 6f   ioerr.test.  io
6650: 65 72 72 2e 74 65 73 74 20 69 6f 65 72 72 32 2e  err.test ioerr2.
6660: 74 65 73 74 20 69 6f 65 72 72 33 2e 74 65 73 74  test ioerr3.test
6670: 20 69 6f 65 72 72 34 2e 74 65 73 74 20 69 6f 65   ioerr4.test ioe
6680: 72 72 35 2e 74 65 73 74 0a 20 20 76 61 63 75 75  rr5.test.  vacuu
6690: 6d 33 2e 74 65 73 74 20 69 6e 63 72 62 6c 6f 62  m3.test incrblob
66a0: 5f 65 72 72 2e 74 65 73 74 20 64 69 73 6b 66 75  _err.test diskfu
66b0: 6c 6c 2e 74 65 73 74 20 62 61 63 6b 75 70 5f 69  ll.test backup_i
66c0: 6f 65 72 72 2e 74 65 73 74 0a 20 20 65 5f 66 74  oerr.test.  e_ft
66d0: 73 33 2e 74 65 73 74 20 66 74 73 33 63 6f 76 2e  s3.test fts3cov.
66e0: 74 65 73 74 20 66 74 73 33 6d 61 6c 6c 6f 63 2e  test fts3malloc.
66f0: 74 65 73 74 20 66 74 73 33 72 6e 64 2e 74 65 73  test fts3rnd.tes
6700: 74 0a 20 20 66 74 73 33 73 6e 69 70 70 65 74 2e  t.  fts3snippet.
6710: 74 65 73 74 20 6d 6d 61 70 66 61 75 6c 74 2e 74  test mmapfault.t
6720: 65 73 74 20 73 65 73 73 69 6f 6e 66 61 75 6c 74  est sessionfault
6730: 2e 74 65 73 74 20 73 65 73 73 69 6f 6e 66 61 75  .test sessionfau
6740: 6c 74 32 2e 74 65 73 74 0a 0a 20 20 23 20 45 78  lt2.test..  # Ex
6750: 63 6c 75 64 65 20 74 65 73 74 20 73 63 72 69 70  clude test scrip
6760: 74 73 20 74 68 61 74 20 75 73 65 20 74 63 6c 20  ts that use tcl 
6770: 49 4f 20 74 6f 20 61 63 63 65 73 73 20 6a 6f 75  IO to access jou
6780: 72 6e 61 6c 20 66 69 6c 65 73 20 6f 72 20 63 6f  rnal files or co
6790: 75 6e 74 0a 20 20 23 20 74 68 65 20 6e 75 6d 62  unt.  # the numb
67a0: 65 72 20 6f 66 20 66 73 79 6e 63 28 29 20 63 61  er of fsync() ca
67b0: 6c 6c 73 2e 0a 20 20 70 61 67 65 72 2e 74 65 73  lls..  pager.tes
67c0: 74 20 65 78 63 6c 75 73 69 76 65 2e 74 65 73 74  t exclusive.test
67d0: 20 6a 72 6e 6c 6d 6f 64 65 2e 74 65 73 74 20 73   jrnlmode.test s
67e0: 79 6e 63 2e 74 65 73 74 20 6d 69 73 63 31 2e 74  ync.test misc1.t
67f0: 65 73 74 20 0a 20 20 6a 6f 75 72 6e 61 6c 31 2e  est .  journal1.
6800: 74 65 73 74 20 63 6f 6e 66 6c 69 63 74 2e 74 65  test conflict.te
6810: 73 74 20 63 72 61 73 68 38 2e 74 65 73 74 20 74  st crash8.test t
6820: 6b 74 33 34 35 37 2e 74 65 73 74 20 69 6f 2e 74  kt3457.test io.t
6830: 65 73 74 0a 20 20 6a 6f 75 72 6e 61 6c 33 2e 74  est.  journal3.t
6840: 65 73 74 20 38 5f 33 5f 6e 61 6d 65 73 2e 74 65  est 8_3_names.te
6850: 73 74 20 73 68 6d 6c 6f 63 6b 2e 74 65 73 74 0a  st shmlock.test.
6860: 0a 20 20 70 61 67 65 72 31 2e 74 65 73 74 20 61  .  pager1.test a
6870: 73 79 6e 63 34 2e 74 65 73 74 20 63 6f 72 72 75  sync4.test corru
6880: 70 74 2e 74 65 73 74 20 66 69 6c 65 66 6d 74 2e  pt.test filefmt.
6890: 74 65 73 74 20 70 61 67 65 72 32 2e 74 65 73 74  test pager2.test
68a0: 0a 20 20 63 6f 72 72 75 70 74 35 2e 74 65 73 74  .  corrupt5.test
68b0: 20 63 6f 72 72 75 70 74 41 2e 74 65 73 74 20 70   corruptA.test p
68c0: 61 67 65 72 6f 70 74 2e 74 65 73 74 0a 0a 20 20  ageropt.test..  
68d0: 23 20 45 78 63 6c 75 64 65 20 73 74 6d 74 2e 74  # Exclude stmt.t
68e0: 65 73 74 2c 20 77 68 69 63 68 20 65 78 70 65 63  est, which expec
68f0: 74 73 20 73 75 62 2d 6a 6f 75 72 6e 61 6c 73 20  ts sub-journals 
6900: 74 6f 20 75 73 65 20 74 65 6d 70 6f 72 61 72 79  to use temporary
6910: 20 66 69 6c 65 73 2e 0a 20 20 73 74 6d 74 2e 74   files..  stmt.t
6920: 65 73 74 20 73 79 6d 6c 69 6e 6b 2e 74 65 73 74  est symlink.test
6930: 0a 0a 20 20 7a 65 72 6f 64 61 6d 61 67 65 2e 74  ..  zerodamage.t
6940: 65 73 74 0a 0a 20 20 23 20 57 41 4c 20 6d 6f 64  est..  # WAL mod
6950: 65 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e 0a  e is different..
6960: 20 20 77 61 6c 2a 20 74 6b 74 2d 32 64 31 61 35    wal* tkt-2d1a5
6970: 63 36 37 64 2e 74 65 73 74 20 62 61 63 6b 63 6f  c67d.test backco
6980: 6d 70 61 74 2e 74 65 73 74 20 65 5f 77 61 6c 2a  mpat.test e_wal*
6990: 20 72 6f 77 61 6c 6c 6f 63 6b 2e 74 65 73 74 0a   rowallock.test.
69a0: 0a 20 20 23 20 54 68 69 73 20 74 65 73 74 20 64  .  # This test d
69b0: 6f 65 73 20 6e 6f 74 20 77 6f 72 6b 20 61 73 20  oes not work as 
69c0: 74 68 65 20 22 50 52 41 47 4d 41 20 6a 6f 75 72  the "PRAGMA jour
69d0: 6e 61 6c 5f 6d 6f 64 65 20 3d 20 6d 65 6d 6f 72  nal_mode = memor
69e0: 79 22 0a 20 20 23 20 73 74 61 74 65 6d 65 6e 74  y".  # statement
69f0: 20 73 77 69 74 63 68 65 73 20 74 68 65 20 64 61   switches the da
6a00: 74 61 62 61 73 65 20 6f 75 74 20 6f 66 20 77 61  tabase out of wa
6a10: 6c 20 6d 6f 64 65 20 61 74 20 69 6e 6f 70 70 6f  l mode at inoppo
6a20: 72 74 75 6e 65 0a 20 20 23 20 74 69 6d 65 73 2e  rtune.  # times.
6a30: 0a 20 20 73 6e 61 70 73 68 6f 74 5f 66 61 75 6c  .  snapshot_faul
6a40: 74 2e 74 65 73 74 0a 20 20 0a 20 20 23 20 54 68  t.test.  .  # Th
6a50: 69 73 20 74 65 73 74 20 61 73 73 75 6d 65 73 20  is test assumes 
6a60: 61 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 69  a journal file i
6a70: 73 20 63 72 65 61 74 65 64 20 6f 6e 20 64 69 73  s created on dis
6a80: 6b 2e 0a 20 20 64 65 6c 65 74 65 5f 64 62 2e 74  k..  delete_db.t
6a90: 65 73 74 0a 20 20 0a 20 20 23 20 54 68 69 73 20  est.  .  # This 
6aa0: 74 65 73 74 20 64 65 70 65 6e 64 73 20 6f 6e 20  test depends on 
6ab0: 61 20 73 75 63 63 65 73 73 66 75 6c 20 72 65 63  a successful rec
6ac0: 6f 76 65 72 79 20 66 72 6f 6d 20 74 68 65 20 70  overy from the p
6ad0: 61 67 65 72 20 65 72 72 6f 72 20 0a 20 20 23 20  ager error .  # 
6ae0: 73 74 61 74 65 2e 20 57 68 69 63 68 20 69 73 20  state. Which is 
6af0: 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 77 69 74  not possible wit
6b00: 68 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 6a  h an in-memory j
6b10: 6f 75 72 6e 61 6c 0a 20 20 66 74 73 35 66 61 75  ournal.  fts5fau
6b20: 6c 74 31 2e 74 65 73 74 0a 7d 5d 0a 0a 69 66 63  lt1.test.}]..ifc
6b30: 61 70 61 62 6c 65 20 6d 65 6d 33 20 7b 0a 20 20  apable mem3 {.  
6b40: 74 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73  test_suite "mems
6b50: 79 73 33 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ys3" -descriptio
6b60: 6e 20 7b 0a 20 20 20 20 52 75 6e 20 74 65 73 74  n {.    Run test
6b70: 73 20 75 73 69 6e 67 20 74 68 65 20 61 6c 6c 6f  s using the allo
6b80: 63 61 74 6f 72 20 69 6e 20 6d 65 6d 33 2e 63 2e  cator in mem3.c.
6b90: 0a 20 20 7d 20 2d 66 69 6c 65 73 20 5b 74 65 73  .  } -files [tes
6ba0: 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63  t_set $::allquic
6bb0: 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20  ktests -exclude 
6bc0: 7b 0a 20 20 20 20 61 75 74 6f 76 61 63 75 75 6d  {.    autovacuum
6bd0: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
6be0: 64 65 6c 65 74 65 33 2e 74 65 73 74 20 20 20 20  delete3.test    
6bf0: 20 20 20 20 20 20 20 20 20 20 6d 61 6e 79 64 62            manydb
6c00: 2e 74 65 73 74 0a 20 20 20 20 62 69 67 72 6f 77  .test.    bigrow
6c10: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
6c20: 20 20 20 20 69 6e 63 72 62 6c 6f 62 32 2e 74 65      incrblob2.te
6c30: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 6d 65  st            me
6c40: 6d 64 62 2e 74 65 73 74 0a 20 20 20 20 62 69 74  mdb.test.    bit
6c50: 76 65 63 2e 74 65 73 74 20 20 20 20 20 20 20 20  vec.test        
6c60: 20 20 20 20 20 20 20 69 6e 64 65 78 32 2e 74 65         index2.te
6c70: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  st              
6c80: 20 6d 65 6d 73 75 62 73 79 73 31 2e 74 65 73 74   memsubsys1.test
6c90: 0a 20 20 20 20 63 61 70 69 33 63 2e 74 65 73 74  .    capi3c.test
6ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
6cb0: 6f 65 72 72 2e 74 65 73 74 20 20 20 20 20 20 20  oerr.test       
6cc0: 20 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73           memsubs
6cd0: 79 73 32 2e 74 65 73 74 0a 20 20 20 20 63 61 70  ys2.test.    cap
6ce0: 69 33 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  i3.test         
6cf0: 20 20 20 20 20 20 20 6a 6f 69 6e 33 2e 74 65 73         join3.tes
6d00: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
6d10: 20 70 61 67 65 73 69 7a 65 2e 74 65 73 74 0a 20   pagesize.test. 
6d20: 20 20 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74     collate5.test
6d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6d               lim
6d40: 69 74 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  it.test         
6d50: 20 20 20 20 20 20 20 62 61 63 6b 75 70 5f 69 6f         backup_io
6d60: 65 72 72 2e 74 65 73 74 0a 20 20 20 20 62 61 63  err.test.    bac
6d70: 6b 75 70 5f 6d 61 6c 6c 6f 63 2e 74 65 73 74 0a  kup_malloc.test.
6d80: 20 20 7d 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65    }] -initialize
6d90: 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62   {.    catch {db
6da0: 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69   close}.    sqli
6db0: 74 65 33 5f 72 65 73 65 74 5f 61 75 74 6f 5f 65  te3_reset_auto_e
6dc0: 78 74 65 6e 73 69 6f 6e 0a 20 20 20 20 73 71 6c  xtension.    sql
6dd0: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
6de0: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
6df0: 5f 68 65 61 70 20 32 35 30 30 30 30 30 30 20 30  _heap 25000000 0
6e00: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  .    sqlite3_con
6e10: 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20  fig_lookaside 0 
6e20: 30 0a 20 20 20 20 69 66 63 61 70 61 62 6c 65 20  0.    ifcapable 
6e30: 6d 65 6d 35 20 7b 0a 20 20 20 20 20 20 23 20 49  mem5 {.      # I
6e40: 66 20 62 6f 74 68 20 6d 65 6d 73 79 73 33 20 61  f both memsys3 a
6e50: 6e 64 20 6d 65 6d 73 79 73 35 20 61 72 65 20 65  nd memsys5 are e
6e60: 6e 61 62 6c 65 64 20 69 6e 20 74 68 65 20 62 75  nabled in the bu
6e70: 69 6c 64 2c 20 74 68 65 20 63 61 6c 6c 20 74 6f  ild, the call to
6e80: 0a 20 20 20 20 20 20 23 20 5b 73 71 6c 69 74 65  .      # [sqlite
6e90: 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70 5d 20 77  3_config_heap] w
6ea0: 69 6c 6c 20 69 6e 69 74 69 61 6c 69 7a 65 20 74  ill initialize t
6eb0: 68 65 20 73 79 73 74 65 6d 20 74 6f 20 75 73 65  he system to use
6ec0: 20 6d 65 6d 73 79 73 35 2e 0a 20 20 20 20 20 20   memsys5..      
6ed0: 23 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  # The following 
6ee0: 6f 76 65 72 72 69 64 65 73 20 74 68 69 73 20 70  overrides this p
6ef0: 72 65 66 65 72 65 6e 63 65 20 61 6e 64 20 69 6e  reference and in
6f00: 73 74 61 6c 6c 73 20 74 68 65 20 6d 65 6d 73 79  stalls the memsy
6f10: 73 33 0a 20 20 20 20 20 20 23 20 61 6c 6c 6f 63  s3.      # alloc
6f20: 61 74 6f 72 2e 0a 20 20 20 20 20 20 73 71 6c 69  ator..      sqli
6f30: 74 65 33 5f 69 6e 73 74 61 6c 6c 5f 6d 65 6d 73  te3_install_mems
6f40: 79 73 33 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e  ys3.    }.    in
6f50: 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75  stall_malloc_fau
6f60: 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c  ltsim 1 .    sql
6f70: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
6f80: 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f      autoinstall_
6f90: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20  test_functions. 
6fa0: 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20   } -shutdown {. 
6fb0: 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f     catch {db clo
6fc0: 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  se}.    sqlite3_
6fd0: 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c  shutdown.    sql
6fe0: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70  ite3_config_heap
6ff0: 20 30 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33   0 0.    sqlite3
7000: 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64  _config_lookasid
7010: 65 20 31 30 30 20 35 30 30 0a 20 20 20 20 69 6e  e 100 500.    in
7020: 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75  stall_malloc_fau
7030: 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c  ltsim 1 .    sql
7040: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
7050: 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f      autoinstall_
7060: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20  test_functions. 
7070: 20 7d 0a 7d 0a 0a 69 66 63 61 70 61 62 6c 65 20   }.}..ifcapable 
7080: 6d 65 6d 35 20 7b 0a 20 20 74 65 73 74 5f 73 75  mem5 {.  test_su
7090: 69 74 65 20 22 6d 65 6d 73 79 73 35 22 20 2d 64  ite "memsys5" -d
70a0: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20  escription {.   
70b0: 20 52 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67   Run tests using
70c0: 20 74 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69   the allocator i
70d0: 6e 20 6d 65 6d 35 2e 63 2e 0a 20 20 7d 20 2d 66  n mem5.c..  } -f
70e0: 69 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24  iles [test_set $
70f0: 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20  ::allquicktests 
7100: 2d 65 78 63 6c 75 64 65 20 7b 0a 20 20 20 20 61  -exclude {.    a
7110: 75 74 6f 76 61 63 75 75 6d 2e 74 65 73 74 20 20  utovacuum.test  
7120: 20 20 20 20 20 20 20 20 20 64 65 6c 65 74 65 33           delete3
7130: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
7140: 20 20 20 6d 61 6e 79 64 62 2e 74 65 73 74 0a 20     manydb.test. 
7150: 20 20 20 62 69 67 72 6f 77 2e 74 65 73 74 20 20     bigrow.test  
7160: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 63               inc
7170: 72 62 6c 6f 62 32 2e 74 65 73 74 20 20 20 20 20  rblob2.test     
7180: 20 20 20 20 20 20 20 6d 65 6d 64 62 2e 74 65 73         memdb.tes
7190: 74 0a 20 20 20 20 62 69 74 76 65 63 2e 74 65 73  t.    bitvec.tes
71a0: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
71b0: 69 6e 64 65 78 32 2e 74 65 73 74 20 20 20 20 20  index2.test     
71c0: 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62            memsub
71d0: 73 79 73 31 2e 74 65 73 74 0a 20 20 20 20 63 61  sys1.test.    ca
71e0: 70 69 33 63 2e 74 65 73 74 20 20 20 20 20 20 20  pi3c.test       
71f0: 20 20 20 20 20 20 20 20 69 6f 65 72 72 2e 74 65          ioerr.te
7200: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  st              
7210: 20 20 6d 65 6d 73 75 62 73 79 73 32 2e 74 65 73    memsubsys2.tes
7220: 74 0a 20 20 20 20 63 61 70 69 33 2e 74 65 73 74  t.    capi3.test
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7240: 6a 6f 69 6e 33 2e 74 65 73 74 20 20 20 20 20 20  join3.test      
7250: 20 20 20 20 20 20 20 20 20 20 70 61 67 65 73 69            pagesi
7260: 7a 65 2e 74 65 73 74 0a 20 20 20 20 63 6f 6c 6c  ze.test.    coll
7270: 61 74 65 35 2e 74 65 73 74 20 20 20 20 20 20 20  ate5.test       
7280: 20 20 20 20 20 20 6c 69 6d 69 74 2e 74 65 73 74        limit.test
7290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72a0: 7a 65 72 6f 62 6c 6f 62 2e 74 65 73 74 0a 20 20  zeroblob.test.  
72b0: 7d 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  }] -initialize {
72c0: 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62 20 63  .    catch {db c
72d0: 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65  lose}.    sqlite
72e0: 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 73  3_shutdown.    s
72f0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65  qlite3_config_he
7300: 61 70 20 32 35 30 30 30 30 30 30 20 36 34 0a 20  ap 25000000 64. 
7310: 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69     sqlite3_confi
7320: 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a  g_lookaside 0 0.
7330: 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c      install_mall
7340: 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20  oc_faultsim 1 . 
7350: 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69     sqlite3_initi
7360: 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e  alize.    autoin
7370: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
7380: 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74 64 6f  ions.  } -shutdo
7390: 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b  wn {.    catch {
73a0: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71  db close}.    sq
73b0: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
73c0: 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69     sqlite3_confi
73d0: 67 5f 68 65 61 70 20 30 20 30 0a 20 20 20 20 73  g_heap 0 0.    s
73e0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f  qlite3_config_lo
73f0: 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30 30 0a  okaside 100 500.
7400: 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c      install_mall
7410: 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20  oc_faultsim 1 . 
7420: 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69     sqlite3_initi
7430: 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e  alize.    autoin
7440: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
7450: 69 6f 6e 73 0a 20 20 7d 0a 0a 20 20 74 65 73 74  ions.  }..  test
7460: 5f 73 75 69 74 65 20 22 6d 65 6d 73 79 73 35 2d  _suite "memsys5-
7470: 32 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  2" -description 
7480: 7b 0a 20 20 20 20 52 75 6e 20 74 65 73 74 73 20  {.    Run tests 
7490: 75 73 69 6e 67 20 74 68 65 20 61 6c 6c 6f 63 61  using the alloca
74a0: 74 6f 72 20 69 6e 20 6d 65 6d 35 2e 63 20 69 6e  tor in mem5.c in
74b0: 20 61 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e   a different con
74c0: 66 69 67 75 72 61 74 69 6f 6e 2e 0a 20 20 7d 20  figuration..  } 
74d0: 2d 66 69 6c 65 73 20 7b 0a 20 20 20 20 73 65 6c  -files {.    sel
74e0: 65 63 74 31 2e 74 65 73 74 20 0a 20 20 7d 20 2d  ect1.test .  } -
74f0: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20  initialize {.   
7500: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
7510: 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68  }.    sqlite3_sh
7520: 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74  utdown.    sqlit
7530: 65 33 5f 63 6f 6e 66 69 67 5f 6d 65 6d 73 74 61  e3_config_memsta
7540: 74 75 73 20 30 0a 20 20 20 20 73 71 6c 69 74 65  tus 0.    sqlite
7550: 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20 34 30  3_config_heap 40
7560: 30 30 30 30 30 30 20 31 36 0a 20 20 20 20 73 71  000000 16.    sq
7570: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f  lite3_config_loo
7580: 6b 61 73 69 64 65 20 30 20 30 0a 20 20 20 20 69  kaside 0 0.    i
7590: 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61  nstall_malloc_fa
75a0: 75 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71  ultsim 1 .    sq
75b0: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
75c0: 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  .    autoinstall
75d0: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
75e0: 20 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a    } -shutdown {.
75f0: 20 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c      catch {db cl
7600: 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33  ose}.    sqlite3
7610: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71  _shutdown.    sq
7620: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65 61  lite3_config_hea
7630: 70 20 30 20 30 0a 20 20 20 20 73 71 6c 69 74 65  p 0 0.    sqlite
7640: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69  3_config_lookasi
7650: 64 65 20 31 30 30 20 35 30 30 0a 20 20 20 20 69  de 100 500.    i
7660: 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61  nstall_malloc_fa
7670: 75 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71  ultsim 1 .    sq
7680: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
7690: 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  .    autoinstall
76a0: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
76b0: 20 20 7d 0a 7d 0a 0a 69 66 63 61 70 61 62 6c 65    }.}..ifcapable
76c0: 20 74 68 72 65 61 64 73 61 66 65 20 7b 0a 20 20   threadsafe {.  
76d0: 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 5f 6d  test_suite "no_m
76e0: 75 74 65 78 5f 74 72 79 22 20 2d 64 65 73 63 72  utex_try" -descr
76f0: 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 20 54 68  iption {.     Th
7700: 65 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f  e sqlite3_mutex_
7710: 74 72 79 28 29 20 69 6e 74 65 72 66 61 63 65 20  try() interface 
7720: 61 6c 77 61 79 73 20 66 61 69 6c 73 0a 20 20 7d  always fails.  }
7730: 20 2d 66 69 6c 65 73 20 5b 0a 20 20 20 20 74 65   -files [.    te
7740: 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69  st_set $::allqui
7750: 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  cktests -exclude
7760: 20 6d 75 74 65 78 31 2e 74 65 73 74 20 6d 75 74   mutex1.test mut
7770: 65 78 32 2e 74 65 73 74 0a 20 20 5d 20 2d 69 6e  ex2.test.  ] -in
7780: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63  itialize {.    c
7790: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
77a0: 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74      sqlite3_shut
77b0: 64 6f 77 6e 0a 20 20 20 20 69 6e 73 74 61 6c 6c  down.    install
77c0: 5f 6d 75 74 65 78 5f 63 6f 75 6e 74 65 72 73 20  _mutex_counters 
77d0: 31 0a 20 20 20 20 73 65 74 20 3a 3a 64 69 73 61  1.    set ::disa
77e0: 62 6c 65 5f 6d 75 74 65 78 5f 74 72 79 20 31 0a  ble_mutex_try 1.
77f0: 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74      sqlite3_init
7800: 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69  ialize.    autoi
7810: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
7820: 74 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74 64  tions.  } -shutd
7830: 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68 20  own {.    catch 
7840: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73  {db close}.    s
7850: 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a  qlite3_shutdown.
7860: 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 75 74 65      install_mute
7870: 78 5f 63 6f 75 6e 74 65 72 73 20 30 0a 20 20 20  x_counters 0.   
7880: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
7890: 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74  ize.    autoinst
78a0: 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f  all_test_functio
78b0: 6e 73 0a 20 20 7d 0a 7d 0a 0a 23 20 72 75 6e 5f  ns.  }.}..# run_
78c0: 74 65 73 74 73 20 22 63 72 61 73 68 5f 73 61 66  tests "crash_saf
78d0: 65 5f 61 70 70 65 6e 64 22 20 2d 64 65 73 63 72  e_append" -descr
78e0: 69 70 74 69 6f 6e 20 7b 0a 23 20 20 20 52 75 6e  iption {.#   Run
78f0: 20 63 72 61 73 68 2e 74 65 73 74 20 77 69 74 68   crash.test with
7900: 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f 75 72   persistent jour
7910: 6e 61 6c 73 20 6f 6e 20 61 20 53 41 46 45 5f 41  nals on a SAFE_A
7920: 50 50 45 4e 44 20 66 69 6c 65 2d 73 79 73 74 65  PPEND file-syste
7930: 6d 2e 0a 23 20 7d 20 2d 69 6e 69 74 69 61 6c 69  m..# } -initiali
7940: 7a 65 20 7b 0a 23 20 20 20 72 65 6e 61 6d 65 20  ze {.#   rename 
7950: 63 72 61 73 68 73 71 6c 20 73 61 5f 63 72 61 73  crashsql sa_cras
7960: 68 73 71 6c 0a 23 20 20 20 70 72 6f 63 20 63 72  hsql.#   proc cr
7970: 61 73 68 73 71 6c 20 7b 61 72 67 73 7d 20 7b 0a  ashsql {args} {.
7980: 23 20 20 20 20 20 73 65 74 20 6f 70 74 69 6f 6e  #     set option
7990: 73 20 5b 6c 72 61 6e 67 65 20 24 61 72 67 73 20  s [lrange $args 
79a0: 30 20 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74  0 [expr {[llengt
79b0: 68 20 24 61 72 67 73 5d 2d 32 7d 5d 5d 0a 23 20  h $args]-2}]].# 
79c0: 20 20 20 20 6c 61 70 70 65 6e 64 20 6f 70 74 69      lappend opti
79d0: 6f 6e 73 20 2d 63 68 61 72 20 73 61 66 65 5f 61  ons -char safe_a
79e0: 70 70 65 6e 64 0a 23 20 20 20 20 20 73 65 74 20  ppend.#     set 
79f0: 73 71 6c 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  sql [lindex $arg
7a00: 73 20 65 6e 64 5d 0a 23 20 20 20 20 20 6c 61 70  s end].#     lap
7a10: 70 65 6e 64 20 6f 70 74 69 6f 6e 73 20 22 0a 23  pend options ".#
7a20: 20 20 20 20 20 20 20 50 52 41 47 4d 41 20 6a 6f         PRAGMA jo
7a30: 75 72 6e 61 6c 5f 6d 6f 64 65 3d 70 65 72 73 69  urnal_mode=persi
7a40: 73 74 65 6e 74 3b 0a 23 20 20 20 20 20 20 20 24  stent;.#       $
7a50: 73 71 6c 0a 23 20 20 20 20 20 22 0a 23 20 20 20  sql.#     ".#   
7a60: 20 20 73 65 74 20 66 64 20 5b 6f 70 65 6e 20 74    set fd [open t
7a70: 65 73 74 2e 64 62 2d 6a 6f 75 72 6e 61 6c 20 77  est.db-journal w
7a80: 5d 0a 23 20 20 20 20 20 70 75 74 73 20 24 66 64  ].#     puts $fd
7a90: 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20   [string repeat 
7aa0: 31 32 33 34 35 36 37 38 39 30 20 31 30 30 30 30  1234567890 10000
7ab0: 30 5d 0a 23 20 20 20 20 20 63 6c 6f 73 65 20 24  0].#     close $
7ac0: 66 64 0a 23 20 20 20 20 20 65 76 61 6c 20 73 61  fd.#     eval sa
7ad0: 5f 63 72 61 73 68 73 71 6c 20 24 6f 70 74 69 6f  _crashsql $optio
7ae0: 6e 73 0a 23 20 20 20 7d 0a 23 20 7d 20 2d 73 68  ns.#   }.# } -sh
7af0: 75 74 64 6f 77 6e 20 7b 0a 23 20 20 20 72 65 6e  utdown {.#   ren
7b00: 61 6d 65 20 63 72 61 73 68 73 71 6c 20 7b 7d 0a  ame crashsql {}.
7b10: 23 20 20 20 72 65 6e 61 6d 65 20 73 61 5f 63 72  #   rename sa_cr
7b20: 61 73 68 73 71 6c 20 63 72 61 73 68 73 71 6c 0a  ashsql crashsql.
7b30: 23 20 7d 20 2d 66 69 6c 65 73 20 63 72 61 73 68  # } -files crash
7b40: 2e 74 65 73 74 0a 0a 74 65 73 74 5f 73 75 69 74  .test..test_suit
7b50: 65 20 22 73 61 66 65 5f 61 70 70 65 6e 64 22 20  e "safe_append" 
7b60: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
7b70: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
7b80: 6f 6e 20 61 20 53 41 46 45 5f 41 50 50 45 4e 44  on a SAFE_APPEND
7b90: 20 66 69 6c 65 2d 73 79 73 74 65 6d 2e 0a 7d 20   file-system..} 
7ba0: 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20  -initialize {.  
7bb0: 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 73 71 6c  set ::G(perm:sql
7bc0: 69 74 65 33 5f 61 72 67 73 29 20 5b 6c 69 73 74  ite3_args) [list
7bd0: 20 2d 76 66 73 20 64 65 76 73 79 6d 5d 0a 20 20   -vfs devsym].  
7be0: 73 71 6c 69 74 65 33 5f 73 69 6d 75 6c 61 74 65  sqlite3_simulate
7bf0: 5f 64 65 76 69 63 65 20 2d 63 68 61 72 20 73 61  _device -char sa
7c00: 66 65 5f 61 70 70 65 6e 64 0a 7d 20 2d 66 69 6c  fe_append.} -fil
7c10: 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20  es [.  test_set 
7c20: 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  $::allquicktests
7c30: 20 73 68 61 72 65 64 5f 65 72 72 2e 74 65 73 74   shared_err.test
7c40: 20 2d 65 78 63 6c 75 64 65 20 61 73 79 6e 63 33   -exclude async3
7c50: 2e 74 65 73 74 0a 5d 0a 0a 23 20 54 68 65 20 73  .test.]..# The s
7c60: 65 74 20 6f 66 20 74 65 73 74 73 20 74 6f 20 72  et of tests to r
7c70: 75 6e 20 6f 6e 20 74 68 65 20 61 6c 74 65 72 6e  un on the altern
7c80: 61 74 69 76 65 2d 70 63 61 63 68 65 0a 73 65 74  ative-pcache.set
7c90: 20 70 65 72 6d 2d 61 6c 74 2d 70 63 61 63 68 65   perm-alt-pcache
7ca0: 2d 74 65 73 74 73 65 74 20 7b 0a 20 20 61 73 79  -testset {.  asy
7cb0: 6e 63 2e 74 65 73 74 0a 20 20 61 74 74 61 63 68  nc.test.  attach
7cc0: 2e 74 65 73 74 0a 20 20 64 65 6c 65 74 65 2e 74  .test.  delete.t
7cd0: 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65 73 74  est delete2.test
7ce0: 0a 20 20 69 6e 64 65 78 2e 74 65 73 74 0a 20 20  .  index.test.  
7cf0: 69 6e 73 65 72 74 2e 74 65 73 74 20 69 6e 73 65  insert.test inse
7d00: 72 74 32 2e 74 65 73 74 0a 20 20 6a 6f 69 6e 2e  rt2.test.  join.
7d10: 74 65 73 74 20 6a 6f 69 6e 32 2e 74 65 73 74 0a  test join2.test.
7d20: 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 0a    rollback.test.
7d30: 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20 73    select1.test s
7d40: 65 6c 65 63 74 32 2e 74 65 73 74 0a 20 20 74 72  elect2.test.  tr
7d50: 61 6e 73 2e 74 65 73 74 0a 20 20 75 70 64 61 74  ans.test.  updat
7d60: 65 2e 74 65 73 74 0a 7d 0a 0a 66 6f 72 65 61 63  e.test.}..foreac
7d70: 68 20 64 69 73 63 61 72 64 5f 72 61 74 65 20 7b  h discard_rate {
7d80: 30 20 31 30 20 35 30 20 39 30 20 31 30 30 7d 20  0 10 50 90 100} 
7d90: 7b 0a 20 20 74 65 73 74 5f 73 75 69 74 65 20 22  {.  test_suite "
7da0: 70 63 61 63 68 65 24 7b 64 69 73 63 61 72 64 5f  pcache${discard_
7db0: 72 61 74 65 7d 22 20 2d 64 65 73 63 72 69 70 74  rate}" -descript
7dc0: 69 6f 6e 20 22 0a 20 20 20 20 41 6c 74 65 72 6e  ion ".    Altern
7dd0: 61 74 69 76 65 20 70 63 61 63 68 65 20 69 6d 70  ative pcache imp
7de0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 69 74 68  lementation with
7df0: 20 24 7b 64 69 73 63 61 72 64 5f 72 61 74 65 7d   ${discard_rate}
7e00: 25 20 72 61 6e 64 6f 6d 20 64 69 73 63 61 72 64  % random discard
7e10: 0a 20 20 22 20 2d 69 6e 69 74 69 61 6c 69 7a 65  .  " -initialize
7e20: 20 22 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62   ".    catch {db
7e30: 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69   close}.    sqli
7e40: 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20  te3_shutdown.   
7e50: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
7e60: 61 6c 74 5f 70 63 61 63 68 65 20 31 20 24 64 69  alt_pcache 1 $di
7e70: 73 63 61 72 64 5f 72 61 74 65 20 31 0a 20 20 20  scard_rate 1.   
7e80: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
7e90: 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74  ize.    autoinst
7ea0: 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f  all_test_functio
7eb0: 6e 73 0a 20 20 22 20 2d 73 68 75 74 64 6f 77 6e  ns.  " -shutdown
7ec0: 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62   {.    catch {db
7ed0: 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69   close}.    sqli
7ee0: 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20  te3_shutdown.   
7ef0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
7f00: 61 6c 74 5f 70 63 61 63 68 65 20 30 20 30 20 30  alt_pcache 0 0 0
7f10: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  .    sqlite3_con
7f20: 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31 30  fig_lookaside 10
7f30: 30 20 35 30 30 0a 20 20 20 20 69 6e 73 74 61 6c  0 500.    instal
7f40: 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69  l_malloc_faultsi
7f50: 6d 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65 33  m 1 .    sqlite3
7f60: 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20  _initialize.    
7f70: 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74  autoinstall_test
7f80: 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 20 2d  _functions.  } -
7f90: 66 69 6c 65 73 20 24 7b 70 65 72 6d 2d 61 6c 74  files ${perm-alt
7fa0: 2d 70 63 61 63 68 65 2d 74 65 73 74 73 65 74 7d  -pcache-testset}
7fb0: 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  .}..test_suite "
7fc0: 6a 6f 75 72 6e 61 6c 74 65 73 74 22 20 2d 64 65  journaltest" -de
7fd0: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 43 68  scription {.  Ch
7fe0: 65 63 6b 20 74 68 61 74 20 70 61 67 65 73 20 61  eck that pages a
7ff0: 72 65 20 73 79 6e 63 65 64 20 62 65 66 6f 72 65  re synced before
8000: 20 62 65 69 6e 67 20 77 72 69 74 74 65 6e 20 28   being written (
8010: 74 65 73 74 5f 6a 6f 75 72 6e 61 6c 2e 63 29 2e  test_journal.c).
8020: 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  .} -initialize {
8030: 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f  .  catch {db clo
8040: 73 65 7d 0a 20 20 72 65 67 69 73 74 65 72 5f 6a  se}.  register_j
8050: 74 5f 76 66 73 20 2d 64 65 66 61 75 6c 74 20 22  t_vfs -default "
8060: 22 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  ".} -shutdown {.
8070: 20 20 75 6e 72 65 67 69 73 74 65 72 5f 6a 74 5f    unregister_jt_
8080: 76 66 73 0a 7d 20 2d 66 69 6c 65 73 20 5b 74 65  vfs.} -files [te
8090: 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69  st_set $::allqui
80a0: 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  cktests -exclude
80b0: 20 7b 0a 20 20 77 61 6c 2a 20 69 6e 63 72 76 61   {.  wal* incrva
80c0: 63 75 75 6d 2e 74 65 73 74 20 69 6f 65 72 72 2e  cuum.test ioerr.
80d0: 74 65 73 74 20 63 6f 72 72 75 70 74 34 2e 74 65  test corrupt4.te
80e0: 73 74 20 69 6f 2e 74 65 73 74 20 63 72 61 73 68  st io.test crash
80f0: 38 2e 74 65 73 74 20 0a 20 20 61 73 79 6e 63 34  8.test .  async4
8100: 2e 74 65 73 74 20 62 69 67 66 69 6c 65 2e 74 65  .test bigfile.te
8110: 73 74 20 62 61 63 6b 63 6f 6d 70 61 74 2e 74 65  st backcompat.te
8120: 73 74 20 65 5f 77 61 6c 2a 20 66 73 74 61 74 2e  st e_wal* fstat.
8130: 74 65 73 74 20 6d 6d 61 70 32 2e 74 65 73 74 0a  test mmap2.test.
8140: 20 20 70 61 67 65 72 31 2e 74 65 73 74 20 73 79    pager1.test sy
8150: 73 63 61 6c 6c 2e 74 65 73 74 20 74 6b 74 33 34  scall.test tkt34
8160: 35 37 2e 74 65 73 74 20 2a 6d 61 6c 6c 6f 63 2a  57.test *malloc*
8170: 20 6d 6d 61 70 2a 20 6d 75 6c 74 69 70 6c 65 78   mmap* multiplex
8180: 2a 20 6e 6f 6c 6f 63 6b 2a 0a 20 20 70 61 67 65  * nolock*.  page
8190: 72 32 2e 74 65 73 74 20 2a 66 61 75 6c 74 2a 20  r2.test *fault* 
81a0: 72 6f 77 61 6c 2a 20 73 6e 61 70 73 68 6f 74 2a  rowal* snapshot*
81b0: 20 73 75 70 65 72 6c 6f 63 6b 2a 20 73 79 6d 6c   superlock* syml
81c0: 69 6e 6b 2e 74 65 73 74 0a 20 20 64 65 6c 65 74  ink.test.  delet
81d0: 65 5f 64 62 2e 74 65 73 74 20 73 68 6d 6c 6f 63  e_db.test shmloc
81e0: 6b 2e 74 65 73 74 20 63 68 75 6e 6b 73 69 7a 65  k.test chunksize
81f0: 2e 74 65 73 74 0a 7d 5d 0a 0a 69 66 20 7b 5b 69  .test.}]..if {[i
8200: 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 72 65 67  nfo commands reg
8210: 69 73 74 65 72 5f 64 65 6d 6f 76 66 73 5d 20 21  ister_demovfs] !
8220: 3d 20 22 22 7d 20 7b 0a 20 20 74 65 73 74 5f 73  = ""} {.  test_s
8230: 75 69 74 65 20 22 64 65 6d 6f 76 66 73 22 20 2d  uite "demovfs" -
8240: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
8250: 20 20 43 68 65 63 6b 20 74 68 61 74 20 74 68 65    Check that the
8260: 20 64 65 6d 6f 76 66 73 20 28 63 6f 64 65 20 69   demovfs (code i
8270: 6e 20 74 65 73 74 5f 64 65 6d 6f 76 66 73 2e 63  n test_demovfs.c
8280: 29 20 6d 6f 72 65 20 6f 72 20 6c 65 73 73 20 77  ) more or less w
8290: 6f 72 6b 73 2e 0a 20 20 7d 20 2d 69 6e 69 74 69  orks..  } -initi
82a0: 61 6c 69 7a 65 20 7b 0a 20 20 20 20 72 65 67 69  alize {.    regi
82b0: 73 74 65 72 5f 64 65 6d 6f 76 66 73 0a 20 20 7d  ster_demovfs.  }
82c0: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20   -shutdown {.   
82d0: 20 75 6e 72 65 67 69 73 74 65 72 5f 64 65 6d 6f   unregister_demo
82e0: 76 66 73 0a 20 20 7d 20 2d 66 69 6c 65 73 20 7b  vfs.  } -files {
82f0: 0a 20 20 20 20 69 6e 73 65 72 74 2e 74 65 73 74  .    insert.test
8300: 20 20 20 69 6e 73 65 72 74 32 2e 74 65 73 74 20     insert2.test 
8310: 20 69 6e 73 65 72 74 33 2e 74 65 73 74 20 72 6f   insert3.test ro
8320: 6c 6c 62 61 63 6b 2e 74 65 73 74 20 0a 20 20 20  llback.test .   
8330: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20 20 73   select1.test  s
8340: 65 6c 65 63 74 32 2e 74 65 73 74 20 20 73 65 6c  elect2.test  sel
8350: 65 63 74 33 2e 74 65 73 74 0a 20 20 7d 0a 7d 0a  ect3.test.  }.}.
8360: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 77 61 6c  .test_suite "wal
8370: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
8380: 0a 20 20 52 75 6e 20 74 65 73 74 73 20 77 69 74  .  Run tests wit
8390: 68 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3d 57  h journal_mode=W
83a0: 41 4c 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  AL.} -initialize
83b0: 20 7b 0a 20 20 73 65 74 20 3a 3a 47 28 73 61 76   {.  set ::G(sav
83c0: 65 70 6f 69 6e 74 36 5f 69 74 65 72 61 74 69 6f  epoint6_iteratio
83d0: 6e 73 29 20 31 30 30 0a 7d 20 2d 73 68 75 74 64  ns) 100.} -shutd
83e0: 6f 77 6e 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e  own {.  unset -n
83f0: 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a 47 28 73 61  ocomplain ::G(sa
8400: 76 65 70 6f 69 6e 74 36 5f 69 74 65 72 61 74 69  vepoint6_iterati
8410: 6f 6e 73 29 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  ons).} -files {.
8420: 20 20 73 61 76 65 70 6f 69 6e 74 2e 74 65 73 74    savepoint.test
8430: 20 20 20 20 20 73 61 76 65 70 6f 69 6e 74 32 2e       savepoint2.
8440: 74 65 73 74 20 20 20 20 20 73 61 76 65 70 6f 69  test     savepoi
8450: 6e 74 36 2e 74 65 73 74 0a 20 20 74 72 61 6e 73  nt6.test.  trans
8460: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 61 76  .test         av
8470: 74 72 61 6e 73 2e 74 65 73 74 0a 0a 20 20 66 74  trans.test..  ft
8480: 73 33 61 61 2e 74 65 73 74 20 20 66 74 73 33 61  s3aa.test  fts3a
8490: 62 2e 74 65 73 74 20 20 66 74 73 33 61 63 2e 74  b.test  fts3ac.t
84a0: 65 73 74 20 20 66 74 73 33 61 64 2e 74 65 73 74  est  fts3ad.test
84b0: 0a 20 20 66 74 73 33 61 65 2e 74 65 73 74 20 20  .  fts3ae.test  
84c0: 66 74 73 33 61 66 2e 74 65 73 74 20 20 66 74 73  fts3af.test  fts
84d0: 33 61 67 2e 74 65 73 74 20 20 66 74 73 33 61 68  3ag.test  fts3ah
84e0: 2e 74 65 73 74 0a 20 20 66 74 73 33 61 69 2e 74  .test.  fts3ai.t
84f0: 65 73 74 20 20 66 74 73 33 61 6a 2e 74 65 73 74  est  fts3aj.test
8500: 20 20 66 74 73 33 61 6b 2e 74 65 73 74 20 20 66    fts3ak.test  f
8510: 74 73 33 61 6c 2e 74 65 73 74 0a 20 20 66 74 73  ts3al.test.  fts
8520: 33 61 6d 2e 74 65 73 74 20 20 66 74 73 33 61 6e  3am.test  fts3an
8530: 2e 74 65 73 74 20 20 66 74 73 33 61 6f 2e 74 65  .test  fts3ao.te
8540: 73 74 20 20 66 74 73 33 62 2e 74 65 73 74 0a 20  st  fts3b.test. 
8550: 20 66 74 73 33 63 2e 74 65 73 74 20 20 20 66 74   fts3c.test   ft
8560: 73 33 64 2e 74 65 73 74 20 20 20 66 74 73 33 65  s3d.test   fts3e
8570: 2e 74 65 73 74 20 20 20 66 74 73 33 71 75 65 72  .test   fts3quer
8580: 79 2e 74 65 73 74 20 0a 7d 0a 0a 74 65 73 74 5f  y.test .}..test_
8590: 73 75 69 74 65 20 22 72 74 72 65 65 22 20 2d 64  suite "rtree" -d
85a0: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 41  escription {.  A
85b0: 6c 6c 20 52 2d 74 72 65 65 20 72 65 6c 61 74 65  ll R-tree relate
85c0: 64 20 74 65 73 74 73 2e 20 50 72 6f 76 69 64 65  d tests. Provide
85d0: 73 20 63 6f 76 65 72 61 67 65 20 6f 66 20 73 6f  s coverage of so
85e0: 75 72 63 65 20 66 69 6c 65 20 72 74 72 65 65 2e  urce file rtree.
85f0: 63 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 67 6c 6f  c..} -files [glo
8600: 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a  b -nocomplain $:
8610: 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74 2f  :testdir/../ext/
8620: 72 74 72 65 65 2f 2a 2e 74 65 73 74 5d 0a 0a 74  rtree/*.test]..t
8630: 65 73 74 5f 73 75 69 74 65 20 22 73 65 73 73 69  est_suite "sessi
8640: 6f 6e 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  on" -description
8650: 20 7b 0a 20 20 41 6c 6c 20 73 65 73 73 69 6f 6e   {.  All session
8660: 20 6d 6f 64 75 6c 65 20 72 65 6c 61 74 65 64 20   module related 
8670: 74 65 73 74 73 2e 20 0a 7d 20 2d 66 69 6c 65 73  tests. .} -files
8680: 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61   [glob -nocompla
8690: 69 6e 20 24 3a 3a 74 65 73 74 64 69 72 2f 2e 2e  in $::testdir/..
86a0: 2f 65 78 74 2f 73 65 73 73 69 6f 6e 2f 2a 2e 74  /ext/session/*.t
86b0: 65 73 74 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65  est]..test_suite
86c0: 20 22 73 65 73 73 69 6f 6e 5f 65 65 63 22 20 2d   "session_eec" -
86d0: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
86e0: 41 6c 6c 20 73 65 73 73 69 6f 6e 20 6d 6f 64 75  All session modu
86f0: 6c 65 20 72 65 6c 61 74 65 64 20 74 65 73 74 73  le related tests
8700: 20 77 69 74 68 20 73 71 6c 69 74 65 33 5f 65 78   with sqlite3_ex
8710: 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f  tended_result_co
8720: 64 65 73 28 29 20 73 65 74 2e 20 0a 7d 20 2d 66  des() set. .} -f
8730: 69 6c 65 73 20 5b 0a 20 20 67 6c 6f 62 20 2d 6e  iles [.  glob -n
8740: 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a 74 65 73  ocomplain $::tes
8750: 74 64 69 72 2f 2e 2e 2f 65 78 74 2f 73 65 73 73  tdir/../ext/sess
8760: 69 6f 6e 2f 2a 2e 74 65 73 74 0a 5d 20 2d 64 62  ion/*.test.] -db
8770: 63 6f 6e 66 69 67 20 7b 0a 20 20 73 71 6c 69 74  config {.  sqlit
8780: 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75  e3_extended_resu
8790: 6c 74 5f 63 6f 64 65 73 20 24 3a 3a 64 62 68 61  lt_codes $::dbha
87a0: 6e 64 6c 65 20 31 0a 7d 0a 0a 74 65 73 74 5f 73  ndle 1.}..test_s
87b0: 75 69 74 65 20 22 73 65 73 73 69 6f 6e 5f 73 74  uite "session_st
87c0: 72 6d 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  rm" -description
87d0: 20 7b 0a 20 20 41 6c 6c 20 73 65 73 73 69 6f 6e   {.  All session
87e0: 20 6d 6f 64 75 6c 65 20 72 65 6c 61 74 65 64 20   module related 
87f0: 74 65 73 74 73 20 75 73 69 6e 67 20 74 68 65 20  tests using the 
8800: 73 74 72 65 61 6d 69 6e 67 20 41 50 49 73 2e 0a  streaming APIs..
8810: 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 67 6c 6f  } -files [.  glo
8820: 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a  b -nocomplain $:
8830: 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74 2f  :testdir/../ext/
8840: 73 65 73 73 69 6f 6e 2f 2a 2e 74 65 73 74 0a 5d  session/*.test.]
8850: 20 2d 64 62 63 6f 6e 66 69 67 20 7b 0a 20 20 73   -dbconfig {.  s
8860: 65 74 20 3a 3a 73 71 6c 69 74 65 33 73 65 73 73  et ::sqlite3sess
8870: 69 6f 6e 5f 73 74 72 65 61 6d 73 20 31 0a 7d 0a  ion_streams 1.}.
8880: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 72 62 75  .test_suite "rbu
8890: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
88a0: 0a 20 20 52 42 55 20 74 65 73 74 73 2e 0a 7d 20  .  RBU tests..} 
88b0: 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f  -files [.  test_
88c0: 73 65 74 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d  set [glob -nocom
88d0: 70 6c 61 69 6e 20 24 3a 3a 74 65 73 74 64 69 72  plain $::testdir
88e0: 2f 2e 2e 2f 65 78 74 2f 72 62 75 2f 2a 2e 74 65  /../ext/rbu/*.te
88f0: 73 74 5d 20 2d 65 78 63 6c 75 64 65 20 72 62 75  st] -exclude rbu
8900: 2e 74 65 73 74 0a 5d 0a 0a 74 65 73 74 5f 73 75  .test.]..test_su
8910: 69 74 65 20 22 6e 6f 5f 6f 70 74 69 6d 69 7a 61  ite "no_optimiza
8920: 74 69 6f 6e 22 20 2d 64 65 73 63 72 69 70 74 69  tion" -descripti
8930: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 20  on {.  Run test 
8940: 73 63 72 69 70 74 73 20 77 69 74 68 20 6f 70 74  scripts with opt
8950: 69 6d 69 7a 61 74 69 6f 6e 73 20 64 69 73 61 62  imizations disab
8960: 6c 65 64 20 75 73 69 6e 67 20 74 68 65 0a 20 20  led using the.  
8970: 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63 6f 6e  sqlite3_test_con
8980: 74 72 6f 6c 28 53 51 4c 49 54 45 5f 54 45 53 54  trol(SQLITE_TEST
8990: 43 54 52 4c 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  CTRL_OPTIMIZATIO
89a0: 4e 53 29 20 69 6e 74 65 72 66 61 63 65 2e 0a 7d  NS) interface..}
89b0: 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74   -files [.  test
89c0: 5f 73 65 74 20 5c 0a 20 20 20 20 5b 67 6c 6f 62  _set \.    [glob
89d0: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a   -nocomplain $::
89e0: 74 65 73 74 64 69 72 2f 77 69 6e 64 6f 77 2a 2e  testdir/window*.
89f0: 74 65 73 74 5d 20 20 20 20 20 20 20 20 20 20 20  test]           
8a00: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
8a10: 20 20 77 68 65 72 65 2e 74 65 73 74 20 77 68 65    where.test whe
8a20: 72 65 32 2e 74 65 73 74 20 77 68 65 72 65 33 2e  re2.test where3.
8a30: 74 65 73 74 20 77 68 65 72 65 34 2e 74 65 73 74  test where4.test
8a40: 20 77 68 65 72 65 35 2e 74 65 73 74 20 20 20 20   where5.test    
8a50: 20 20 20 5c 0a 20 20 20 20 77 68 65 72 65 36 2e     \.    where6.
8a60: 74 65 73 74 20 77 68 65 72 65 37 2e 74 65 73 74  test where7.test
8a70: 20 77 68 65 72 65 38 2e 74 65 73 74 20 77 68 65   where8.test whe
8a80: 72 65 39 2e 74 65 73 74 20 20 20 20 20 20 20 20  re9.test        
8a90: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20            \.    
8aa0: 77 68 65 72 65 41 2e 74 65 73 74 20 77 68 65 72  whereA.test wher
8ab0: 65 42 2e 74 65 73 74 20 77 68 65 72 65 6c 69 6d  eB.test wherelim
8ac0: 69 74 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  it.test         
8ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ae0: 20 5c 0a 20 20 20 20 73 65 6c 65 63 74 31 2e 74   \.    select1.t
8af0: 65 73 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74  est select2.test
8b00: 20 73 65 6c 65 63 74 33 2e 74 65 73 74 20 73 65   select3.test se
8b10: 6c 65 63 74 34 2e 74 65 73 74 20 73 65 6c 65 63  lect4.test selec
8b20: 74 35 2e 74 65 73 74 20 5c 0a 20 20 20 20 73 65  t5.test \.    se
8b30: 6c 65 63 74 37 2e 74 65 73 74 20 73 65 6c 65 63  lect7.test selec
8b40: 74 38 2e 74 65 73 74 20 73 65 6c 65 63 74 41 2e  t8.test selectA.
8b50: 74 65 73 74 20 73 65 6c 65 63 74 43 2e 74 65 73  test selectC.tes
8b60: 74 20 20 20 20 20 0a 5d 20 2d 64 62 63 6f 6e 66  t     .] -dbconf
8b70: 69 67 20 7b 0a 20 20 6f 70 74 69 6d 69 7a 61 74  ig {.  optimizat
8b80: 69 6f 6e 5f 63 6f 6e 74 72 6f 6c 20 24 3a 3a 64  ion_control $::d
8b90: 62 68 61 6e 64 6c 65 20 61 6c 6c 20 30 0a 7d 0a  bhandle all 0.}.
8ba0: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 70 72 65  .test_suite "pre
8bb0: 70 61 72 65 22 20 2d 64 65 73 63 72 69 70 74 69  pare" -descripti
8bc0: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73  on {.  Run tests
8bd0: 20 77 69 74 68 20 74 68 65 20 64 62 20 63 6f 6e   with the db con
8be0: 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67 20 73 71  nection using sq
8bf0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20  lite3_prepare() 
8c00: 69 6e 73 74 65 61 64 20 6f 66 20 5f 76 32 28 29  instead of _v2()
8c10: 2e 0a 7d 20 2d 64 62 63 6f 6e 66 69 67 20 7b 0a  ..} -dbconfig {.
8c20: 20 20 24 3a 3a 64 62 68 61 6e 64 6c 65 20 76 65    $::dbhandle ve
8c30: 72 73 69 6f 6e 20 2d 75 73 65 2d 6c 65 67 61 63  rsion -use-legac
8c40: 79 2d 70 72 65 70 61 72 65 20 31 0a 20 20 23 24  y-prepare 1.  #$
8c50: 3a 3a 64 62 68 61 6e 64 6c 65 20 63 61 63 68 65  ::dbhandle cache
8c60: 20 73 69 7a 65 20 30 0a 7d 20 2d 66 69 6c 65 73   size 0.} -files
8c70: 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61   [.  test_set $a
8c80: 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78  llquicktests -ex
8c90: 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a  clude *malloc* *
8ca0: 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 5c  ioerr* *fault* \
8cb0: 0a 20 20 20 20 20 20 73 74 6d 74 76 74 61 62 31  .      stmtvtab1
8cc0: 2e 74 65 73 74 20 69 6e 64 65 78 39 2e 74 65 73  .test index9.tes
8cd0: 74 0a 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20  t.]..test_suite 
8ce0: 22 73 6f 72 74 65 72 72 65 66 22 20 2d 70 72 65  "sorterref" -pre
8cf0: 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74  fix "" -descript
8d00: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 68 65 20  ion {.  Run the 
8d10: 22 76 65 72 79 71 75 69 63 6b 22 20 74 65 73 74  "veryquick" test
8d20: 20 73 75 69 74 65 20 77 69 74 68 20 53 51 4c 49   suite with SQLI
8d30: 54 45 5f 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52  TE_CONFIG_SORTER
8d40: 52 45 46 5f 53 49 5a 45 20 73 65 74 0a 20 20 74  REF_SIZE set.  t
8d50: 6f 20 30 20 73 6f 20 74 68 61 74 20 73 6f 72 74  o 0 so that sort
8d60: 65 72 2d 72 65 66 65 72 65 6e 63 65 73 20 61 72  er-references ar
8d70: 65 20 75 73 65 64 20 77 68 65 6e 65 76 65 72 20  e used whenever 
8d80: 70 6f 73 73 69 62 6c 65 2e 0a 7d 20 2d 66 69 6c  possible..} -fil
8d90: 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20  es [.  test_set 
8da0: 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  $allquicktests -
8db0: 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a  exclude *malloc*
8dc0: 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a   *ioerr* *fault*
8dd0: 20 2a 62 69 67 66 69 6c 65 2a 20 2a 5f 65 72 72   *bigfile* *_err
8de0: 2a 20 5c 0a 20 20 20 20 20 20 2a 66 74 73 35 63  * \.      *fts5c
8df0: 6f 72 72 75 70 74 2a 20 2a 66 74 73 35 62 69 67  orrupt* *fts5big
8e00: 2a 20 2a 66 74 73 35 61 6a 2a 0a 5d 20 2d 69 6e  * *fts5aj*.] -in
8e10: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74  itialize {.  cat
8e20: 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20  ch {db close}.  
8e30: 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
8e40: 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  .  sqlite3_confi
8e50: 67 5f 73 6f 72 74 65 72 72 65 66 20 30 0a 20 20  g_sorterref 0.  
8e60: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
8e70: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
8e80: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
8e90: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
8ea0: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
8eb0: 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  .  sqlite3_shutd
8ec0: 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f  own.  sqlite3_co
8ed0: 6e 66 69 67 5f 73 6f 72 74 65 72 72 65 66 20 2d  nfig_sorterref -
8ee0: 31 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  1.  sqlite3_init
8ef0: 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73  ialize.  autoins
8f00: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
8f10: 6f 6e 73 0a 7d 0a 0a 23 20 45 6e 64 20 6f 66 20  ons.}..# End of 
8f20: 74 65 73 74 73 0a 23 23 23 23 23 23 23 23 23 23  tests.##########
8f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8f70: 23 23 23 0a 0a 23 20 72 75 6e 5f 74 65 73 74 73  ###..# run_tests
8f80: 20 4e 41 4d 45 20 4f 50 54 49 4f 4e 53 0a 23 0a   NAME OPTIONS.#.
8f90: 23 20 77 68 65 72 65 20 61 76 61 69 6c 61 62 6c  # where availabl
8fa0: 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 3a 20 20  e options are:  
8fb0: 0a 23 0a 23 20 20 20 20 20 20 20 2d 64 65 73 63  .#.#       -desc
8fc0: 72 69 70 74 69 6f 6e 20 54 49 54 4c 45 0a 23 20  ription TITLE.# 
8fd0: 20 20 20 20 20 20 2d 69 6e 69 74 69 61 6c 69 7a        -initializ
8fe0: 65 20 20 53 43 52 49 50 54 0a 23 20 20 20 20 20  e  SCRIPT.#     
8ff0: 20 20 2d 73 68 75 74 64 6f 77 6e 20 20 20 20 53    -shutdown    S
9000: 43 52 49 50 54 0a 23 20 20 20 20 20 20 20 2d 66  CRIPT.#       -f
9010: 69 6c 65 73 20 20 20 20 20 20 20 4c 49 53 54 2d  iles       LIST-
9020: 4f 46 2d 46 49 4c 45 53 0a 23 20 20 20 20 20 20  OF-FILES.#      
9030: 20 2d 70 72 65 66 69 78 20 20 20 20 20 20 4e 41   -prefix      NA
9040: 4d 45 0a 23 20 20 20 20 20 20 20 2d 64 62 63 6f  ME.#       -dbco
9050: 6e 66 69 67 20 20 20 20 53 43 52 49 50 54 0a 23  nfig    SCRIPT.#
9060: 0a 70 72 6f 63 20 72 75 6e 5f 74 65 73 74 73 20  .proc run_tests 
9070: 7b 6e 61 6d 65 20 61 72 67 73 7d 20 7b 0a 20 20  {name args} {.  
9080: 73 65 74 20 6f 70 74 69 6f 6e 73 28 2d 69 6e 69  set options(-ini
9090: 74 69 61 6c 69 7a 65 29 20 22 22 0a 20 20 73 65  tialize) "".  se
90a0: 74 20 6f 70 74 69 6f 6e 73 28 2d 73 68 75 74 64  t options(-shutd
90b0: 6f 77 6e 29 20 22 22 0a 20 20 73 65 74 20 6f 70  own) "".  set op
90c0: 74 69 6f 6e 73 28 2d 70 72 65 66 69 78 29 20 22  tions(-prefix) "
90d0: 22 0a 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 28  ".  set options(
90e0: 2d 64 62 63 6f 6e 66 69 67 29 20 22 22 0a 20 20  -dbconfig) "".  
90f0: 73 65 74 20 6f 70 74 69 6f 6e 73 28 2d 70 72 65  set options(-pre
9100: 73 71 6c 29 20 22 22 0a 0a 20 20 61 72 72 61 79  sql) ""..  array
9110: 20 73 65 74 20 6f 70 74 69 6f 6e 73 20 24 61 72   set options $ar
9120: 67 73 0a 0a 20 20 73 65 74 20 3a 3a 47 28 70 65  gs..  set ::G(pe
9130: 72 6d 3a 6e 61 6d 65 29 20 20 20 20 20 20 20 20  rm:name)        
9140: 20 24 6e 61 6d 65 0a 20 20 73 65 74 20 3a 3a 47   $name.  set ::G
9150: 28 70 65 72 6d 3a 70 72 65 66 69 78 29 20 20 20  (perm:prefix)   
9160: 20 20 20 20 24 6f 70 74 69 6f 6e 73 28 2d 70 72      $options(-pr
9170: 65 66 69 78 29 0a 20 20 73 65 74 20 3a 3a 47 28  efix).  set ::G(
9180: 69 73 71 75 69 63 6b 29 20 20 20 20 20 20 20 20  isquick)        
9190: 20 20 20 31 0a 20 20 73 65 74 20 3a 3a 47 28 70     1.  set ::G(p
91a0: 65 72 6d 3a 64 62 63 6f 6e 66 69 67 29 20 20 20  erm:dbconfig)   
91b0: 20 20 24 6f 70 74 69 6f 6e 73 28 2d 64 62 63 6f    $options(-dbco
91c0: 6e 66 69 67 29 0a 20 20 73 65 74 20 3a 3a 47 28  nfig).  set ::G(
91d0: 70 65 72 6d 3a 70 72 65 73 71 6c 29 20 20 20 20  perm:presql)    
91e0: 20 20 20 24 6f 70 74 69 6f 6e 73 28 2d 70 72 65     $options(-pre
91f0: 73 71 6c 29 0a 0a 20 20 66 6f 72 65 61 63 68 20  sql)..  foreach 
9200: 66 69 6c 65 20 5b 6c 73 6f 72 74 20 24 6f 70 74  file [lsort $opt
9210: 69 6f 6e 73 28 2d 66 69 6c 65 73 29 5d 20 7b 0a  ions(-files)] {.
9220: 20 20 20 20 75 70 6c 65 76 65 6c 20 24 6f 70 74      uplevel $opt
9230: 69 6f 6e 73 28 2d 69 6e 69 74 69 61 6c 69 7a 65  ions(-initialize
9240: 29 0a 20 20 20 20 69 66 20 7b 5b 66 69 6c 65 20  ).    if {[file 
9250: 74 61 69 6c 20 24 66 69 6c 65 5d 20 3d 3d 20 24  tail $file] == $
9260: 66 69 6c 65 7d 20 7b 20 73 65 74 20 66 69 6c 65  file} { set file
9270: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 3a 3a 74   [file join $::t
9280: 65 73 74 64 69 72 20 24 66 69 6c 65 5d 20 7d 0a  estdir $file] }.
9290: 20 20 20 20 73 6c 61 76 65 5f 74 65 73 74 5f 66      slave_test_f
92a0: 69 6c 65 20 24 66 69 6c 65 0a 20 20 20 20 75 70  ile $file.    up
92b0: 6c 65 76 65 6c 20 24 6f 70 74 69 6f 6e 73 28 2d  level $options(-
92c0: 73 68 75 74 64 6f 77 6e 29 0a 0a 20 20 20 20 75  shutdown)..    u
92d0: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
92e0: 20 3a 3a 47 28 70 65 72 6d 3a 73 71 6c 69 74 65   ::G(perm:sqlite
92f0: 33 5f 61 72 67 73 29 0a 20 20 7d 0a 0a 20 20 75  3_args).  }..  u
9300: 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 6e 61  nset ::G(perm:na
9310: 6d 65 29 0a 20 20 75 6e 73 65 74 20 3a 3a 47 28  me).  unset ::G(
9320: 70 65 72 6d 3a 70 72 65 66 69 78 29 0a 20 20 75  perm:prefix).  u
9330: 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 64 62  nset ::G(perm:db
9340: 63 6f 6e 66 69 67 29 0a 20 20 75 6e 73 65 74 20  config).  unset 
9350: 3a 3a 47 28 70 65 72 6d 3a 70 72 65 73 71 6c 29  ::G(perm:presql)
9360: 0a 7d 0a 0a 70 72 6f 63 20 72 75 6e 5f 74 65 73  .}..proc run_tes
9370: 74 5f 73 75 69 74 65 20 7b 6e 61 6d 65 7d 20 7b  t_suite {name} {
9380: 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69  .  if {[info exi
9390: 73 74 73 20 3a 3a 74 65 73 74 73 70 65 63 28 24  sts ::testspec($
93a0: 6e 61 6d 65 29 5d 3d 3d 30 7d 20 7b 0a 20 20 20  name)]==0} {.   
93b0: 20 65 72 72 6f 72 20 22 4e 6f 20 73 75 63 68 20   error "No such 
93c0: 74 65 73 74 20 73 75 69 74 65 3a 20 24 6e 61 6d  test suite: $nam
93d0: 65 22 0a 20 20 7d 0a 20 20 75 70 6c 65 76 65 6c  e".  }.  uplevel
93e0: 20 72 75 6e 5f 74 65 73 74 73 20 24 6e 61 6d 65   run_tests $name
93f0: 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24 6e 61   $::testspec($na
9400: 6d 65 29 0a 7d 0a 0a 70 72 6f 63 20 68 65 6c 70  me).}..proc help
9410: 20 7b 7d 20 7b 0a 20 20 70 75 74 73 20 22 55 73   {} {.  puts "Us
9420: 61 67 65 3a 20 24 3a 3a 61 72 67 76 30 20 54 45  age: $::argv0 TE
9430: 53 54 53 55 49 54 45 20 3f 54 45 53 54 46 49 4c  STSUITE ?TESTFIL
9440: 45 3f 22 0a 20 20 70 75 74 73 20 22 22 0a 20 20  E?".  puts "".  
9450: 70 75 74 73 20 22 41 76 61 69 6c 61 62 6c 65 20  puts "Available 
9460: 74 65 73 74 2d 73 75 69 74 65 73 20 61 72 65 3a  test-suites are:
9470: 22 0a 0a 20 20 73 65 74 20 69 50 6f 73 20 30 0a  "..  set iPos 0.
9480: 20 20 66 6f 72 65 61 63 68 20 6b 20 24 3a 3a 74    foreach k $::t
9490: 65 73 74 73 75 69 74 65 6c 69 73 74 20 7b 0a 20  estsuitelist {. 
94a0: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69     if {[info exi
94b0: 73 74 73 20 3a 3a 74 65 73 74 73 70 65 63 28 24  sts ::testspec($
94c0: 6b 29 5d 7d 20 7b 0a 20 20 20 20 20 20 73 77 69  k)]} {.      swi
94d0: 74 63 68 20 24 69 50 6f 73 20 7b 0a 20 20 20 20  tch $iPos {.    
94e0: 20 20 20 20 30 20 7b 0a 20 20 20 20 20 20 20 20      0 {.        
94f0: 20 20 70 75 74 73 20 22 22 0a 20 20 20 20 20 20    puts "".      
9500: 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c      puts -nonewl
9510: 69 6e 65 20 22 20 20 5b 66 6f 72 6d 61 74 20 25  ine "  [format %
9520: 2d 33 30 73 20 24 6b 5d 22 0a 20 20 20 20 20 20  -30s $k]".      
9530: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 31 20 7b    }..        1 {
9540: 0a 20 20 20 20 20 20 20 20 20 20 70 75 74 73 20  .          puts 
9550: 2d 6e 6f 6e 65 77 6c 69 6e 65 20 5b 66 6f 72 6d  -nonewline [form
9560: 61 74 20 25 2d 33 30 73 20 24 6b 5d 0a 20 20 20  at %-30s $k].   
9570: 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20       }..        
9580: 32 20 7b 0a 20 20 20 20 20 20 20 20 20 20 70 75  2 {.          pu
9590: 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 6b  ts -nonewline $k
95a0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
95b0: 20 7d 0a 0a 20 20 20 20 20 20 73 65 74 20 69 50   }..      set iP
95c0: 6f 73 20 5b 65 78 70 72 20 28 28 24 69 50 6f 73  os [expr (($iPos
95d0: 2b 31 29 20 25 20 33 29 5d 0a 20 20 20 20 7d 0a  +1) % 3)].    }.
95e0: 20 20 7d 0a 20 20 70 75 74 73 20 22 22 0a 20 20    }.  puts "".  
95f0: 65 78 69 74 20 2d 31 0a 7d 0a 0a 69 66 20 7b 5b  exit -1.}..if {[
9600: 66 69 6c 65 20 74 61 69 6c 20 24 61 72 67 76 30  file tail $argv0
9610: 5d 20 3d 3d 20 22 70 65 72 6d 75 74 61 74 69 6f  ] == "permutatio
9620: 6e 73 2e 74 65 73 74 22 7d 20 7b 0a 20 20 70 72  ns.test"} {.  pr
9630: 6f 63 20 6d 61 69 6e 20 7b 61 72 67 76 7d 20 7b  oc main {argv} {
9640: 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74  .    if {[llengt
9650: 68 20 24 61 72 67 76 5d 3d 3d 30 7d 20 7b 0a 20  h $argv]==0} {. 
9660: 20 20 20 20 20 68 65 6c 70 0a 20 20 20 20 7d 20       help.    } 
9670: 65 6c 73 65 20 7b 0a 0a 20 20 20 20 20 20 23 20  else {..      # 
9680: 53 65 65 20 69 66 20 74 68 65 20 66 69 72 73 74  See if the first
9690: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 6e   argument is a n
96a0: 61 6d 65 64 20 74 65 73 74 2d 73 75 69 74 65 2e  amed test-suite.
96b0: 0a 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 73  .      #.      s
96c0: 65 74 20 73 75 69 74 65 20 5b 66 69 6c 65 20 74  et suite [file t
96d0: 61 69 6c 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  ail [lindex $arg
96e0: 76 20 30 5d 5d 0a 20 20 20 20 20 20 69 66 20 7b  v 0]].      if {
96f0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 74  [info exists ::t
9700: 65 73 74 73 70 65 63 28 24 73 75 69 74 65 29 5d  estspec($suite)]
9710: 7d 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 20  } {.        set 
9720: 53 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24 73  S $::testspec($s
9730: 75 69 74 65 29 0a 20 20 20 20 20 20 20 20 73 65  uite).        se
9740: 74 20 69 20 31 0a 20 20 20 20 20 20 7d 20 65 6c  t i 1.      } el
9750: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74  se {.        set
9760: 20 53 20 5b 6c 69 73 74 5d 0a 20 20 20 20 20 20   S [list].      
9770: 20 20 73 65 74 20 69 20 30 0a 20 20 20 20 20 20    set i 0.      
9780: 7d 0a 0a 20 20 20 20 20 20 73 65 74 20 65 78 74  }..      set ext
9790: 72 61 20 22 22 0a 20 20 20 20 20 20 69 66 20 7b  ra "".      if {
97a0: 24 69 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 24 61  $i < [llength $a
97b0: 72 67 76 5d 20 26 26 20 5b 73 74 72 69 6e 67 20  rgv] && [string 
97c0: 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24 61  range [lindex $a
97d0: 72 67 76 20 24 69 5d 20 30 20 30 5d 21 3d 22 2d  rgv $i] 0 0]!="-
97e0: 22 20 7d 20 7b 0a 20 20 20 20 20 20 20 20 73 65  " } {.        se
97f0: 74 20 66 69 6c 65 73 20 5b 6c 69 73 74 5d 0a 20  t files [list]. 
9800: 20 20 20 20 20 20 20 66 6f 72 20 7b 7d 20 7b 24         for {} {$
9810: 69 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 24 61 72  i < [llength $ar
9820: 67 76 5d 7d 20 7b 69 6e 63 72 20 69 7d 20 7b 0a  gv]} {incr i} {.
9830: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 70 61            set pa
9840: 74 74 65 72 6e 20 5b 73 74 72 69 6e 67 20 6d 61  ttern [string ma
9850: 70 20 7b 25 20 2a 7d 20 5b 6c 69 6e 64 65 78 20  p {% *} [lindex 
9860: 24 61 72 67 76 20 24 69 5d 5d 0a 20 20 20 20 20  $argv $i]].     
9870: 20 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67       if {[string
9880: 20 72 61 6e 67 65 20 24 70 61 74 74 65 72 6e 20   range $pattern 
9890: 30 20 30 5d 3d 3d 22 2d 22 7d 20 62 72 65 61 6b  0 0]=="-"} break
98a0: 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
98b0: 63 68 20 66 20 24 3a 3a 61 6c 6c 74 65 73 74 73  ch f $::alltests
98c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73   {.            s
98d0: 65 74 20 74 61 69 6c 20 5b 66 69 6c 65 20 74 61  et tail [file ta
98e0: 69 6c 20 24 66 5d 0a 20 20 20 20 20 20 20 20 20  il $f].         
98f0: 20 20 20 69 66 20 7b 5b 6c 73 65 61 72 63 68 20     if {[lsearch 
9900: 24 66 69 6c 65 73 20 24 66 5d 3c 30 20 26 26 20  $files $f]<0 && 
9910: 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 24 70  [string match $p
9920: 61 74 74 65 72 6e 20 24 74 61 69 6c 5d 7d 20 7b  attern $tail]} {
9930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c  .              l
9940: 61 70 70 65 6e 64 20 66 69 6c 65 73 20 24 66 0a  append files $f.
9950: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
9960: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
9970: 20 20 7d 0a 20 20 20 20 20 20 20 20 73 65 74 20    }.        set 
9980: 65 78 74 72 61 20 5b 6c 69 73 74 20 2d 66 69 6c  extra [list -fil
9990: 65 73 20 24 66 69 6c 65 73 5d 0a 20 20 20 20 20  es $files].     
99a0: 20 7d 0a 0a 20 20 20 20 20 20 65 76 61 6c 20 72   }..      eval r
99b0: 75 6e 5f 74 65 73 74 73 20 24 73 75 69 74 65 20  un_tests $suite 
99c0: 24 53 20 24 65 78 74 72 61 0a 20 20 20 20 7d 0a  $S $extra.    }.
99d0: 20 20 7d 0a 20 20 6d 61 69 6e 20 24 61 72 67 76    }.  main $argv
99e0: 0a 20 20 66 69 6e 69 73 68 5f 74 65 73 74 0a 7d  .  finish_test.}
99f0: 0a                                               .