/ Hex Artifact Content
Login

Artifact cf0b4e498db1d0143c19641d4420df7cc27fab2c95ed0abd2c7c5753beab25b8:


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 20  s {.  wal.test  
4140: 20 20 20 20 20 77 61 6c 32 2e 74 65 73 74 20 20       wal2.test  
4150: 20 20 20 77 61 6c 33 2e 74 65 73 74 20 20 20 20     wal3.test    
4160: 20 20 20 77 61 6c 6d 6f 64 65 2e 74 65 73 74 20     walmode.test 
4170: 20 20 20 0a 20 20 77 61 6c 62 61 6b 2e 74 65 73     .  walbak.tes
4180: 74 20 20 20 20 77 61 6c 68 6f 6f 6b 2e 74 65 73  t    walhook.tes
4190: 74 20 20 77 61 6c 63 72 61 73 68 32 2e 74 65 73  t  walcrash2.tes
41a0: 74 20 20 77 61 6c 63 6b 73 75 6d 2e 74 65 73 74  t  walcksum.test
41b0: 0a 20 20 77 61 6c 66 61 75 6c 74 2e 74 65 73 74  .  walfault.test
41c0: 20 20 77 61 6c 62 69 67 2e 74 65 73 74 20 20 20    walbig.test   
41d0: 77 61 6c 6e 6f 73 68 6d 2e 74 65 73 74 0a 20 20  walnoshm.test.  
41e0: 77 61 6c 35 2e 74 65 73 74 0a 7d 20 0a 0a 74 65  wal5.test.} ..te
41f0: 73 74 5f 73 75 69 74 65 20 22 63 6f 76 65 72 61  st_suite "covera
4200: 67 65 2d 70 61 67 65 72 22 20 2d 64 65 73 63 72  ge-pager" -descr
4210: 69 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65 72  iption {.  Cover
4220: 61 67 65 20 74 65 73 74 73 20 66 6f 72 20 66 69  age tests for fi
4230: 6c 65 20 70 61 67 65 72 2e 63 2e 0a 7d 20 2d 66  le pager.c..} -f
4240: 69 6c 65 73 20 7b 0a 20 20 70 61 67 65 72 31 2e  iles {.  pager1.
4250: 74 65 73 74 20 20 20 20 70 61 67 65 72 32 2e 74  test    pager2.t
4260: 65 73 74 20 20 70 61 67 65 72 66 61 75 6c 74 2e  est  pagerfault.
4270: 74 65 73 74 20 20 70 61 67 65 72 66 61 75 6c 74  test  pagerfault
4280: 32 2e 74 65 73 74 0a 20 20 77 61 6c 66 61 75 6c  2.test.  walfaul
4290: 74 2e 74 65 73 74 20 20 77 61 6c 62 61 6b 2e 74  t.test  walbak.t
42a0: 65 73 74 20 20 6a 6f 75 72 6e 61 6c 32 2e 74 65  est  journal2.te
42b0: 73 74 20 20 20 20 74 6b 74 2d 39 64 36 38 63 38  st    tkt-9d68c8
42c0: 38 33 2e 74 65 73 74 0a 7d 20 0a 0a 74 65 73 74  83.test.} ..test
42d0: 5f 73 75 69 74 65 20 22 63 6f 76 65 72 61 67 65  _suite "coverage
42e0: 2d 61 6e 61 6c 79 7a 65 22 20 2d 64 65 73 63 72  -analyze" -descr
42f0: 69 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65 72  iption {.  Cover
4300: 61 67 65 20 74 65 73 74 73 20 66 6f 72 20 66 69  age tests for fi
4310: 6c 65 20 61 6e 61 6c 79 7a 65 2e 63 2e 0a 7d 20  le analyze.c..} 
4320: 2d 66 69 6c 65 73 20 7b 0a 20 20 61 6e 61 6c 79  -files {.  analy
4330: 7a 65 33 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  ze3.test analyze
4340: 34 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 35 2e  4.test analyze5.
4350: 74 65 73 74 20 61 6e 61 6c 79 7a 65 36 2e 74 65  test analyze6.te
4360: 73 74 0a 20 20 61 6e 61 6c 79 7a 65 37 2e 74 65  st.  analyze7.te
4370: 73 74 20 61 6e 61 6c 79 7a 65 38 2e 74 65 73 74  st analyze8.test
4380: 20 61 6e 61 6c 79 7a 65 39 2e 74 65 73 74 20 61   analyze9.test a
4390: 6e 61 6c 79 7a 65 41 2e 74 65 73 74 0a 20 20 61  nalyzeA.test.  a
43a0: 6e 61 6c 79 7a 65 2e 74 65 73 74 20 61 6e 61 6c  nalyze.test anal
43b0: 79 7a 65 42 2e 74 65 73 74 20 6d 61 6c 6c 6f 63  yzeB.test malloc
43c0: 41 2e 74 65 73 74 0a 7d 20 0a 0a 74 65 73 74 5f  A.test.} ..test_
43d0: 73 75 69 74 65 20 22 63 6f 76 65 72 61 67 65 2d  suite "coverage-
43e0: 73 6f 72 74 65 72 22 20 2d 64 65 73 63 72 69 70  sorter" -descrip
43f0: 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65 72 61 67  tion {.  Coverag
4400: 65 20 74 65 73 74 73 20 66 6f 72 20 66 69 6c 65  e tests for file
4410: 20 76 64 62 65 73 6f 72 74 2e 63 2e 0a 7d 20 2d   vdbesort.c..} -
4420: 66 69 6c 65 73 20 7b 0a 20 20 73 6f 72 74 2e 74  files {.  sort.t
4430: 65 73 74 20 73 6f 72 74 66 61 75 6c 74 2e 74 65  est sortfault.te
4440: 73 74 0a 7d 20 0a 0a 0a 6c 61 70 70 65 6e 64 20  st.} ...lappend 
4450: 3a 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74 20  ::testsuitelist 
4460: 78 78 78 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  xxx.#-----------
4470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
44a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23  --------------.#
44b0: 20 44 65 66 69 6e 65 20 74 68 65 20 70 65 72 6d   Define the perm
44c0: 75 74 61 74 69 6f 6e 20 74 65 73 74 20 73 75 69  utation test sui
44d0: 74 65 73 3a 0a 23 0a 0a 23 20 52 75 6e 20 73 6f  tes:.#..# Run so
44e0: 6d 65 20 74 65 73 74 73 20 75 73 69 6e 67 20 70  me tests using p
44f0: 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67  re-allocated pag
4500: 65 20 62 6c 6f 63 6b 73 2e 0a 23 0a 23 20 6d 6d  e blocks..#.# mm
4510: 61 70 31 2e 74 65 73 74 20 69 73 20 65 78 63 6c  ap1.test is excl
4520: 75 64 65 64 20 62 65 63 61 75 73 65 20 61 20 67  uded because a g
4530: 6f 6f 64 20 6e 75 6d 62 65 72 20 6f 66 20 69 74  ood number of it
4540: 73 20 74 65 73 74 73 20 64 65 70 65 6e 64 20 6f  s tests depend o
4550: 6e 20 0a 23 20 74 68 65 20 70 61 67 65 2d 63 61  n .# the page-ca
4560: 63 68 65 20 62 65 69 6e 67 20 6c 61 72 67 65 72  che being larger
4570: 20 74 68 61 6e 20 74 68 65 20 64 61 74 61 62 61   than the databa
4580: 73 65 2e 20 42 75 74 20 74 68 69 73 20 70 65 72  se. But this per
4590: 6d 75 74 61 74 69 6f 6e 0a 23 20 63 61 75 73 65  mutation.# cause
45a0: 73 20 74 68 65 20 65 66 66 65 63 74 69 76 65 20  s the effective 
45b0: 6c 69 6d 69 74 20 6f 6e 20 74 68 65 20 70 61 67  limit on the pag
45c0: 65 2d 63 61 63 68 65 20 74 6f 20 62 65 20 6a 75  e-cache to be ju
45d0: 73 74 20 32 34 20 70 61 67 65 73 2e 0a 23 0a 74  st 24 pages..#.t
45e0: 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73 75  est_suite "memsu
45f0: 62 73 79 73 31 22 20 2d 64 65 73 63 72 69 70 74  bsys1" -descript
4600: 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 75 73  ion {.  Tests us
4610: 69 6e 67 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  ing pre-allocate
4620: 64 20 70 61 67 65 20 62 6c 6f 63 6b 73 0a 7d 20  d page blocks.} 
4630: 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f  -files [.  test_
4640: 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74  set $::allquickt
4650: 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 69 6f  ests -exclude io
4660: 65 72 72 35 2e 74 65 73 74 20 6d 61 6c 6c 6f 63  err5.test malloc
4670: 35 2e 74 65 73 74 20 6d 6d 61 70 31 2e 74 65 73  5.test mmap1.tes
4680: 74 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20  t.] -initialize 
4690: 7b 0a 20 20 74 65 73 74 5f 73 65 74 5f 63 6f 6e  {.  test_set_con
46a0: 66 69 67 5f 70 61 67 65 63 61 63 68 65 20 34 30  fig_pagecache 40
46b0: 39 36 20 32 34 0a 20 20 63 61 74 63 68 20 7b 64  96 24.  catch {d
46c0: 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74  b close}.  sqlit
46d0: 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71  e3_shutdown.  sq
46e0: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
46f0: 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74  .  autoinstall_t
4700: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20  est_functions.} 
4710: 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 74 65  -shutdown {.  te
4720: 73 74 5f 72 65 73 74 6f 72 65 5f 63 6f 6e 66 69  st_restore_confi
4730: 67 5f 70 61 67 65 63 61 63 68 65 0a 20 20 63 61  g_pagecache.  ca
4740: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
4750: 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
4760: 6e 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  n.  sqlite3_init
4770: 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73  ialize.  autoins
4780: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
4790: 6f 6e 73 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d  ons.}..# Run som
47a0: 65 20 74 65 73 74 73 20 75 73 69 6e 67 20 70 72  e tests using pr
47b0: 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67 65  e-allocated page
47c0: 20 62 6c 6f 63 6b 73 2e 20 54 68 69 73 20 74 69   blocks. This ti
47d0: 6d 65 0a 23 20 74 68 65 20 61 6c 6c 6f 63 61 74  me.# the allocat
47e0: 69 6f 6e 73 20 61 72 65 20 74 6f 6f 20 73 6d 61  ions are too sma
47f0: 6c 6c 20 74 6f 20 75 73 65 20 69 6e 20 6d 6f 73  ll to use in mos
4800: 74 20 63 61 73 65 73 2e 0a 23 0a 23 20 42 6f 74  t cases..#.# Bot
4810: 68 20 69 6f 65 72 72 35 2e 74 65 73 74 20 61 6e  h ioerr5.test an
4820: 64 20 6d 61 6c 6c 6f 63 35 2e 74 65 73 74 20 61  d malloc5.test a
4830: 72 65 20 65 78 63 6c 75 64 65 64 20 62 65 63 61  re excluded beca
4840: 75 73 65 20 74 68 65 79 20 74 65 73 74 20 74 68  use they test th
4850: 65 0a 23 20 73 71 6c 69 74 65 33 5f 73 6f 66 74  e.# sqlite3_soft
4860: 5f 68 65 61 70 5f 6c 69 6d 69 74 28 29 20 61 6e  _heap_limit() an
4870: 64 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73  d sqlite3_releas
4880: 65 5f 6d 65 6d 6f 72 79 28 29 20 66 75 6e 63 74  e_memory() funct
4890: 69 6f 6e 61 6c 69 74 79 2e 0a 23 20 54 68 69 73  ionality..# This
48a0: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 69   functionality i
48b0: 73 20 64 69 73 61 62 6c 65 64 20 69 66 20 61 20  s disabled if a 
48c0: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61  pre-allocated pa
48d0: 67 65 20 62 6c 6f 63 6b 20 69 73 20 70 72 6f 76  ge block is prov
48e0: 69 64 65 64 2e 0a 23 0a 74 65 73 74 5f 73 75 69  ided..#.test_sui
48f0: 74 65 20 22 6d 65 6d 73 75 62 73 79 73 32 22 20  te "memsubsys2" 
4900: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
4910: 20 54 65 73 74 73 20 75 73 69 6e 67 20 73 6d 61   Tests using sma
4920: 6c 6c 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64  ll pre-allocated
4930: 20 70 61 67 65 20 62 6c 6f 63 6b 73 0a 7d 20 2d   page blocks.} -
4940: 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73  files [.  test_s
4950: 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65  et $::allquickte
4960: 73 74 73 20 2d 65 78 63 6c 75 64 65 20 69 6f 65  sts -exclude ioe
4970: 72 72 35 2e 74 65 73 74 20 6d 61 6c 6c 6f 63 35  rr5.test malloc5
4980: 2e 74 65 73 74 0a 5d 20 2d 69 6e 69 74 69 61 6c  .test.] -initial
4990: 69 7a 65 20 7b 0a 20 20 74 65 73 74 5f 73 65 74  ize {.  test_set
49a0: 5f 63 6f 6e 66 69 67 5f 70 61 67 65 63 61 63 68  _config_pagecach
49b0: 65 20 35 31 32 20 35 0a 20 20 63 61 74 63 68 20  e 512 5.  catch 
49c0: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
49d0: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
49e0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
49f0: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
4a00: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
4a10: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
4a20: 74 65 73 74 5f 72 65 73 74 6f 72 65 5f 63 6f 6e  test_restore_con
4a30: 66 69 67 5f 70 61 67 65 63 61 63 68 65 0a 20 20  fig_pagecache.  
4a40: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
4a50: 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  .  sqlite3_shutd
4a60: 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e  own.  sqlite3_in
4a70: 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69  itialize.  autoi
4a80: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
4a90: 74 69 6f 6e 73 0a 7d 0a 0a 23 20 52 75 6e 20 61  tions.}..# Run a
4aa0: 6c 6c 20 74 65 73 74 73 20 77 69 74 68 20 74 68  ll tests with th
4ab0: 65 20 6c 6f 6f 6b 61 73 69 64 65 20 61 6c 6c 6f  e lookaside allo
4ac0: 63 61 74 6f 72 20 64 69 73 61 62 6c 65 64 2e 0a  cator disabled..
4ad0: 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f  #.test_suite "no
4ae0: 6c 6f 6f 6b 61 73 69 64 65 22 20 2d 64 65 73 63  lookaside" -desc
4af0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 4f 4f 4d 20  ription {.  OOM 
4b00: 74 65 73 74 73 20 77 69 74 68 20 6c 6f 6f 6b 61  tests with looka
4b10: 73 69 64 65 20 64 69 73 61 62 6c 65 64 0a 7d 20  side disabled.} 
4b20: 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20  -initialize {.  
4b30: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
4b40: 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  .  sqlite3_shutd
4b50: 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f  own.  sqlite3_co
4b60: 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30  nfig_lookaside 0
4b70: 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69   0.  sqlite3_ini
4b80: 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e  tialize.  autoin
4b90: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
4ba0: 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  ions.} -shutdown
4bb0: 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   {.  catch {db c
4bc0: 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f  lose}.  sqlite3_
4bd0: 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74  shutdown.  sqlit
4be0: 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73  e3_config_lookas
4bf0: 69 64 65 20 31 30 30 20 35 30 30 0a 20 20 73 71  ide 100 500.  sq
4c00: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
4c10: 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74  .  autoinstall_t
4c20: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20  est_functions.} 
4c30: 2d 66 69 6c 65 73 20 24 3a 3a 61 6c 6c 71 75 69  -files $::allqui
4c40: 63 6b 74 65 73 74 73 0a 0a 23 20 52 75 6e 20 73  cktests..# Run s
4c50: 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 53 51 4c  ome tests in SQL
4c60: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c  ITE_CONFIG_SINGL
4c70: 45 54 48 52 45 41 44 20 6d 6f 64 65 2e 0a 23 0a  ETHREAD mode..#.
4c80: 74 65 73 74 5f 73 75 69 74 65 20 22 73 69 6e 67  test_suite "sing
4c90: 6c 65 74 68 72 65 61 64 22 20 2d 64 65 73 63 72  lethread" -descr
4ca0: 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73  iption {.  Tests
4cb0: 20 72 75 6e 20 69 6e 20 53 51 4c 49 54 45 5f 43   run in SQLITE_C
4cc0: 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45  ONFIG_SINGLETHRE
4cd0: 41 44 20 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74 69  AD mode.} -initi
4ce0: 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20  alize {.  catch 
4cf0: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
4d00: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
4d10: 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 63  catch {sqlite3_c
4d20: 6f 6e 66 69 67 20 73 69 6e 67 6c 65 74 68 72 65  onfig singlethre
4d30: 61 64 7d 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e  ad}.  sqlite3_in
4d40: 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69  itialize.  autoi
4d50: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
4d60: 74 69 6f 6e 73 0a 7d 20 2d 66 69 6c 65 73 20 7b  tions.} -files {
4d70: 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 20  .  delete.test  
4d80: 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20 20 69   delete2.test  i
4d90: 6e 73 65 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c  nsert.test  roll
4da0: 62 61 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63  back.test  selec
4db0: 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74  t1.test.  select
4dc0: 32 2e 74 65 73 74 20 20 74 72 61 6e 73 2e 74 65  2.test  trans.te
4dd0: 73 74 20 20 20 20 75 70 64 61 74 65 2e 74 65 73  st    update.tes
4de0: 74 20 20 76 61 63 75 75 6d 2e 74 65 73 74 20 20  t  vacuum.test  
4df0: 20 20 74 79 70 65 73 2e 74 65 73 74 0a 20 20 74    types.test.  t
4e00: 79 70 65 73 32 2e 74 65 73 74 20 20 20 74 79 70  ypes2.test   typ
4e10: 65 73 33 2e 74 65 73 74 0a 7d 20 2d 73 68 75 74  es3.test.} -shut
4e20: 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68 20 7b  down {.  catch {
4e30: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69  db close}.  sqli
4e40: 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63  te3_shutdown.  c
4e50: 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f  atch {sqlite3_co
4e60: 6e 66 69 67 20 73 65 72 69 61 6c 69 7a 65 64 7d  nfig serialized}
4e70: 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  .  sqlite3_initi
4e80: 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74  alize.  autoinst
4e90: 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f  all_test_functio
4ea0: 6e 73 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65  ns.}..test_suite
4eb0: 20 22 6e 6f 6d 75 74 65 78 22 20 2d 64 65 73 63   "nomutex" -desc
4ec0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74  ription {.  Test
4ed0: 73 20 72 75 6e 20 77 69 74 68 20 74 68 65 20 53  s run with the S
4ee0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 55 4c 54 49  QLITE_OPEN_MULTI
4ef0: 54 48 52 45 41 44 45 44 20 66 6c 61 67 20 70 61  THREADED flag pa
4f00: 73 73 65 64 20 74 6f 20 73 71 6c 69 74 65 33 5f  ssed to sqlite3_
4f10: 6f 70 65 6e 28 29 2e 0a 7d 20 2d 69 6e 69 74 69  open()..} -initi
4f20: 61 6c 69 7a 65 20 7b 0a 20 20 73 65 74 20 3a 3a  alize {.  set ::
4f30: 47 28 70 65 72 6d 3a 73 71 6c 69 74 65 33 5f 61  G(perm:sqlite3_a
4f40: 72 67 73 29 20 5b 6c 69 73 74 20 2d 66 75 6c 6c  rgs) [list -full
4f50: 6d 75 74 65 78 20 30 20 2d 6e 6f 6d 75 74 65 78  mutex 0 -nomutex
4f60: 20 31 5d 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20   1].} -files {. 
4f70: 20 64 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64   delete.test   d
4f80: 65 6c 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73  elete2.test  ins
4f90: 65 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61  ert.test  rollba
4fa0: 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31  ck.test  select1
4fb0: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
4fc0: 74 65 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74  test  trans.test
4fd0: 20 20 20 20 75 70 64 61 74 65 2e 74 65 73 74 20      update.test 
4fe0: 20 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20   vacuum.test    
4ff0: 74 79 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70  types.test.  typ
5000: 65 73 32 2e 74 65 73 74 20 20 20 74 79 70 65 73  es2.test   types
5010: 33 2e 74 65 73 74 0a 7d 20 0a 0a 23 20 52 75 6e  3.test.} ..# Run
5020: 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 53   some tests in S
5030: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c  QLITE_CONFIG_MUL
5040: 54 49 54 48 52 45 41 44 20 6d 6f 64 65 2e 0a 23  TITHREAD mode..#
5050: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6d 75 6c  .test_suite "mul
5060: 74 69 74 68 72 65 61 64 22 20 2d 64 65 73 63 72  tithread" -descr
5070: 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73  iption {.  Tests
5080: 20 72 75 6e 20 69 6e 20 53 51 4c 49 54 45 5f 43   run in SQLITE_C
5090: 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41  ONFIG_MULTITHREA
50a0: 44 20 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74 69 61  D mode.} -initia
50b0: 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20 7b  lize {.  catch {
50c0: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69  db close}.  sqli
50d0: 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63  te3_shutdown.  c
50e0: 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f  atch {sqlite3_co
50f0: 6e 66 69 67 20 6d 75 6c 74 69 74 68 72 65 61 64  nfig multithread
5100: 7d 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  }.  sqlite3_init
5110: 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73  ialize.  autoins
5120: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
5130: 6f 6e 73 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  ons.} -files {. 
5140: 20 64 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64   delete.test   d
5150: 65 6c 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73  elete2.test  ins
5160: 65 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61  ert.test  rollba
5170: 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31  ck.test  select1
5180: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
5190: 74 65 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74  test  trans.test
51a0: 20 20 20 20 75 70 64 61 74 65 2e 74 65 73 74 20      update.test 
51b0: 20 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20   vacuum.test    
51c0: 74 79 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70  types.test.  typ
51d0: 65 73 32 2e 74 65 73 74 20 20 20 74 79 70 65 73  es2.test   types
51e0: 33 2e 74 65 73 74 20 20 20 73 6f 72 74 34 2e 74  3.test   sort4.t
51f0: 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20  est.} -shutdown 
5200: 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c  {.  catch {db cl
5210: 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73  ose}.  sqlite3_s
5220: 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63 68 20  hutdown.  catch 
5230: 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 20  {sqlite3_config 
5240: 73 65 72 69 61 6c 69 7a 65 64 7d 0a 20 20 73 71  serialized}.  sq
5250: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
5260: 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74  .  autoinstall_t
5270: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a  est_functions.}.
5280: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74  .# Run some test
5290: 73 20 69 6e 20 53 51 4c 49 54 45 5f 4f 50 45 4e  s in SQLITE_OPEN
52a0: 5f 46 55 4c 4c 4d 55 54 45 58 20 6d 6f 64 65 2e  _FULLMUTEX mode.
52b0: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 66  .#.test_suite "f
52c0: 75 6c 6c 6d 75 74 65 78 22 20 2d 64 65 73 63 72  ullmutex" -descr
52d0: 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73  iption {.  Tests
52e0: 20 72 75 6e 20 69 6e 20 53 51 4c 49 54 45 5f 4f   run in SQLITE_O
52f0: 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 20 6d 6f  PEN_FULLMUTEX mo
5300: 64 65 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  de.} -initialize
5310: 20 7b 0a 20 20 73 65 74 20 3a 3a 47 28 70 65 72   {.  set ::G(per
5320: 6d 3a 73 71 6c 69 74 65 33 5f 61 72 67 73 29 20  m:sqlite3_args) 
5330: 5b 6c 69 73 74 20 2d 6e 6f 6d 75 74 65 78 20 30  [list -nomutex 0
5340: 20 2d 66 75 6c 6c 6d 75 74 65 78 20 31 5d 0a 7d   -fullmutex 1].}
5350: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65   -files {.  dele
5360: 74 65 2e 74 65 73 74 20 20 20 64 65 6c 65 74 65  te.test   delete
5370: 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 2e 74  2.test  insert.t
5380: 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65  est  rollback.te
5390: 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74  st  select1.test
53a0: 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20  .  select2.test 
53b0: 20 74 72 61 6e 73 2e 74 65 73 74 20 20 20 20 75   trans.test    u
53c0: 70 64 61 74 65 2e 74 65 73 74 20 20 76 61 63 75  pdate.test  vacu
53d0: 75 6d 2e 74 65 73 74 20 20 20 20 74 79 70 65 73  um.test    types
53e0: 2e 74 65 73 74 0a 20 20 74 79 70 65 73 32 2e 74  .test.  types2.t
53f0: 65 73 74 20 20 20 74 79 70 65 73 33 2e 74 65 73  est   types3.tes
5400: 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20  t.}..# Run some 
5410: 74 65 73 74 73 20 75 73 69 6e 67 20 74 68 65 20  tests using the 
5420: 22 6f 6e 65 66 69 6c 65 22 20 64 65 6d 6f 2e 0a  "onefile" demo..
5430: 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6f 6e  #.test_suite "on
5440: 65 66 69 6c 65 22 20 2d 64 65 73 63 72 69 70 74  efile" -descript
5450: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 73 6f 6d 65  ion {.  Run some
5460: 20 74 65 73 74 73 20 75 73 69 6e 67 20 74 68 65   tests using the
5470: 20 22 74 65 73 74 5f 6f 6e 65 66 69 6c 65 2e 63   "test_onefile.c
5480: 22 20 64 65 6d 6f 0a 7d 20 2d 69 6e 69 74 69 61  " demo.} -initia
5490: 6c 69 7a 65 20 7b 0a 20 20 73 65 74 20 3a 3a 47  lize {.  set ::G
54a0: 28 70 65 72 6d 3a 73 71 6c 69 74 65 33 5f 61 72  (perm:sqlite3_ar
54b0: 67 73 29 20 5b 6c 69 73 74 20 2d 76 66 73 20 66  gs) [list -vfs f
54c0: 73 5d 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20  s].} -files {.  
54d0: 63 6f 6e 66 6c 69 63 74 2e 74 65 73 74 20 20 69  conflict.test  i
54e0: 6e 73 65 72 74 2e 74 65 73 74 20 20 20 69 6e 73  nsert.test   ins
54f0: 65 72 74 32 2e 74 65 73 74 20 20 69 6e 73 65 72  ert2.test  inser
5500: 74 33 2e 74 65 73 74 0a 20 20 72 6f 6c 6c 62 61  t3.test.  rollba
5510: 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31  ck.test  select1
5520: 2e 74 65 73 74 20 20 73 65 6c 65 63 74 32 2e 74  .test  select2.t
5530: 65 73 74 20 20 73 65 6c 65 63 74 33 2e 74 65 73  est  select3.tes
5540: 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20  t.}..# Run some 
5550: 74 65 73 74 73 20 75 73 69 6e 67 20 55 54 46 2d  tests using UTF-
5560: 31 36 20 64 61 74 61 62 61 73 65 73 2e 0a 23 0a  16 databases..#.
5570: 74 65 73 74 5f 73 75 69 74 65 20 22 75 74 66 31  test_suite "utf1
5580: 36 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  6" -description 
5590: 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20 75 73  {.  Run tests us
55a0: 69 6e 67 20 55 54 46 2d 31 36 20 64 61 74 61 62  ing UTF-16 datab
55b0: 61 73 65 73 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ases.} -presql {
55c0: 0a 20 20 70 72 61 67 6d 61 20 65 6e 63 6f 64 69  .  pragma encodi
55d0: 6e 67 20 3d 20 27 55 54 46 2d 31 36 27 0a 7d 20  ng = 'UTF-16'.} 
55e0: 2d 66 69 6c 65 73 20 7b 0a 20 20 20 20 61 6c 74  -files {.    alt
55f0: 65 72 2e 74 65 73 74 20 61 6c 74 65 72 33 2e 74  er.test alter3.t
5600: 65 73 74 0a 20 20 20 20 61 6e 61 6c 79 7a 65 2e  est.    analyze.
5610: 74 65 73 74 20 61 6e 61 6c 79 7a 65 33 2e 74 65  test analyze3.te
5620: 73 74 20 61 6e 61 6c 79 7a 65 34 2e 74 65 73 74  st analyze4.test
5630: 20 61 6e 61 6c 79 7a 65 35 2e 74 65 73 74 20 61   analyze5.test a
5640: 6e 61 6c 79 7a 65 36 2e 74 65 73 74 0a 20 20 20  nalyze6.test.   
5650: 20 61 6e 61 6c 79 7a 65 37 2e 74 65 73 74 20 61   analyze7.test a
5660: 6e 61 6c 79 7a 65 38 2e 74 65 73 74 20 61 6e 61  nalyze8.test ana
5670: 6c 79 7a 65 39 2e 74 65 73 74 20 61 6e 61 6c 79  lyze9.test analy
5680: 7a 65 41 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  zeA.test analyze
5690: 42 2e 74 65 73 74 0a 20 20 20 20 61 75 74 68 2e  B.test.    auth.
56a0: 74 65 73 74 20 62 69 6e 64 2e 74 65 73 74 20 62  test bind.test b
56b0: 6c 6f 62 2e 74 65 73 74 20 63 61 70 69 32 2e 74  lob.test capi2.t
56c0: 65 73 74 20 63 61 70 69 33 2e 74 65 73 74 20 63  est capi3.test c
56d0: 6f 6c 6c 61 74 65 31 2e 74 65 73 74 0a 20 20 20  ollate1.test.   
56e0: 20 63 6f 6c 6c 61 74 65 32 2e 74 65 73 74 20 63   collate2.test c
56f0: 6f 6c 6c 61 74 65 33 2e 74 65 73 74 20 63 6f 6c  ollate3.test col
5700: 6c 61 74 65 34 2e 74 65 73 74 20 63 6f 6c 6c 61  late4.test colla
5710: 74 65 35 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65  te5.test collate
5720: 36 2e 74 65 73 74 0a 20 20 20 20 63 6f 6e 66 6c  6.test.    confl
5730: 69 63 74 2e 74 65 73 74 20 64 61 74 65 2e 74 65  ict.test date.te
5740: 73 74 20 64 65 6c 65 74 65 2e 74 65 73 74 20 65  st delete.test e
5750: 78 70 72 2e 74 65 73 74 20 66 6b 65 79 31 2e 74  xpr.test fkey1.t
5760: 65 73 74 20 66 75 6e 63 2e 74 65 73 74 0a 20 20  est func.test.  
5770: 20 20 68 6f 6f 6b 2e 74 65 73 74 20 69 6e 64 65    hook.test inde
5780: 78 2e 74 65 73 74 20 69 6e 73 65 72 74 32 2e 74  x.test insert2.t
5790: 65 73 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20  est insert.test 
57a0: 69 6e 74 65 72 72 75 70 74 2e 74 65 73 74 20 69  interrupt.test i
57b0: 6e 2e 74 65 73 74 0a 20 20 20 20 69 6e 74 70 6b  n.test.    intpk
57c0: 65 79 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65  ey.test ioerr.te
57d0: 73 74 20 6a 6f 69 6e 32 2e 74 65 73 74 20 6a 6f  st join2.test jo
57e0: 69 6e 2e 74 65 73 74 20 6c 61 73 74 69 6e 73 65  in.test lastinse
57f0: 72 74 2e 74 65 73 74 0a 20 20 20 20 6c 61 73 74  rt.test.    last
5800: 73 74 6d 74 63 68 61 6e 67 65 73 2e 74 65 73 74  stmtchanges.test
5810: 20 6c 69 6d 69 74 2e 74 65 73 74 20 6c 6f 63 6b   limit.test lock
5820: 32 2e 74 65 73 74 20 6c 6f 63 6b 2e 74 65 73 74  2.test lock.test
5830: 20 6d 61 69 6e 2e 74 65 73 74 20 0a 20 20 20 20   main.test .    
5840: 6d 65 6d 64 62 2e 74 65 73 74 20 6d 69 6e 6d 61  memdb.test minma
5850: 78 2e 74 65 73 74 20 6d 69 73 63 31 2e 74 65 73  x.test misc1.tes
5860: 74 20 6d 69 73 63 32 2e 74 65 73 74 20 6d 69 73  t misc2.test mis
5870: 63 33 2e 74 65 73 74 20 6e 6f 74 6e 75 6c 6c 2e  c3.test notnull.
5880: 74 65 73 74 0a 20 20 20 20 6e 75 6c 6c 2e 74 65  test.    null.te
5890: 73 74 20 70 72 6f 67 72 65 73 73 2e 74 65 73 74  st progress.test
58a0: 20 71 75 6f 74 65 2e 74 65 73 74 20 72 6f 77 69   quote.test rowi
58b0: 64 2e 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74  d.test select1.t
58c0: 65 73 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74  est select2.test
58d0: 0a 20 20 20 20 73 65 6c 65 63 74 33 2e 74 65 73  .    select3.tes
58e0: 74 20 73 65 6c 65 63 74 34 2e 74 65 73 74 20 73  t select4.test s
58f0: 65 6c 65 63 74 35 2e 74 65 73 74 20 73 65 6c 65  elect5.test sele
5900: 63 74 36 2e 74 65 73 74 20 73 6f 72 74 2e 74 65  ct6.test sort.te
5910: 73 74 20 0a 20 20 20 20 73 75 62 73 65 6c 65 63  st .    subselec
5920: 74 2e 74 65 73 74 20 74 61 62 6c 65 61 70 69 2e  t.test tableapi.
5930: 74 65 73 74 20 74 61 62 6c 65 2e 74 65 73 74 20  test table.test 
5940: 74 65 6d 70 74 61 62 6c 65 2e 74 65 73 74 0a 20  temptable.test. 
5950: 20 20 20 74 72 61 63 65 2e 74 65 73 74 20 74 72     trace.test tr
5960: 69 67 67 65 72 31 2e 74 65 73 74 20 74 72 69 67  igger1.test trig
5970: 67 65 72 32 2e 74 65 73 74 20 74 72 69 67 67 65  ger2.test trigge
5980: 72 33 2e 74 65 73 74 0a 20 20 20 20 74 72 69 67  r3.test.    trig
5990: 67 65 72 34 2e 74 65 73 74 20 74 79 70 65 73 32  ger4.test types2
59a0: 2e 74 65 73 74 20 74 79 70 65 73 2e 74 65 73 74  .test types.test
59b0: 20 75 6e 69 71 75 65 2e 74 65 73 74 20 75 70 64   unique.test upd
59c0: 61 74 65 2e 74 65 73 74 0a 20 20 20 20 76 61 63  ate.test.    vac
59d0: 75 75 6d 2e 74 65 73 74 20 76 69 65 77 2e 74 65  uum.test view.te
59e0: 73 74 20 77 68 65 72 65 2e 74 65 73 74 0a 20 20  st where.test.  
59f0: 20 20 62 65 73 74 69 6e 64 65 78 31 2e 74 65 73    bestindex1.tes
5a00: 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20  t.}..# Run some 
5a10: 74 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69  tests in exclusi
5a20: 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e  ve locking mode.
5a30: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 65  .#.test_suite "e
5a40: 78 63 6c 75 73 69 76 65 22 20 2d 64 65 73 63 72  xclusive" -descr
5a50: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
5a60: 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76  ests in exclusiv
5a70: 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e 0a  e locking mode..
5a80: 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72  } -presql {.  pr
5a90: 61 67 6d 61 20 6c 6f 63 6b 69 6e 67 5f 6d 6f 64  agma locking_mod
5aa0: 65 20 3d 20 27 65 78 63 6c 75 73 69 76 65 27 0a  e = 'exclusive'.
5ab0: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 72 6f 6c  } -files {.  rol
5ac0: 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c 65 63  lback.test selec
5ad0: 74 31 2e 74 65 73 74 20 73 65 6c 65 63 74 32 2e  t1.test select2.
5ae0: 74 65 73 74 20 0a 20 20 6d 61 6c 6c 6f 63 2e 74  test .  malloc.t
5af0: 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d  est ioerr.test.}
5b00: 20 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65   ..# Run some te
5b10: 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76 65  sts in exclusive
5b20: 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 77 69   locking mode wi
5b30: 74 68 20 74 72 75 6e 63 61 74 65 64 20 6a 6f 75  th truncated jou
5b40: 72 6e 61 6c 73 2e 0a 23 0a 74 65 73 74 5f 73 75  rnals..#.test_su
5b50: 69 74 65 20 22 65 78 63 6c 75 73 69 76 65 2d 74  ite "exclusive-t
5b60: 72 75 6e 63 61 74 65 22 20 2d 64 65 73 63 72 69  runcate" -descri
5b70: 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65  ption {.  Run te
5b80: 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76 65  sts in exclusive
5b90: 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 61 6e   locking mode an
5ba0: 64 20 74 72 75 6e 63 61 74 65 20 6a 6f 75 72 6e  d truncate journ
5bb0: 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  al mode..} -pres
5bc0: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6c 6f  ql {.  pragma lo
5bd0: 63 6b 69 6e 67 5f 6d 6f 64 65 20 3d 20 27 65 78  cking_mode = 'ex
5be0: 63 6c 75 73 69 76 65 27 3b 0a 20 20 70 72 61 67  clusive';.  prag
5bf0: 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  ma journal_mode 
5c00: 3d 20 54 52 55 4e 43 41 54 45 3b 0a 7d 20 2d 66  = TRUNCATE;.} -f
5c10: 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e  iles {.  delete.
5c20: 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65 73  test delete2.tes
5c30: 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20 72 6f  t insert.test ro
5c40: 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c 65  llback.test sele
5c50: 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65 63  ct1.test.  selec
5c60: 74 32 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  t2.test update.t
5c70: 65 73 74 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20  est malloc.test 
5c80: 69 6f 65 72 72 2e 74 65 73 74 0a 7d 20 0a 0a 23  ioerr.test.} ..#
5c90: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
5ca0: 69 6e 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f  in persistent jo
5cb0: 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65  urnal mode..#.te
5cc0: 73 74 5f 73 75 69 74 65 20 22 70 65 72 73 69 73  st_suite "persis
5cd0: 74 65 6e 74 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64  tent_journal" -d
5ce0: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
5cf0: 75 6e 20 74 65 73 74 73 20 69 6e 20 70 65 72 73  un tests in pers
5d00: 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61 6c 20 6d  istent-journal m
5d10: 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ode..} -presql {
5d20: 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61  .  pragma journa
5d30: 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69 73 74  l_mode = persist
5d40: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65  .} -files {.  de
5d50: 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65  lete.test delete
5d60: 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65  2.test insert.te
5d70: 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74  st rollback.test
5d80: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20   select1.test.  
5d90: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 74 72 61  select2.test tra
5da0: 6e 73 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  ns.test update.t
5db0: 65 73 74 20 76 61 63 75 75 6d 2e 74 65 73 74 20  est vacuum.test 
5dc0: 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74  .}..# Run some t
5dd0: 65 73 74 73 20 69 6e 20 74 72 75 6e 63 61 74 69  ests in truncati
5de0: 6e 67 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  ng journal mode.
5df0: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 74  .#.test_suite "t
5e00: 72 75 6e 63 61 74 65 5f 6a 6f 75 72 6e 61 6c 22  runcate_journal"
5e10: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
5e20: 20 20 52 75 6e 20 74 65 73 74 73 20 69 6e 20 70    Run tests in p
5e30: 65 72 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61  ersistent-journa
5e40: 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71  l mode..} -presq
5e50: 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75  l {.  pragma jou
5e60: 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 74 72 75 6e  rnal_mode = trun
5e70: 63 61 74 65 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  cate.} -files {.
5e80: 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64 65    delete.test de
5e90: 6c 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65 72  lete2.test inser
5ea0: 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e  t.test rollback.
5eb0: 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73  test select1.tes
5ec0: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
5ed0: 20 74 72 61 6e 73 2e 74 65 73 74 20 75 70 64 61   trans.test upda
5ee0: 74 65 2e 74 65 73 74 20 76 61 63 75 75 6d 2e 74  te.test vacuum.t
5ef0: 65 73 74 20 0a 20 20 6d 61 6c 6c 6f 63 2e 74 65  est .  malloc.te
5f00: 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d 0a  st ioerr.test.}.
5f10: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 65 72 72 6f  .# Run some erro
5f20: 72 20 74 65 73 74 73 20 69 6e 20 70 65 72 73 69  r tests in persi
5f30: 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f  stent journal mo
5f40: 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65  de..#.test_suite
5f50: 20 22 70 65 72 73 69 73 74 65 6e 74 5f 6a 6f 75   "persistent_jou
5f60: 72 6e 61 6c 5f 65 72 72 6f 72 22 20 2d 64 65 73  rnal_error" -des
5f70: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e  cription {.  Run
5f80: 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 61 6e 64   malloc.test and
5f90: 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6e 20 70   ioerr.test in p
5fa0: 65 72 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61  ersistent-journa
5fb0: 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71  l mode..} -presq
5fc0: 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75  l {.  pragma jou
5fd0: 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73  rnal_mode = pers
5fe0: 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  ist.} -files {. 
5ff0: 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65   malloc.test ioe
6000: 72 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75 6e  rr.test.}..# Run
6010: 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 6e   some tests in n
6020: 6f 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a  o journal mode..
6030: 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f  #.test_suite "no
6040: 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64 65 73 63 72  _journal" -descr
6050: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
6060: 65 73 74 73 20 69 6e 20 6e 6f 2d 6a 6f 75 72 6e  ests in no-journ
6070: 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  al mode..} -pres
6080: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f  ql {.  pragma jo
6090: 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72  urnal_mode = per
60a0: 73 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  sist.} -files {.
60b0: 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64 65    delete.test de
60c0: 6c 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65 72  lete2.test inser
60d0: 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e  t.test rollback.
60e0: 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73  test select1.tes
60f0: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
6100: 20 74 72 61 6e 73 2e 74 65 73 74 20 75 70 64 61   trans.test upda
6110: 74 65 2e 74 65 73 74 20 76 61 63 75 75 6d 2e 74  te.test vacuum.t
6120: 65 73 74 20 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f  est .}..# Run so
6130: 6d 65 20 65 72 72 6f 72 20 74 65 73 74 73 20 69  me error tests i
6140: 6e 20 6e 6f 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64  n no journal mod
6150: 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  e..#.test_suite 
6160: 22 6e 6f 5f 6a 6f 75 72 6e 61 6c 5f 65 72 72 6f  "no_journal_erro
6170: 72 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  r" -description 
6180: 7b 0a 20 20 52 75 6e 20 6d 61 6c 6c 6f 63 2e 74  {.  Run malloc.t
6190: 65 73 74 20 61 6e 64 20 69 6f 65 72 72 2e 74 65  est and ioerr.te
61a0: 73 74 20 69 6e 20 6e 6f 2d 6a 6f 75 72 6e 61 6c  st in no-journal
61b0: 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c   mode..} -presql
61c0: 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72   {.  pragma jour
61d0: 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69  nal_mode = persi
61e0: 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20  st.} -files {.  
61f0: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65 72  malloc.test ioer
6200: 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75 6e 20  r.test.}..# Run 
6210: 73 6f 6d 65 20 63 72 61 73 68 2d 74 65 73 74 73  some crash-tests
6220: 20 69 6e 20 61 75 74 6f 76 61 63 75 75 6d 20 6d   in autovacuum m
6230: 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74  ode..#.test_suit
6240: 65 20 22 61 75 74 6f 76 61 63 75 75 6d 5f 63 72  e "autovacuum_cr
6250: 61 73 68 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ash" -descriptio
6260: 6e 20 7b 0a 20 20 52 75 6e 20 63 72 61 73 68 2e  n {.  Run crash.
6270: 74 65 73 74 20 69 6e 20 61 75 74 6f 76 61 63 75  test in autovacu
6280: 75 6d 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  um mode..} -pres
6290: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 61 75  ql {.  pragma au
62a0: 74 6f 5f 76 61 63 75 75 6d 20 3d 20 31 0a 7d 20  to_vacuum = 1.} 
62b0: 2d 66 69 6c 65 73 20 63 72 61 73 68 2e 74 65 73  -files crash.tes
62c0: 74 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 69 6f  t..# Run some io
62d0: 65 72 72 2d 74 65 73 74 73 20 69 6e 20 61 75 74  err-tests in aut
62e0: 6f 76 61 63 75 75 6d 20 6d 6f 64 65 2e 0a 23 0a  ovacuum mode..#.
62f0: 74 65 73 74 5f 73 75 69 74 65 20 22 61 75 74 6f  test_suite "auto
6300: 76 61 63 75 75 6d 5f 69 6f 65 72 72 22 20 2d 64  vacuum_ioerr" -d
6310: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
6320: 75 6e 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6e  un ioerr.test in
6330: 20 61 75 74 6f 76 61 63 75 75 6d 20 6d 6f 64 65   autovacuum mode
6340: 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20  ..} -presql {.  
6350: 70 72 61 67 6d 61 20 61 75 74 6f 5f 76 61 63 75  pragma auto_vacu
6360: 75 6d 20 3d 20 31 0a 7d 20 2d 66 69 6c 65 73 20  um = 1.} -files 
6370: 69 6f 65 72 72 2e 74 65 73 74 0a 0a 23 20 52 75  ioerr.test..# Ru
6380: 6e 20 74 65 73 74 73 20 77 69 74 68 20 61 6e 20  n tests with an 
6390: 69 6e 2d 6d 65 6d 6f 72 79 20 6a 6f 75 72 6e 61  in-memory journa
63a0: 6c 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  l..#.test_suite 
63b0: 22 69 6e 6d 65 6d 6f 72 79 5f 6a 6f 75 72 6e 61  "inmemory_journa
63c0: 6c 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  l" -description 
63d0: 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20 77 69  {.  Run tests wi
63e0: 74 68 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20  th an in-memory 
63f0: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2e 0a 7d 20  journal file..} 
6400: 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67  -presql {.  prag
6410: 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  ma journal_mode 
6420: 3d 20 27 6d 65 6d 6f 72 79 27 0a 7d 20 2d 66 69  = 'memory'.} -fi
6430: 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a  les [test_set $:
6440: 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  :allquicktests -
6450: 65 78 63 6c 75 64 65 20 7b 0a 20 20 23 20 45 78  exclude {.  # Ex
6460: 63 6c 75 64 65 20 61 6c 6c 20 74 65 73 74 73 20  clude all tests 
6470: 74 68 61 74 20 73 69 6d 75 6c 61 74 65 20 49 4f  that simulate IO
6480: 20 65 72 72 6f 72 73 2e 0a 20 20 61 75 74 6f 76   errors..  autov
6490: 61 63 75 75 6d 5f 69 6f 65 72 72 32 2e 74 65 73  acuum_ioerr2.tes
64a0: 74 20 63 66 66 61 75 6c 74 2e 74 65 73 74 20 69  t cffault.test i
64b0: 6e 63 72 76 61 63 75 75 6d 5f 69 6f 65 72 72 2e  ncrvacuum_ioerr.
64c0: 74 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a  test ioerr.test.
64d0: 20 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6f 65    ioerr.test ioe
64e0: 72 72 32 2e 74 65 73 74 20 69 6f 65 72 72 33 2e  rr2.test ioerr3.
64f0: 74 65 73 74 20 69 6f 65 72 72 34 2e 74 65 73 74  test ioerr4.test
6500: 20 69 6f 65 72 72 35 2e 74 65 73 74 0a 20 20 76   ioerr5.test.  v
6510: 61 63 75 75 6d 33 2e 74 65 73 74 20 69 6e 63 72  acuum3.test incr
6520: 62 6c 6f 62 5f 65 72 72 2e 74 65 73 74 20 64 69  blob_err.test di
6530: 73 6b 66 75 6c 6c 2e 74 65 73 74 20 62 61 63 6b  skfull.test back
6540: 75 70 5f 69 6f 65 72 72 2e 74 65 73 74 0a 20 20  up_ioerr.test.  
6550: 65 5f 66 74 73 33 2e 74 65 73 74 20 66 74 73 33  e_fts3.test fts3
6560: 63 6f 76 2e 74 65 73 74 20 66 74 73 33 6d 61 6c  cov.test fts3mal
6570: 6c 6f 63 2e 74 65 73 74 20 66 74 73 33 72 6e 64  loc.test fts3rnd
6580: 2e 74 65 73 74 0a 20 20 66 74 73 33 73 6e 69 70  .test.  fts3snip
6590: 70 65 74 2e 74 65 73 74 20 6d 6d 61 70 66 61 75  pet.test mmapfau
65a0: 6c 74 2e 74 65 73 74 20 73 65 73 73 69 6f 6e 66  lt.test sessionf
65b0: 61 75 6c 74 2e 74 65 73 74 20 73 65 73 73 69 6f  ault.test sessio
65c0: 6e 66 61 75 6c 74 32 2e 74 65 73 74 0a 0a 20 20  nfault2.test..  
65d0: 23 20 45 78 63 6c 75 64 65 20 74 65 73 74 20 73  # Exclude test s
65e0: 63 72 69 70 74 73 20 74 68 61 74 20 75 73 65 20  cripts that use 
65f0: 74 63 6c 20 49 4f 20 74 6f 20 61 63 63 65 73 73  tcl IO to access
6600: 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 73 20 6f   journal files o
6610: 72 20 63 6f 75 6e 74 0a 20 20 23 20 74 68 65 20  r count.  # the 
6620: 6e 75 6d 62 65 72 20 6f 66 20 66 73 79 6e 63 28  number of fsync(
6630: 29 20 63 61 6c 6c 73 2e 0a 20 20 70 61 67 65 72  ) calls..  pager
6640: 2e 74 65 73 74 20 65 78 63 6c 75 73 69 76 65 2e  .test exclusive.
6650: 74 65 73 74 20 6a 72 6e 6c 6d 6f 64 65 2e 74 65  test jrnlmode.te
6660: 73 74 20 73 79 6e 63 2e 74 65 73 74 20 6d 69 73  st sync.test mis
6670: 63 31 2e 74 65 73 74 20 0a 20 20 6a 6f 75 72 6e  c1.test .  journ
6680: 61 6c 31 2e 74 65 73 74 20 63 6f 6e 66 6c 69 63  al1.test conflic
6690: 74 2e 74 65 73 74 20 63 72 61 73 68 38 2e 74 65  t.test crash8.te
66a0: 73 74 20 74 6b 74 33 34 35 37 2e 74 65 73 74 20  st tkt3457.test 
66b0: 69 6f 2e 74 65 73 74 0a 20 20 6a 6f 75 72 6e 61  io.test.  journa
66c0: 6c 33 2e 74 65 73 74 20 38 5f 33 5f 6e 61 6d 65  l3.test 8_3_name
66d0: 73 2e 74 65 73 74 0a 0a 20 20 70 61 67 65 72 31  s.test..  pager1
66e0: 2e 74 65 73 74 20 61 73 79 6e 63 34 2e 74 65 73  .test async4.tes
66f0: 74 20 63 6f 72 72 75 70 74 2e 74 65 73 74 20 66  t corrupt.test f
6700: 69 6c 65 66 6d 74 2e 74 65 73 74 20 70 61 67 65  ilefmt.test page
6710: 72 32 2e 74 65 73 74 0a 20 20 63 6f 72 72 75 70  r2.test.  corrup
6720: 74 35 2e 74 65 73 74 20 63 6f 72 72 75 70 74 41  t5.test corruptA
6730: 2e 74 65 73 74 20 70 61 67 65 72 6f 70 74 2e 74  .test pageropt.t
6740: 65 73 74 0a 0a 20 20 23 20 45 78 63 6c 75 64 65  est..  # Exclude
6750: 20 73 74 6d 74 2e 74 65 73 74 2c 20 77 68 69 63   stmt.test, whic
6760: 68 20 65 78 70 65 63 74 73 20 73 75 62 2d 6a 6f  h expects sub-jo
6770: 75 72 6e 61 6c 73 20 74 6f 20 75 73 65 20 74 65  urnals to use te
6780: 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 2e 0a 20  mporary files.. 
6790: 20 73 74 6d 74 2e 74 65 73 74 20 73 79 6d 6c 69   stmt.test symli
67a0: 6e 6b 2e 74 65 73 74 0a 0a 20 20 7a 65 72 6f 64  nk.test..  zerod
67b0: 61 6d 61 67 65 2e 74 65 73 74 0a 0a 20 20 23 20  amage.test..  # 
67c0: 57 41 4c 20 6d 6f 64 65 20 69 73 20 64 69 66 66  WAL mode is diff
67d0: 65 72 65 6e 74 2e 0a 20 20 77 61 6c 2a 20 74 6b  erent..  wal* tk
67e0: 74 2d 32 64 31 61 35 63 36 37 64 2e 74 65 73 74  t-2d1a5c67d.test
67f0: 20 62 61 63 6b 63 6f 6d 70 61 74 2e 74 65 73 74   backcompat.test
6800: 20 65 5f 77 61 6c 2a 20 72 6f 77 61 6c 6c 6f 63   e_wal* rowalloc
6810: 6b 2e 74 65 73 74 0a 0a 20 20 23 20 54 68 69 73  k.test..  # This
6820: 20 74 65 73 74 20 64 6f 65 73 20 6e 6f 74 20 77   test does not w
6830: 6f 72 6b 20 61 73 20 74 68 65 20 22 50 52 41 47  ork as the "PRAG
6840: 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  MA journal_mode 
6850: 3d 20 6d 65 6d 6f 72 79 22 0a 20 20 23 20 73 74  = memory".  # st
6860: 61 74 65 6d 65 6e 74 20 73 77 69 74 63 68 65 73  atement switches
6870: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6f 75   the database ou
6880: 74 20 6f 66 20 77 61 6c 20 6d 6f 64 65 20 61 74  t of wal mode at
6890: 20 69 6e 6f 70 70 6f 72 74 75 6e 65 0a 20 20 23   inopportune.  #
68a0: 20 74 69 6d 65 73 2e 0a 20 20 73 6e 61 70 73 68   times..  snapsh
68b0: 6f 74 5f 66 61 75 6c 74 2e 74 65 73 74 0a 20 20  ot_fault.test.  
68c0: 0a 20 20 23 20 54 68 69 73 20 74 65 73 74 20 61  .  # This test a
68d0: 73 73 75 6d 65 73 20 61 20 6a 6f 75 72 6e 61 6c  ssumes a journal
68e0: 20 66 69 6c 65 20 69 73 20 63 72 65 61 74 65 64   file is created
68f0: 20 6f 6e 20 64 69 73 6b 2e 0a 20 20 64 65 6c 65   on disk..  dele
6900: 74 65 5f 64 62 2e 74 65 73 74 0a 20 20 0a 20 20  te_db.test.  .  
6910: 23 20 54 68 69 73 20 74 65 73 74 20 64 65 70 65  # This test depe
6920: 6e 64 73 20 6f 6e 20 61 20 73 75 63 63 65 73 73  nds on a success
6930: 66 75 6c 20 72 65 63 6f 76 65 72 79 20 66 72 6f  ful recovery fro
6940: 6d 20 74 68 65 20 70 61 67 65 72 20 65 72 72 6f  m the pager erro
6950: 72 20 0a 20 20 23 20 73 74 61 74 65 2e 20 57 68  r .  # state. Wh
6960: 69 63 68 20 69 73 20 6e 6f 74 20 70 6f 73 73 69  ich is not possi
6970: 62 6c 65 20 77 69 74 68 20 61 6e 20 69 6e 2d 6d  ble with an in-m
6980: 65 6d 6f 72 79 20 6a 6f 75 72 6e 61 6c 0a 20 20  emory journal.  
6990: 66 74 73 35 66 61 75 6c 74 31 2e 74 65 73 74 0a  fts5fault1.test.
69a0: 7d 5d 0a 0a 69 66 63 61 70 61 62 6c 65 20 6d 65  }]..ifcapable me
69b0: 6d 33 20 7b 0a 20 20 74 65 73 74 5f 73 75 69 74  m3 {.  test_suit
69c0: 65 20 22 6d 65 6d 73 79 73 33 22 20 2d 64 65 73  e "memsys3" -des
69d0: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 52  cription {.    R
69e0: 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67 20 74  un tests using t
69f0: 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 20  he allocator in 
6a00: 6d 65 6d 33 2e 63 2e 0a 20 20 7d 20 2d 66 69 6c  mem3.c..  } -fil
6a10: 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a 3a  es [test_set $::
6a20: 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65  allquicktests -e
6a30: 78 63 6c 75 64 65 20 7b 0a 20 20 20 20 61 75 74  xclude {.    aut
6a40: 6f 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20  ovacuum.test    
6a50: 20 20 20 20 20 20 20 64 65 6c 65 74 65 33 2e 74         delete3.t
6a60: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20  est             
6a70: 20 6d 61 6e 79 64 62 2e 74 65 73 74 0a 20 20 20   manydb.test.   
6a80: 20 62 69 67 72 6f 77 2e 74 65 73 74 20 20 20 20   bigrow.test    
6a90: 20 20 20 20 20 20 20 20 20 20 20 69 6e 63 72 62             incrb
6aa0: 6c 6f 62 32 2e 74 65 73 74 20 20 20 20 20 20 20  lob2.test       
6ab0: 20 20 20 20 20 6d 65 6d 64 62 2e 74 65 73 74 0a       memdb.test.
6ac0: 20 20 20 20 62 69 74 76 65 63 2e 74 65 73 74 20      bitvec.test 
6ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
6ae0: 64 65 78 32 2e 74 65 73 74 20 20 20 20 20 20 20  dex2.test       
6af0: 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73 79          memsubsy
6b00: 73 31 2e 74 65 73 74 0a 20 20 20 20 63 61 70 69  s1.test.    capi
6b10: 33 63 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  3c.test         
6b20: 20 20 20 20 20 20 69 6f 65 72 72 2e 74 65 73 74        ioerr.test
6b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b40: 6d 65 6d 73 75 62 73 79 73 32 2e 74 65 73 74 0a  memsubsys2.test.
6b50: 20 20 20 20 63 61 70 69 33 2e 74 65 73 74 20 20      capi3.test  
6b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 6f                jo
6b70: 69 6e 33 2e 74 65 73 74 20 20 20 20 20 20 20 20  in3.test        
6b80: 20 20 20 20 20 20 20 20 70 61 67 65 73 69 7a 65          pagesize
6b90: 2e 74 65 73 74 0a 20 20 20 20 63 6f 6c 6c 61 74  .test.    collat
6ba0: 65 35 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  e5.test         
6bb0: 20 20 20 20 6c 69 6d 69 74 2e 74 65 73 74 20 20      limit.test  
6bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61                ba
6bd0: 63 6b 75 70 5f 69 6f 65 72 72 2e 74 65 73 74 0a  ckup_ioerr.test.
6be0: 20 20 20 20 62 61 63 6b 75 70 5f 6d 61 6c 6c 6f      backup_mallo
6bf0: 63 2e 74 65 73 74 0a 20 20 7d 5d 20 2d 69 6e 69  c.test.  }] -ini
6c00: 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63 61  tialize {.    ca
6c10: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
6c20: 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74     sqlite3_reset
6c30: 5f 61 75 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 0a  _auto_extension.
6c40: 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74      sqlite3_shut
6c50: 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33  down.    sqlite3
6c60: 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20 32 35 30  _config_heap 250
6c70: 30 30 30 30 30 20 30 0a 20 20 20 20 73 71 6c 69  00000 0.    sqli
6c80: 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61  te3_config_looka
6c90: 73 69 64 65 20 30 20 30 0a 20 20 20 20 69 66 63  side 0 0.    ifc
6ca0: 61 70 61 62 6c 65 20 6d 65 6d 35 20 7b 0a 20 20  apable mem5 {.  
6cb0: 20 20 20 20 23 20 49 66 20 62 6f 74 68 20 6d 65      # If both me
6cc0: 6d 73 79 73 33 20 61 6e 64 20 6d 65 6d 73 79 73  msys3 and memsys
6cd0: 35 20 61 72 65 20 65 6e 61 62 6c 65 64 20 69 6e  5 are enabled in
6ce0: 20 74 68 65 20 62 75 69 6c 64 2c 20 74 68 65 20   the build, the 
6cf0: 63 61 6c 6c 20 74 6f 0a 20 20 20 20 20 20 23 20  call to.      # 
6d00: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f  [sqlite3_config_
6d10: 68 65 61 70 5d 20 77 69 6c 6c 20 69 6e 69 74 69  heap] will initi
6d20: 61 6c 69 7a 65 20 74 68 65 20 73 79 73 74 65 6d  alize the system
6d30: 20 74 6f 20 75 73 65 20 6d 65 6d 73 79 73 35 2e   to use memsys5.
6d40: 0a 20 20 20 20 20 20 23 20 54 68 65 20 66 6f 6c  .      # The fol
6d50: 6c 6f 77 69 6e 67 20 6f 76 65 72 72 69 64 65 73  lowing overrides
6d60: 20 74 68 69 73 20 70 72 65 66 65 72 65 6e 63 65   this preference
6d70: 20 61 6e 64 20 69 6e 73 74 61 6c 6c 73 20 74 68   and installs th
6d80: 65 20 6d 65 6d 73 79 73 33 0a 20 20 20 20 20 20  e memsys3.      
6d90: 23 20 61 6c 6c 6f 63 61 74 6f 72 2e 0a 20 20 20  # allocator..   
6da0: 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 73 74 61     sqlite3_insta
6db0: 6c 6c 5f 6d 65 6d 73 79 73 33 0a 20 20 20 20 7d  ll_memsys3.    }
6dc0: 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c  .    install_mal
6dd0: 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a  loc_faultsim 1 .
6de0: 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74      sqlite3_init
6df0: 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69  ialize.    autoi
6e00: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
6e10: 74 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74 64  tions.  } -shutd
6e20: 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68 20  own {.    catch 
6e30: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73  {db close}.    s
6e40: 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a  qlite3_shutdown.
6e50: 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66      sqlite3_conf
6e60: 69 67 5f 68 65 61 70 20 30 20 30 0a 20 20 20 20  ig_heap 0 0.    
6e70: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c  sqlite3_config_l
6e80: 6f 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30 30  ookaside 100 500
6e90: 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c  .    install_mal
6ea0: 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a  loc_faultsim 1 .
6eb0: 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74      sqlite3_init
6ec0: 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69  ialize.    autoi
6ed0: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
6ee0: 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a 69 66 63  tions.  }.}..ifc
6ef0: 61 70 61 62 6c 65 20 6d 65 6d 35 20 7b 0a 20 20  apable mem5 {.  
6f00: 74 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73  test_suite "mems
6f10: 79 73 35 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ys5" -descriptio
6f20: 6e 20 7b 0a 20 20 20 20 52 75 6e 20 74 65 73 74  n {.    Run test
6f30: 73 20 75 73 69 6e 67 20 74 68 65 20 61 6c 6c 6f  s using the allo
6f40: 63 61 74 6f 72 20 69 6e 20 6d 65 6d 35 2e 63 2e  cator in mem5.c.
6f50: 0a 20 20 7d 20 2d 66 69 6c 65 73 20 5b 74 65 73  .  } -files [tes
6f60: 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63  t_set $::allquic
6f70: 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20  ktests -exclude 
6f80: 7b 0a 20 20 20 20 61 75 74 6f 76 61 63 75 75 6d  {.    autovacuum
6f90: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
6fa0: 64 65 6c 65 74 65 33 2e 74 65 73 74 20 20 20 20  delete3.test    
6fb0: 20 20 20 20 20 20 20 20 20 20 6d 61 6e 79 64 62            manydb
6fc0: 2e 74 65 73 74 0a 20 20 20 20 62 69 67 72 6f 77  .test.    bigrow
6fd0: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
6fe0: 20 20 20 20 69 6e 63 72 62 6c 6f 62 32 2e 74 65      incrblob2.te
6ff0: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 6d 65  st            me
7000: 6d 64 62 2e 74 65 73 74 0a 20 20 20 20 62 69 74  mdb.test.    bit
7010: 76 65 63 2e 74 65 73 74 20 20 20 20 20 20 20 20  vec.test        
7020: 20 20 20 20 20 20 20 69 6e 64 65 78 32 2e 74 65         index2.te
7030: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  st              
7040: 20 6d 65 6d 73 75 62 73 79 73 31 2e 74 65 73 74   memsubsys1.test
7050: 0a 20 20 20 20 63 61 70 69 33 63 2e 74 65 73 74  .    capi3c.test
7060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7070: 6f 65 72 72 2e 74 65 73 74 20 20 20 20 20 20 20  oerr.test       
7080: 20 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73           memsubs
7090: 79 73 32 2e 74 65 73 74 0a 20 20 20 20 63 61 70  ys2.test.    cap
70a0: 69 33 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  i3.test         
70b0: 20 20 20 20 20 20 20 6a 6f 69 6e 33 2e 74 65 73         join3.tes
70c0: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
70d0: 20 70 61 67 65 73 69 7a 65 2e 74 65 73 74 0a 20   pagesize.test. 
70e0: 20 20 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74     collate5.test
70f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6d               lim
7100: 69 74 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  it.test         
7110: 20 20 20 20 20 20 20 7a 65 72 6f 62 6c 6f 62 2e         zeroblob.
7120: 74 65 73 74 0a 20 20 7d 5d 20 2d 69 6e 69 74 69  test.  }] -initi
7130: 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63 61 74 63  alize {.    catc
7140: 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20  h {db close}.   
7150: 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
7160: 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f  n.    sqlite3_co
7170: 6e 66 69 67 5f 68 65 61 70 20 32 35 30 30 30 30  nfig_heap 250000
7180: 30 30 20 36 34 0a 20 20 20 20 73 71 6c 69 74 65  00 64.    sqlite
7190: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69  3_config_lookasi
71a0: 64 65 20 30 20 30 0a 20 20 20 20 69 6e 73 74 61  de 0 0.    insta
71b0: 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73  ll_malloc_faults
71c0: 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65  im 1 .    sqlite
71d0: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20  3_initialize.   
71e0: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
71f0: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 20  t_functions.  } 
7200: 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20  -shutdown {.    
7210: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
7220: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75  .    sqlite3_shu
7230: 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65  tdown.    sqlite
7240: 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20 30 20  3_config_heap 0 
7250: 30 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f  0.    sqlite3_co
7260: 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31  nfig_lookaside 1
7270: 30 30 20 35 30 30 0a 20 20 20 20 69 6e 73 74 61  00 500.    insta
7280: 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73  ll_malloc_faults
7290: 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65  im 1 .    sqlite
72a0: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20  3_initialize.   
72b0: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
72c0: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a  t_functions.  }.
72d0: 0a 20 20 74 65 73 74 5f 73 75 69 74 65 20 22 6d  .  test_suite "m
72e0: 65 6d 73 79 73 35 2d 32 22 20 2d 64 65 73 63 72  emsys5-2" -descr
72f0: 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 52 75 6e  iption {.    Run
7300: 20 74 65 73 74 73 20 75 73 69 6e 67 20 74 68 65   tests using the
7310: 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 20 6d 65   allocator in me
7320: 6d 35 2e 63 20 69 6e 20 61 20 64 69 66 66 65 72  m5.c in a differ
7330: 65 6e 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ent configuratio
7340: 6e 2e 0a 20 20 7d 20 2d 66 69 6c 65 73 20 7b 0a  n..  } -files {.
7350: 20 20 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74      select1.test
7360: 20 0a 20 20 7d 20 2d 69 6e 69 74 69 61 6c 69 7a   .  } -initializ
7370: 65 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64  e {.    catch {d
7380: 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c  b close}.    sql
7390: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
73a0: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
73b0: 5f 6d 65 6d 73 74 61 74 75 73 20 30 0a 20 20 20  _memstatus 0.   
73c0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
73d0: 68 65 61 70 20 34 30 30 30 30 30 30 30 20 31 36  heap 40000000 16
73e0: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  .    sqlite3_con
73f0: 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20  fig_lookaside 0 
7400: 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61  0.    install_ma
7410: 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20  lloc_faultsim 1 
7420: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69  .    sqlite3_ini
7430: 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f  tialize.    auto
7440: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
7450: 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74  ctions.  } -shut
7460: 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68  down {.    catch
7470: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20   {db close}.    
7480: 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
7490: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  .    sqlite3_con
74a0: 66 69 67 5f 68 65 61 70 20 30 20 30 0a 20 20 20  fig_heap 0 0.   
74b0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
74c0: 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30  lookaside 100 50
74d0: 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61  0.    install_ma
74e0: 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20  lloc_faultsim 1 
74f0: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69  .    sqlite3_ini
7500: 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f  tialize.    auto
7510: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
7520: 63 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a 69 66  ctions.  }.}..if
7530: 63 61 70 61 62 6c 65 20 74 68 72 65 61 64 73 61  capable threadsa
7540: 66 65 20 7b 0a 20 20 74 65 73 74 5f 73 75 69 74  fe {.  test_suit
7550: 65 20 22 6e 6f 5f 6d 75 74 65 78 5f 74 72 79 22  e "no_mutex_try"
7560: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
7570: 20 20 20 20 20 54 68 65 20 73 71 6c 69 74 65 33       The sqlite3
7580: 5f 6d 75 74 65 78 5f 74 72 79 28 29 20 69 6e 74  _mutex_try() int
7590: 65 72 66 61 63 65 20 61 6c 77 61 79 73 20 66 61  erface always fa
75a0: 69 6c 73 0a 20 20 7d 20 2d 66 69 6c 65 73 20 5b  ils.  } -files [
75b0: 0a 20 20 20 20 74 65 73 74 5f 73 65 74 20 24 3a  .    test_set $:
75c0: 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  :allquicktests -
75d0: 65 78 63 6c 75 64 65 20 6d 75 74 65 78 31 2e 74  exclude mutex1.t
75e0: 65 73 74 20 6d 75 74 65 78 32 2e 74 65 73 74 0a  est mutex2.test.
75f0: 20 20 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20    ] -initialize 
7600: 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62 20  {.    catch {db 
7610: 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74  close}.    sqlit
7620: 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20  e3_shutdown.    
7630: 69 6e 73 74 61 6c 6c 5f 6d 75 74 65 78 5f 63 6f  install_mutex_co
7640: 75 6e 74 65 72 73 20 31 0a 20 20 20 20 73 65 74  unters 1.    set
7650: 20 3a 3a 64 69 73 61 62 6c 65 5f 6d 75 74 65 78   ::disable_mutex
7660: 5f 74 72 79 20 31 0a 20 20 20 20 73 71 6c 69 74  _try 1.    sqlit
7670: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20  e3_initialize.  
7680: 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65    autoinstall_te
7690: 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d  st_functions.  }
76a0: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20   -shutdown {.   
76b0: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
76c0: 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68  }.    sqlite3_sh
76d0: 75 74 64 6f 77 6e 0a 20 20 20 20 69 6e 73 74 61  utdown.    insta
76e0: 6c 6c 5f 6d 75 74 65 78 5f 63 6f 75 6e 74 65 72  ll_mutex_counter
76f0: 73 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  s 0.    sqlite3_
7700: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61  initialize.    a
7710: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
7720: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a  functions.  }.}.
7730: 0a 23 20 72 75 6e 5f 74 65 73 74 73 20 22 63 72  .# run_tests "cr
7740: 61 73 68 5f 73 61 66 65 5f 61 70 70 65 6e 64 22  ash_safe_append"
7750: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
7760: 23 20 20 20 52 75 6e 20 63 72 61 73 68 2e 74 65  #   Run crash.te
7770: 73 74 20 77 69 74 68 20 70 65 72 73 69 73 74 65  st with persiste
7780: 6e 74 20 6a 6f 75 72 6e 61 6c 73 20 6f 6e 20 61  nt journals on a
7790: 20 53 41 46 45 5f 41 50 50 45 4e 44 20 66 69 6c   SAFE_APPEND fil
77a0: 65 2d 73 79 73 74 65 6d 2e 0a 23 20 7d 20 2d 69  e-system..# } -i
77b0: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 23 20 20 20  nitialize {.#   
77c0: 72 65 6e 61 6d 65 20 63 72 61 73 68 73 71 6c 20  rename crashsql 
77d0: 73 61 5f 63 72 61 73 68 73 71 6c 0a 23 20 20 20  sa_crashsql.#   
77e0: 70 72 6f 63 20 63 72 61 73 68 73 71 6c 20 7b 61  proc crashsql {a
77f0: 72 67 73 7d 20 7b 0a 23 20 20 20 20 20 73 65 74  rgs} {.#     set
7800: 20 6f 70 74 69 6f 6e 73 20 5b 6c 72 61 6e 67 65   options [lrange
7810: 20 24 61 72 67 73 20 30 20 5b 65 78 70 72 20 7b   $args 0 [expr {
7820: 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 5d 2d  [llength $args]-
7830: 32 7d 5d 5d 0a 23 20 20 20 20 20 6c 61 70 70 65  2}]].#     lappe
7840: 6e 64 20 6f 70 74 69 6f 6e 73 20 2d 63 68 61 72  nd options -char
7850: 20 73 61 66 65 5f 61 70 70 65 6e 64 0a 23 20 20   safe_append.#  
7860: 20 20 20 73 65 74 20 73 71 6c 20 5b 6c 69 6e 64     set sql [lind
7870: 65 78 20 24 61 72 67 73 20 65 6e 64 5d 0a 23 20  ex $args end].# 
7880: 20 20 20 20 6c 61 70 70 65 6e 64 20 6f 70 74 69      lappend opti
7890: 6f 6e 73 20 22 0a 23 20 20 20 20 20 20 20 50 52  ons ".#       PR
78a0: 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64  AGMA journal_mod
78b0: 65 3d 70 65 72 73 69 73 74 65 6e 74 3b 0a 23 20  e=persistent;.# 
78c0: 20 20 20 20 20 20 24 73 71 6c 0a 23 20 20 20 20        $sql.#    
78d0: 20 22 0a 23 20 20 20 20 20 73 65 74 20 66 64 20   ".#     set fd 
78e0: 5b 6f 70 65 6e 20 74 65 73 74 2e 64 62 2d 6a 6f  [open test.db-jo
78f0: 75 72 6e 61 6c 20 77 5d 0a 23 20 20 20 20 20 70  urnal w].#     p
7900: 75 74 73 20 24 66 64 20 5b 73 74 72 69 6e 67 20  uts $fd [string 
7910: 72 65 70 65 61 74 20 31 32 33 34 35 36 37 38 39  repeat 123456789
7920: 30 20 31 30 30 30 30 30 5d 0a 23 20 20 20 20 20  0 100000].#     
7930: 63 6c 6f 73 65 20 24 66 64 0a 23 20 20 20 20 20  close $fd.#     
7940: 65 76 61 6c 20 73 61 5f 63 72 61 73 68 73 71 6c  eval sa_crashsql
7950: 20 24 6f 70 74 69 6f 6e 73 0a 23 20 20 20 7d 0a   $options.#   }.
7960: 23 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  # } -shutdown {.
7970: 23 20 20 20 72 65 6e 61 6d 65 20 63 72 61 73 68  #   rename crash
7980: 73 71 6c 20 7b 7d 0a 23 20 20 20 72 65 6e 61 6d  sql {}.#   renam
7990: 65 20 73 61 5f 63 72 61 73 68 73 71 6c 20 63 72  e sa_crashsql cr
79a0: 61 73 68 73 71 6c 0a 23 20 7d 20 2d 66 69 6c 65  ashsql.# } -file
79b0: 73 20 63 72 61 73 68 2e 74 65 73 74 0a 0a 74 65  s crash.test..te
79c0: 73 74 5f 73 75 69 74 65 20 22 73 61 66 65 5f 61  st_suite "safe_a
79d0: 70 70 65 6e 64 22 20 2d 64 65 73 63 72 69 70 74  ppend" -descript
79e0: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 73 6f 6d 65  ion {.  Run some
79f0: 20 74 65 73 74 73 20 6f 6e 20 61 20 53 41 46 45   tests on a SAFE
7a00: 5f 41 50 50 45 4e 44 20 66 69 6c 65 2d 73 79 73  _APPEND file-sys
7a10: 74 65 6d 2e 0a 7d 20 2d 69 6e 69 74 69 61 6c 69  tem..} -initiali
7a20: 7a 65 20 7b 0a 20 20 73 65 74 20 3a 3a 47 28 70  ze {.  set ::G(p
7a30: 65 72 6d 3a 73 71 6c 69 74 65 33 5f 61 72 67 73  erm:sqlite3_args
7a40: 29 20 5b 6c 69 73 74 20 2d 76 66 73 20 64 65 76  ) [list -vfs dev
7a50: 73 79 6d 5d 0a 20 20 73 71 6c 69 74 65 33 5f 73  sym].  sqlite3_s
7a60: 69 6d 75 6c 61 74 65 5f 64 65 76 69 63 65 20 2d  imulate_device -
7a70: 63 68 61 72 20 73 61 66 65 5f 61 70 70 65 6e 64  char safe_append
7a80: 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65  .} -files [.  te
7a90: 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69  st_set $::allqui
7aa0: 63 6b 74 65 73 74 73 20 73 68 61 72 65 64 5f 65  cktests shared_e
7ab0: 72 72 2e 74 65 73 74 20 2d 65 78 63 6c 75 64 65  rr.test -exclude
7ac0: 20 61 73 79 6e 63 33 2e 74 65 73 74 0a 5d 0a 0a   async3.test.]..
7ad0: 23 20 54 68 65 20 73 65 74 20 6f 66 20 74 65 73  # The set of tes
7ae0: 74 73 20 74 6f 20 72 75 6e 20 6f 6e 20 74 68 65  ts to run on the
7af0: 20 61 6c 74 65 72 6e 61 74 69 76 65 2d 70 63 61   alternative-pca
7b00: 63 68 65 0a 73 65 74 20 70 65 72 6d 2d 61 6c 74  che.set perm-alt
7b10: 2d 70 63 61 63 68 65 2d 74 65 73 74 73 65 74 20  -pcache-testset 
7b20: 7b 0a 20 20 61 73 79 6e 63 2e 74 65 73 74 0a 20  {.  async.test. 
7b30: 20 61 74 74 61 63 68 2e 74 65 73 74 0a 20 20 64   attach.test.  d
7b40: 65 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74  elete.test delet
7b50: 65 32 2e 74 65 73 74 0a 20 20 69 6e 64 65 78 2e  e2.test.  index.
7b60: 74 65 73 74 0a 20 20 69 6e 73 65 72 74 2e 74 65  test.  insert.te
7b70: 73 74 20 69 6e 73 65 72 74 32 2e 74 65 73 74 0a  st insert2.test.
7b80: 20 20 6a 6f 69 6e 2e 74 65 73 74 20 6a 6f 69 6e    join.test join
7b90: 32 2e 74 65 73 74 0a 20 20 72 6f 6c 6c 62 61 63  2.test.  rollbac
7ba0: 6b 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 31  k.test.  select1
7bb0: 2e 74 65 73 74 20 73 65 6c 65 63 74 32 2e 74 65  .test select2.te
7bc0: 73 74 0a 20 20 74 72 61 6e 73 2e 74 65 73 74 0a  st.  trans.test.
7bd0: 20 20 75 70 64 61 74 65 2e 74 65 73 74 0a 7d 0a    update.test.}.
7be0: 0a 66 6f 72 65 61 63 68 20 64 69 73 63 61 72 64  .foreach discard
7bf0: 5f 72 61 74 65 20 7b 30 20 31 30 20 35 30 20 39  _rate {0 10 50 9
7c00: 30 20 31 30 30 7d 20 7b 0a 20 20 74 65 73 74 5f  0 100} {.  test_
7c10: 73 75 69 74 65 20 22 70 63 61 63 68 65 24 7b 64  suite "pcache${d
7c20: 69 73 63 61 72 64 5f 72 61 74 65 7d 22 20 2d 64  iscard_rate}" -d
7c30: 65 73 63 72 69 70 74 69 6f 6e 20 22 0a 20 20 20  escription ".   
7c40: 20 41 6c 74 65 72 6e 61 74 69 76 65 20 70 63 61   Alternative pca
7c50: 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  che implementati
7c60: 6f 6e 20 77 69 74 68 20 24 7b 64 69 73 63 61 72  on with ${discar
7c70: 64 5f 72 61 74 65 7d 25 20 72 61 6e 64 6f 6d 20  d_rate}% random 
7c80: 64 69 73 63 61 72 64 0a 20 20 22 20 2d 69 6e 69  discard.  " -ini
7c90: 74 69 61 6c 69 7a 65 20 22 0a 20 20 20 20 63 61  tialize ".    ca
7ca0: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
7cb0: 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64     sqlite3_shutd
7cc0: 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  own.    sqlite3_
7cd0: 63 6f 6e 66 69 67 5f 61 6c 74 5f 70 63 61 63 68  config_alt_pcach
7ce0: 65 20 31 20 24 64 69 73 63 61 72 64 5f 72 61 74  e 1 $discard_rat
7cf0: 65 20 31 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  e 1.    sqlite3_
7d00: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61  initialize.    a
7d10: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
7d20: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 22 20 2d 73  functions.  " -s
7d30: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61  hutdown {.    ca
7d40: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
7d50: 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64     sqlite3_shutd
7d60: 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  own.    sqlite3_
7d70: 63 6f 6e 66 69 67 5f 61 6c 74 5f 70 63 61 63 68  config_alt_pcach
7d80: 65 20 30 20 30 20 30 0a 20 20 20 20 73 71 6c 69  e 0 0 0.    sqli
7d90: 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61  te3_config_looka
7da0: 73 69 64 65 20 31 30 30 20 35 30 30 0a 20 20 20  side 100 500.   
7db0: 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f   install_malloc_
7dc0: 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20 20 20  faultsim 1 .    
7dd0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
7de0: 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61  ze.    autoinsta
7df0: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
7e00: 73 0a 20 20 7d 20 2d 66 69 6c 65 73 20 24 7b 70  s.  } -files ${p
7e10: 65 72 6d 2d 61 6c 74 2d 70 63 61 63 68 65 2d 74  erm-alt-pcache-t
7e20: 65 73 74 73 65 74 7d 0a 7d 0a 0a 74 65 73 74 5f  estset}.}..test_
7e30: 73 75 69 74 65 20 22 6a 6f 75 72 6e 61 6c 74 65  suite "journalte
7e40: 73 74 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  st" -description
7e50: 20 7b 0a 20 20 43 68 65 63 6b 20 74 68 61 74 20   {.  Check that 
7e60: 70 61 67 65 73 20 61 72 65 20 73 79 6e 63 65 64  pages are synced
7e70: 20 62 65 66 6f 72 65 20 62 65 69 6e 67 20 77 72   before being wr
7e80: 69 74 74 65 6e 20 28 74 65 73 74 5f 6a 6f 75 72  itten (test_jour
7e90: 6e 61 6c 2e 63 29 2e 0a 7d 20 2d 69 6e 69 74 69  nal.c)..} -initi
7ea0: 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20  alize {.  catch 
7eb0: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 72 65 67  {db close}.  reg
7ec0: 69 73 74 65 72 5f 6a 74 5f 76 66 73 20 2d 64 65  ister_jt_vfs -de
7ed0: 66 61 75 6c 74 20 22 22 0a 7d 20 2d 73 68 75 74  fault "".} -shut
7ee0: 64 6f 77 6e 20 7b 0a 20 20 75 6e 72 65 67 69 73  down {.  unregis
7ef0: 74 65 72 5f 6a 74 5f 76 66 73 0a 7d 20 2d 66 69  ter_jt_vfs.} -fi
7f00: 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a  les [test_set $:
7f10: 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  :allquicktests -
7f20: 65 78 63 6c 75 64 65 20 7b 0a 20 20 77 61 6c 2a  exclude {.  wal*
7f30: 20 69 6e 63 72 76 61 63 75 75 6d 2e 74 65 73 74   incrvacuum.test
7f40: 20 69 6f 65 72 72 2e 74 65 73 74 20 63 6f 72 72   ioerr.test corr
7f50: 75 70 74 34 2e 74 65 73 74 20 69 6f 2e 74 65 73  upt4.test io.tes
7f60: 74 20 63 72 61 73 68 38 2e 74 65 73 74 20 0a 20  t crash8.test . 
7f70: 20 61 73 79 6e 63 34 2e 74 65 73 74 20 62 69 67   async4.test big
7f80: 66 69 6c 65 2e 74 65 73 74 20 62 61 63 6b 63 6f  file.test backco
7f90: 6d 70 61 74 2e 74 65 73 74 20 65 5f 77 61 6c 2a  mpat.test e_wal*
7fa0: 20 66 73 74 61 74 2e 74 65 73 74 20 6d 6d 61 70   fstat.test mmap
7fb0: 32 2e 74 65 73 74 0a 20 20 70 61 67 65 72 31 2e  2.test.  pager1.
7fc0: 74 65 73 74 20 73 79 73 63 61 6c 6c 2e 74 65 73  test syscall.tes
7fd0: 74 20 74 6b 74 33 34 35 37 2e 74 65 73 74 20 2a  t tkt3457.test *
7fe0: 6d 61 6c 6c 6f 63 2a 20 6d 6d 61 70 2a 20 6d 75  malloc* mmap* mu
7ff0: 6c 74 69 70 6c 65 78 2a 20 6e 6f 6c 6f 63 6b 2a  ltiplex* nolock*
8000: 0a 20 20 70 61 67 65 72 32 2e 74 65 73 74 20 2a  .  pager2.test *
8010: 66 61 75 6c 74 2a 20 72 6f 77 61 6c 2a 20 73 6e  fault* rowal* sn
8020: 61 70 73 68 6f 74 2a 20 73 75 70 65 72 6c 6f 63  apshot* superloc
8030: 6b 2a 20 73 79 6d 6c 69 6e 6b 2e 74 65 73 74 0a  k* symlink.test.
8040: 20 20 64 65 6c 65 74 65 5f 64 62 2e 74 65 73 74    delete_db.test
8050: 0a 7d 5d 0a 0a 69 66 20 7b 5b 69 6e 66 6f 20 63  .}]..if {[info c
8060: 6f 6d 6d 61 6e 64 73 20 72 65 67 69 73 74 65 72  ommands register
8070: 5f 64 65 6d 6f 76 66 73 5d 20 21 3d 20 22 22 7d  _demovfs] != ""}
8080: 20 7b 0a 20 20 74 65 73 74 5f 73 75 69 74 65 20   {.  test_suite 
8090: 22 64 65 6d 6f 76 66 73 22 20 2d 64 65 73 63 72  "demovfs" -descr
80a0: 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 43 68 65  iption {.    Che
80b0: 63 6b 20 74 68 61 74 20 74 68 65 20 64 65 6d 6f  ck that the demo
80c0: 76 66 73 20 28 63 6f 64 65 20 69 6e 20 74 65 73  vfs (code in tes
80d0: 74 5f 64 65 6d 6f 76 66 73 2e 63 29 20 6d 6f 72  t_demovfs.c) mor
80e0: 65 20 6f 72 20 6c 65 73 73 20 77 6f 72 6b 73 2e  e or less works.
80f0: 0a 20 20 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  .  } -initialize
8100: 20 7b 0a 20 20 20 20 72 65 67 69 73 74 65 72 5f   {.    register_
8110: 64 65 6d 6f 76 66 73 0a 20 20 7d 20 2d 73 68 75  demovfs.  } -shu
8120: 74 64 6f 77 6e 20 7b 0a 20 20 20 20 75 6e 72 65  tdown {.    unre
8130: 67 69 73 74 65 72 5f 64 65 6d 6f 76 66 73 0a 20  gister_demovfs. 
8140: 20 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 20 20   } -files {.    
8150: 69 6e 73 65 72 74 2e 74 65 73 74 20 20 20 69 6e  insert.test   in
8160: 73 65 72 74 32 2e 74 65 73 74 20 20 69 6e 73 65  sert2.test  inse
8170: 72 74 33 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63  rt3.test rollbac
8180: 6b 2e 74 65 73 74 20 0a 20 20 20 20 73 65 6c 65  k.test .    sele
8190: 63 74 31 2e 74 65 73 74 20 20 73 65 6c 65 63 74  ct1.test  select
81a0: 32 2e 74 65 73 74 20 20 73 65 6c 65 63 74 33 2e  2.test  select3.
81b0: 74 65 73 74 0a 20 20 7d 0a 7d 0a 0a 74 65 73 74  test.  }.}..test
81c0: 5f 73 75 69 74 65 20 22 77 61 6c 22 20 2d 64 65  _suite "wal" -de
81d0: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75  scription {.  Ru
81e0: 6e 20 74 65 73 74 73 20 77 69 74 68 20 6a 6f 75  n tests with jou
81f0: 72 6e 61 6c 5f 6d 6f 64 65 3d 57 41 4c 0a 7d 20  rnal_mode=WAL.} 
8200: 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20  -initialize {.  
8210: 73 65 74 20 3a 3a 47 28 73 61 76 65 70 6f 69 6e  set ::G(savepoin
8220: 74 36 5f 69 74 65 72 61 74 69 6f 6e 73 29 20 31  t6_iterations) 1
8230: 30 30 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b  00.} -shutdown {
8240: 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70  .  unset -nocomp
8250: 6c 61 69 6e 20 3a 3a 47 28 73 61 76 65 70 6f 69  lain ::G(savepoi
8260: 6e 74 36 5f 69 74 65 72 61 74 69 6f 6e 73 29 0a  nt6_iterations).
8270: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 73 61 76  } -files {.  sav
8280: 65 70 6f 69 6e 74 2e 74 65 73 74 20 20 20 20 20  epoint.test     
8290: 73 61 76 65 70 6f 69 6e 74 32 2e 74 65 73 74 20  savepoint2.test 
82a0: 20 20 20 20 73 61 76 65 70 6f 69 6e 74 36 2e 74      savepoint6.t
82b0: 65 73 74 0a 20 20 74 72 61 6e 73 2e 74 65 73 74  est.  trans.test
82c0: 20 20 20 20 20 20 20 20 20 61 76 74 72 61 6e 73           avtrans
82d0: 2e 74 65 73 74 0a 0a 20 20 66 74 73 33 61 61 2e  .test..  fts3aa.
82e0: 74 65 73 74 20 20 66 74 73 33 61 62 2e 74 65 73  test  fts3ab.tes
82f0: 74 20 20 66 74 73 33 61 63 2e 74 65 73 74 20 20  t  fts3ac.test  
8300: 66 74 73 33 61 64 2e 74 65 73 74 0a 20 20 66 74  fts3ad.test.  ft
8310: 73 33 61 65 2e 74 65 73 74 20 20 66 74 73 33 61  s3ae.test  fts3a
8320: 66 2e 74 65 73 74 20 20 66 74 73 33 61 67 2e 74  f.test  fts3ag.t
8330: 65 73 74 20 20 66 74 73 33 61 68 2e 74 65 73 74  est  fts3ah.test
8340: 0a 20 20 66 74 73 33 61 69 2e 74 65 73 74 20 20  .  fts3ai.test  
8350: 66 74 73 33 61 6a 2e 74 65 73 74 20 20 66 74 73  fts3aj.test  fts
8360: 33 61 6b 2e 74 65 73 74 20 20 66 74 73 33 61 6c  3ak.test  fts3al
8370: 2e 74 65 73 74 0a 20 20 66 74 73 33 61 6d 2e 74  .test.  fts3am.t
8380: 65 73 74 20 20 66 74 73 33 61 6e 2e 74 65 73 74  est  fts3an.test
8390: 20 20 66 74 73 33 61 6f 2e 74 65 73 74 20 20 66    fts3ao.test  f
83a0: 74 73 33 62 2e 74 65 73 74 0a 20 20 66 74 73 33  ts3b.test.  fts3
83b0: 63 2e 74 65 73 74 20 20 20 66 74 73 33 64 2e 74  c.test   fts3d.t
83c0: 65 73 74 20 20 20 66 74 73 33 65 2e 74 65 73 74  est   fts3e.test
83d0: 20 20 20 66 74 73 33 71 75 65 72 79 2e 74 65 73     fts3query.tes
83e0: 74 20 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65  t .}..test_suite
83f0: 20 22 72 74 72 65 65 22 20 2d 64 65 73 63 72 69   "rtree" -descri
8400: 70 74 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20 52 2d  ption {.  All R-
8410: 74 72 65 65 20 72 65 6c 61 74 65 64 20 74 65 73  tree related tes
8420: 74 73 2e 20 50 72 6f 76 69 64 65 73 20 63 6f 76  ts. Provides cov
8430: 65 72 61 67 65 20 6f 66 20 73 6f 75 72 63 65 20  erage of source 
8440: 66 69 6c 65 20 72 74 72 65 65 2e 63 2e 0a 7d 20  file rtree.c..} 
8450: 2d 66 69 6c 65 73 20 5b 67 6c 6f 62 20 2d 6e 6f  -files [glob -no
8460: 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a 74 65 73 74  complain $::test
8470: 64 69 72 2f 2e 2e 2f 65 78 74 2f 72 74 72 65 65  dir/../ext/rtree
8480: 2f 2a 2e 74 65 73 74 5d 0a 0a 74 65 73 74 5f 73  /*.test]..test_s
8490: 75 69 74 65 20 22 73 65 73 73 69 6f 6e 22 20 2d  uite "session" -
84a0: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
84b0: 41 6c 6c 20 73 65 73 73 69 6f 6e 20 6d 6f 64 75  All session modu
84c0: 6c 65 20 72 65 6c 61 74 65 64 20 74 65 73 74 73  le related tests
84d0: 2e 20 0a 7d 20 2d 66 69 6c 65 73 20 5b 67 6c 6f  . .} -files [glo
84e0: 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a  b -nocomplain $:
84f0: 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74 2f  :testdir/../ext/
8500: 73 65 73 73 69 6f 6e 2f 2a 2e 74 65 73 74 5d 0a  session/*.test].
8510: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 73 65 73  .test_suite "ses
8520: 73 69 6f 6e 5f 65 65 63 22 20 2d 64 65 73 63 72  sion_eec" -descr
8530: 69 70 74 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20 73  iption {.  All s
8540: 65 73 73 69 6f 6e 20 6d 6f 64 75 6c 65 20 72 65  ession module re
8550: 6c 61 74 65 64 20 74 65 73 74 73 20 77 69 74 68  lated tests with
8560: 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
8570: 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 29  d_result_codes()
8580: 20 73 65 74 2e 20 0a 7d 20 2d 66 69 6c 65 73 20   set. .} -files 
8590: 5b 0a 20 20 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70  [.  glob -nocomp
85a0: 6c 61 69 6e 20 24 3a 3a 74 65 73 74 64 69 72 2f  lain $::testdir/
85b0: 2e 2e 2f 65 78 74 2f 73 65 73 73 69 6f 6e 2f 2a  ../ext/session/*
85c0: 2e 74 65 73 74 0a 5d 20 2d 64 62 63 6f 6e 66 69  .test.] -dbconfi
85d0: 67 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 65 78  g {.  sqlite3_ex
85e0: 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f  tended_result_co
85f0: 64 65 73 20 24 3a 3a 64 62 68 61 6e 64 6c 65 20  des $::dbhandle 
8600: 31 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20  1.}..test_suite 
8610: 22 73 65 73 73 69 6f 6e 5f 73 74 72 6d 22 20 2d  "session_strm" -
8620: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
8630: 41 6c 6c 20 73 65 73 73 69 6f 6e 20 6d 6f 64 75  All session modu
8640: 6c 65 20 72 65 6c 61 74 65 64 20 74 65 73 74 73  le related tests
8650: 20 75 73 69 6e 67 20 74 68 65 20 73 74 72 65 61   using the strea
8660: 6d 69 6e 67 20 41 50 49 73 2e 0a 7d 20 2d 66 69  ming APIs..} -fi
8670: 6c 65 73 20 5b 0a 20 20 67 6c 6f 62 20 2d 6e 6f  les [.  glob -no
8680: 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a 74 65 73 74  complain $::test
8690: 64 69 72 2f 2e 2e 2f 65 78 74 2f 73 65 73 73 69  dir/../ext/sessi
86a0: 6f 6e 2f 2a 2e 74 65 73 74 0a 5d 20 2d 64 62 63  on/*.test.] -dbc
86b0: 6f 6e 66 69 67 20 7b 0a 20 20 73 65 74 20 3a 3a  onfig {.  set ::
86c0: 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 73  sqlite3session_s
86d0: 74 72 65 61 6d 73 20 31 0a 7d 0a 0a 74 65 73 74  treams 1.}..test
86e0: 5f 73 75 69 74 65 20 22 72 62 75 22 20 2d 64 65  _suite "rbu" -de
86f0: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 42  scription {.  RB
8700: 55 20 74 65 73 74 73 2e 0a 7d 20 2d 66 69 6c 65  U tests..} -file
8710: 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 5b  s [.  test_set [
8720: 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  glob -nocomplain
8730: 20 24 3a 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65   $::testdir/../e
8740: 78 74 2f 72 62 75 2f 2a 2e 74 65 73 74 5d 20 2d  xt/rbu/*.test] -
8750: 65 78 63 6c 75 64 65 20 72 62 75 2e 74 65 73 74  exclude rbu.test
8760: 0a 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  .]..test_suite "
8770: 6e 6f 5f 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22  no_optimization"
8780: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
8790: 20 20 52 75 6e 20 74 65 73 74 20 73 63 72 69 70    Run test scrip
87a0: 74 73 20 77 69 74 68 20 6f 70 74 69 6d 69 7a 61  ts with optimiza
87b0: 74 69 6f 6e 73 20 64 69 73 61 62 6c 65 64 20 75  tions disabled u
87c0: 73 69 6e 67 20 74 68 65 0a 20 20 73 71 6c 69 74  sing the.  sqlit
87d0: 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28  e3_test_control(
87e0: 53 51 4c 49 54 45 5f 54 45 53 54 43 54 52 4c 5f  SQLITE_TESTCTRL_
87f0: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 53 29 20 69  OPTIMIZATIONS) i
8800: 6e 74 65 72 66 61 63 65 2e 0a 7d 20 2d 66 69 6c  nterface..} -fil
8810: 65 73 20 7b 0a 20 20 77 68 65 72 65 2e 74 65 73  es {.  where.tes
8820: 74 20 77 68 65 72 65 32 2e 74 65 73 74 20 77 68  t where2.test wh
8830: 65 72 65 33 2e 74 65 73 74 20 77 68 65 72 65 34  ere3.test where4
8840: 2e 74 65 73 74 20 77 68 65 72 65 35 2e 74 65 73  .test where5.tes
8850: 74 0a 20 20 77 68 65 72 65 36 2e 74 65 73 74 20  t.  where6.test 
8860: 77 68 65 72 65 37 2e 74 65 73 74 20 77 68 65 72  where7.test wher
8870: 65 38 2e 74 65 73 74 20 77 68 65 72 65 39 2e 74  e8.test where9.t
8880: 65 73 74 0a 20 20 77 68 65 72 65 41 2e 74 65 73  est.  whereA.tes
8890: 74 20 77 68 65 72 65 42 2e 74 65 73 74 20 77 68  t whereB.test wh
88a0: 65 72 65 6c 69 6d 69 74 2e 74 65 73 74 0a 20 20  erelimit.test.  
88b0: 73 65 6c 65 63 74 31 2e 74 65 73 74 20 73 65 6c  select1.test sel
88c0: 65 63 74 32 2e 74 65 73 74 20 73 65 6c 65 63 74  ect2.test select
88d0: 33 2e 74 65 73 74 20 73 65 6c 65 63 74 34 2e 74  3.test select4.t
88e0: 65 73 74 20 73 65 6c 65 63 74 35 2e 74 65 73 74  est select5.test
88f0: 0a 20 20 73 65 6c 65 63 74 37 2e 74 65 73 74 20  .  select7.test 
8900: 73 65 6c 65 63 74 38 2e 74 65 73 74 20 73 65 6c  select8.test sel
8910: 65 63 74 41 2e 74 65 73 74 20 73 65 6c 65 63 74  ectA.test select
8920: 43 2e 74 65 73 74 0a 7d 20 2d 64 62 63 6f 6e 66  C.test.} -dbconf
8930: 69 67 20 7b 0a 20 20 6f 70 74 69 6d 69 7a 61 74  ig {.  optimizat
8940: 69 6f 6e 5f 63 6f 6e 74 72 6f 6c 20 24 3a 3a 64  ion_control $::d
8950: 62 68 61 6e 64 6c 65 20 61 6c 6c 20 30 0a 7d 0a  bhandle all 0.}.
8960: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 70 72 65  .test_suite "pre
8970: 70 61 72 65 22 20 2d 64 65 73 63 72 69 70 74 69  pare" -descripti
8980: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73  on {.  Run tests
8990: 20 77 69 74 68 20 74 68 65 20 64 62 20 63 6f 6e   with the db con
89a0: 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67 20 73 71  nection using sq
89b0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20  lite3_prepare() 
89c0: 69 6e 73 74 65 61 64 20 6f 66 20 5f 76 32 28 29  instead of _v2()
89d0: 2e 0a 7d 20 2d 64 62 63 6f 6e 66 69 67 20 7b 0a  ..} -dbconfig {.
89e0: 20 20 24 3a 3a 64 62 68 61 6e 64 6c 65 20 76 65    $::dbhandle ve
89f0: 72 73 69 6f 6e 20 2d 75 73 65 2d 6c 65 67 61 63  rsion -use-legac
8a00: 79 2d 70 72 65 70 61 72 65 20 31 0a 20 20 23 24  y-prepare 1.  #$
8a10: 3a 3a 64 62 68 61 6e 64 6c 65 20 63 61 63 68 65  ::dbhandle cache
8a20: 20 73 69 7a 65 20 30 0a 7d 20 2d 66 69 6c 65 73   size 0.} -files
8a30: 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61   [.  test_set $a
8a40: 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78  llquicktests -ex
8a50: 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a  clude *malloc* *
8a60: 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 5c  ioerr* *fault* \
8a70: 0a 20 20 20 20 20 20 73 74 6d 74 76 74 61 62 31  .      stmtvtab1
8a80: 2e 74 65 73 74 20 69 6e 64 65 78 39 2e 74 65 73  .test index9.tes
8a90: 74 0a 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20  t.]..test_suite 
8aa0: 22 73 6f 72 74 65 72 72 65 66 22 20 2d 70 72 65  "sorterref" -pre
8ab0: 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74  fix "" -descript
8ac0: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 68 65 20  ion {.  Run the 
8ad0: 22 76 65 72 79 71 75 69 63 6b 22 20 74 65 73 74  "veryquick" test
8ae0: 20 73 75 69 74 65 20 77 69 74 68 20 53 51 4c 49   suite with SQLI
8af0: 54 45 5f 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52  TE_CONFIG_SORTER
8b00: 52 45 46 5f 53 49 5a 45 20 73 65 74 0a 20 20 74  REF_SIZE set.  t
8b10: 6f 20 30 20 73 6f 20 74 68 61 74 20 73 6f 72 74  o 0 so that sort
8b20: 65 72 2d 72 65 66 65 72 65 6e 63 65 73 20 61 72  er-references ar
8b30: 65 20 75 73 65 64 20 77 68 65 6e 65 76 65 72 20  e used whenever 
8b40: 70 6f 73 73 69 62 6c 65 2e 0a 7d 20 2d 66 69 6c  possible..} -fil
8b50: 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20  es [.  test_set 
8b60: 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  $allquicktests -
8b70: 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a  exclude *malloc*
8b80: 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a   *ioerr* *fault*
8b90: 20 2a 62 69 67 66 69 6c 65 2a 20 2a 5f 65 72 72   *bigfile* *_err
8ba0: 2a 20 5c 0a 20 20 20 20 20 20 2a 66 74 73 35 63  * \.      *fts5c
8bb0: 6f 72 72 75 70 74 2a 20 2a 66 74 73 35 62 69 67  orrupt* *fts5big
8bc0: 2a 20 2a 66 74 73 35 61 6a 2a 0a 5d 20 2d 69 6e  * *fts5aj*.] -in
8bd0: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74  itialize {.  cat
8be0: 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20  ch {db close}.  
8bf0: 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
8c00: 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  .  sqlite3_confi
8c10: 67 5f 73 6f 72 74 65 72 72 65 66 20 30 0a 20 20  g_sorterref 0.  
8c20: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
8c30: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
8c40: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
8c50: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
8c60: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
8c70: 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  .  sqlite3_shutd
8c80: 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f  own.  sqlite3_co
8c90: 6e 66 69 67 5f 73 6f 72 74 65 72 72 65 66 20 2d  nfig_sorterref -
8ca0: 31 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  1.  sqlite3_init
8cb0: 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73  ialize.  autoins
8cc0: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
8cd0: 6f 6e 73 0a 7d 0a 0a 23 20 45 6e 64 20 6f 66 20  ons.}..# End of 
8ce0: 74 65 73 74 73 0a 23 23 23 23 23 23 23 23 23 23  tests.##########
8cf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8d30: 23 23 23 0a 0a 23 20 72 75 6e 5f 74 65 73 74 73  ###..# run_tests
8d40: 20 4e 41 4d 45 20 4f 50 54 49 4f 4e 53 0a 23 0a   NAME OPTIONS.#.
8d50: 23 20 77 68 65 72 65 20 61 76 61 69 6c 61 62 6c  # where availabl
8d60: 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 3a 20 20  e options are:  
8d70: 0a 23 0a 23 20 20 20 20 20 20 20 2d 64 65 73 63  .#.#       -desc
8d80: 72 69 70 74 69 6f 6e 20 54 49 54 4c 45 0a 23 20  ription TITLE.# 
8d90: 20 20 20 20 20 20 2d 69 6e 69 74 69 61 6c 69 7a        -initializ
8da0: 65 20 20 53 43 52 49 50 54 0a 23 20 20 20 20 20  e  SCRIPT.#     
8db0: 20 20 2d 73 68 75 74 64 6f 77 6e 20 20 20 20 53    -shutdown    S
8dc0: 43 52 49 50 54 0a 23 20 20 20 20 20 20 20 2d 66  CRIPT.#       -f
8dd0: 69 6c 65 73 20 20 20 20 20 20 20 4c 49 53 54 2d  iles       LIST-
8de0: 4f 46 2d 46 49 4c 45 53 0a 23 20 20 20 20 20 20  OF-FILES.#      
8df0: 20 2d 70 72 65 66 69 78 20 20 20 20 20 20 4e 41   -prefix      NA
8e00: 4d 45 0a 23 20 20 20 20 20 20 20 2d 64 62 63 6f  ME.#       -dbco
8e10: 6e 66 69 67 20 20 20 20 53 43 52 49 50 54 0a 23  nfig    SCRIPT.#
8e20: 0a 70 72 6f 63 20 72 75 6e 5f 74 65 73 74 73 20  .proc run_tests 
8e30: 7b 6e 61 6d 65 20 61 72 67 73 7d 20 7b 0a 20 20  {name args} {.  
8e40: 73 65 74 20 6f 70 74 69 6f 6e 73 28 2d 69 6e 69  set options(-ini
8e50: 74 69 61 6c 69 7a 65 29 20 22 22 0a 20 20 73 65  tialize) "".  se
8e60: 74 20 6f 70 74 69 6f 6e 73 28 2d 73 68 75 74 64  t options(-shutd
8e70: 6f 77 6e 29 20 22 22 0a 20 20 73 65 74 20 6f 70  own) "".  set op
8e80: 74 69 6f 6e 73 28 2d 70 72 65 66 69 78 29 20 22  tions(-prefix) "
8e90: 22 0a 20 20 73 65 74 20 6f 70 74 69 6f 6e 73 28  ".  set options(
8ea0: 2d 64 62 63 6f 6e 66 69 67 29 20 22 22 0a 20 20  -dbconfig) "".  
8eb0: 73 65 74 20 6f 70 74 69 6f 6e 73 28 2d 70 72 65  set options(-pre
8ec0: 73 71 6c 29 20 22 22 0a 0a 20 20 61 72 72 61 79  sql) ""..  array
8ed0: 20 73 65 74 20 6f 70 74 69 6f 6e 73 20 24 61 72   set options $ar
8ee0: 67 73 0a 0a 20 20 73 65 74 20 3a 3a 47 28 70 65  gs..  set ::G(pe
8ef0: 72 6d 3a 6e 61 6d 65 29 20 20 20 20 20 20 20 20  rm:name)        
8f00: 20 24 6e 61 6d 65 0a 20 20 73 65 74 20 3a 3a 47   $name.  set ::G
8f10: 28 70 65 72 6d 3a 70 72 65 66 69 78 29 20 20 20  (perm:prefix)   
8f20: 20 20 20 20 24 6f 70 74 69 6f 6e 73 28 2d 70 72      $options(-pr
8f30: 65 66 69 78 29 0a 20 20 73 65 74 20 3a 3a 47 28  efix).  set ::G(
8f40: 69 73 71 75 69 63 6b 29 20 20 20 20 20 20 20 20  isquick)        
8f50: 20 20 20 31 0a 20 20 73 65 74 20 3a 3a 47 28 70     1.  set ::G(p
8f60: 65 72 6d 3a 64 62 63 6f 6e 66 69 67 29 20 20 20  erm:dbconfig)   
8f70: 20 20 24 6f 70 74 69 6f 6e 73 28 2d 64 62 63 6f    $options(-dbco
8f80: 6e 66 69 67 29 0a 20 20 73 65 74 20 3a 3a 47 28  nfig).  set ::G(
8f90: 70 65 72 6d 3a 70 72 65 73 71 6c 29 20 20 20 20  perm:presql)    
8fa0: 20 20 20 24 6f 70 74 69 6f 6e 73 28 2d 70 72 65     $options(-pre
8fb0: 73 71 6c 29 0a 0a 20 20 66 6f 72 65 61 63 68 20  sql)..  foreach 
8fc0: 66 69 6c 65 20 5b 6c 73 6f 72 74 20 24 6f 70 74  file [lsort $opt
8fd0: 69 6f 6e 73 28 2d 66 69 6c 65 73 29 5d 20 7b 0a  ions(-files)] {.
8fe0: 20 20 20 20 75 70 6c 65 76 65 6c 20 24 6f 70 74      uplevel $opt
8ff0: 69 6f 6e 73 28 2d 69 6e 69 74 69 61 6c 69 7a 65  ions(-initialize
9000: 29 0a 20 20 20 20 69 66 20 7b 5b 66 69 6c 65 20  ).    if {[file 
9010: 74 61 69 6c 20 24 66 69 6c 65 5d 20 3d 3d 20 24  tail $file] == $
9020: 66 69 6c 65 7d 20 7b 20 73 65 74 20 66 69 6c 65  file} { set file
9030: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 3a 3a 74   [file join $::t
9040: 65 73 74 64 69 72 20 24 66 69 6c 65 5d 20 7d 0a  estdir $file] }.
9050: 20 20 20 20 73 6c 61 76 65 5f 74 65 73 74 5f 66      slave_test_f
9060: 69 6c 65 20 24 66 69 6c 65 0a 20 20 20 20 75 70  ile $file.    up
9070: 6c 65 76 65 6c 20 24 6f 70 74 69 6f 6e 73 28 2d  level $options(-
9080: 73 68 75 74 64 6f 77 6e 29 0a 0a 20 20 20 20 75  shutdown)..    u
9090: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
90a0: 20 3a 3a 47 28 70 65 72 6d 3a 73 71 6c 69 74 65   ::G(perm:sqlite
90b0: 33 5f 61 72 67 73 29 0a 20 20 7d 0a 0a 20 20 75  3_args).  }..  u
90c0: 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 6e 61  nset ::G(perm:na
90d0: 6d 65 29 0a 20 20 75 6e 73 65 74 20 3a 3a 47 28  me).  unset ::G(
90e0: 70 65 72 6d 3a 70 72 65 66 69 78 29 0a 20 20 75  perm:prefix).  u
90f0: 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 64 62  nset ::G(perm:db
9100: 63 6f 6e 66 69 67 29 0a 20 20 75 6e 73 65 74 20  config).  unset 
9110: 3a 3a 47 28 70 65 72 6d 3a 70 72 65 73 71 6c 29  ::G(perm:presql)
9120: 0a 7d 0a 0a 70 72 6f 63 20 72 75 6e 5f 74 65 73  .}..proc run_tes
9130: 74 5f 73 75 69 74 65 20 7b 6e 61 6d 65 7d 20 7b  t_suite {name} {
9140: 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69  .  if {[info exi
9150: 73 74 73 20 3a 3a 74 65 73 74 73 70 65 63 28 24  sts ::testspec($
9160: 6e 61 6d 65 29 5d 3d 3d 30 7d 20 7b 0a 20 20 20  name)]==0} {.   
9170: 20 65 72 72 6f 72 20 22 4e 6f 20 73 75 63 68 20   error "No such 
9180: 74 65 73 74 20 73 75 69 74 65 3a 20 24 6e 61 6d  test suite: $nam
9190: 65 22 0a 20 20 7d 0a 20 20 75 70 6c 65 76 65 6c  e".  }.  uplevel
91a0: 20 72 75 6e 5f 74 65 73 74 73 20 24 6e 61 6d 65   run_tests $name
91b0: 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24 6e 61   $::testspec($na
91c0: 6d 65 29 0a 7d 0a 0a 70 72 6f 63 20 68 65 6c 70  me).}..proc help
91d0: 20 7b 7d 20 7b 0a 20 20 70 75 74 73 20 22 55 73   {} {.  puts "Us
91e0: 61 67 65 3a 20 24 3a 3a 61 72 67 76 30 20 54 45  age: $::argv0 TE
91f0: 53 54 53 55 49 54 45 20 3f 54 45 53 54 46 49 4c  STSUITE ?TESTFIL
9200: 45 3f 22 0a 20 20 70 75 74 73 20 22 22 0a 20 20  E?".  puts "".  
9210: 70 75 74 73 20 22 41 76 61 69 6c 61 62 6c 65 20  puts "Available 
9220: 74 65 73 74 2d 73 75 69 74 65 73 20 61 72 65 3a  test-suites are:
9230: 22 0a 0a 20 20 73 65 74 20 69 50 6f 73 20 30 0a  "..  set iPos 0.
9240: 20 20 66 6f 72 65 61 63 68 20 6b 20 24 3a 3a 74    foreach k $::t
9250: 65 73 74 73 75 69 74 65 6c 69 73 74 20 7b 0a 20  estsuitelist {. 
9260: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69     if {[info exi
9270: 73 74 73 20 3a 3a 74 65 73 74 73 70 65 63 28 24  sts ::testspec($
9280: 6b 29 5d 7d 20 7b 0a 20 20 20 20 20 20 73 77 69  k)]} {.      swi
9290: 74 63 68 20 24 69 50 6f 73 20 7b 0a 20 20 20 20  tch $iPos {.    
92a0: 20 20 20 20 30 20 7b 0a 20 20 20 20 20 20 20 20      0 {.        
92b0: 20 20 70 75 74 73 20 22 22 0a 20 20 20 20 20 20    puts "".      
92c0: 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c      puts -nonewl
92d0: 69 6e 65 20 22 20 20 5b 66 6f 72 6d 61 74 20 25  ine "  [format %
92e0: 2d 33 30 73 20 24 6b 5d 22 0a 20 20 20 20 20 20  -30s $k]".      
92f0: 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 31 20 7b    }..        1 {
9300: 0a 20 20 20 20 20 20 20 20 20 20 70 75 74 73 20  .          puts 
9310: 2d 6e 6f 6e 65 77 6c 69 6e 65 20 5b 66 6f 72 6d  -nonewline [form
9320: 61 74 20 25 2d 33 30 73 20 24 6b 5d 0a 20 20 20  at %-30s $k].   
9330: 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20       }..        
9340: 32 20 7b 0a 20 20 20 20 20 20 20 20 20 20 70 75  2 {.          pu
9350: 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 6b  ts -nonewline $k
9360: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
9370: 20 7d 0a 0a 20 20 20 20 20 20 73 65 74 20 69 50   }..      set iP
9380: 6f 73 20 5b 65 78 70 72 20 28 28 24 69 50 6f 73  os [expr (($iPos
9390: 2b 31 29 20 25 20 33 29 5d 0a 20 20 20 20 7d 0a  +1) % 3)].    }.
93a0: 20 20 7d 0a 20 20 70 75 74 73 20 22 22 0a 20 20    }.  puts "".  
93b0: 65 78 69 74 20 2d 31 0a 7d 0a 0a 69 66 20 7b 5b  exit -1.}..if {[
93c0: 66 69 6c 65 20 74 61 69 6c 20 24 61 72 67 76 30  file tail $argv0
93d0: 5d 20 3d 3d 20 22 70 65 72 6d 75 74 61 74 69 6f  ] == "permutatio
93e0: 6e 73 2e 74 65 73 74 22 7d 20 7b 0a 20 20 70 72  ns.test"} {.  pr
93f0: 6f 63 20 6d 61 69 6e 20 7b 61 72 67 76 7d 20 7b  oc main {argv} {
9400: 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74  .    if {[llengt
9410: 68 20 24 61 72 67 76 5d 3d 3d 30 7d 20 7b 0a 20  h $argv]==0} {. 
9420: 20 20 20 20 20 68 65 6c 70 0a 20 20 20 20 7d 20       help.    } 
9430: 65 6c 73 65 20 7b 0a 0a 20 20 20 20 20 20 23 20  else {..      # 
9440: 53 65 65 20 69 66 20 74 68 65 20 66 69 72 73 74  See if the first
9450: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 6e   argument is a n
9460: 61 6d 65 64 20 74 65 73 74 2d 73 75 69 74 65 2e  amed test-suite.
9470: 0a 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 73  .      #.      s
9480: 65 74 20 73 75 69 74 65 20 5b 66 69 6c 65 20 74  et suite [file t
9490: 61 69 6c 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  ail [lindex $arg
94a0: 76 20 30 5d 5d 0a 20 20 20 20 20 20 69 66 20 7b  v 0]].      if {
94b0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 74  [info exists ::t
94c0: 65 73 74 73 70 65 63 28 24 73 75 69 74 65 29 5d  estspec($suite)]
94d0: 7d 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 20  } {.        set 
94e0: 53 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24 73  S $::testspec($s
94f0: 75 69 74 65 29 0a 20 20 20 20 20 20 20 20 73 65  uite).        se
9500: 74 20 69 20 31 0a 20 20 20 20 20 20 7d 20 65 6c  t i 1.      } el
9510: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74  se {.        set
9520: 20 53 20 5b 6c 69 73 74 5d 0a 20 20 20 20 20 20   S [list].      
9530: 20 20 73 65 74 20 69 20 30 0a 20 20 20 20 20 20    set i 0.      
9540: 7d 0a 0a 20 20 20 20 20 20 73 65 74 20 65 78 74  }..      set ext
9550: 72 61 20 22 22 0a 20 20 20 20 20 20 69 66 20 7b  ra "".      if {
9560: 24 69 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 24 61  $i < [llength $a
9570: 72 67 76 5d 20 26 26 20 5b 73 74 72 69 6e 67 20  rgv] && [string 
9580: 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24 61  range [lindex $a
9590: 72 67 76 20 24 69 5d 20 30 20 30 5d 21 3d 22 2d  rgv $i] 0 0]!="-
95a0: 22 20 7d 20 7b 0a 20 20 20 20 20 20 20 20 73 65  " } {.        se
95b0: 74 20 66 69 6c 65 73 20 5b 6c 69 73 74 5d 0a 20  t files [list]. 
95c0: 20 20 20 20 20 20 20 66 6f 72 20 7b 7d 20 7b 24         for {} {$
95d0: 69 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 24 61 72  i < [llength $ar
95e0: 67 76 5d 7d 20 7b 69 6e 63 72 20 69 7d 20 7b 0a  gv]} {incr i} {.
95f0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 70 61            set pa
9600: 74 74 65 72 6e 20 5b 73 74 72 69 6e 67 20 6d 61  ttern [string ma
9610: 70 20 7b 25 20 2a 7d 20 5b 6c 69 6e 64 65 78 20  p {% *} [lindex 
9620: 24 61 72 67 76 20 24 69 5d 5d 0a 20 20 20 20 20  $argv $i]].     
9630: 20 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67       if {[string
9640: 20 72 61 6e 67 65 20 24 70 61 74 74 65 72 6e 20   range $pattern 
9650: 30 20 30 5d 3d 3d 22 2d 22 7d 20 62 72 65 61 6b  0 0]=="-"} break
9660: 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
9670: 63 68 20 66 20 24 3a 3a 61 6c 6c 74 65 73 74 73  ch f $::alltests
9680: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73   {.            s
9690: 65 74 20 74 61 69 6c 20 5b 66 69 6c 65 20 74 61  et tail [file ta
96a0: 69 6c 20 24 66 5d 0a 20 20 20 20 20 20 20 20 20  il $f].         
96b0: 20 20 20 69 66 20 7b 5b 6c 73 65 61 72 63 68 20     if {[lsearch 
96c0: 24 66 69 6c 65 73 20 24 66 5d 3c 30 20 26 26 20  $files $f]<0 && 
96d0: 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 24 70  [string match $p
96e0: 61 74 74 65 72 6e 20 24 74 61 69 6c 5d 7d 20 7b  attern $tail]} {
96f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c  .              l
9700: 61 70 70 65 6e 64 20 66 69 6c 65 73 20 24 66 0a  append files $f.
9710: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
9720: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
9730: 20 20 7d 0a 20 20 20 20 20 20 20 20 73 65 74 20    }.        set 
9740: 65 78 74 72 61 20 5b 6c 69 73 74 20 2d 66 69 6c  extra [list -fil
9750: 65 73 20 24 66 69 6c 65 73 5d 0a 20 20 20 20 20  es $files].     
9760: 20 7d 0a 0a 20 20 20 20 20 20 65 76 61 6c 20 72   }..      eval r
9770: 75 6e 5f 74 65 73 74 73 20 24 73 75 69 74 65 20  un_tests $suite 
9780: 24 53 20 24 65 78 74 72 61 0a 20 20 20 20 7d 0a  $S $extra.    }.
9790: 20 20 7d 0a 20 20 6d 61 69 6e 20 24 61 72 67 76    }.  main $argv
97a0: 0a 20 20 66 69 6e 69 73 68 5f 74 65 73 74 0a 7d  .  finish_test.}
97b0: 0a                                               .