/ Hex Artifact Content
Login

Artifact bc474bafb022cc5014ef3a9c3d5ab61d6d6f587c:


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 24 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74   $testdir/../ext
0a30: 2f 72 74 72 65 65 2f 2a 2e 74 65 73 74 5d 20 7b  /rtree/*.test] {
0a40: 20 0a 20 20 6c 61 70 70 65 6e 64 20 61 6c 6c 74   .  lappend allt
0a50: 65 73 74 73 20 24 66 20 0a 7d 0a 0a 69 66 20 7b  ests $f .}..if {
0a60: 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28  $::tcl_platform(
0a70: 70 6c 61 74 66 6f 72 6d 29 21 3d 22 75 6e 69 78  platform)!="unix
0a80: 22 7d 20 7b 0a 20 20 73 65 74 20 61 6c 6c 74 65  "} {.  set allte
0a90: 73 74 73 20 5b 74 65 73 74 5f 73 65 74 20 24 61  sts [test_set $a
0aa0: 6c 6c 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  lltests -exclude
0ab0: 20 63 72 61 73 68 2e 74 65 73 74 20 63 72 61 73   crash.test cras
0ac0: 68 32 2e 74 65 73 74 5d 0a 7d 0a 73 65 74 20 61  h2.test].}.set a
0ad0: 6c 6c 74 65 73 74 73 20 5b 74 65 73 74 5f 73 65  lltests [test_se
0ae0: 74 20 24 61 6c 6c 74 65 73 74 73 20 2d 65 78 63  t $alltests -exc
0af0: 6c 75 64 65 20 7b 0a 20 20 61 6c 6c 2e 74 65 73  lude {.  all.tes
0b00: 74 20 20 20 20 20 20 20 20 61 73 79 6e 63 2e 74  t        async.t
0b10: 65 73 74 20 20 20 20 20 20 20 20 20 71 75 69 63  est         quic
0b20: 6b 2e 74 65 73 74 20 20 76 65 72 79 71 75 69 63  k.test  veryquic
0b30: 6b 2e 74 65 73 74 0a 20 20 6d 65 6d 6c 65 61 6b  k.test.  memleak
0b40: 2e 74 65 73 74 20 20 20 20 70 65 72 6d 75 74 61  .test    permuta
0b50: 74 69 6f 6e 73 2e 74 65 73 74 20 20 73 6f 61 6b  tions.test  soak
0b60: 2e 74 65 73 74 20 20 20 66 74 73 33 2e 74 65 73  .test   fts3.tes
0b70: 74 0a 20 20 6d 61 6c 6c 6f 63 41 6c 6c 2e 74 65  t.  mallocAll.te
0b80: 73 74 20 20 72 74 72 65 65 2e 74 65 73 74 20 20  st  rtree.test  
0b90: 20 20 20 20 20 20 20 66 75 6c 6c 2e 74 65 73 74         full.test
0ba0: 0a 7d 5d 0a 0a 73 65 74 20 61 6c 6c 71 75 69 63  .}]..set allquic
0bb0: 6b 74 65 73 74 73 20 5b 74 65 73 74 5f 73 65 74  ktests [test_set
0bc0: 20 24 61 6c 6c 74 65 73 74 73 20 2d 65 78 63 6c   $alltests -excl
0bd0: 75 64 65 20 7b 0a 20 20 61 73 79 6e 63 32 2e 74  ude {.  async2.t
0be0: 65 73 74 20 61 73 79 6e 63 33 2e 74 65 73 74 20  est async3.test 
0bf0: 62 61 63 6b 75 70 5f 69 6f 65 72 72 2e 74 65 73  backup_ioerr.tes
0c00: 74 20 63 6f 72 72 75 70 74 2e 74 65 73 74 0a 20  t corrupt.test. 
0c10: 20 63 6f 72 72 75 70 74 43 2e 74 65 73 74 20 63   corruptC.test c
0c20: 72 61 73 68 2e 74 65 73 74 20 63 72 61 73 68 32  rash.test crash2
0c30: 2e 74 65 73 74 20 63 72 61 73 68 33 2e 74 65 73  .test crash3.tes
0c40: 74 20 63 72 61 73 68 34 2e 74 65 73 74 20 63 72  t crash4.test cr
0c50: 61 73 68 35 2e 74 65 73 74 0a 20 20 63 72 61 73  ash5.test.  cras
0c60: 68 36 2e 74 65 73 74 20 63 72 61 73 68 37 2e 74  h6.test crash7.t
0c70: 65 73 74 20 64 65 6c 65 74 65 33 2e 74 65 73 74  est delete3.test
0c80: 20 65 5f 66 74 73 33 2e 74 65 73 74 20 66 74 73   e_fts3.test fts
0c90: 33 72 6e 64 2e 74 65 73 74 0a 20 20 66 6b 65 79  3rnd.test.  fkey
0ca0: 5f 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 66 75 7a  _malloc.test fuz
0cb0: 7a 2e 74 65 73 74 20 66 75 7a 7a 33 2e 74 65 73  z.test fuzz3.tes
0cc0: 74 20 66 75 7a 7a 5f 6d 61 6c 6c 6f 63 2e 74 65  t fuzz_malloc.te
0cd0: 73 74 20 69 6e 32 2e 74 65 73 74 20 6c 6f 61 64  st in2.test load
0ce0: 65 78 74 2e 74 65 73 74 0a 20 20 6d 69 73 63 37  ext.test.  misc7
0cf0: 2e 74 65 73 74 20 6d 75 74 65 78 32 2e 74 65 73  .test mutex2.tes
0d00: 74 20 6e 6f 74 69 66 79 32 2e 74 65 73 74 20 6f  t notify2.test o
0d10: 6e 65 66 69 6c 65 2e 74 65 73 74 20 70 61 67 65  nefile.test page
0d20: 72 66 61 75 6c 74 32 2e 74 65 73 74 20 0a 20 20  rfault2.test .  
0d30: 73 61 76 65 70 6f 69 6e 74 34 2e 74 65 73 74 20  savepoint4.test 
0d40: 73 61 76 65 70 6f 69 6e 74 36 2e 74 65 73 74 20  savepoint6.test 
0d50: 73 65 6c 65 63 74 39 2e 74 65 73 74 20 0a 20 20  select9.test .  
0d60: 73 70 65 65 64 31 2e 74 65 73 74 20 73 70 65 65  speed1.test spee
0d70: 64 31 70 2e 74 65 73 74 20 73 70 65 65 64 32 2e  d1p.test speed2.
0d80: 74 65 73 74 20 73 70 65 65 64 33 2e 74 65 73 74  test speed3.test
0d90: 20 73 70 65 65 64 34 2e 74 65 73 74 20 0a 20 20   speed4.test .  
0da0: 73 70 65 65 64 34 70 2e 74 65 73 74 20 73 71 6c  speed4p.test sql
0db0: 6c 69 6d 69 74 73 31 2e 74 65 73 74 20 74 6b 74  limits1.test tkt
0dc0: 32 36 38 36 2e 74 65 73 74 20 74 68 72 65 61 64  2686.test thread
0dd0: 30 30 31 2e 74 65 73 74 20 74 68 72 65 61 64 30  001.test thread0
0de0: 30 32 2e 74 65 73 74 0a 20 20 74 68 72 65 61 64  02.test.  thread
0df0: 30 30 33 2e 74 65 73 74 20 74 68 72 65 61 64 30  003.test thread0
0e00: 30 34 2e 74 65 73 74 20 74 68 72 65 61 64 30 30  04.test thread00
0e10: 35 2e 74 65 73 74 20 74 72 61 6e 73 32 2e 74 65  5.test trans2.te
0e20: 73 74 20 76 61 63 75 75 6d 33 2e 74 65 73 74 20  st vacuum3.test 
0e30: 0a 20 20 69 6e 63 72 76 61 63 75 75 6d 5f 69 6f  .  incrvacuum_io
0e40: 65 72 72 2e 74 65 73 74 20 61 75 74 6f 76 61 63  err.test autovac
0e50: 75 75 6d 5f 63 72 61 73 68 2e 74 65 73 74 20 62  uum_crash.test b
0e60: 74 72 65 65 38 2e 74 65 73 74 20 73 68 61 72 65  tree8.test share
0e70: 64 5f 65 72 72 2e 74 65 73 74 0a 20 20 76 74 61  d_err.test.  vta
0e80: 62 5f 65 72 72 2e 74 65 73 74 20 77 61 6c 73 6c  b_err.test walsl
0e90: 6f 77 2e 74 65 73 74 20 77 61 6c 63 72 61 73 68  ow.test walcrash
0ea0: 2e 74 65 73 74 20 77 61 6c 63 72 61 73 68 33 2e  .test walcrash3.
0eb0: 74 65 73 74 0a 20 20 77 61 6c 74 68 72 65 61 64  test.  walthread
0ec0: 2e 74 65 73 74 20 72 74 72 65 65 33 2e 74 65 73  .test rtree3.tes
0ed0: 74 20 69 6e 64 65 78 66 61 75 6c 74 2e 74 65 73  t indexfault.tes
0ee0: 74 20 73 65 63 75 72 65 64 65 6c 32 2e 74 65 73  t securedel2.tes
0ef0: 74 0a 20 20 66 74 73 34 67 72 6f 77 74 68 2e 74  t.  fts4growth.t
0f00: 65 73 74 20 66 74 73 34 67 72 6f 77 74 68 32 2e  est fts4growth2.
0f10: 74 65 73 74 0a 7d 5d 0a 69 66 20 7b 5b 69 6e 66  test.}].if {[inf
0f20: 6f 20 65 78 69 73 74 73 20 3a 3a 65 6e 76 28 51  o exists ::env(Q
0f30: 55 49 43 4b 54 45 53 54 5f 49 4e 43 4c 55 44 45  UICKTEST_INCLUDE
0f40: 29 5d 7d 20 7b 0a 20 20 73 65 74 20 61 6c 6c 71  )]} {.  set allq
0f50: 75 69 63 6b 74 65 73 74 73 20 5b 63 6f 6e 63 61  uicktests [conca
0f60: 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  t $allquicktests
0f70: 20 24 3a 3a 65 6e 76 28 51 55 49 43 4b 54 45 53   $::env(QUICKTES
0f80: 54 5f 49 4e 43 4c 55 44 45 29 5d 0a 7d 0a 0a 23  T_INCLUDE)].}..#
0f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fd0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 53  ############.# S
0fe0: 74 61 72 74 20 6f 66 20 74 65 73 74 73 0a 23 0a  tart of tests.#.
0ff0: 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .#--------------
1000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 44 65  -----------.# De
1040: 66 69 6e 65 20 74 68 65 20 67 65 6e 65 72 69 63  fine the generic
1050: 20 74 65 73 74 20 73 75 69 74 65 73 3a 0a 23 0a   test suites:.#.
1060: 23 20 20 20 76 65 72 79 71 75 69 63 6b 0a 23 20  #   veryquick.# 
1070: 20 20 71 75 69 63 6b 0a 23 20 20 20 66 75 6c 6c    quick.#   full
1080: 0a 23 0a 6c 61 70 70 65 6e 64 20 3a 3a 74 65 73  .#.lappend ::tes
1090: 74 73 75 69 74 65 6c 69 73 74 20 78 78 78 0a 0a  tsuitelist xxx..
10a0: 74 65 73 74 5f 73 75 69 74 65 20 22 76 65 72 79  test_suite "very
10b0: 71 75 69 63 6b 22 20 2d 70 72 65 66 69 78 20 22  quick" -prefix "
10c0: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
10d0: 0a 20 20 22 56 65 72 79 22 20 71 75 69 63 6b 20  .  "Very" quick 
10e0: 74 65 73 74 20 73 75 69 74 65 2e 20 52 75 6e 73  test suite. Runs
10f0: 20 69 6e 20 6c 65 73 73 20 74 68 61 6e 20 35 20   in less than 5 
1100: 6d 69 6e 75 74 65 73 20 6f 6e 20 61 20 77 6f 72  minutes on a wor
1110: 6b 73 74 61 74 69 6f 6e 2e 20 0a 20 20 54 68 69  kstation. .  Thi
1120: 73 20 74 65 73 74 20 73 75 69 74 65 20 69 73 20  s test suite is 
1130: 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20  the same as the 
1140: 22 71 75 69 63 6b 22 20 74 65 73 74 73 2c 20 65  "quick" tests, e
1150: 78 63 65 70 74 20 74 68 61 74 20 73 6f 6d 65 20  xcept that some 
1160: 66 69 6c 65 73 0a 20 20 74 68 61 74 20 74 65 73  files.  that tes
1170: 74 20 6d 61 6c 6c 6f 63 20 61 6e 64 20 49 4f 20  t malloc and IO 
1180: 65 72 72 6f 72 73 20 61 72 65 20 6f 6d 69 74 74  errors are omitt
1190: 65 64 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20  ed..} -files [. 
11a0: 20 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75   test_set $allqu
11b0: 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64  icktests -exclud
11c0: 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72  e *malloc* *ioer
11d0: 72 2a 20 2a 66 61 75 6c 74 2a 0a 5d 0a 0a 74 65  r* *fault*.]..te
11e0: 73 74 5f 73 75 69 74 65 20 22 6d 6d 61 70 22 20  st_suite "mmap" 
11f0: 2d 70 72 65 66 69 78 20 22 6d 6d 2d 22 20 2d 64  -prefix "mm-" -d
1200: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 53  escription {.  S
1210: 69 6d 69 6c 61 72 20 74 6f 20 76 65 72 79 71 75  imilar to veryqu
1220: 69 63 6b 2e 20 45 78 63 65 70 74 20 77 69 74 68  ick. Except with
1230: 20 6d 65 6d 6f 72 79 20 6d 61 70 70 69 6e 67 20   memory mapping 
1240: 64 69 73 61 62 6c 65 64 2e 0a 7d 20 2d 70 72 65  disabled..} -pre
1250: 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6d  sql {.  pragma m
1260: 6d 61 70 5f 73 69 7a 65 20 3d 20 32 36 38 34 33  map_size = 26843
1270: 35 34 35 36 3b 0a 7d 20 2d 66 69 6c 65 73 20 5b  5456;.} -files [
1280: 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c 6c  .  test_set $all
1290: 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c  quicktests -excl
12a0: 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f  ude *malloc* *io
12b0: 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 2d 69 6e  err* *fault* -in
12c0: 63 6c 75 64 65 20 6d 61 6c 6c 6f 63 2e 74 65 73  clude malloc.tes
12d0: 74 0a 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20  t.]..test_suite 
12e0: 22 76 61 6c 67 72 69 6e 64 22 20 2d 70 72 65 66  "valgrind" -pref
12f0: 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74 69  ix "" -descripti
1300: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 68 65 20 22  on {.  Run the "
1310: 76 65 72 79 71 75 69 63 6b 22 20 74 65 73 74 20  veryquick" test 
1320: 73 75 69 74 65 20 77 69 74 68 20 61 20 63 6f 75  suite with a cou
1330: 70 6c 65 20 6f 66 20 6d 75 6c 74 69 2d 70 72 6f  ple of multi-pro
1340: 63 65 73 73 20 74 65 73 74 73 20 28 74 68 61 74  cess tests (that
1350: 0a 20 20 66 61 69 6c 20 75 6e 64 65 72 20 76 61  .  fail under va
1360: 6c 67 72 69 6e 64 29 20 6f 6d 69 74 74 65 64 2e  lgrind) omitted.
1370: 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65  .} -files [.  te
1380: 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b  st_set $allquick
1390: 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a  tests -exclude *
13a0: 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20  malloc* *ioerr* 
13b0: 2a 66 61 75 6c 74 2a 20 77 61 6c 2e 74 65 73 74  *fault* wal.test
13c0: 20 61 74 6f 66 31 2e 74 65 73 74 0a 5d 20 2d 69   atof1.test.] -i
13d0: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 73 65  nitialize {.  se
13e0: 74 20 3a 3a 47 28 76 61 6c 67 72 69 6e 64 29 20  t ::G(valgrind) 
13f0: 31 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  1.} -shutdown {.
1400: 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c    unset -nocompl
1410: 61 69 6e 20 3a 3a 47 28 76 61 6c 67 72 69 6e 64  ain ::G(valgrind
1420: 29 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20  ).}..test_suite 
1430: 22 76 61 6c 67 72 69 6e 64 2d 6e 6f 6c 6f 6f 6b  "valgrind-nolook
1440: 61 73 69 64 65 22 20 2d 70 72 65 66 69 78 20 22  aside" -prefix "
1450: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
1460: 0a 20 20 52 75 6e 20 74 68 65 20 22 76 65 72 79  .  Run the "very
1470: 71 75 69 63 6b 22 20 74 65 73 74 20 73 75 69 74  quick" test suit
1480: 65 20 77 69 74 68 20 61 20 63 6f 75 70 6c 65 20  e with a couple 
1490: 6f 66 20 6d 75 6c 74 69 2d 70 72 6f 63 65 73 73  of multi-process
14a0: 20 74 65 73 74 73 20 28 74 68 61 74 0a 20 20 66   tests (that.  f
14b0: 61 69 6c 20 75 6e 64 65 72 20 76 61 6c 67 72 69  ail under valgri
14c0: 6e 64 29 20 6f 6d 69 74 74 65 64 2e 0a 7d 20 2d  nd) omitted..} -
14d0: 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73  files [.  test_s
14e0: 65 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73 74  et $allquicktest
14f0: 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c  s -exclude *mall
1500: 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75  oc* *ioerr* *fau
1510: 6c 74 2a 20 77 61 6c 2e 74 65 73 74 20 61 74 6f  lt* wal.test ato
1520: 66 31 2e 74 65 73 74 0a 5d 20 2d 69 6e 69 74 69  f1.test.] -initi
1530: 61 6c 69 7a 65 20 7b 0a 20 20 73 65 74 20 3a 3a  alize {.  set ::
1540: 47 28 76 61 6c 67 72 69 6e 64 29 20 31 0a 20 20  G(valgrind) 1.  
1550: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
1560: 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  .  sqlite3_shutd
1570: 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f  own.  sqlite3_co
1580: 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30  nfig_lookaside 0
1590: 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69   0.  sqlite3_ini
15a0: 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e  tialize.  autoin
15b0: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
15c0: 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  ions.} -shutdown
15d0: 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   {.  catch {db c
15e0: 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f  lose}.  sqlite3_
15f0: 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74  shutdown.  sqlit
1600: 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73  e3_config_lookas
1610: 69 64 65 20 31 30 30 20 35 30 30 0a 20 20 73 71  ide 100 500.  sq
1620: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
1630: 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74  .  autoinstall_t
1640: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20  est_functions.  
1650: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69  unset -nocomplai
1660: 6e 20 3a 3a 47 28 76 61 6c 67 72 69 6e 64 29 0a  n ::G(valgrind).
1670: 7d 0a 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  }...test_suite "
1680: 71 75 69 63 6b 22 20 2d 70 72 65 66 69 78 20 22  quick" -prefix "
1690: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
16a0: 0a 20 20 51 75 69 63 6b 20 74 65 73 74 20 73 75  .  Quick test su
16b0: 69 74 65 2e 20 52 75 6e 73 20 69 6e 20 61 72 6f  ite. Runs in aro
16c0: 75 6e 64 20 31 30 20 6d 69 6e 75 74 65 73 20 6f  und 10 minutes o
16d0: 6e 20 61 20 77 6f 72 6b 73 74 61 74 69 6f 6e 2e  n a workstation.
16e0: 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65  .} -files [.  te
16f0: 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b  st_set $allquick
1700: 74 65 73 74 73 0a 5d 0a 0a 74 65 73 74 5f 73 75  tests.]..test_su
1710: 69 74 65 20 22 66 75 6c 6c 22 20 2d 70 72 65 66  ite "full" -pref
1720: 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74 69  ix "" -descripti
1730: 6f 6e 20 7b 0a 20 20 46 75 6c 6c 20 74 65 73 74  on {.  Full test
1740: 20 73 75 69 74 65 2e 20 54 61 6b 65 73 20 61 20   suite. Takes a 
1750: 6c 6f 6e 67 20 74 69 6d 65 2e 0a 7d 20 2d 66 69  long time..} -fi
1760: 6c 65 73 20 5b 20 0a 20 20 74 65 73 74 5f 73 65  les [ .  test_se
1770: 74 20 24 61 6c 6c 74 65 73 74 73 20 0a 5d 20 2d  t $alltests .] -
1780: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 75  initialize {.  u
1790: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
17a0: 20 3a 3a 47 28 69 73 71 75 69 63 6b 29 0a 7d 0a   ::G(isquick).}.
17b0: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 74 68 72  .test_suite "thr
17c0: 65 61 64 73 22 20 2d 70 72 65 66 69 78 20 22 22  eads" -prefix ""
17d0: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
17e0: 20 20 41 6c 6c 20 6d 75 6c 74 69 2d 74 68 72 65    All multi-thre
17f0: 61 64 65 64 20 74 65 73 74 73 2e 0a 7d 20 2d 66  aded tests..} -f
1800: 69 6c 65 73 20 7b 0a 20 20 6e 6f 74 69 66 79 32  iles {.  notify2
1810: 2e 74 65 73 74 20 20 20 74 68 72 65 61 64 30 30  .test   thread00
1820: 31 2e 74 65 73 74 20 74 68 72 65 61 64 30 30 32  1.test thread002
1830: 2e 74 65 73 74 20 74 68 72 65 61 64 30 30 33 2e  .test thread003.
1840: 74 65 73 74 20 0a 20 20 74 68 72 65 61 64 30 30  test .  thread00
1850: 34 2e 74 65 73 74 20 74 68 72 65 61 64 30 30 35  4.test thread005
1860: 2e 74 65 73 74 20 77 61 6c 74 68 72 65 61 64 2e  .test walthread.
1870: 74 65 73 74 0a 7d 0a 0a 74 65 73 74 5f 73 75 69  test.}..test_sui
1880: 74 65 20 22 66 74 73 33 22 20 2d 70 72 65 66 69  te "fts3" -prefi
1890: 78 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f  x "" -descriptio
18a0: 6e 20 7b 0a 20 20 41 6c 6c 20 46 54 53 33 20 74  n {.  All FTS3 t
18b0: 65 73 74 73 20 65 78 63 65 70 74 20 66 74 73 33  ests except fts3
18c0: 72 6e 64 2e 74 65 73 74 2e 0a 7d 20 2d 66 69 6c  rnd.test..} -fil
18d0: 65 73 20 7b 0a 20 20 66 74 73 33 61 61 2e 74 65  es {.  fts3aa.te
18e0: 73 74 20 66 74 73 33 61 62 2e 74 65 73 74 20 66  st fts3ab.test f
18f0: 74 73 33 61 63 2e 74 65 73 74 20 66 74 73 33 61  ts3ac.test fts3a
1900: 64 2e 74 65 73 74 20 66 74 73 33 61 65 2e 74 65  d.test fts3ae.te
1910: 73 74 0a 20 20 66 74 73 33 61 66 2e 74 65 73 74  st.  fts3af.test
1920: 20 66 74 73 33 61 67 2e 74 65 73 74 20 66 74 73   fts3ag.test fts
1930: 33 61 68 2e 74 65 73 74 20 66 74 73 33 61 69 2e  3ah.test fts3ai.
1940: 74 65 73 74 20 66 74 73 33 61 6a 2e 74 65 73 74  test fts3aj.test
1950: 0a 20 20 66 74 73 33 61 6b 2e 74 65 73 74 20 66  .  fts3ak.test f
1960: 74 73 33 61 6c 2e 74 65 73 74 20 66 74 73 33 61  ts3al.test fts3a
1970: 6d 2e 74 65 73 74 20 66 74 73 33 61 6e 2e 74 65  m.test fts3an.te
1980: 73 74 20 66 74 73 33 61 6f 2e 74 65 73 74 0a 20  st fts3ao.test. 
1990: 20 66 74 73 33 61 74 6f 6b 65 6e 2e 74 65 73 74   fts3atoken.test
19a0: 20 66 74 73 33 62 2e 74 65 73 74 20 66 74 73 33   fts3b.test fts3
19b0: 63 2e 74 65 73 74 20 66 74 73 33 63 6f 76 2e 74  c.test fts3cov.t
19c0: 65 73 74 20 66 74 73 33 64 2e 74 65 73 74 0a 20  est fts3d.test. 
19d0: 20 66 74 73 33 64 65 66 65 72 2e 74 65 73 74 20   fts3defer.test 
19e0: 66 74 73 33 64 65 66 65 72 32 2e 74 65 73 74 20  fts3defer2.test 
19f0: 66 74 73 33 65 2e 74 65 73 74 20 66 74 73 33 65  fts3e.test fts3e
1a00: 78 70 72 2e 74 65 73 74 20 66 74 73 33 65 78 70  xpr.test fts3exp
1a10: 72 32 2e 74 65 73 74 20 0a 20 20 66 74 73 33 65  r2.test .  fts3e
1a20: 78 70 72 33 2e 74 65 73 74 0a 20 20 66 74 73 33  xpr3.test.  fts3
1a30: 6e 65 61 72 2e 74 65 73 74 20 66 74 73 33 71 75  near.test fts3qu
1a40: 65 72 79 2e 74 65 73 74 20 66 74 73 33 73 68 61  ery.test fts3sha
1a50: 72 65 64 2e 74 65 73 74 20 66 74 73 33 73 6e 69  red.test fts3sni
1a60: 70 70 65 74 2e 74 65 73 74 20 0a 20 20 66 74 73  ppet.test .  fts
1a70: 33 73 6f 72 74 2e 74 65 73 74 0a 20 20 66 74 73  3sort.test.  fts
1a80: 33 66 61 75 6c 74 2e 74 65 73 74 20 66 74 73 33  3fault.test fts3
1a90: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 66 74 73 33  malloc.test fts3
1aa0: 6d 61 74 63 68 69 6e 66 6f 2e 74 65 73 74 0a 20  matchinfo.test. 
1ab0: 20 66 74 73 33 61 75 78 31 2e 74 65 73 74 20 66   fts3aux1.test f
1ac0: 74 73 33 63 6f 6d 70 31 2e 74 65 73 74 20 66 74  ts3comp1.test ft
1ad0: 73 33 61 75 74 6f 2e 74 65 73 74 0a 20 20 66 74  s3auto.test.  ft
1ae0: 73 34 61 61 2e 74 65 73 74 20 66 74 73 34 63 6f  s4aa.test fts4co
1af0: 6e 74 65 6e 74 2e 74 65 73 74 0a 20 20 66 74 73  ntent.test.  fts
1b00: 33 63 6f 6e 66 2e 74 65 73 74 20 66 74 73 33 70  3conf.test fts3p
1b10: 72 65 66 69 78 2e 74 65 73 74 20 66 74 73 33 66  refix.test fts3f
1b20: 61 75 6c 74 32 2e 74 65 73 74 20 66 74 73 33 63  ault2.test fts3c
1b30: 6f 72 72 75 70 74 2e 74 65 73 74 0a 20 20 66 74  orrupt.test.  ft
1b40: 73 33 63 6f 72 72 75 70 74 32 2e 74 65 73 74 20  s3corrupt2.test 
1b50: 66 74 73 33 66 69 72 73 74 2e 74 65 73 74 20 66  fts3first.test f
1b60: 74 73 34 6c 61 6e 67 69 64 2e 74 65 73 74 20 66  ts4langid.test f
1b70: 74 73 34 6d 65 72 67 65 2e 74 65 73 74 0a 20 20  ts4merge.test.  
1b80: 66 74 73 34 63 68 65 63 6b 2e 74 65 73 74 20 66  fts4check.test f
1b90: 74 73 34 75 6e 69 63 6f 64 65 2e 74 65 73 74 20  ts4unicode.test 
1ba0: 66 74 73 34 6e 6f 74 69 2e 74 65 73 74 0a 20 20  fts4noti.test.  
1bb0: 66 74 73 33 76 61 72 69 6e 74 2e 74 65 73 74 0a  fts3varint.test.
1bc0: 20 20 66 74 73 34 67 72 6f 77 74 68 2e 74 65 73    fts4growth.tes
1bd0: 74 20 66 74 73 34 67 72 6f 77 74 68 32 2e 74 65  t fts4growth2.te
1be0: 73 74 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65  st.}..test_suite
1bf0: 20 22 6e 6f 66 61 75 6c 74 73 69 6d 22 20 2d 70   "nofaultsim" -p
1c00: 72 65 66 69 78 20 22 22 20 2d 64 65 73 63 72 69  refix "" -descri
1c10: 70 74 69 6f 6e 20 7b 0a 20 20 22 56 65 72 79 22  ption {.  "Very"
1c20: 20 71 75 69 63 6b 20 74 65 73 74 20 73 75 69 74   quick test suit
1c30: 65 2e 20 52 75 6e 73 20 69 6e 20 6c 65 73 73 20  e. Runs in less 
1c40: 74 68 61 6e 20 35 20 6d 69 6e 75 74 65 73 20 6f  than 5 minutes o
1c50: 6e 20 61 20 77 6f 72 6b 73 74 61 74 69 6f 6e 2e  n a workstation.
1c60: 20 0a 20 20 54 68 69 73 20 74 65 73 74 20 73 75   .  This test su
1c70: 69 74 65 20 69 73 20 74 68 65 20 73 61 6d 65 20  ite is the same 
1c80: 61 73 20 74 68 65 20 22 71 75 69 63 6b 22 20 74  as the "quick" t
1c90: 65 73 74 73 2c 20 65 78 63 65 70 74 20 74 68 61  ests, except tha
1ca0: 74 20 73 6f 6d 65 20 66 69 6c 65 73 0a 20 20 74  t some files.  t
1cb0: 68 61 74 20 74 65 73 74 20 6d 61 6c 6c 6f 63 20  hat test malloc 
1cc0: 61 6e 64 20 49 4f 20 65 72 72 6f 72 73 20 61 72  and IO errors ar
1cd0: 65 20 6f 6d 69 74 74 65 64 2e 0a 7d 20 2d 66 69  e omitted..} -fi
1ce0: 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74  les [.  test_set
1cf0: 20 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20   $allquicktests 
1d00: 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63  -exclude *malloc
1d10: 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74  * *ioerr* *fault
1d20: 2a 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20  *.] -initialize 
1d30: 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c  {.  catch {db cl
1d40: 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73  ose}.  sqlite3_s
1d50: 68 75 74 64 6f 77 6e 0a 20 20 69 6e 73 74 61 6c  hutdown.  instal
1d60: 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69  l_malloc_faultsi
1d70: 6d 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e  m 0.  sqlite3_in
1d80: 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69  itialize.  autoi
1d90: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
1da0: 74 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f 77  tions.} -shutdow
1db0: 6e 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63  n {.  unset -noc
1dc0: 6f 6d 70 6c 61 69 6e 20 3a 3a 47 28 76 61 6c 67  omplain ::G(valg
1dd0: 72 69 6e 64 29 0a 7d 0a 0a 74 65 73 74 5f 73 75  rind).}..test_su
1de0: 69 74 65 20 22 71 75 65 72 79 70 6c 61 6e 6e 65  ite "queryplanne
1df0: 72 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64  r" -prefix "" -d
1e00: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54  escription {.  T
1e10: 65 73 74 73 20 6f 66 20 74 68 65 20 71 75 65 72  ests of the quer
1e20: 79 20 70 6c 61 6e 6e 65 72 20 61 6e 64 20 71 75  y planner and qu
1e30: 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 0a 7d 20  ery optimizer.} 
1e40: 2d 66 69 6c 65 73 20 7b 0a 20 20 61 6c 74 65 72  -files {.  alter
1e50: 32 2e 74 65 73 74 20 61 6c 74 65 72 33 2e 74 65  2.test alter3.te
1e60: 73 74 20 61 6c 74 65 72 34 2e 74 65 73 74 20 61  st alter4.test a
1e70: 6c 74 65 72 2e 74 65 73 74 20 61 6e 61 6c 79 7a  lter.test analyz
1e80: 65 33 2e 74 65 73 74 0a 20 20 61 6e 61 6c 79 7a  e3.test.  analyz
1e90: 65 34 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 35  e4.test analyze5
1ea0: 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 36 2e 74  .test analyze6.t
1eb0: 65 73 74 20 61 6e 61 6c 79 7a 65 37 2e 74 65 73  est analyze7.tes
1ec0: 74 20 61 6e 61 6c 79 7a 65 38 2e 74 65 73 74 0a  t analyze8.test.
1ed0: 20 20 61 6e 61 6c 79 7a 65 2e 74 65 73 74 20 61    analyze.test a
1ee0: 74 74 61 63 68 32 2e 74 65 73 74 20 61 74 74 61  ttach2.test atta
1ef0: 63 68 33 2e 74 65 73 74 20 61 74 74 61 63 68 34  ch3.test attach4
1f00: 2e 74 65 73 74 0a 20 20 61 74 74 61 63 68 2e 74  .test.  attach.t
1f10: 65 73 74 20 61 75 74 6f 69 6e 63 2e 74 65 73 74  est autoinc.test
1f20: 20 61 75 74 6f 69 6e 64 65 78 31 2e 74 65 73 74   autoindex1.test
1f30: 20 62 65 74 77 65 65 6e 2e 74 65 73 74 20 63 61   between.test ca
1f40: 73 74 2e 74 65 73 74 0a 20 20 63 68 65 63 6b 2e  st.test.  check.
1f50: 74 65 73 74 20 63 6c 6f 73 75 72 65 30 31 2e 74  test closure01.t
1f60: 65 73 74 20 63 6f 61 6c 65 73 63 65 2e 74 65 73  est coalesce.tes
1f70: 74 20 63 6f 6c 6c 61 74 65 31 2e 74 65 73 74 20  t collate1.test 
1f80: 63 6f 6c 6c 61 74 65 32 2e 74 65 73 74 0a 20 20  collate2.test.  
1f90: 63 6f 6c 6c 61 74 65 33 2e 74 65 73 74 20 63 6f  collate3.test co
1fa0: 6c 6c 61 74 65 34 2e 74 65 73 74 20 63 6f 6c 6c  llate4.test coll
1fb0: 61 74 65 35 2e 74 65 73 74 20 63 6f 6c 6c 61 74  ate5.test collat
1fc0: 65 36 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 37  e6.test collate7
1fd0: 2e 74 65 73 74 0a 20 20 63 6f 6c 6c 61 74 65 38  .test.  collate8
1fe0: 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 39 2e 74  .test collate9.t
1ff0: 65 73 74 20 63 6f 6c 6c 61 74 65 41 2e 74 65 73  est collateA.tes
2000: 74 20 63 6f 6c 6d 65 74 61 2e 74 65 73 74 20 63  t colmeta.test c
2010: 6f 6c 6e 61 6d 65 2e 74 65 73 74 0a 20 20 63 6f  olname.test.  co
2020: 6e 66 6c 69 63 74 2e 74 65 73 74 20 63 6f 75 6e  nflict.test coun
2030: 74 2e 74 65 73 74 20 63 6f 76 65 72 69 64 78 73  t.test coveridxs
2040: 63 61 6e 2e 74 65 73 74 20 63 72 65 61 74 65 74  can.test createt
2050: 61 62 2e 74 65 73 74 20 63 73 65 2e 74 65 73 74  ab.test cse.test
2060: 0a 20 20 64 61 74 65 2e 74 65 73 74 20 64 62 73  .  date.test dbs
2070: 74 61 74 75 73 32 2e 74 65 73 74 20 64 62 73 74  tatus2.test dbst
2080: 61 74 75 73 2e 74 65 73 74 20 64 65 66 61 75 6c  atus.test defaul
2090: 74 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74  t.test delete2.t
20a0: 65 73 74 0a 20 20 64 65 6c 65 74 65 33 2e 74 65  est.  delete3.te
20b0: 73 74 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64  st delete.test d
20c0: 65 73 63 69 64 78 31 2e 74 65 73 74 20 64 65 73  escidx1.test des
20d0: 63 69 64 78 32 2e 74 65 73 74 20 64 65 73 63 69  cidx2.test desci
20e0: 64 78 33 2e 74 65 73 74 0a 20 20 64 69 73 74 69  dx3.test.  disti
20f0: 6e 63 74 61 67 67 2e 74 65 73 74 20 64 69 73 74  nctagg.test dist
2100: 69 6e 63 74 2e 74 65 73 74 20 65 5f 63 72 65 61  inct.test e_crea
2110: 74 65 74 61 62 6c 65 2e 74 65 73 74 20 65 5f 64  tetable.test e_d
2120: 65 6c 65 74 65 2e 74 65 73 74 0a 20 20 65 5f 64  elete.test.  e_d
2130: 72 6f 70 74 72 69 67 67 65 72 2e 74 65 73 74 20  roptrigger.test 
2140: 65 5f 64 72 6f 70 76 69 65 77 2e 74 65 73 74 20  e_dropview.test 
2150: 65 5f 65 78 70 72 2e 74 65 73 74 20 65 5f 69 6e  e_expr.test e_in
2160: 73 65 72 74 2e 74 65 73 74 0a 20 20 65 71 70 2e  sert.test.  eqp.
2170: 74 65 73 74 20 65 5f 72 65 69 6e 64 65 78 2e 74  test e_reindex.t
2180: 65 73 74 20 65 5f 72 65 73 6f 6c 76 65 2e 74 65  est e_resolve.te
2190: 73 74 20 65 5f 73 65 6c 65 63 74 32 2e 74 65 73  st e_select2.tes
21a0: 74 20 65 5f 73 65 6c 65 63 74 2e 74 65 73 74 0a  t e_select.test.
21b0: 20 20 65 5f 75 70 64 61 74 65 2e 74 65 73 74 20    e_update.test 
21c0: 65 78 69 73 74 73 2e 74 65 73 74 20 65 78 70 72  exists.test expr
21d0: 2e 74 65 73 74 20 66 6b 65 79 31 2e 74 65 73 74  .test fkey1.test
21e0: 20 66 6b 65 79 32 2e 74 65 73 74 20 66 6b 65 79   fkey2.test fkey
21f0: 33 2e 74 65 73 74 0a 20 20 66 6b 65 79 34 2e 74  3.test.  fkey4.t
2200: 65 73 74 20 66 6b 65 79 35 2e 74 65 73 74 20 66  est fkey5.test f
2210: 75 6e 63 32 2e 74 65 73 74 20 66 75 6e 63 33 2e  unc2.test func3.
2220: 74 65 73 74 20 66 75 6e 63 2e 74 65 73 74 20 0a  test func.test .
2230: 20 20 69 6e 33 2e 74 65 73 74 20 69 6e 34 2e 74    in3.test in4.t
2240: 65 73 74 20 69 6e 35 2e 74 65 73 74 20 69 6e 64  est in5.test ind
2250: 65 78 32 2e 74 65 73 74 20 69 6e 64 65 78 33 2e  ex2.test index3.
2260: 74 65 73 74 0a 20 20 69 6e 64 65 78 34 2e 74 65  test.  index4.te
2270: 73 74 20 69 6e 64 65 78 35 2e 74 65 73 74 20 69  st index5.test i
2280: 6e 64 65 78 65 64 62 79 2e 74 65 73 74 20 69 6e  ndexedby.test in
2290: 64 65 78 2e 74 65 73 74 0a 20 20 69 6e 73 65 72  dex.test.  inser
22a0: 74 32 2e 74 65 73 74 20 69 6e 73 65 72 74 33 2e  t2.test insert3.
22b0: 74 65 73 74 20 69 6e 73 65 72 74 34 2e 74 65 73  test insert4.tes
22c0: 74 20 69 6e 73 65 72 74 35 2e 74 65 73 74 20 69  t insert5.test i
22d0: 6e 73 65 72 74 2e 74 65 73 74 0a 20 20 69 6e 73  nsert.test.  ins
22e0: 74 72 2e 74 65 73 74 20 69 6e 2e 74 65 73 74 20  tr.test in.test 
22f0: 69 6e 74 70 6b 65 79 2e 74 65 73 74 20 6a 6f 69  intpkey.test joi
2300: 6e 32 2e 74 65 73 74 20 6a 6f 69 6e 33 2e 74 65  n2.test join3.te
2310: 73 74 20 6a 6f 69 6e 34 2e 74 65 73 74 0a 20 20  st join4.test.  
2320: 6a 6f 69 6e 35 2e 74 65 73 74 20 6a 6f 69 6e 36  join5.test join6
2330: 2e 74 65 73 74 20 6a 6f 69 6e 2e 74 65 73 74 20  .test join.test 
2340: 6c 69 6b 65 32 2e 74 65 73 74 20 6c 69 6b 65 2e  like2.test like.
2350: 74 65 73 74 20 6c 69 6d 69 74 2e 74 65 73 74 0a  test limit.test.
2360: 20 20 6d 69 6e 6d 61 78 32 2e 74 65 73 74 20 6d    minmax2.test m
2370: 69 6e 6d 61 78 33 2e 74 65 73 74 20 6d 69 6e 6d  inmax3.test minm
2380: 61 78 34 2e 74 65 73 74 20 6d 69 6e 6d 61 78 2e  ax4.test minmax.
2390: 74 65 73 74 20 6d 69 73 63 31 2e 74 65 73 74 20  test misc1.test 
23a0: 6d 69 73 63 32 2e 74 65 73 74 0a 20 20 6d 69 73  misc2.test.  mis
23b0: 63 33 2e 74 65 73 74 20 6d 69 73 63 34 2e 74 65  c3.test misc4.te
23c0: 73 74 20 6d 69 73 63 35 2e 74 65 73 74 20 6d 69  st misc5.test mi
23d0: 73 63 36 2e 74 65 73 74 20 6d 69 73 63 37 2e 74  sc6.test misc7.t
23e0: 65 73 74 20 6f 72 64 65 72 62 79 31 2e 74 65 73  est orderby1.tes
23f0: 74 0a 20 20 6f 72 64 65 72 62 79 32 2e 74 65 73  t.  orderby2.tes
2400: 74 20 6f 72 64 65 72 62 79 33 2e 74 65 73 74 20  t orderby3.test 
2410: 6f 72 64 65 72 62 79 34 2e 74 65 73 74 20 72 61  orderby4.test ra
2420: 6e 64 65 78 70 72 31 2e 74 65 73 74 20 72 65 67  ndexpr1.test reg
2430: 65 78 70 31 2e 74 65 73 74 0a 20 20 72 65 69 6e  exp1.test.  rein
2440: 64 65 78 2e 74 65 73 74 20 72 6f 77 68 61 73 68  dex.test rowhash
2450: 2e 74 65 73 74 20 72 6f 77 69 64 2e 74 65 73 74  .test rowid.test
2460: 20 73 63 68 65 6d 61 32 2e 74 65 73 74 20 73 63   schema2.test sc
2470: 68 65 6d 61 33 2e 74 65 73 74 0a 20 20 73 63 68  hema3.test.  sch
2480: 65 6d 61 34 2e 74 65 73 74 20 73 63 68 65 6d 61  ema4.test schema
2490: 35 2e 74 65 73 74 20 73 63 68 65 6d 61 2e 74 65  5.test schema.te
24a0: 73 74 0a 20 20 73 65 6c 65 63 74 31 2e 74 65 73  st.  select1.tes
24b0: 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20 73  t select2.test s
24c0: 65 6c 65 63 74 33 2e 74 65 73 74 20 73 65 6c 65  elect3.test sele
24d0: 63 74 34 2e 74 65 73 74 20 73 65 6c 65 63 74 35  ct4.test select5
24e0: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 36 2e  .test.  select6.
24f0: 74 65 73 74 20 73 65 6c 65 63 74 37 2e 74 65 73  test select7.tes
2500: 74 20 73 65 6c 65 63 74 38 2e 74 65 73 74 20 73  t select8.test s
2510: 65 6c 65 63 74 39 2e 74 65 73 74 20 73 65 6c 65  elect9.test sele
2520: 63 74 41 2e 74 65 73 74 0a 20 20 73 65 6c 65 63  ctA.test.  selec
2530: 74 42 2e 74 65 73 74 20 73 65 6c 65 63 74 43 2e  tB.test selectC.
2540: 74 65 73 74 20 73 65 6c 65 63 74 44 2e 74 65 73  test selectD.tes
2550: 74 20 73 65 6c 65 63 74 45 2e 74 65 73 74 20 73  t selectE.test s
2560: 69 64 65 64 65 6c 65 74 65 2e 74 65 73 74 0a 20  idedelete.test. 
2570: 20 73 6f 72 74 2e 74 65 73 74 20 73 70 65 6c 6c   sort.test spell
2580: 66 69 78 2e 74 65 73 74 20 73 75 62 71 75 65 72  fix.test subquer
2590: 79 32 2e 74 65 73 74 20 73 75 62 71 75 65 72 79  y2.test subquery
25a0: 2e 74 65 73 74 20 73 75 62 73 65 6c 65 63 74 2e  .test subselect.
25b0: 74 65 73 74 0a 20 20 73 75 62 73 74 72 2e 74 65  test.  substr.te
25c0: 73 74 20 74 6b 74 2d 30 32 61 38 65 38 31 64 34  st tkt-02a8e81d4
25d0: 34 2e 74 65 73 74 20 74 6b 74 31 34 33 35 2e 74  4.test tkt1435.t
25e0: 65 73 74 20 74 6b 74 31 34 34 33 2e 74 65 73 74  est tkt1443.test
25f0: 20 74 6b 74 31 34 34 34 2e 74 65 73 74 0a 20 20   tkt1444.test.  
2600: 74 6b 74 31 34 34 39 2e 74 65 73 74 20 74 6b 74  tkt1449.test tkt
2610: 31 34 37 33 2e 74 65 73 74 20 74 6b 74 31 35 30  1473.test tkt150
2620: 31 2e 74 65 73 74 20 74 6b 74 31 35 31 32 2e 74  1.test tkt1512.t
2630: 65 73 74 20 74 6b 74 31 35 31 34 2e 74 65 73 74  est tkt1514.test
2640: 0a 20 20 74 6b 74 31 35 33 36 2e 74 65 73 74 20  .  tkt1536.test 
2650: 74 6b 74 31 35 33 37 2e 74 65 73 74 20 74 6b 74  tkt1537.test tkt
2660: 31 35 36 37 2e 74 65 73 74 20 74 6b 74 31 36 34  1567.test tkt164
2670: 34 2e 74 65 73 74 20 74 6b 74 31 36 36 37 2e 74  4.test tkt1667.t
2680: 65 73 74 0a 20 20 74 6b 74 31 38 37 33 2e 74 65  est.  tkt1873.te
2690: 73 74 20 74 6b 74 32 31 34 31 2e 74 65 73 74 20  st tkt2141.test 
26a0: 74 6b 74 32 31 39 32 2e 74 65 73 74 20 74 6b 74  tkt2192.test tkt
26b0: 32 32 31 33 2e 74 65 73 74 20 74 6b 74 32 32 35  2213.test tkt225
26c0: 31 2e 74 65 73 74 0a 20 20 74 6b 74 32 32 38 35  1.test.  tkt2285
26d0: 2e 74 65 73 74 20 74 6b 74 32 33 33 32 2e 74 65  .test tkt2332.te
26e0: 73 74 20 74 6b 74 32 33 33 39 2e 74 65 73 74 20  st tkt2339.test 
26f0: 74 6b 74 32 33 39 31 2e 74 65 73 74 20 74 6b 74  tkt2391.test tkt
2700: 32 34 30 39 2e 74 65 73 74 0a 20 20 74 6b 74 32  2409.test.  tkt2
2710: 34 35 30 2e 74 65 73 74 20 74 6b 74 32 35 36 35  450.test tkt2565
2720: 2e 74 65 73 74 20 74 6b 74 32 36 34 30 2e 74 65  .test tkt2640.te
2730: 73 74 20 74 6b 74 32 36 34 33 2e 74 65 73 74 20  st tkt2643.test 
2740: 74 6b 74 32 36 38 36 2e 74 65 73 74 0a 20 20 74  tkt2686.test.  t
2750: 6b 74 2d 32 36 66 66 30 63 32 64 31 65 2e 74 65  kt-26ff0c2d1e.te
2760: 73 74 20 74 6b 74 32 37 36 37 2e 74 65 73 74 20  st tkt2767.test 
2770: 74 6b 74 32 38 31 37 2e 74 65 73 74 20 74 6b 74  tkt2817.test tkt
2780: 32 38 32 30 2e 74 65 73 74 20 74 6b 74 32 38 32  2820.test tkt282
2790: 32 2e 74 65 73 74 0a 20 20 74 6b 74 32 38 33 32  2.test.  tkt2832
27a0: 2e 74 65 73 74 20 74 6b 74 32 38 35 34 2e 74 65  .test tkt2854.te
27b0: 73 74 20 74 6b 74 32 39 32 30 2e 74 65 73 74 20  st tkt2920.test 
27c0: 74 6b 74 32 39 32 37 2e 74 65 73 74 20 74 6b 74  tkt2927.test tkt
27d0: 32 39 34 32 2e 74 65 73 74 0a 20 20 74 6b 74 2d  2942.test.  tkt-
27e0: 32 61 35 36 32 39 32 30 32 66 2e 74 65 73 74 20  2a5629202f.test 
27f0: 74 6b 74 2d 32 64 31 61 35 63 36 37 64 2e 74 65  tkt-2d1a5c67d.te
2800: 73 74 20 74 6b 74 2d 32 65 61 32 34 32 35 64 33  st tkt-2ea2425d3
2810: 34 2e 74 65 73 74 20 74 6b 74 33 30 38 30 2e 74  4.test tkt3080.t
2820: 65 73 74 0a 20 20 74 6b 74 33 30 39 33 2e 74 65  est.  tkt3093.te
2830: 73 74 20 74 6b 74 33 31 32 31 2e 74 65 73 74 20  st tkt3121.test 
2840: 74 6b 74 2d 33 31 33 33 38 64 63 61 37 65 2e 74  tkt-31338dca7e.t
2850: 65 73 74 20 74 6b 74 2d 33 31 33 37 32 33 63 33  est tkt-313723c3
2860: 35 36 2e 74 65 73 74 0a 20 20 74 6b 74 33 32 30  56.test.  tkt320
2870: 31 2e 74 65 73 74 20 74 6b 74 33 32 39 32 2e 74  1.test tkt3292.t
2880: 65 73 74 20 74 6b 74 33 32 39 38 2e 74 65 73 74  est tkt3298.test
2890: 20 74 6b 74 33 33 33 34 2e 74 65 73 74 20 74 6b   tkt3334.test tk
28a0: 74 33 33 34 36 2e 74 65 73 74 0a 20 20 74 6b 74  t3346.test.  tkt
28b0: 33 33 35 37 2e 74 65 73 74 20 74 6b 74 33 34 31  3357.test tkt341
28c0: 39 2e 74 65 73 74 20 74 6b 74 33 34 32 34 2e 74  9.test tkt3424.t
28d0: 65 73 74 20 74 6b 74 33 34 34 32 2e 74 65 73 74  est tkt3442.test
28e0: 20 74 6b 74 33 34 35 37 2e 74 65 73 74 0a 20 20   tkt3457.test.  
28f0: 74 6b 74 33 34 36 31 2e 74 65 73 74 20 74 6b 74  tkt3461.test tkt
2900: 33 34 39 33 2e 74 65 73 74 20 74 6b 74 33 35 30  3493.test tkt350
2910: 38 2e 74 65 73 74 20 74 6b 74 33 35 32 32 2e 74  8.test tkt3522.t
2920: 65 73 74 20 74 6b 74 33 35 32 37 2e 74 65 73 74  est tkt3527.test
2930: 0a 20 20 74 6b 74 33 35 34 31 2e 74 65 73 74 20  .  tkt3541.test 
2940: 74 6b 74 33 35 35 34 2e 74 65 73 74 20 74 6b 74  tkt3554.test tkt
2950: 33 35 38 31 2e 74 65 73 74 20 74 6b 74 33 35 78  3581.test tkt35x
2960: 78 2e 74 65 73 74 20 74 6b 74 33 36 33 30 2e 74  x.test tkt3630.t
2970: 65 73 74 0a 20 20 74 6b 74 33 37 31 38 2e 74 65  est.  tkt3718.te
2980: 73 74 20 74 6b 74 33 37 33 31 2e 74 65 73 74 20  st tkt3731.test 
2990: 74 6b 74 33 37 35 37 2e 74 65 73 74 20 74 6b 74  tkt3757.test tkt
29a0: 33 37 36 31 2e 74 65 73 74 20 74 6b 74 33 37 36  3761.test tkt376
29b0: 32 2e 74 65 73 74 0a 20 20 74 6b 74 33 37 37 33  2.test.  tkt3773
29c0: 2e 74 65 73 74 20 74 6b 74 33 37 39 31 2e 74 65  .test tkt3791.te
29d0: 73 74 20 74 6b 74 33 37 39 33 2e 74 65 73 74 20  st tkt3793.test 
29e0: 74 6b 74 33 38 31 30 2e 74 65 73 74 20 74 6b 74  tkt3810.test tkt
29f0: 33 38 32 34 2e 74 65 73 74 0a 20 20 74 6b 74 33  3824.test.  tkt3
2a00: 38 33 32 2e 74 65 73 74 20 74 6b 74 33 38 33 38  832.test tkt3838
2a10: 2e 74 65 73 74 20 74 6b 74 33 38 34 31 2e 74 65  .test tkt3841.te
2a20: 73 74 20 74 6b 74 2d 33 38 35 61 35 62 35 36 62  st tkt-385a5b56b
2a30: 39 2e 74 65 73 74 20 74 6b 74 33 38 37 31 2e 74  9.test tkt3871.t
2a40: 65 73 74 0a 20 20 74 6b 74 33 38 37 39 2e 74 65  est.  tkt3879.te
2a50: 73 74 20 74 6b 74 2d 33 38 63 62 35 64 66 33 37  st tkt-38cb5df37
2a60: 35 2e 74 65 73 74 20 74 6b 74 33 39 31 31 2e 74  5.test tkt3911.t
2a70: 65 73 74 20 74 6b 74 33 39 31 38 2e 74 65 73 74  est tkt3918.test
2a80: 20 74 6b 74 33 39 32 32 2e 74 65 73 74 0a 20 20   tkt3922.test.  
2a90: 74 6b 74 33 39 32 39 2e 74 65 73 74 20 74 6b 74  tkt3929.test tkt
2aa0: 33 39 33 35 2e 74 65 73 74 20 74 6b 74 33 39 39  3935.test tkt399
2ab0: 32 2e 74 65 73 74 20 74 6b 74 33 39 39 37 2e 74  2.test tkt3997.t
2ac0: 65 73 74 20 74 6b 74 2d 33 39 39 38 36 38 33 61  est tkt-3998683a
2ad0: 31 36 2e 74 65 73 74 0a 20 20 74 6b 74 2d 33 61  16.test.  tkt-3a
2ae0: 37 37 63 39 37 31 34 65 2e 74 65 73 74 20 74 6b  77c9714e.test tk
2af0: 74 2d 33 66 65 38 39 37 33 35 32 65 2e 74 65 73  t-3fe897352e.tes
2b00: 74 20 74 6b 74 34 30 31 38 2e 74 65 73 74 20 74  t tkt4018.test t
2b10: 6b 74 2d 34 61 30 33 65 64 63 34 63 38 2e 74 65  kt-4a03edc4c8.te
2b20: 73 74 0a 20 20 74 6b 74 2d 34 64 64 39 35 66 36  st.  tkt-4dd95f6
2b30: 39 34 33 2e 74 65 73 74 20 74 6b 74 2d 35 34 38  943.test tkt-548
2b40: 34 34 65 65 61 33 66 2e 74 65 73 74 20 74 6b 74  44eea3f.test tkt
2b50: 2d 35 64 38 36 33 66 38 37 36 65 2e 74 65 73 74  -5d863f876e.test
2b60: 0a 20 20 74 6b 74 2d 35 65 31 30 34 32 30 65 38  .  tkt-5e10420e8
2b70: 64 2e 74 65 73 74 20 74 6b 74 2d 35 65 65 32 33  d.test tkt-5ee23
2b80: 37 33 31 66 2e 74 65 73 74 20 74 6b 74 2d 36 62  731f.test tkt-6b
2b90: 66 62 39 38 64 66 63 30 2e 74 65 73 74 0a 20 20  fb98dfc0.test.  
2ba0: 74 6b 74 2d 37 35 32 65 31 36 34 36 66 63 2e 74  tkt-752e1646fc.t
2bb0: 65 73 74 20 74 6b 74 2d 37 38 65 30 34 65 35 32  est tkt-78e04e52
2bc0: 65 61 2e 74 65 73 74 20 74 6b 74 2d 37 61 33 31  ea.test tkt-7a31
2bd0: 37 30 35 61 37 65 36 2e 74 65 73 74 0a 20 20 74  705a7e6.test.  t
2be0: 6b 74 2d 37 62 62 66 62 37 64 34 34 32 2e 74 65  kt-7bbfb7d442.te
2bf0: 73 74 20 74 6b 74 2d 38 30 62 61 32 30 31 30 37  st tkt-80ba20107
2c00: 39 2e 74 65 73 74 20 74 6b 74 2d 38 30 65 30 33  9.test tkt-80e03
2c10: 31 61 30 30 66 2e 74 65 73 74 0a 20 20 74 6b 74  1a00f.test.  tkt
2c20: 2d 38 34 35 34 61 32 30 37 62 39 2e 74 65 73 74  -8454a207b9.test
2c30: 20 74 6b 74 2d 39 31 65 32 65 38 62 61 36 66 2e   tkt-91e2e8ba6f.
2c40: 74 65 73 74 20 74 6b 74 2d 39 34 63 30 34 65 61  test tkt-94c04ea
2c50: 61 64 62 2e 74 65 73 74 0a 20 20 74 6b 74 2d 39  adb.test.  tkt-9
2c60: 64 36 38 63 38 38 33 2e 74 65 73 74 20 74 6b 74  d68c883.test tkt
2c70: 2d 61 37 62 37 38 30 33 65 2e 74 65 73 74 20 74  -a7b7803e.test t
2c80: 6b 74 2d 62 31 64 33 61 32 65 35 33 31 2e 74 65  kt-b1d3a2e531.te
2c90: 73 74 0a 20 20 74 6b 74 2d 62 33 35 31 64 39 35  st.  tkt-b351d95
2ca0: 66 39 2e 74 65 73 74 20 74 6b 74 2d 62 37 32 37  f9.test tkt-b727
2cb0: 38 37 62 31 2e 74 65 73 74 20 74 6b 74 2d 62 64  87b1.test tkt-bd
2cc0: 34 38 34 61 30 39 30 63 2e 74 65 73 74 0a 20 20  484a090c.test.  
2cd0: 74 6b 74 2d 62 64 63 36 62 62 62 62 33 38 2e 74  tkt-bdc6bbbb38.t
2ce0: 65 73 74 20 74 6b 74 2d 63 34 38 64 39 39 64 36  est tkt-c48d99d6
2cf0: 39 30 2e 74 65 73 74 20 74 6b 74 2d 63 62 64 30  90.test tkt-cbd0
2d00: 35 34 66 61 36 62 2e 74 65 73 74 0a 20 20 74 6b  54fa6b.test.  tk
2d10: 74 2d 64 31 31 66 30 39 64 33 36 65 2e 74 65 73  t-d11f09d36e.tes
2d20: 74 20 74 6b 74 2d 64 36 33 35 32 33 36 33 37 35  t tkt-d635236375
2d30: 2e 74 65 73 74 20 74 6b 74 2d 64 38 32 65 33 66  .test tkt-d82e3f
2d40: 33 37 32 31 2e 74 65 73 74 0a 20 20 74 6b 74 2d  3721.test.  tkt-
2d50: 66 33 65 35 61 62 65 64 35 35 2e 74 65 73 74 20  f3e5abed55.test 
2d60: 74 6b 74 2d 66 37 37 37 32 35 31 64 63 37 61 2e  tkt-f777251dc7a.
2d70: 74 65 73 74 20 74 6b 74 2d 66 37 62 34 65 64 65  test tkt-f7b4ede
2d80: 63 2e 74 65 73 74 0a 20 20 74 6b 74 2d 66 39 37  c.test.  tkt-f97
2d90: 33 63 37 61 63 33 31 2e 74 65 73 74 20 74 6b 74  3c7ac31.test tkt
2da0: 2d 66 61 37 62 66 35 65 63 2e 74 65 73 74 20 74  -fa7bf5ec.test t
2db0: 6b 74 2d 66 63 36 32 61 66 34 35 32 33 2e 74 65  kt-fc62af4523.te
2dc0: 73 74 0a 20 20 74 6b 74 2d 66 63 37 62 64 36 33  st.  tkt-fc7bd63
2dd0: 35 38 66 2e 74 65 73 74 20 74 72 69 67 67 65 72  58f.test trigger
2de0: 31 2e 74 65 73 74 20 74 72 69 67 67 65 72 32 2e  1.test trigger2.
2df0: 74 65 73 74 20 74 72 69 67 67 65 72 33 2e 74 65  test trigger3.te
2e00: 73 74 0a 20 20 74 72 69 67 67 65 72 34 2e 74 65  st.  trigger4.te
2e10: 73 74 20 74 72 69 67 67 65 72 35 2e 74 65 73 74  st trigger5.test
2e20: 20 74 72 69 67 67 65 72 36 2e 74 65 73 74 20 74   trigger6.test t
2e30: 72 69 67 67 65 72 37 2e 74 65 73 74 20 74 72 69  rigger7.test tri
2e40: 67 67 65 72 38 2e 74 65 73 74 0a 20 20 74 72 69  gger8.test.  tri
2e50: 67 67 65 72 39 2e 74 65 73 74 20 74 72 69 67 67  gger9.test trigg
2e60: 65 72 41 2e 74 65 73 74 20 74 72 69 67 67 65 72  erA.test trigger
2e70: 42 2e 74 65 73 74 20 74 72 69 67 67 65 72 43 2e  B.test triggerC.
2e80: 74 65 73 74 20 74 72 69 67 67 65 72 44 2e 74 65  test triggerD.te
2e90: 73 74 0a 20 20 74 79 70 65 73 32 2e 74 65 73 74  st.  types2.test
2ea0: 20 74 79 70 65 73 33 2e 74 65 73 74 20 74 79 70   types3.test typ
2eb0: 65 73 2e 74 65 73 74 20 75 6e 69 71 75 65 2e 74  es.test unique.t
2ec0: 65 73 74 20 75 6e 6f 72 64 65 72 65 64 2e 74 65  est unordered.te
2ed0: 73 74 0a 20 20 75 70 64 61 74 65 2e 74 65 73 74  st.  update.test
2ee0: 20 76 69 65 77 2e 74 65 73 74 20 76 74 61 62 31   view.test vtab1
2ef0: 2e 74 65 73 74 20 76 74 61 62 32 2e 74 65 73 74  .test vtab2.test
2f00: 20 76 74 61 62 33 2e 74 65 73 74 20 76 74 61 62   vtab3.test vtab
2f10: 34 2e 74 65 73 74 0a 20 20 76 74 61 62 35 2e 74  4.test.  vtab5.t
2f20: 65 73 74 20 76 74 61 62 36 2e 74 65 73 74 20 76  est vtab6.test v
2f30: 74 61 62 37 2e 74 65 73 74 20 76 74 61 62 38 2e  tab7.test vtab8.
2f40: 74 65 73 74 20 76 74 61 62 39 2e 74 65 73 74 20  test vtab9.test 
2f50: 76 74 61 62 5f 61 6c 74 65 72 2e 74 65 73 74 0a  vtab_alter.test.
2f60: 20 20 76 74 61 62 41 2e 74 65 73 74 20 76 74 61    vtabA.test vta
2f70: 62 42 2e 74 65 73 74 20 76 74 61 62 43 2e 74 65  bB.test vtabC.te
2f80: 73 74 20 76 74 61 62 44 2e 74 65 73 74 20 76 74  st vtabD.test vt
2f90: 61 62 45 2e 74 65 73 74 0a 20 20 76 74 61 62 46  abE.test.  vtabF
2fa0: 2e 74 65 73 74 20 77 68 65 72 65 32 2e 74 65 73  .test where2.tes
2fb0: 74 20 77 68 65 72 65 33 2e 74 65 73 74 20 77 68  t where3.test wh
2fc0: 65 72 65 34 2e 74 65 73 74 20 77 68 65 72 65 35  ere4.test where5
2fd0: 2e 74 65 73 74 20 77 68 65 72 65 36 2e 74 65 73  .test where6.tes
2fe0: 74 0a 20 20 77 68 65 72 65 37 2e 74 65 73 74 20  t.  where7.test 
2ff0: 77 68 65 72 65 38 6d 2e 74 65 73 74 20 77 68 65  where8m.test whe
3000: 72 65 38 2e 74 65 73 74 20 77 68 65 72 65 39 2e  re8.test where9.
3010: 74 65 73 74 20 77 68 65 72 65 41 2e 74 65 73 74  test whereA.test
3020: 20 77 68 65 72 65 42 2e 74 65 73 74 0a 20 20 77   whereB.test.  w
3030: 68 65 72 65 43 2e 74 65 73 74 20 77 68 65 72 65  hereC.test where
3040: 44 2e 74 65 73 74 20 77 68 65 72 65 45 2e 74 65  D.test whereE.te
3050: 73 74 20 77 68 65 72 65 46 2e 74 65 73 74 20 77  st whereF.test w
3060: 68 65 72 65 6c 69 6d 69 74 2e 74 65 73 74 0a 20  herelimit.test. 
3070: 20 77 68 65 72 65 2e 74 65 73 74 0a 7d 0a 0a 74   where.test.}..t
3080: 65 73 74 5f 73 75 69 74 65 20 22 76 66 73 6c 6f  est_suite "vfslo
3090: 67 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64  g" -prefix "" -d
30a0: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 22  escription {.  "
30b0: 56 66 73 6c 6f 67 22 20 71 75 69 63 6b 20 74 65  Vfslog" quick te
30c0: 73 74 20 73 75 69 74 65 2e 20 4c 69 6b 65 20 22  st suite. Like "
30d0: 76 65 72 79 71 75 69 63 6b 22 20 65 78 63 65 70  veryquick" excep
30e0: 74 20 64 6f 65 73 20 6e 6f 74 20 6f 6d 69 74 73  t does not omits
30f0: 0a 20 20 61 20 66 65 77 20 74 65 73 74 73 20 74  .  a few tests t
3100: 68 61 74 20 64 6f 20 6e 6f 74 20 77 6f 72 6b 20  hat do not work 
3110: 77 69 74 68 20 61 20 76 65 72 73 69 6f 6e 20 31  with a version 1
3120: 20 56 46 53 2e 20 41 6e 64 20 74 68 65 20 71 75   VFS. And the qu
3130: 6f 74 61 2a 20 74 65 73 74 73 2c 0a 20 20 77 68  ota* tests,.  wh
3140: 69 63 68 20 64 6f 20 6e 6f 74 20 77 6f 72 6b 20  ich do not work 
3150: 77 69 74 68 20 61 20 56 46 53 20 74 68 61 74 20  with a VFS that 
3160: 75 73 65 73 20 74 68 65 20 70 56 66 73 20 61 72  uses the pVfs ar
3170: 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20 74 6f  gument passed to
3180: 0a 20 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6d  .  sqlite3_vfs m
3190: 65 74 68 6f 64 73 2e 0a 7d 20 2d 66 69 6c 65 73  ethods..} -files
31a0: 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61   [.  test_set $a
31b0: 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78  llquicktests -ex
31c0: 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a  clude *malloc* *
31d0: 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 6f  ioerr* *fault* o
31e0: 73 65 72 72 6f 72 2e 74 65 73 74 20 5c 0a 20 20  serror.test \.  
31f0: 70 61 67 65 72 31 2e 74 65 73 74 20 73 79 73 63  pager1.test sysc
3200: 61 6c 6c 2e 74 65 73 74 20 73 79 73 66 61 75 6c  all.test sysfaul
3210: 74 2e 74 65 73 74 20 74 6b 74 33 34 35 37 2e 74  t.test tkt3457.t
3220: 65 73 74 20 71 75 6f 74 61 2a 20 73 75 70 65 72  est quota* super
3230: 6c 6f 63 6b 2a 20 5c 0a 20 20 77 61 6c 2a 20 6d  lock* \.  wal* m
3240: 6d 61 70 2a 0a 5d 0a 0a 6c 61 70 70 65 6e 64 20  map*.]..lappend 
3250: 3a 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74 20  ::testsuitelist 
3260: 78 78 78 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  xxx.#-----------
3270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
32a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23  --------------.#
32b0: 20 44 65 66 69 6e 65 20 74 68 65 20 63 6f 76 65   Define the cove
32c0: 72 61 67 65 20 72 65 6c 61 74 65 64 20 74 65 73  rage related tes
32d0: 74 20 73 75 69 74 65 73 3a 0a 23 0a 23 20 20 20  t suites:.#.#   
32e0: 63 6f 76 65 72 61 67 65 2d 77 61 6c 0a 23 0a 74  coverage-wal.#.t
32f0: 65 73 74 5f 73 75 69 74 65 20 22 63 6f 76 65 72  est_suite "cover
3300: 61 67 65 2d 77 61 6c 22 20 2d 64 65 73 63 72 69  age-wal" -descri
3310: 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65 72 61  ption {.  Covera
3320: 67 65 20 74 65 73 74 73 20 66 6f 72 20 66 69 6c  ge tests for fil
3330: 65 20 77 61 6c 2e 63 2e 0a 7d 20 2d 66 69 6c 65  e wal.c..} -file
3340: 73 20 7b 0a 20 20 77 61 6c 2e 74 65 73 74 20 20  s {.  wal.test  
3350: 20 20 20 20 20 77 61 6c 32 2e 74 65 73 74 20 20       wal2.test  
3360: 20 20 20 77 61 6c 33 2e 74 65 73 74 20 20 20 20     wal3.test    
3370: 20 20 20 77 61 6c 6d 6f 64 65 2e 74 65 73 74 20     walmode.test 
3380: 20 20 20 0a 20 20 77 61 6c 62 61 6b 2e 74 65 73     .  walbak.tes
3390: 74 20 20 20 20 77 61 6c 68 6f 6f 6b 2e 74 65 73  t    walhook.tes
33a0: 74 20 20 77 61 6c 63 72 61 73 68 32 2e 74 65 73  t  walcrash2.tes
33b0: 74 20 20 77 61 6c 63 6b 73 75 6d 2e 74 65 73 74  t  walcksum.test
33c0: 0a 20 20 77 61 6c 66 61 75 6c 74 2e 74 65 73 74  .  walfault.test
33d0: 20 20 77 61 6c 62 69 67 2e 74 65 73 74 20 20 20    walbig.test   
33e0: 77 61 6c 6e 6f 73 68 6d 2e 74 65 73 74 0a 20 20  walnoshm.test.  
33f0: 77 61 6c 35 2e 74 65 73 74 0a 7d 20 0a 0a 74 65  wal5.test.} ..te
3400: 73 74 5f 73 75 69 74 65 20 22 63 6f 76 65 72 61  st_suite "covera
3410: 67 65 2d 70 61 67 65 72 22 20 2d 64 65 73 63 72  ge-pager" -descr
3420: 69 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65 72  iption {.  Cover
3430: 61 67 65 20 74 65 73 74 73 20 66 6f 72 20 66 69  age tests for fi
3440: 6c 65 20 70 61 67 65 72 2e 63 2e 0a 7d 20 2d 66  le pager.c..} -f
3450: 69 6c 65 73 20 7b 0a 20 20 70 61 67 65 72 31 2e  iles {.  pager1.
3460: 74 65 73 74 20 20 20 20 70 61 67 65 72 32 2e 74  test    pager2.t
3470: 65 73 74 20 20 70 61 67 65 72 66 61 75 6c 74 2e  est  pagerfault.
3480: 74 65 73 74 20 20 70 61 67 65 72 66 61 75 6c 74  test  pagerfault
3490: 32 2e 74 65 73 74 0a 20 20 77 61 6c 66 61 75 6c  2.test.  walfaul
34a0: 74 2e 74 65 73 74 20 20 77 61 6c 62 61 6b 2e 74  t.test  walbak.t
34b0: 65 73 74 20 20 6a 6f 75 72 6e 61 6c 32 2e 74 65  est  journal2.te
34c0: 73 74 20 20 20 20 74 6b 74 2d 39 64 36 38 63 38  st    tkt-9d68c8
34d0: 38 33 2e 74 65 73 74 0a 7d 20 0a 0a 74 65 73 74  83.test.} ..test
34e0: 5f 73 75 69 74 65 20 22 63 6f 76 65 72 61 67 65  _suite "coverage
34f0: 2d 61 6e 61 6c 79 7a 65 22 20 2d 64 65 73 63 72  -analyze" -descr
3500: 69 70 74 69 6f 6e 20 7b 0a 20 20 43 6f 76 65 72  iption {.  Cover
3510: 61 67 65 20 74 65 73 74 73 20 66 6f 72 20 66 69  age tests for fi
3520: 6c 65 20 61 6e 61 6c 79 7a 65 2e 63 2e 0a 7d 20  le analyze.c..} 
3530: 2d 66 69 6c 65 73 20 7b 0a 20 20 61 6e 61 6c 79  -files {.  analy
3540: 7a 65 33 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  ze3.test analyze
3550: 34 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 35 2e  4.test analyze5.
3560: 74 65 73 74 20 61 6e 61 6c 79 7a 65 36 2e 74 65  test analyze6.te
3570: 73 74 0a 20 20 61 6e 61 6c 79 7a 65 37 2e 74 65  st.  analyze7.te
3580: 73 74 20 61 6e 61 6c 79 7a 65 38 2e 74 65 73 74  st analyze8.test
3590: 20 61 6e 61 6c 79 7a 65 39 2e 74 65 73 74 20 61   analyze9.test a
35a0: 6e 61 6c 79 7a 65 41 2e 74 65 73 74 0a 20 20 61  nalyzeA.test.  a
35b0: 6e 61 6c 79 7a 65 2e 74 65 73 74 20 61 6e 61 6c  nalyze.test anal
35c0: 79 7a 65 42 2e 74 65 73 74 20 6d 61 6c 6c 6f 63  yzeB.test malloc
35d0: 41 2e 74 65 73 74 0a 7d 20 0a 0a 0a 6c 61 70 70  A.test.} ...lapp
35e0: 65 6e 64 20 3a 3a 74 65 73 74 73 75 69 74 65 6c  end ::testsuitel
35f0: 69 73 74 20 78 78 78 0a 23 2d 2d 2d 2d 2d 2d 2d  ist xxx.#-------
3600: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3610: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3620: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3630: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3640: 2d 2d 0a 23 20 44 65 66 69 6e 65 20 74 68 65 20  --.# Define the 
3650: 70 65 72 6d 75 74 61 74 69 6f 6e 20 74 65 73 74  permutation test
3660: 20 73 75 69 74 65 73 3a 0a 23 0a 0a 23 20 52 75   suites:.#..# Ru
3670: 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 75 73 69  n some tests usi
3680: 6e 67 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64  ng pre-allocated
3690: 20 70 61 67 65 20 61 6e 64 20 73 63 72 61 74 63   page and scratc
36a0: 68 20 62 6c 6f 63 6b 73 2e 0a 23 0a 23 20 6d 6d  h blocks..#.# mm
36b0: 61 70 31 2e 74 65 73 74 20 69 73 20 65 78 63 6c  ap1.test is excl
36c0: 75 64 65 64 20 62 65 63 61 75 73 65 20 61 20 67  uded because a g
36d0: 6f 6f 64 20 6e 75 6d 62 65 72 20 6f 66 20 69 74  ood number of it
36e0: 73 20 74 65 73 74 73 20 64 65 70 65 6e 64 20 6f  s tests depend o
36f0: 6e 20 0a 23 20 74 68 65 20 70 61 67 65 2d 63 61  n .# the page-ca
3700: 63 68 65 20 62 65 69 6e 67 20 6c 61 72 67 65 72  che being larger
3710: 20 74 68 61 6e 20 74 68 65 20 64 61 74 61 62 61   than the databa
3720: 73 65 2e 20 42 75 74 20 74 68 69 73 20 70 65 72  se. But this per
3730: 6d 75 74 61 74 69 6f 6e 0a 23 20 63 61 75 73 65  mutation.# cause
3740: 73 20 74 68 65 20 65 66 66 65 63 74 69 76 65 20  s the effective 
3750: 6c 69 6d 69 74 20 6f 6e 20 74 68 65 20 70 61 67  limit on the pag
3760: 65 2d 63 61 63 68 65 20 74 6f 20 62 65 20 6a 75  e-cache to be ju
3770: 73 74 20 32 34 20 70 61 67 65 73 2e 0a 23 0a 74  st 24 pages..#.t
3780: 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73 75  est_suite "memsu
3790: 62 73 79 73 31 22 20 2d 64 65 73 63 72 69 70 74  bsys1" -descript
37a0: 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 75 73  ion {.  Tests us
37b0: 69 6e 67 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  ing pre-allocate
37c0: 64 20 70 61 67 65 20 61 6e 64 20 73 63 72 61 74  d page and scrat
37d0: 63 68 20 62 6c 6f 63 6b 73 0a 7d 20 2d 66 69 6c  ch blocks.} -fil
37e0: 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20  es [.  test_set 
37f0: 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  $::allquicktests
3800: 20 2d 65 78 63 6c 75 64 65 20 69 6f 65 72 72 35   -exclude ioerr5
3810: 2e 74 65 73 74 20 6d 61 6c 6c 6f 63 35 2e 74 65  .test malloc5.te
3820: 73 74 20 6d 6d 61 70 31 2e 74 65 73 74 0a 5d 20  st mmap1.test.] 
3830: 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20  -initialize {.  
3840: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
3850: 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  .  sqlite3_shutd
3860: 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f  own.  sqlite3_co
3870: 6e 66 69 67 5f 70 61 67 65 63 61 63 68 65 20 34  nfig_pagecache 4
3880: 30 39 36 20 32 34 0a 20 20 73 71 6c 69 74 65 33  096 24.  sqlite3
3890: 5f 63 6f 6e 66 69 67 5f 73 63 72 61 74 63 68 20  _config_scratch 
38a0: 32 35 30 30 30 20 31 0a 20 20 73 71 6c 69 74 65  25000 1.  sqlite
38b0: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61  3_initialize.  a
38c0: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
38d0: 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73 68 75  functions.} -shu
38e0: 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68 20  tdown {.  catch 
38f0: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
3900: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
3910: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 70  sqlite3_config_p
3920: 61 67 65 63 61 63 68 65 20 30 20 30 0a 20 20 73  agecache 0 0.  s
3930: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 73 63  qlite3_config_sc
3940: 72 61 74 63 68 20 30 20 30 0a 20 20 73 71 6c 69  ratch 0 0.  sqli
3950: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
3960: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
3970: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a 23  t_functions.}..#
3980: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
3990: 75 73 69 6e 67 20 70 72 65 2d 61 6c 6c 6f 63 61  using pre-alloca
39a0: 74 65 64 20 70 61 67 65 20 61 6e 64 20 73 63 72  ted page and scr
39b0: 61 74 63 68 20 62 6c 6f 63 6b 73 2e 20 54 68 69  atch blocks. Thi
39c0: 73 20 74 69 6d 65 0a 23 20 74 68 65 20 61 6c 6c  s time.# the all
39d0: 6f 63 61 74 69 6f 6e 73 20 61 72 65 20 74 6f 6f  ocations are too
39e0: 20 73 6d 61 6c 6c 20 74 6f 20 75 73 65 20 69 6e   small to use in
39f0: 20 6d 6f 73 74 20 63 61 73 65 73 2e 0a 23 0a 23   most cases..#.#
3a00: 20 42 6f 74 68 20 69 6f 65 72 72 35 2e 74 65 73   Both ioerr5.tes
3a10: 74 20 61 6e 64 20 6d 61 6c 6c 6f 63 35 2e 74 65  t and malloc5.te
3a20: 73 74 20 61 72 65 20 65 78 63 6c 75 64 65 64 20  st are excluded 
3a30: 62 65 63 61 75 73 65 20 74 68 65 79 20 74 65 73  because they tes
3a40: 74 20 74 68 65 0a 23 20 73 71 6c 69 74 65 33 5f  t the.# sqlite3_
3a50: 73 6f 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 28  soft_heap_limit(
3a60: 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 72 65  ) and sqlite3_re
3a70: 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29 20 66  lease_memory() f
3a80: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a 23 20  unctionality..# 
3a90: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 61 6c 69  This functionali
3aa0: 74 79 20 69 73 20 64 69 73 61 62 6c 65 64 20 69  ty is disabled i
3ab0: 66 20 61 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  f a pre-allocate
3ac0: 64 20 70 61 67 65 20 62 6c 6f 63 6b 20 69 73 20  d page block is 
3ad0: 70 72 6f 76 69 64 65 64 2e 0a 23 0a 74 65 73 74  provided..#.test
3ae0: 5f 73 75 69 74 65 20 22 6d 65 6d 73 75 62 73 79  _suite "memsubsy
3af0: 73 32 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  s2" -description
3b00: 20 7b 0a 20 20 54 65 73 74 73 20 75 73 69 6e 67   {.  Tests using
3b10: 20 73 6d 61 6c 6c 20 70 72 65 2d 61 6c 6c 6f 63   small pre-alloc
3b20: 61 74 65 64 20 70 61 67 65 20 61 6e 64 20 73 63  ated page and sc
3b30: 72 61 74 63 68 20 62 6c 6f 63 6b 73 0a 7d 20 2d  ratch blocks.} -
3b40: 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73  files [.  test_s
3b50: 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65  et $::allquickte
3b60: 73 74 73 20 2d 65 78 63 6c 75 64 65 20 69 6f 65  sts -exclude ioe
3b70: 72 72 35 2e 74 65 73 74 20 6d 61 6c 6c 6f 63 35  rr5.test malloc5
3b80: 2e 74 65 73 74 0a 5d 20 2d 69 6e 69 74 69 61 6c  .test.] -initial
3b90: 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20 7b 64  ize {.  catch {d
3ba0: 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74  b close}.  sqlit
3bb0: 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71  e3_shutdown.  sq
3bc0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 70 61 67  lite3_config_pag
3bd0: 65 63 61 63 68 65 20 35 31 32 20 35 0a 20 20 73  ecache 512 5.  s
3be0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 73 63  qlite3_config_sc
3bf0: 72 61 74 63 68 20 31 30 30 30 20 31 0a 20 20 73  ratch 1000 1.  s
3c00: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
3c10: 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f  e.  autoinstall_
3c20: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d  test_functions.}
3c30: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 63   -shutdown {.  c
3c40: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
3c50: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
3c60: 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  wn.  sqlite3_con
3c70: 66 69 67 5f 70 61 67 65 63 61 63 68 65 20 30 20  fig_pagecache 0 
3c80: 30 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  0.  sqlite3_conf
3c90: 69 67 5f 73 63 72 61 74 63 68 20 30 20 30 0a 20  ig_scratch 0 0. 
3ca0: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
3cb0: 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c  ize.  autoinstal
3cc0: 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73  l_test_functions
3cd0: 0a 7d 0a 0a 23 20 52 75 6e 20 61 6c 6c 20 74 65  .}..# Run all te
3ce0: 73 74 73 20 77 69 74 68 20 74 68 65 20 6c 6f 6f  sts with the loo
3cf0: 6b 61 73 69 64 65 20 61 6c 6c 6f 63 61 74 6f 72  kaside allocator
3d00: 20 64 69 73 61 62 6c 65 64 2e 0a 23 0a 74 65 73   disabled..#.tes
3d10: 74 5f 73 75 69 74 65 20 22 6e 6f 6c 6f 6f 6b 61  t_suite "nolooka
3d20: 73 69 64 65 22 20 2d 64 65 73 63 72 69 70 74 69  side" -descripti
3d30: 6f 6e 20 7b 0a 20 20 4f 4f 4d 20 74 65 73 74 73  on {.  OOM tests
3d40: 20 77 69 74 68 20 6c 6f 6f 6b 61 73 69 64 65 20   with lookaside 
3d50: 64 69 73 61 62 6c 65 64 0a 7d 20 2d 69 6e 69 74  disabled.} -init
3d60: 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68  ialize {.  catch
3d70: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71   {db close}.  sq
3d80: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
3d90: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
3da0: 6c 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a 20 20  lookaside 0 0.  
3db0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
3dc0: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
3dd0: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
3de0: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
3df0: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
3e00: 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  .  sqlite3_shutd
3e10: 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f  own.  sqlite3_co
3e20: 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31  nfig_lookaside 1
3e30: 30 30 20 35 30 30 0a 20 20 73 71 6c 69 74 65 33  00 500.  sqlite3
3e40: 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75  _initialize.  au
3e50: 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66  toinstall_test_f
3e60: 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 66 69 6c 65  unctions.} -file
3e70: 73 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73  s $::allquicktes
3e80: 74 73 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74  ts..# Run some t
3e90: 65 73 74 73 20 69 6e 20 53 51 4c 49 54 45 5f 43  ests in SQLITE_C
3ea0: 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45  ONFIG_SINGLETHRE
3eb0: 41 44 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f  AD mode..#.test_
3ec0: 73 75 69 74 65 20 22 73 69 6e 67 6c 65 74 68 72  suite "singlethr
3ed0: 65 61 64 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ead" -descriptio
3ee0: 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75 6e 20  n {.  Tests run 
3ef0: 69 6e 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  in SQLITE_CONFIG
3f00: 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20 6d 6f  _SINGLETHREAD mo
3f10: 64 65 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  de.} -initialize
3f20: 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   {.  catch {db c
3f30: 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f  lose}.  sqlite3_
3f40: 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63 68  shutdown.  catch
3f50: 20 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   {sqlite3_config
3f60: 20 73 69 6e 67 6c 65 74 68 72 65 61 64 7d 0a 20   singlethread}. 
3f70: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
3f80: 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c  ize.  autoinstal
3f90: 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73  l_test_functions
3fa0: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65  .} -files {.  de
3fb0: 6c 65 74 65 2e 74 65 73 74 20 20 20 64 65 6c 65  lete.test   dele
3fc0: 74 65 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74  te2.test  insert
3fd0: 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b 2e  .test  rollback.
3fe0: 74 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65  test  select1.te
3ff0: 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73  st.  select2.tes
4000: 74 20 20 74 72 61 6e 73 2e 74 65 73 74 20 20 20  t  trans.test   
4010: 20 75 70 64 61 74 65 2e 74 65 73 74 20 20 76 61   update.test  va
4020: 63 75 75 6d 2e 74 65 73 74 20 20 20 20 74 79 70  cuum.test    typ
4030: 65 73 2e 74 65 73 74 0a 20 20 74 79 70 65 73 32  es.test.  types2
4040: 2e 74 65 73 74 20 20 20 74 79 70 65 73 33 2e 74  .test   types3.t
4050: 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20  est.} -shutdown 
4060: 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c  {.  catch {db cl
4070: 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73  ose}.  sqlite3_s
4080: 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63 68 20  hutdown.  catch 
4090: 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 20  {sqlite3_config 
40a0: 73 65 72 69 61 6c 69 7a 65 64 7d 0a 20 20 73 71  serialized}.  sq
40b0: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
40c0: 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74  .  autoinstall_t
40d0: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a  est_functions.}.
40e0: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 6d  .test_suite "nom
40f0: 75 74 65 78 22 20 2d 64 65 73 63 72 69 70 74 69  utex" -descripti
4100: 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75 6e  on {.  Tests run
4110: 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54 45   with the SQLITE
4120: 5f 4f 50 45 4e 5f 4d 55 4c 54 49 54 48 52 45 41  _OPEN_MULTITHREA
4130: 44 45 44 20 66 6c 61 67 20 70 61 73 73 65 64 20  DED flag passed 
4140: 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  to sqlite3_open(
4150: 29 2e 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  )..} -initialize
4160: 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69   {.  rename sqli
4170: 74 65 33 20 73 71 6c 69 74 65 33 5f 6e 6f 6d 75  te3 sqlite3_nomu
4180: 74 65 78 0a 20 20 70 72 6f 63 20 73 71 6c 69 74  tex.  proc sqlit
4190: 65 33 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20  e3 {args} {.    
41a0: 69 66 20 7b 5b 73 74 72 69 6e 67 20 72 61 6e 67  if {[string rang
41b0: 65 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20  e [lindex $args 
41c0: 30 5d 20 30 20 30 5d 20 6e 65 20 22 2d 22 7d 20  0] 0 0] ne "-"} 
41d0: 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20  {.      lappend 
41e0: 61 72 67 73 20 2d 66 75 6c 6c 6d 75 74 65 78 20  args -fullmutex 
41f0: 30 20 2d 6e 6f 6d 75 74 65 78 20 31 0a 20 20 20  0 -nomutex 1.   
4200: 20 7d 0a 20 20 20 20 75 70 6c 65 76 65 6c 20 5b   }.    uplevel [
4210: 63 6f 6e 63 61 74 20 73 71 6c 69 74 65 33 5f 6e  concat sqlite3_n
4220: 6f 6d 75 74 65 78 20 24 61 72 67 73 5d 0a 20 20  omutex $args].  
4230: 7d 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64  }.} -files {.  d
4240: 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64 65 6c  elete.test   del
4250: 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73 65 72  ete2.test  inser
4260: 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b  t.test  rollback
4270: 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74  .test  select1.t
4280: 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65  est.  select2.te
4290: 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74 20 20  st  trans.test  
42a0: 20 20 75 70 64 61 74 65 2e 74 65 73 74 20 20 76    update.test  v
42b0: 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20 74 79  acuum.test    ty
42c0: 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70 65 73  pes.test.  types
42d0: 32 2e 74 65 73 74 20 20 20 74 79 70 65 73 33 2e  2.test   types3.
42e0: 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  test.} -shutdown
42f0: 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69   {.  rename sqli
4300: 74 65 33 20 7b 7d 0a 20 20 72 65 6e 61 6d 65 20  te3 {}.  rename 
4310: 73 71 6c 69 74 65 33 5f 6e 6f 6d 75 74 65 78 20  sqlite3_nomutex 
4320: 73 71 6c 69 74 65 33 0a 7d 0a 0a 23 20 52 75 6e  sqlite3.}..# Run
4330: 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 53   some tests in S
4340: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c  QLITE_CONFIG_MUL
4350: 54 49 54 48 52 45 41 44 20 6d 6f 64 65 2e 0a 23  TITHREAD mode..#
4360: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6d 75 6c  .test_suite "mul
4370: 74 69 74 68 72 65 61 64 22 20 2d 64 65 73 63 72  tithread" -descr
4380: 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73  iption {.  Tests
4390: 20 72 75 6e 20 69 6e 20 53 51 4c 49 54 45 5f 43   run in SQLITE_C
43a0: 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41  ONFIG_MULTITHREA
43b0: 44 20 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74 69 61  D mode.} -initia
43c0: 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20 7b  lize {.  catch {
43d0: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69  db close}.  sqli
43e0: 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63  te3_shutdown.  c
43f0: 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f  atch {sqlite3_co
4400: 6e 66 69 67 20 6d 75 6c 74 69 74 68 72 65 61 64  nfig multithread
4410: 7d 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  }.  sqlite3_init
4420: 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73  ialize.  autoins
4430: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
4440: 6f 6e 73 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  ons.} -files {. 
4450: 20 64 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64   delete.test   d
4460: 65 6c 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73  elete2.test  ins
4470: 65 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61  ert.test  rollba
4480: 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31  ck.test  select1
4490: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
44a0: 74 65 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74  test  trans.test
44b0: 20 20 20 20 75 70 64 61 74 65 2e 74 65 73 74 20      update.test 
44c0: 20 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20   vacuum.test    
44d0: 74 79 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70  types.test.  typ
44e0: 65 73 32 2e 74 65 73 74 20 20 20 74 79 70 65 73  es2.test   types
44f0: 33 2e 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f  3.test.} -shutdo
4500: 77 6e 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62  wn {.  catch {db
4510: 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65   close}.  sqlite
4520: 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74  3_shutdown.  cat
4530: 63 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ch {sqlite3_conf
4540: 69 67 20 73 65 72 69 61 6c 69 7a 65 64 7d 0a 20  ig serialized}. 
4550: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
4560: 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c  ize.  autoinstal
4570: 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73  l_test_functions
4580: 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74  .}..# Run some t
4590: 65 73 74 73 20 69 6e 20 53 51 4c 49 54 45 5f 4f  ests in SQLITE_O
45a0: 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 20 6d 6f  PEN_FULLMUTEX mo
45b0: 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65  de..#.test_suite
45c0: 20 22 66 75 6c 6c 6d 75 74 65 78 22 20 2d 64 65   "fullmutex" -de
45d0: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65  scription {.  Te
45e0: 73 74 73 20 72 75 6e 20 69 6e 20 53 51 4c 49 54  sts run in SQLIT
45f0: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
4600: 20 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74 69 61 6c   mode.} -initial
4610: 69 7a 65 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73  ize {.  rename s
4620: 71 6c 69 74 65 33 20 73 71 6c 69 74 65 33 5f 66  qlite3 sqlite3_f
4630: 75 6c 6c 6d 75 74 65 78 0a 20 20 70 72 6f 63 20  ullmutex.  proc 
4640: 73 71 6c 69 74 65 33 20 7b 61 72 67 73 7d 20 7b  sqlite3 {args} {
4650: 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67  .    if {[string
4660: 20 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24   range [lindex $
4670: 61 72 67 73 20 30 5d 20 30 20 30 5d 20 6e 65 20  args 0] 0 0] ne 
4680: 22 2d 22 7d 20 7b 0a 20 20 20 20 20 20 6c 61 70  "-"} {.      lap
4690: 70 65 6e 64 20 61 72 67 73 20 2d 6e 6f 6d 75 74  pend args -nomut
46a0: 65 78 20 30 20 2d 66 75 6c 6c 6d 75 74 65 78 20  ex 0 -fullmutex 
46b0: 31 0a 20 20 20 20 7d 0a 20 20 20 20 75 70 6c 65  1.    }.    uple
46c0: 76 65 6c 20 5b 63 6f 6e 63 61 74 20 73 71 6c 69  vel [concat sqli
46d0: 74 65 33 5f 66 75 6c 6c 6d 75 74 65 78 20 24 61  te3_fullmutex $a
46e0: 72 67 73 5d 0a 20 20 7d 0a 7d 20 2d 66 69 6c 65  rgs].  }.} -file
46f0: 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73  s {.  delete.tes
4700: 74 20 20 20 64 65 6c 65 74 65 32 2e 74 65 73 74  t   delete2.test
4710: 20 20 69 6e 73 65 72 74 2e 74 65 73 74 20 20 72    insert.test  r
4720: 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 20 73 65  ollback.test  se
4730: 6c 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c  lect1.test.  sel
4740: 65 63 74 32 2e 74 65 73 74 20 20 74 72 61 6e 73  ect2.test  trans
4750: 2e 74 65 73 74 20 20 20 20 75 70 64 61 74 65 2e  .test    update.
4760: 74 65 73 74 20 20 76 61 63 75 75 6d 2e 74 65 73  test  vacuum.tes
4770: 74 20 20 20 20 74 79 70 65 73 2e 74 65 73 74 0a  t    types.test.
4780: 20 20 74 79 70 65 73 32 2e 74 65 73 74 20 20 20    types2.test   
4790: 74 79 70 65 73 33 2e 74 65 73 74 0a 7d 20 2d 73  types3.test.} -s
47a0: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 72 65 6e 61  hutdown {.  rena
47b0: 6d 65 20 73 71 6c 69 74 65 33 20 7b 7d 0a 20 20  me sqlite3 {}.  
47c0: 72 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 5f 66  rename sqlite3_f
47d0: 75 6c 6c 6d 75 74 65 78 20 73 71 6c 69 74 65 33  ullmutex sqlite3
47e0: 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74  .}..# Run some t
47f0: 65 73 74 73 20 75 73 69 6e 67 20 74 68 65 20 22  ests using the "
4800: 6f 6e 65 66 69 6c 65 22 20 64 65 6d 6f 2e 0a 23  onefile" demo..#
4810: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6f 6e 65  .test_suite "one
4820: 66 69 6c 65 22 20 2d 64 65 73 63 72 69 70 74 69  file" -descripti
4830: 6f 6e 20 7b 0a 20 20 52 75 6e 20 73 6f 6d 65 20  on {.  Run some 
4840: 74 65 73 74 73 20 75 73 69 6e 67 20 74 68 65 20  tests using the 
4850: 22 74 65 73 74 5f 6f 6e 65 66 69 6c 65 2e 63 22  "test_onefile.c"
4860: 20 64 65 6d 6f 0a 7d 20 2d 69 6e 69 74 69 61 6c   demo.} -initial
4870: 69 7a 65 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73  ize {.  rename s
4880: 71 6c 69 74 65 33 20 73 71 6c 69 74 65 33 5f 6f  qlite3 sqlite3_o
4890: 6e 65 66 69 6c 65 0a 20 20 70 72 6f 63 20 73 71  nefile.  proc sq
48a0: 6c 69 74 65 33 20 7b 61 72 67 73 7d 20 7b 0a 20  lite3 {args} {. 
48b0: 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 72     if {[string r
48c0: 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24 61 72  ange [lindex $ar
48d0: 67 73 20 30 5d 20 30 20 30 5d 20 6e 65 20 22 2d  gs 0] 0 0] ne "-
48e0: 22 7d 20 7b 0a 20 20 20 20 20 20 6c 61 70 70 65  "} {.      lappe
48f0: 6e 64 20 61 72 67 73 20 2d 76 66 73 20 66 73 0a  nd args -vfs fs.
4900: 20 20 20 20 7d 0a 20 20 20 20 75 70 6c 65 76 65      }.    upleve
4910: 6c 20 5b 63 6f 6e 63 61 74 20 73 71 6c 69 74 65  l [concat sqlite
4920: 33 5f 6f 6e 65 66 69 6c 65 20 24 61 72 67 73 5d  3_onefile $args]
4930: 0a 20 20 7d 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  .  }.} -files {.
4940: 20 20 63 6f 6e 66 6c 69 63 74 2e 74 65 73 74 20    conflict.test 
4950: 20 69 6e 73 65 72 74 2e 74 65 73 74 20 20 20 69   insert.test   i
4960: 6e 73 65 72 74 32 2e 74 65 73 74 20 20 69 6e 73  nsert2.test  ins
4970: 65 72 74 33 2e 74 65 73 74 0a 20 20 72 6f 6c 6c  ert3.test.  roll
4980: 62 61 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63  back.test  selec
4990: 74 31 2e 74 65 73 74 20 20 73 65 6c 65 63 74 32  t1.test  select2
49a0: 2e 74 65 73 74 20 20 73 65 6c 65 63 74 33 2e 74  .test  select3.t
49b0: 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20  est.} -shutdown 
49c0: 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74  {.  rename sqlit
49d0: 65 33 20 7b 7d 0a 20 20 72 65 6e 61 6d 65 20 73  e3 {}.  rename s
49e0: 71 6c 69 74 65 33 5f 6f 6e 65 66 69 6c 65 20 73  qlite3_onefile s
49f0: 71 6c 69 74 65 33 0a 7d 0a 0a 23 20 52 75 6e 20  qlite3.}..# Run 
4a00: 73 6f 6d 65 20 74 65 73 74 73 20 75 73 69 6e 67  some tests using
4a10: 20 55 54 46 2d 31 36 20 64 61 74 61 62 61 73 65   UTF-16 database
4a20: 73 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  s..#.test_suite 
4a30: 22 75 74 66 31 36 22 20 2d 64 65 73 63 72 69 70  "utf16" -descrip
4a40: 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73  tion {.  Run tes
4a50: 74 73 20 75 73 69 6e 67 20 55 54 46 2d 31 36 20  ts using UTF-16 
4a60: 64 61 74 61 62 61 73 65 73 0a 7d 20 2d 70 72 65  databases.} -pre
4a70: 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 65  sql {.  pragma e
4a80: 6e 63 6f 64 69 6e 67 20 3d 20 27 55 54 46 2d 31  ncoding = 'UTF-1
4a90: 36 27 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20  6'.} -files {.  
4aa0: 20 20 61 6c 74 65 72 2e 74 65 73 74 20 61 6c 74    alter.test alt
4ab0: 65 72 33 2e 74 65 73 74 0a 20 20 20 20 61 6e 61  er3.test.    ana
4ac0: 6c 79 7a 65 2e 74 65 73 74 20 61 6e 61 6c 79 7a  lyze.test analyz
4ad0: 65 33 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 34  e3.test analyze4
4ae0: 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 35 2e 74  .test analyze5.t
4af0: 65 73 74 20 61 6e 61 6c 79 7a 65 36 2e 74 65 73  est analyze6.tes
4b00: 74 0a 20 20 20 20 61 6e 61 6c 79 7a 65 37 2e 74  t.    analyze7.t
4b10: 65 73 74 20 61 6e 61 6c 79 7a 65 38 2e 74 65 73  est analyze8.tes
4b20: 74 20 61 6e 61 6c 79 7a 65 39 2e 74 65 73 74 20  t analyze9.test 
4b30: 61 6e 61 6c 79 7a 65 41 2e 74 65 73 74 20 61 6e  analyzeA.test an
4b40: 61 6c 79 7a 65 42 2e 74 65 73 74 0a 20 20 20 20  alyzeB.test.    
4b50: 61 75 74 68 2e 74 65 73 74 20 62 69 6e 64 2e 74  auth.test bind.t
4b60: 65 73 74 20 62 6c 6f 62 2e 74 65 73 74 20 63 61  est blob.test ca
4b70: 70 69 32 2e 74 65 73 74 20 63 61 70 69 33 2e 74  pi2.test capi3.t
4b80: 65 73 74 20 63 6f 6c 6c 61 74 65 31 2e 74 65 73  est collate1.tes
4b90: 74 0a 20 20 20 20 63 6f 6c 6c 61 74 65 32 2e 74  t.    collate2.t
4ba0: 65 73 74 20 63 6f 6c 6c 61 74 65 33 2e 74 65 73  est collate3.tes
4bb0: 74 20 63 6f 6c 6c 61 74 65 34 2e 74 65 73 74 20  t collate4.test 
4bc0: 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74 20 63 6f  collate5.test co
4bd0: 6c 6c 61 74 65 36 2e 74 65 73 74 0a 20 20 20 20  llate6.test.    
4be0: 63 6f 6e 66 6c 69 63 74 2e 74 65 73 74 20 64 61  conflict.test da
4bf0: 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65 2e 74  te.test delete.t
4c00: 65 73 74 20 65 78 70 72 2e 74 65 73 74 20 66 6b  est expr.test fk
4c10: 65 79 31 2e 74 65 73 74 20 66 75 6e 63 2e 74 65  ey1.test func.te
4c20: 73 74 0a 20 20 20 20 68 6f 6f 6b 2e 74 65 73 74  st.    hook.test
4c30: 20 69 6e 64 65 78 2e 74 65 73 74 20 69 6e 73 65   index.test inse
4c40: 72 74 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e  rt2.test insert.
4c50: 74 65 73 74 20 69 6e 74 65 72 72 75 70 74 2e 74  test interrupt.t
4c60: 65 73 74 20 69 6e 2e 74 65 73 74 0a 20 20 20 20  est in.test.    
4c70: 69 6e 74 70 6b 65 79 2e 74 65 73 74 20 69 6f 65  intpkey.test ioe
4c80: 72 72 2e 74 65 73 74 20 6a 6f 69 6e 32 2e 74 65  rr.test join2.te
4c90: 73 74 20 6a 6f 69 6e 2e 74 65 73 74 20 6c 61 73  st join.test las
4ca0: 74 69 6e 73 65 72 74 2e 74 65 73 74 0a 20 20 20  tinsert.test.   
4cb0: 20 6c 61 73 74 73 74 6d 74 63 68 61 6e 67 65 73   laststmtchanges
4cc0: 2e 74 65 73 74 20 6c 69 6d 69 74 2e 74 65 73 74  .test limit.test
4cd0: 20 6c 6f 63 6b 32 2e 74 65 73 74 20 6c 6f 63 6b   lock2.test lock
4ce0: 2e 74 65 73 74 20 6d 61 69 6e 2e 74 65 73 74 20  .test main.test 
4cf0: 0a 20 20 20 20 6d 65 6d 64 62 2e 74 65 73 74 20  .    memdb.test 
4d00: 6d 69 6e 6d 61 78 2e 74 65 73 74 20 6d 69 73 63  minmax.test misc
4d10: 31 2e 74 65 73 74 20 6d 69 73 63 32 2e 74 65 73  1.test misc2.tes
4d20: 74 20 6d 69 73 63 33 2e 74 65 73 74 20 6e 6f 74  t misc3.test not
4d30: 6e 75 6c 6c 2e 74 65 73 74 0a 20 20 20 20 6e 75  null.test.    nu
4d40: 6c 6c 2e 74 65 73 74 20 70 72 6f 67 72 65 73 73  ll.test progress
4d50: 2e 74 65 73 74 20 71 75 6f 74 65 2e 74 65 73 74  .test quote.test
4d60: 20 72 6f 77 69 64 2e 74 65 73 74 20 73 65 6c 65   rowid.test sele
4d70: 63 74 31 2e 74 65 73 74 20 73 65 6c 65 63 74 32  ct1.test select2
4d80: 2e 74 65 73 74 0a 20 20 20 20 73 65 6c 65 63 74  .test.    select
4d90: 33 2e 74 65 73 74 20 73 65 6c 65 63 74 34 2e 74  3.test select4.t
4da0: 65 73 74 20 73 65 6c 65 63 74 35 2e 74 65 73 74  est select5.test
4db0: 20 73 65 6c 65 63 74 36 2e 74 65 73 74 20 73 6f   select6.test so
4dc0: 72 74 2e 74 65 73 74 20 0a 20 20 20 20 73 75 62  rt.test .    sub
4dd0: 73 65 6c 65 63 74 2e 74 65 73 74 20 74 61 62 6c  select.test tabl
4de0: 65 61 70 69 2e 74 65 73 74 20 74 61 62 6c 65 2e  eapi.test table.
4df0: 74 65 73 74 20 74 65 6d 70 74 61 62 6c 65 2e 74  test temptable.t
4e00: 65 73 74 0a 20 20 20 20 74 72 61 63 65 2e 74 65  est.    trace.te
4e10: 73 74 20 74 72 69 67 67 65 72 31 2e 74 65 73 74  st trigger1.test
4e20: 20 74 72 69 67 67 65 72 32 2e 74 65 73 74 20 74   trigger2.test t
4e30: 72 69 67 67 65 72 33 2e 74 65 73 74 0a 20 20 20  rigger3.test.   
4e40: 20 74 72 69 67 67 65 72 34 2e 74 65 73 74 20 74   trigger4.test t
4e50: 79 70 65 73 32 2e 74 65 73 74 20 74 79 70 65 73  ypes2.test types
4e60: 2e 74 65 73 74 20 75 6e 69 71 75 65 2e 74 65 73  .test unique.tes
4e70: 74 20 75 70 64 61 74 65 2e 74 65 73 74 0a 20 20  t update.test.  
4e80: 20 20 76 61 63 75 75 6d 2e 74 65 73 74 20 76 69    vacuum.test vi
4e90: 65 77 2e 74 65 73 74 20 77 68 65 72 65 2e 74 65  ew.test where.te
4ea0: 73 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65  st.}..# Run some
4eb0: 20 74 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73   tests in exclus
4ec0: 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65  ive locking mode
4ed0: 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22  ..#.test_suite "
4ee0: 65 78 63 6c 75 73 69 76 65 22 20 2d 64 65 73 63  exclusive" -desc
4ef0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20  ription {.  Run 
4f00: 74 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69  tests in exclusi
4f10: 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e  ve locking mode.
4f20: 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70  .} -presql {.  p
4f30: 72 61 67 6d 61 20 6c 6f 63 6b 69 6e 67 5f 6d 6f  ragma locking_mo
4f40: 64 65 20 3d 20 27 65 78 63 6c 75 73 69 76 65 27  de = 'exclusive'
4f50: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 72 6f  .} -files {.  ro
4f60: 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c 65  llback.test sele
4f70: 63 74 31 2e 74 65 73 74 20 73 65 6c 65 63 74 32  ct1.test select2
4f80: 2e 74 65 73 74 20 0a 20 20 6d 61 6c 6c 6f 63 2e  .test .  malloc.
4f90: 74 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a  test ioerr.test.
4fa0: 7d 20 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74  } ..# Run some t
4fb0: 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76  ests in exclusiv
4fc0: 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 77  e locking mode w
4fd0: 69 74 68 20 74 72 75 6e 63 61 74 65 64 20 6a 6f  ith truncated jo
4fe0: 75 72 6e 61 6c 73 2e 0a 23 0a 74 65 73 74 5f 73  urnals..#.test_s
4ff0: 75 69 74 65 20 22 65 78 63 6c 75 73 69 76 65 2d  uite "exclusive-
5000: 74 72 75 6e 63 61 74 65 22 20 2d 64 65 73 63 72  truncate" -descr
5010: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
5020: 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76  ests in exclusiv
5030: 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 61  e locking mode a
5040: 6e 64 20 74 72 75 6e 63 61 74 65 20 6a 6f 75 72  nd truncate jour
5050: 6e 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65  nal mode..} -pre
5060: 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6c  sql {.  pragma l
5070: 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 3d 20 27 65  ocking_mode = 'e
5080: 78 63 6c 75 73 69 76 65 27 3b 0a 20 20 70 72 61  xclusive';.  pra
5090: 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65  gma journal_mode
50a0: 20 3d 20 54 52 55 4e 43 41 54 45 3b 0a 7d 20 2d   = TRUNCATE;.} -
50b0: 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65  files {.  delete
50c0: 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65  .test delete2.te
50d0: 73 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20 72  st insert.test r
50e0: 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c  ollback.test sel
50f0: 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65  ect1.test.  sele
5100: 63 74 32 2e 74 65 73 74 20 75 70 64 61 74 65 2e  ct2.test update.
5110: 74 65 73 74 20 6d 61 6c 6c 6f 63 2e 74 65 73 74  test malloc.test
5120: 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d 20 0a 0a   ioerr.test.} ..
5130: 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73  # Run some tests
5140: 20 69 6e 20 70 65 72 73 69 73 74 65 6e 74 20 6a   in persistent j
5150: 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74  ournal mode..#.t
5160: 65 73 74 5f 73 75 69 74 65 20 22 70 65 72 73 69  est_suite "persi
5170: 73 74 65 6e 74 5f 6a 6f 75 72 6e 61 6c 22 20 2d  stent_journal" -
5180: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
5190: 52 75 6e 20 74 65 73 74 73 20 69 6e 20 70 65 72  Run tests in per
51a0: 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61 6c 20  sistent-journal 
51b0: 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20  mode..} -presql 
51c0: 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e  {.  pragma journ
51d0: 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69 73  al_mode = persis
51e0: 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64  t.} -files {.  d
51f0: 65 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74  elete.test delet
5200: 65 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74  e2.test insert.t
5210: 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73  est rollback.tes
5220: 74 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20  t select1.test. 
5230: 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20 74 72   select2.test tr
5240: 61 6e 73 2e 74 65 73 74 20 75 70 64 61 74 65 2e  ans.test update.
5250: 74 65 73 74 20 76 61 63 75 75 6d 2e 74 65 73 74  test vacuum.test
5260: 20 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20   .}..# Run some 
5270: 74 65 73 74 73 20 69 6e 20 74 72 75 6e 63 61 74  tests in truncat
5280: 69 6e 67 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65  ing journal mode
5290: 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22  ..#.test_suite "
52a0: 74 72 75 6e 63 61 74 65 5f 6a 6f 75 72 6e 61 6c  truncate_journal
52b0: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
52c0: 0a 20 20 52 75 6e 20 74 65 73 74 73 20 69 6e 20  .  Run tests in 
52d0: 70 65 72 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e  persistent-journ
52e0: 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  al mode..} -pres
52f0: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f  ql {.  pragma jo
5300: 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 74 72 75  urnal_mode = tru
5310: 6e 63 61 74 65 0a 7d 20 2d 66 69 6c 65 73 20 7b  ncate.} -files {
5320: 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64  .  delete.test d
5330: 65 6c 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65  elete2.test inse
5340: 72 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b  rt.test rollback
5350: 2e 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65  .test select1.te
5360: 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73  st.  select2.tes
5370: 74 20 74 72 61 6e 73 2e 74 65 73 74 20 75 70 64  t trans.test upd
5380: 61 74 65 2e 74 65 73 74 20 76 61 63 75 75 6d 2e  ate.test vacuum.
5390: 74 65 73 74 20 0a 20 20 6d 61 6c 6c 6f 63 2e 74  test .  malloc.t
53a0: 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d  est ioerr.test.}
53b0: 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 65 72 72  ..# Run some err
53c0: 6f 72 20 74 65 73 74 73 20 69 6e 20 70 65 72 73  or tests in pers
53d0: 69 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d  istent journal m
53e0: 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74  ode..#.test_suit
53f0: 65 20 22 70 65 72 73 69 73 74 65 6e 74 5f 6a 6f  e "persistent_jo
5400: 75 72 6e 61 6c 5f 65 72 72 6f 72 22 20 2d 64 65  urnal_error" -de
5410: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75  scription {.  Ru
5420: 6e 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 61 6e  n malloc.test an
5430: 64 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6e 20  d ioerr.test in 
5440: 70 65 72 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e  persistent-journ
5450: 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  al mode..} -pres
5460: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f  ql {.  pragma jo
5470: 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72  urnal_mode = per
5480: 73 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  sist.} -files {.
5490: 20 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f    malloc.test io
54a0: 65 72 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75  err.test.}..# Ru
54b0: 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20  n some tests in 
54c0: 6e 6f 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  no journal mode.
54d0: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e  .#.test_suite "n
54e0: 6f 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64 65 73 63  o_journal" -desc
54f0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20  ription {.  Run 
5500: 74 65 73 74 73 20 69 6e 20 6e 6f 2d 6a 6f 75 72  tests in no-jour
5510: 6e 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65  nal mode..} -pre
5520: 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a  sql {.  pragma j
5530: 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65  ournal_mode = pe
5540: 72 73 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b  rsist.} -files {
5550: 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64  .  delete.test d
5560: 65 6c 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65  elete2.test inse
5570: 72 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b  rt.test rollback
5580: 2e 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65  .test select1.te
5590: 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73  st.  select2.tes
55a0: 74 20 74 72 61 6e 73 2e 74 65 73 74 20 75 70 64  t trans.test upd
55b0: 61 74 65 2e 74 65 73 74 20 76 61 63 75 75 6d 2e  ate.test vacuum.
55c0: 74 65 73 74 20 0a 7d 0a 0a 23 20 52 75 6e 20 73  test .}..# Run s
55d0: 6f 6d 65 20 65 72 72 6f 72 20 74 65 73 74 73 20  ome error tests 
55e0: 69 6e 20 6e 6f 20 6a 6f 75 72 6e 61 6c 20 6d 6f  in no journal mo
55f0: 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65  de..#.test_suite
5600: 20 22 6e 6f 5f 6a 6f 75 72 6e 61 6c 5f 65 72 72   "no_journal_err
5610: 6f 72 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  or" -description
5620: 20 7b 0a 20 20 52 75 6e 20 6d 61 6c 6c 6f 63 2e   {.  Run malloc.
5630: 74 65 73 74 20 61 6e 64 20 69 6f 65 72 72 2e 74  test and ioerr.t
5640: 65 73 74 20 69 6e 20 6e 6f 2d 6a 6f 75 72 6e 61  est in no-journa
5650: 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71  l mode..} -presq
5660: 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75  l {.  pragma jou
5670: 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73  rnal_mode = pers
5680: 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  ist.} -files {. 
5690: 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65   malloc.test ioe
56a0: 72 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75 6e  rr.test.}..# Run
56b0: 20 73 6f 6d 65 20 63 72 61 73 68 2d 74 65 73 74   some crash-test
56c0: 73 20 69 6e 20 61 75 74 6f 76 61 63 75 75 6d 20  s in autovacuum 
56d0: 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69  mode..#.test_sui
56e0: 74 65 20 22 61 75 74 6f 76 61 63 75 75 6d 5f 63  te "autovacuum_c
56f0: 72 61 73 68 22 20 2d 64 65 73 63 72 69 70 74 69  rash" -descripti
5700: 6f 6e 20 7b 0a 20 20 52 75 6e 20 63 72 61 73 68  on {.  Run crash
5710: 2e 74 65 73 74 20 69 6e 20 61 75 74 6f 76 61 63  .test in autovac
5720: 75 75 6d 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65  uum mode..} -pre
5730: 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 61  sql {.  pragma a
5740: 75 74 6f 5f 76 61 63 75 75 6d 20 3d 20 31 0a 7d  uto_vacuum = 1.}
5750: 20 2d 66 69 6c 65 73 20 63 72 61 73 68 2e 74 65   -files crash.te
5760: 73 74 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 69  st..# Run some i
5770: 6f 65 72 72 2d 74 65 73 74 73 20 69 6e 20 61 75  oerr-tests in au
5780: 74 6f 76 61 63 75 75 6d 20 6d 6f 64 65 2e 0a 23  tovacuum mode..#
5790: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 61 75 74  .test_suite "aut
57a0: 6f 76 61 63 75 75 6d 5f 69 6f 65 72 72 22 20 2d  ovacuum_ioerr" -
57b0: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
57c0: 52 75 6e 20 69 6f 65 72 72 2e 74 65 73 74 20 69  Run ioerr.test i
57d0: 6e 20 61 75 74 6f 76 61 63 75 75 6d 20 6d 6f 64  n autovacuum mod
57e0: 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20  e..} -presql {. 
57f0: 20 70 72 61 67 6d 61 20 61 75 74 6f 5f 76 61 63   pragma auto_vac
5800: 75 75 6d 20 3d 20 31 0a 7d 20 2d 66 69 6c 65 73  uum = 1.} -files
5810: 20 69 6f 65 72 72 2e 74 65 73 74 0a 0a 23 20 52   ioerr.test..# R
5820: 75 6e 20 74 65 73 74 73 20 77 69 74 68 20 61 6e  un tests with an
5830: 20 69 6e 2d 6d 65 6d 6f 72 79 20 6a 6f 75 72 6e   in-memory journ
5840: 61 6c 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65  al..#.test_suite
5850: 20 22 69 6e 6d 65 6d 6f 72 79 5f 6a 6f 75 72 6e   "inmemory_journ
5860: 61 6c 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  al" -description
5870: 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20 77   {.  Run tests w
5880: 69 74 68 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79  ith an in-memory
5890: 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2e 0a 7d   journal file..}
58a0: 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61   -presql {.  pra
58b0: 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65  gma journal_mode
58c0: 20 3d 20 27 6d 65 6d 6f 72 79 27 0a 7d 20 2d 66   = 'memory'.} -f
58d0: 69 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24  iles [test_set $
58e0: 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20  ::allquicktests 
58f0: 2d 65 78 63 6c 75 64 65 20 7b 0a 20 20 23 20 45  -exclude {.  # E
5900: 78 63 6c 75 64 65 20 61 6c 6c 20 74 65 73 74 73  xclude all tests
5910: 20 74 68 61 74 20 73 69 6d 75 6c 61 74 65 20 49   that simulate I
5920: 4f 20 65 72 72 6f 72 73 2e 0a 20 20 61 75 74 6f  O errors..  auto
5930: 76 61 63 75 75 6d 5f 69 6f 65 72 72 32 2e 74 65  vacuum_ioerr2.te
5940: 73 74 20 69 6e 63 72 76 61 63 75 75 6d 5f 69 6f  st incrvacuum_io
5950: 65 72 72 2e 74 65 73 74 20 69 6f 65 72 72 2e 74  err.test ioerr.t
5960: 65 73 74 0a 20 20 69 6f 65 72 72 2e 74 65 73 74  est.  ioerr.test
5970: 20 69 6f 65 72 72 32 2e 74 65 73 74 20 69 6f 65   ioerr2.test ioe
5980: 72 72 33 2e 74 65 73 74 20 69 6f 65 72 72 34 2e  rr3.test ioerr4.
5990: 74 65 73 74 20 69 6f 65 72 72 35 2e 74 65 73 74  test ioerr5.test
59a0: 0a 20 20 76 61 63 75 75 6d 33 2e 74 65 73 74 20  .  vacuum3.test 
59b0: 69 6e 63 72 62 6c 6f 62 5f 65 72 72 2e 74 65 73  incrblob_err.tes
59c0: 74 20 64 69 73 6b 66 75 6c 6c 2e 74 65 73 74 20  t diskfull.test 
59d0: 62 61 63 6b 75 70 5f 69 6f 65 72 72 2e 74 65 73  backup_ioerr.tes
59e0: 74 0a 20 20 65 5f 66 74 73 33 2e 74 65 73 74 20  t.  e_fts3.test 
59f0: 66 74 73 33 63 6f 76 2e 74 65 73 74 20 66 74 73  fts3cov.test fts
5a00: 33 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 66 74 73  3malloc.test fts
5a10: 33 72 6e 64 2e 74 65 73 74 0a 20 20 66 74 73 33  3rnd.test.  fts3
5a20: 73 6e 69 70 70 65 74 2e 74 65 73 74 20 6d 6d 61  snippet.test mma
5a30: 70 66 61 75 6c 74 2e 74 65 73 74 0a 0a 20 20 23  pfault.test..  #
5a40: 20 45 78 63 6c 75 64 65 20 74 65 73 74 20 73 63   Exclude test sc
5a50: 72 69 70 74 73 20 74 68 61 74 20 75 73 65 20 74  ripts that use t
5a60: 63 6c 20 49 4f 20 74 6f 20 61 63 63 65 73 73 20  cl IO to access 
5a70: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 73 20 6f 72  journal files or
5a80: 20 63 6f 75 6e 74 0a 20 20 23 20 74 68 65 20 6e   count.  # the n
5a90: 75 6d 62 65 72 20 6f 66 20 66 73 79 6e 63 28 29  umber of fsync()
5aa0: 20 63 61 6c 6c 73 2e 0a 20 20 70 61 67 65 72 2e   calls..  pager.
5ab0: 74 65 73 74 20 65 78 63 6c 75 73 69 76 65 2e 74  test exclusive.t
5ac0: 65 73 74 20 6a 72 6e 6c 6d 6f 64 65 2e 74 65 73  est jrnlmode.tes
5ad0: 74 20 73 79 6e 63 2e 74 65 73 74 20 6d 69 73 63  t sync.test misc
5ae0: 31 2e 74 65 73 74 20 0a 20 20 6a 6f 75 72 6e 61  1.test .  journa
5af0: 6c 31 2e 74 65 73 74 20 63 6f 6e 66 6c 69 63 74  l1.test conflict
5b00: 2e 74 65 73 74 20 63 72 61 73 68 38 2e 74 65 73  .test crash8.tes
5b10: 74 20 74 6b 74 33 34 35 37 2e 74 65 73 74 20 69  t tkt3457.test i
5b20: 6f 2e 74 65 73 74 0a 20 20 6a 6f 75 72 6e 61 6c  o.test.  journal
5b30: 33 2e 74 65 73 74 20 38 5f 33 5f 6e 61 6d 65 73  3.test 8_3_names
5b40: 2e 74 65 73 74 0a 0a 20 20 70 61 67 65 72 31 2e  .test..  pager1.
5b50: 74 65 73 74 20 61 73 79 6e 63 34 2e 74 65 73 74  test async4.test
5b60: 20 63 6f 72 72 75 70 74 2e 74 65 73 74 20 66 69   corrupt.test fi
5b70: 6c 65 66 6d 74 2e 74 65 73 74 20 70 61 67 65 72  lefmt.test pager
5b80: 32 2e 74 65 73 74 0a 20 20 63 6f 72 72 75 70 74  2.test.  corrupt
5b90: 35 2e 74 65 73 74 20 63 6f 72 72 75 70 74 41 2e  5.test corruptA.
5ba0: 74 65 73 74 20 70 61 67 65 72 6f 70 74 2e 74 65  test pageropt.te
5bb0: 73 74 0a 0a 20 20 23 20 45 78 63 6c 75 64 65 20  st..  # Exclude 
5bc0: 73 74 6d 74 2e 74 65 73 74 2c 20 77 68 69 63 68  stmt.test, which
5bd0: 20 65 78 70 65 63 74 73 20 73 75 62 2d 6a 6f 75   expects sub-jou
5be0: 72 6e 61 6c 73 20 74 6f 20 75 73 65 20 74 65 6d  rnals to use tem
5bf0: 70 6f 72 61 72 79 20 66 69 6c 65 73 2e 0a 20 20  porary files..  
5c00: 73 74 6d 74 2e 74 65 73 74 0a 0a 20 20 7a 65 72  stmt.test..  zer
5c10: 6f 64 61 6d 61 67 65 2e 74 65 73 74 0a 0a 20 20  odamage.test..  
5c20: 23 20 57 41 4c 20 6d 6f 64 65 20 69 73 20 64 69  # WAL mode is di
5c30: 66 66 65 72 65 6e 74 2e 0a 20 20 77 61 6c 2a 20  fferent..  wal* 
5c40: 74 6b 74 2d 32 64 31 61 35 63 36 37 64 2e 74 65  tkt-2d1a5c67d.te
5c50: 73 74 20 62 61 63 6b 63 6f 6d 70 61 74 2e 74 65  st backcompat.te
5c60: 73 74 0a 7d 5d 0a 0a 69 66 63 61 70 61 62 6c 65  st.}]..ifcapable
5c70: 20 6d 65 6d 33 20 7b 0a 20 20 74 65 73 74 5f 73   mem3 {.  test_s
5c80: 75 69 74 65 20 22 6d 65 6d 73 79 73 33 22 20 2d  uite "memsys3" -
5c90: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
5ca0: 20 20 52 75 6e 20 74 65 73 74 73 20 75 73 69 6e    Run tests usin
5cb0: 67 20 74 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20  g the allocator 
5cc0: 69 6e 20 6d 65 6d 33 2e 63 2e 0a 20 20 7d 20 2d  in mem3.c..  } -
5cd0: 66 69 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20  files [test_set 
5ce0: 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  $::allquicktests
5cf0: 20 2d 65 78 63 6c 75 64 65 20 7b 0a 20 20 20 20   -exclude {.    
5d00: 61 75 74 6f 76 61 63 75 75 6d 2e 74 65 73 74 20  autovacuum.test 
5d10: 20 20 20 20 20 20 20 20 20 20 64 65 6c 65 74 65            delete
5d20: 33 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20  3.test          
5d30: 20 20 20 20 6d 61 6e 79 64 62 2e 74 65 73 74 0a      manydb.test.
5d40: 20 20 20 20 62 69 67 72 6f 77 2e 74 65 73 74 20      bigrow.test 
5d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
5d60: 63 72 62 6c 6f 62 32 2e 74 65 73 74 20 20 20 20  crblob2.test    
5d70: 20 20 20 20 20 20 20 20 6d 65 6d 64 62 2e 74 65          memdb.te
5d80: 73 74 0a 20 20 20 20 62 69 74 76 65 63 2e 74 65  st.    bitvec.te
5d90: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  st              
5da0: 20 69 6e 64 65 78 32 2e 74 65 73 74 20 20 20 20   index2.test    
5db0: 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 75             memsu
5dc0: 62 73 79 73 31 2e 74 65 73 74 0a 20 20 20 20 63  bsys1.test.    c
5dd0: 61 70 69 33 63 2e 74 65 73 74 20 20 20 20 20 20  api3c.test      
5de0: 20 20 20 20 20 20 20 20 20 69 6f 65 72 72 2e 74           ioerr.t
5df0: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20  est             
5e00: 20 20 20 6d 65 6d 73 75 62 73 79 73 32 2e 74 65     memsubsys2.te
5e10: 73 74 0a 20 20 20 20 63 61 70 69 33 2e 74 65 73  st.    capi3.tes
5e20: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
5e30: 20 6a 6f 69 6e 33 2e 74 65 73 74 20 20 20 20 20   join3.test     
5e40: 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 73             pages
5e50: 69 7a 65 2e 74 65 73 74 0a 20 20 20 20 63 6f 6c  ize.test.    col
5e60: 6c 61 74 65 35 2e 74 65 73 74 20 20 20 20 20 20  late5.test      
5e70: 20 20 20 20 20 20 20 6c 69 6d 69 74 2e 74 65 73         limit.tes
5e80: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
5e90: 20 62 61 63 6b 75 70 5f 69 6f 65 72 72 2e 74 65   backup_ioerr.te
5ea0: 73 74 0a 20 20 20 20 62 61 63 6b 75 70 5f 6d 61  st.    backup_ma
5eb0: 6c 6c 6f 63 2e 74 65 73 74 0a 20 20 7d 5d 20 2d  lloc.test.  }] -
5ec0: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20  initialize {.   
5ed0: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
5ee0: 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65  }.    sqlite3_re
5ef0: 73 65 74 5f 61 75 74 6f 5f 65 78 74 65 6e 73 69  set_auto_extensi
5f00: 6f 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73  on.    sqlite3_s
5f10: 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69  hutdown.    sqli
5f20: 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20  te3_config_heap 
5f30: 32 35 30 30 30 30 30 30 20 30 0a 20 20 20 20 73  25000000 0.    s
5f40: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f  qlite3_config_lo
5f50: 6f 6b 61 73 69 64 65 20 30 20 30 0a 20 20 20 20  okaside 0 0.    
5f60: 69 66 63 61 70 61 62 6c 65 20 6d 65 6d 35 20 7b  ifcapable mem5 {
5f70: 0a 20 20 20 20 20 20 23 20 49 66 20 62 6f 74 68  .      # If both
5f80: 20 6d 65 6d 73 79 73 33 20 61 6e 64 20 6d 65 6d   memsys3 and mem
5f90: 73 79 73 35 20 61 72 65 20 65 6e 61 62 6c 65 64  sys5 are enabled
5fa0: 20 69 6e 20 74 68 65 20 62 75 69 6c 64 2c 20 74   in the build, t
5fb0: 68 65 20 63 61 6c 6c 20 74 6f 0a 20 20 20 20 20  he call to.     
5fc0: 20 23 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66   # [sqlite3_conf
5fd0: 69 67 5f 68 65 61 70 5d 20 77 69 6c 6c 20 69 6e  ig_heap] will in
5fe0: 69 74 69 61 6c 69 7a 65 20 74 68 65 20 73 79 73  itialize the sys
5ff0: 74 65 6d 20 74 6f 20 75 73 65 20 6d 65 6d 73 79  tem to use memsy
6000: 73 35 2e 0a 20 20 20 20 20 20 23 20 54 68 65 20  s5..      # The 
6010: 66 6f 6c 6c 6f 77 69 6e 67 20 6f 76 65 72 72 69  following overri
6020: 64 65 73 20 74 68 69 73 20 70 72 65 66 65 72 65  des this prefere
6030: 6e 63 65 20 61 6e 64 20 69 6e 73 74 61 6c 6c 73  nce and installs
6040: 20 74 68 65 20 6d 65 6d 73 79 73 33 0a 20 20 20   the memsys3.   
6050: 20 20 20 23 20 61 6c 6c 6f 63 61 74 6f 72 2e 0a     # allocator..
6060: 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e        sqlite3_in
6070: 73 74 61 6c 6c 5f 6d 65 6d 73 79 73 33 0a 20 20  stall_memsys3.  
6080: 20 20 7d 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f    }.    install_
6090: 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20  malloc_faultsim 
60a0: 31 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69  1 .    sqlite3_i
60b0: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75  nitialize.    au
60c0: 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66  toinstall_test_f
60d0: 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 73 68  unctions.  } -sh
60e0: 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74  utdown {.    cat
60f0: 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20  ch {db close}.  
6100: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
6110: 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63  wn.    sqlite3_c
6120: 6f 6e 66 69 67 5f 68 65 61 70 20 30 20 30 0a 20  onfig_heap 0 0. 
6130: 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69     sqlite3_confi
6140: 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30 20  g_lookaside 100 
6150: 35 30 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f  500.    install_
6160: 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20  malloc_faultsim 
6170: 31 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69  1 .    sqlite3_i
6180: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75  nitialize.    au
6190: 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66  toinstall_test_f
61a0: 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a  unctions.  }.}..
61b0: 69 66 63 61 70 61 62 6c 65 20 6d 65 6d 35 20 7b  ifcapable mem5 {
61c0: 0a 20 20 74 65 73 74 5f 73 75 69 74 65 20 22 6d  .  test_suite "m
61d0: 65 6d 73 79 73 35 22 20 2d 64 65 73 63 72 69 70  emsys5" -descrip
61e0: 74 69 6f 6e 20 7b 0a 20 20 20 20 52 75 6e 20 74  tion {.    Run t
61f0: 65 73 74 73 20 75 73 69 6e 67 20 74 68 65 20 61  ests using the a
6200: 6c 6c 6f 63 61 74 6f 72 20 69 6e 20 6d 65 6d 35  llocator in mem5
6210: 2e 63 2e 0a 20 20 7d 20 2d 66 69 6c 65 73 20 5b  .c..  } -files [
6220: 74 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71  test_set $::allq
6230: 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75  uicktests -exclu
6240: 64 65 20 7b 0a 20 20 20 20 61 75 74 6f 76 61 63  de {.    autovac
6250: 75 75 6d 2e 74 65 73 74 20 20 20 20 20 20 20 20  uum.test        
6260: 20 20 20 64 65 6c 65 74 65 33 2e 74 65 73 74 20     delete3.test 
6270: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 6e               man
6280: 79 64 62 2e 74 65 73 74 0a 20 20 20 20 62 69 67  ydb.test.    big
6290: 72 6f 77 2e 74 65 73 74 20 20 20 20 20 20 20 20  row.test        
62a0: 20 20 20 20 20 20 20 69 6e 63 72 62 6c 6f 62 32         incrblob2
62b0: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
62c0: 20 6d 65 6d 64 62 2e 74 65 73 74 0a 20 20 20 20   memdb.test.    
62d0: 62 69 74 76 65 63 2e 74 65 73 74 20 20 20 20 20  bitvec.test     
62e0: 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 32            index2
62f0: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
6300: 20 20 20 20 6d 65 6d 73 75 62 73 79 73 31 2e 74      memsubsys1.t
6310: 65 73 74 0a 20 20 20 20 63 61 70 69 33 63 2e 74  est.    capi3c.t
6320: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20  est             
6330: 20 20 69 6f 65 72 72 2e 74 65 73 74 20 20 20 20    ioerr.test    
6340: 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73              mems
6350: 75 62 73 79 73 32 2e 74 65 73 74 0a 20 20 20 20  ubsys2.test.    
6360: 63 61 70 69 33 2e 74 65 73 74 20 20 20 20 20 20  capi3.test      
6370: 20 20 20 20 20 20 20 20 20 20 6a 6f 69 6e 33 2e            join3.
6380: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20  test            
6390: 20 20 20 20 70 61 67 65 73 69 7a 65 2e 74 65 73      pagesize.tes
63a0: 74 0a 20 20 20 20 63 6f 6c 6c 61 74 65 35 2e 74  t.    collate5.t
63b0: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20  est             
63c0: 6c 69 6d 69 74 2e 74 65 73 74 20 20 20 20 20 20  limit.test      
63d0: 20 20 20 20 20 20 20 20 20 20 7a 65 72 6f 62 6c            zerobl
63e0: 6f 62 2e 74 65 73 74 0a 20 20 7d 5d 20 2d 69 6e  ob.test.  }] -in
63f0: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63  itialize {.    c
6400: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
6410: 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74      sqlite3_shut
6420: 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33  down.    sqlite3
6430: 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20 32 35 30  _config_heap 250
6440: 30 30 30 30 30 20 36 34 0a 20 20 20 20 73 71 6c  00000 64.    sql
6450: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b  ite3_config_look
6460: 61 73 69 64 65 20 30 20 30 0a 20 20 20 20 69 6e  aside 0 0.    in
6470: 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75  stall_malloc_fau
6480: 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c  ltsim 1 .    sql
6490: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
64a0: 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f      autoinstall_
64b0: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20  test_functions. 
64c0: 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20   } -shutdown {. 
64d0: 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f     catch {db clo
64e0: 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  se}.    sqlite3_
64f0: 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c  shutdown.    sql
6500: 69 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70  ite3_config_heap
6510: 20 30 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33   0 0.    sqlite3
6520: 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64  _config_lookasid
6530: 65 20 31 30 30 20 35 30 30 0a 20 20 20 20 69 6e  e 100 500.    in
6540: 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75  stall_malloc_fau
6550: 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c  ltsim 1 .    sql
6560: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
6570: 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f      autoinstall_
6580: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20  test_functions. 
6590: 20 7d 0a 0a 20 20 74 65 73 74 5f 73 75 69 74 65   }..  test_suite
65a0: 20 22 6d 65 6d 73 79 73 35 2d 32 22 20 2d 64 65   "memsys5-2" -de
65b0: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20  scription {.    
65c0: 52 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67 20  Run tests using 
65d0: 74 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e  the allocator in
65e0: 20 6d 65 6d 35 2e 63 20 69 6e 20 61 20 64 69 66   mem5.c in a dif
65f0: 66 65 72 65 6e 74 20 63 6f 6e 66 69 67 75 72 61  ferent configura
6600: 74 69 6f 6e 2e 0a 20 20 7d 20 2d 66 69 6c 65 73  tion..  } -files
6610: 20 7b 0a 20 20 20 20 73 65 6c 65 63 74 31 2e 74   {.    select1.t
6620: 65 73 74 20 0a 20 20 7d 20 2d 69 6e 69 74 69 61  est .  } -initia
6630: 6c 69 7a 65 20 7b 0a 20 20 20 20 63 61 74 63 68  lize {.    catch
6640: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20   {db close}.    
6650: 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
6660: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e  .    sqlite3_con
6670: 66 69 67 5f 6d 65 6d 73 74 61 74 75 73 20 30 0a  fig_memstatus 0.
6680: 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66      sqlite3_conf
6690: 69 67 5f 68 65 61 70 20 34 30 30 30 30 30 30 30  ig_heap 40000000
66a0: 20 31 36 0a 20 20 20 20 73 71 6c 69 74 65 33 5f   16.    sqlite3_
66b0: 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65  config_lookaside
66c0: 20 30 20 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c   0 0.    install
66d0: 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d  _malloc_faultsim
66e0: 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f   1 .    sqlite3_
66f0: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61  initialize.    a
6700: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
6710: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 73  functions.  } -s
6720: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61  hutdown {.    ca
6730: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
6740: 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64     sqlite3_shutd
6750: 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  own.    sqlite3_
6760: 63 6f 6e 66 69 67 5f 68 65 61 70 20 30 20 30 0a  config_heap 0 0.
6770: 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66      sqlite3_conf
6780: 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30  ig_lookaside 100
6790: 20 35 30 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c   500.    install
67a0: 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d  _malloc_faultsim
67b0: 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f   1 .    sqlite3_
67c0: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61  initialize.    a
67d0: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
67e0: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a  functions.  }.}.
67f0: 0a 69 66 63 61 70 61 62 6c 65 20 74 68 72 65 61  .ifcapable threa
6800: 64 73 61 66 65 20 7b 0a 20 20 74 65 73 74 5f 73  dsafe {.  test_s
6810: 75 69 74 65 20 22 6e 6f 5f 6d 75 74 65 78 5f 74  uite "no_mutex_t
6820: 72 79 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  ry" -description
6830: 20 7b 0a 20 20 20 20 20 54 68 65 20 73 71 6c 69   {.     The sqli
6840: 74 65 33 5f 6d 75 74 65 78 5f 74 72 79 28 29 20  te3_mutex_try() 
6850: 69 6e 74 65 72 66 61 63 65 20 61 6c 77 61 79 73  interface always
6860: 20 66 61 69 6c 73 0a 20 20 7d 20 2d 66 69 6c 65   fails.  } -file
6870: 73 20 5b 0a 20 20 20 20 74 65 73 74 5f 73 65 74  s [.    test_set
6880: 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74   $::allquicktest
6890: 73 20 2d 65 78 63 6c 75 64 65 20 6d 75 74 65 78  s -exclude mutex
68a0: 31 2e 74 65 73 74 20 6d 75 74 65 78 32 2e 74 65  1.test mutex2.te
68b0: 73 74 0a 20 20 5d 20 2d 69 6e 69 74 69 61 6c 69  st.  ] -initiali
68c0: 7a 65 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b  ze {.    catch {
68d0: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71  db close}.    sq
68e0: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
68f0: 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 75 74 65 78     install_mutex
6900: 5f 63 6f 75 6e 74 65 72 73 20 31 0a 20 20 20 20  _counters 1.    
6910: 73 65 74 20 3a 3a 64 69 73 61 62 6c 65 5f 6d 75  set ::disable_mu
6920: 74 65 78 5f 74 72 79 20 31 0a 20 20 20 20 73 71  tex_try 1.    sq
6930: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
6940: 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  .    autoinstall
6950: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
6960: 20 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a    } -shutdown {.
6970: 20 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c      catch {db cl
6980: 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33  ose}.    sqlite3
6990: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 69 6e  _shutdown.    in
69a0: 73 74 61 6c 6c 5f 6d 75 74 65 78 5f 63 6f 75 6e  stall_mutex_coun
69b0: 74 65 72 73 20 30 0a 20 20 20 20 73 71 6c 69 74  ters 0.    sqlit
69c0: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20  e3_initialize.  
69d0: 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65    autoinstall_te
69e0: 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d  st_functions.  }
69f0: 0a 7d 0a 0a 23 20 72 75 6e 5f 74 65 73 74 73 20  .}..# run_tests 
6a00: 22 63 72 61 73 68 5f 73 61 66 65 5f 61 70 70 65  "crash_safe_appe
6a10: 6e 64 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  nd" -description
6a20: 20 7b 0a 23 20 20 20 52 75 6e 20 63 72 61 73 68   {.#   Run crash
6a30: 2e 74 65 73 74 20 77 69 74 68 20 70 65 72 73 69  .test with persi
6a40: 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 20 6f  stent journals o
6a50: 6e 20 61 20 53 41 46 45 5f 41 50 50 45 4e 44 20  n a SAFE_APPEND 
6a60: 66 69 6c 65 2d 73 79 73 74 65 6d 2e 0a 23 20 7d  file-system..# }
6a70: 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 23   -initialize {.#
6a80: 20 20 20 72 65 6e 61 6d 65 20 63 72 61 73 68 73     rename crashs
6a90: 71 6c 20 73 61 5f 63 72 61 73 68 73 71 6c 0a 23  ql sa_crashsql.#
6aa0: 20 20 20 70 72 6f 63 20 63 72 61 73 68 73 71 6c     proc crashsql
6ab0: 20 7b 61 72 67 73 7d 20 7b 0a 23 20 20 20 20 20   {args} {.#     
6ac0: 73 65 74 20 6f 70 74 69 6f 6e 73 20 5b 6c 72 61  set options [lra
6ad0: 6e 67 65 20 24 61 72 67 73 20 30 20 5b 65 78 70  nge $args 0 [exp
6ae0: 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67  r {[llength $arg
6af0: 73 5d 2d 32 7d 5d 5d 0a 23 20 20 20 20 20 6c 61  s]-2}]].#     la
6b00: 70 70 65 6e 64 20 6f 70 74 69 6f 6e 73 20 2d 63  ppend options -c
6b10: 68 61 72 20 73 61 66 65 5f 61 70 70 65 6e 64 0a  har safe_append.
6b20: 23 20 20 20 20 20 73 65 74 20 73 71 6c 20 5b 6c  #     set sql [l
6b30: 69 6e 64 65 78 20 24 61 72 67 73 20 65 6e 64 5d  index $args end]
6b40: 0a 23 20 20 20 20 20 6c 61 70 70 65 6e 64 20 6f  .#     lappend o
6b50: 70 74 69 6f 6e 73 20 22 0a 23 20 20 20 20 20 20  ptions ".#      
6b60: 20 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f   PRAGMA journal_
6b70: 6d 6f 64 65 3d 70 65 72 73 69 73 74 65 6e 74 3b  mode=persistent;
6b80: 0a 23 20 20 20 20 20 20 20 24 73 71 6c 0a 23 20  .#       $sql.# 
6b90: 20 20 20 20 22 0a 23 20 20 20 20 20 73 65 74 20      ".#     set 
6ba0: 66 64 20 5b 6f 70 65 6e 20 74 65 73 74 2e 64 62  fd [open test.db
6bb0: 2d 6a 6f 75 72 6e 61 6c 20 77 5d 0a 23 20 20 20  -journal w].#   
6bc0: 20 20 70 75 74 73 20 24 66 64 20 5b 73 74 72 69    puts $fd [stri
6bd0: 6e 67 20 72 65 70 65 61 74 20 31 32 33 34 35 36  ng repeat 123456
6be0: 37 38 39 30 20 31 30 30 30 30 30 5d 0a 23 20 20  7890 100000].#  
6bf0: 20 20 20 63 6c 6f 73 65 20 24 66 64 0a 23 20 20     close $fd.#  
6c00: 20 20 20 65 76 61 6c 20 73 61 5f 63 72 61 73 68     eval sa_crash
6c10: 73 71 6c 20 24 6f 70 74 69 6f 6e 73 0a 23 20 20  sql $options.#  
6c20: 20 7d 0a 23 20 7d 20 2d 73 68 75 74 64 6f 77 6e   }.# } -shutdown
6c30: 20 7b 0a 23 20 20 20 72 65 6e 61 6d 65 20 63 72   {.#   rename cr
6c40: 61 73 68 73 71 6c 20 7b 7d 0a 23 20 20 20 72 65  ashsql {}.#   re
6c50: 6e 61 6d 65 20 73 61 5f 63 72 61 73 68 73 71 6c  name sa_crashsql
6c60: 20 63 72 61 73 68 73 71 6c 0a 23 20 7d 20 2d 66   crashsql.# } -f
6c70: 69 6c 65 73 20 63 72 61 73 68 2e 74 65 73 74 0a  iles crash.test.
6c80: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 73 61 66  .test_suite "saf
6c90: 65 5f 61 70 70 65 6e 64 22 20 2d 64 65 73 63 72  e_append" -descr
6ca0: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 73  iption {.  Run s
6cb0: 6f 6d 65 20 74 65 73 74 73 20 6f 6e 20 61 20 53  ome tests on a S
6cc0: 41 46 45 5f 41 50 50 45 4e 44 20 66 69 6c 65 2d  AFE_APPEND file-
6cd0: 73 79 73 74 65 6d 2e 0a 7d 20 2d 69 6e 69 74 69  system..} -initi
6ce0: 61 6c 69 7a 65 20 7b 0a 20 20 72 65 6e 61 6d 65  alize {.  rename
6cf0: 20 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65 33   sqlite3 sqlite3
6d00: 5f 73 61 66 65 61 70 70 65 6e 64 0a 20 20 70 72  _safeappend.  pr
6d10: 6f 63 20 73 71 6c 69 74 65 33 20 7b 61 72 67 73  oc sqlite3 {args
6d20: 7d 20 7b 0a 20 20 20 20 69 66 20 7b 5b 73 74 72  } {.    if {[str
6d30: 69 6e 67 20 72 61 6e 67 65 20 5b 6c 69 6e 64 65  ing range [linde
6d40: 78 20 24 61 72 67 73 20 30 5d 20 30 20 30 5d 20  x $args 0] 0 0] 
6d50: 6e 65 20 22 2d 22 7d 20 7b 0a 20 20 20 20 20 20  ne "-"} {.      
6d60: 6c 61 70 70 65 6e 64 20 61 72 67 73 20 2d 76 66  lappend args -vf
6d70: 73 20 64 65 76 73 79 6d 0a 20 20 20 20 7d 0a 20  s devsym.    }. 
6d80: 20 20 20 75 70 6c 65 76 65 6c 20 5b 63 6f 6e 63     uplevel [conc
6d90: 61 74 20 73 71 6c 69 74 65 33 5f 73 61 66 65 61  at sqlite3_safea
6da0: 70 70 65 6e 64 20 24 61 72 67 73 5d 0a 20 20 7d  ppend $args].  }
6db0: 0a 20 20 73 71 6c 69 74 65 33 5f 73 69 6d 75 6c  .  sqlite3_simul
6dc0: 61 74 65 5f 64 65 76 69 63 65 20 2d 63 68 61 72  ate_device -char
6dd0: 20 73 61 66 65 5f 61 70 70 65 6e 64 0a 7d 20 2d   safe_append.} -
6de0: 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 72 65 6e  shutdown {.  ren
6df0: 61 6d 65 20 73 71 6c 69 74 65 33 20 7b 7d 0a 20  ame sqlite3 {}. 
6e00: 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 5f   rename sqlite3_
6e10: 73 68 75 74 64 6f 77 6e 20 73 71 6c 69 74 65 33  shutdown sqlite3
6e20: 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65  .} -files [.  te
6e30: 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69  st_set $::allqui
6e40: 63 6b 74 65 73 74 73 20 73 68 61 72 65 64 5f 65  cktests shared_e
6e50: 72 72 2e 74 65 73 74 20 2d 65 78 63 6c 75 64 65  rr.test -exclude
6e60: 20 61 73 79 6e 63 33 2e 74 65 73 74 0a 5d 0a 0a   async3.test.]..
6e70: 23 20 54 68 65 20 73 65 74 20 6f 66 20 74 65 73  # The set of tes
6e80: 74 73 20 74 6f 20 72 75 6e 20 6f 6e 20 74 68 65  ts to run on the
6e90: 20 61 6c 74 65 72 6e 61 74 69 76 65 2d 70 63 61   alternative-pca
6ea0: 63 68 65 0a 73 65 74 20 70 65 72 6d 2d 61 6c 74  che.set perm-alt
6eb0: 2d 70 63 61 63 68 65 2d 74 65 73 74 73 65 74 20  -pcache-testset 
6ec0: 7b 0a 20 20 61 73 79 6e 63 2e 74 65 73 74 0a 20  {.  async.test. 
6ed0: 20 61 74 74 61 63 68 2e 74 65 73 74 0a 20 20 64   attach.test.  d
6ee0: 65 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74  elete.test delet
6ef0: 65 32 2e 74 65 73 74 0a 20 20 69 6e 64 65 78 2e  e2.test.  index.
6f00: 74 65 73 74 0a 20 20 69 6e 73 65 72 74 2e 74 65  test.  insert.te
6f10: 73 74 20 69 6e 73 65 72 74 32 2e 74 65 73 74 0a  st insert2.test.
6f20: 20 20 6a 6f 69 6e 2e 74 65 73 74 20 6a 6f 69 6e    join.test join
6f30: 32 2e 74 65 73 74 0a 20 20 72 6f 6c 6c 62 61 63  2.test.  rollbac
6f40: 6b 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 31  k.test.  select1
6f50: 2e 74 65 73 74 20 73 65 6c 65 63 74 32 2e 74 65  .test select2.te
6f60: 73 74 0a 20 20 74 72 61 6e 73 2e 74 65 73 74 0a  st.  trans.test.
6f70: 20 20 75 70 64 61 74 65 2e 74 65 73 74 0a 7d 0a    update.test.}.
6f80: 0a 66 6f 72 65 61 63 68 20 64 69 73 63 61 72 64  .foreach discard
6f90: 5f 72 61 74 65 20 7b 30 20 31 30 20 35 30 20 39  _rate {0 10 50 9
6fa0: 30 20 31 30 30 7d 20 7b 0a 20 20 74 65 73 74 5f  0 100} {.  test_
6fb0: 73 75 69 74 65 20 22 70 63 61 63 68 65 24 7b 64  suite "pcache${d
6fc0: 69 73 63 61 72 64 5f 72 61 74 65 7d 22 20 2d 64  iscard_rate}" -d
6fd0: 65 73 63 72 69 70 74 69 6f 6e 20 22 0a 20 20 20  escription ".   
6fe0: 20 41 6c 74 65 72 6e 61 74 69 76 65 20 70 63 61   Alternative pca
6ff0: 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  che implementati
7000: 6f 6e 20 77 69 74 68 20 24 7b 64 69 73 63 61 72  on with ${discar
7010: 64 5f 72 61 74 65 7d 25 20 72 61 6e 64 6f 6d 20  d_rate}% random 
7020: 64 69 73 63 61 72 64 0a 20 20 22 20 2d 69 6e 69  discard.  " -ini
7030: 74 69 61 6c 69 7a 65 20 22 0a 20 20 20 20 63 61  tialize ".    ca
7040: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
7050: 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64     sqlite3_shutd
7060: 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  own.    sqlite3_
7070: 63 6f 6e 66 69 67 5f 61 6c 74 5f 70 63 61 63 68  config_alt_pcach
7080: 65 20 31 20 24 64 69 73 63 61 72 64 5f 72 61 74  e 1 $discard_rat
7090: 65 20 31 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  e 1.    sqlite3_
70a0: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61  initialize.    a
70b0: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
70c0: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 22 20 2d 73  functions.  " -s
70d0: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61  hutdown {.    ca
70e0: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
70f0: 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64     sqlite3_shutd
7100: 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  own.    sqlite3_
7110: 63 6f 6e 66 69 67 5f 61 6c 74 5f 70 63 61 63 68  config_alt_pcach
7120: 65 20 30 20 30 20 30 0a 20 20 20 20 73 71 6c 69  e 0 0 0.    sqli
7130: 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61  te3_config_looka
7140: 73 69 64 65 20 31 30 30 20 35 30 30 0a 20 20 20  side 100 500.   
7150: 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f   install_malloc_
7160: 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20 20 20  faultsim 1 .    
7170: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
7180: 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61  ze.    autoinsta
7190: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
71a0: 73 0a 20 20 7d 20 2d 66 69 6c 65 73 20 24 7b 70  s.  } -files ${p
71b0: 65 72 6d 2d 61 6c 74 2d 70 63 61 63 68 65 2d 74  erm-alt-pcache-t
71c0: 65 73 74 73 65 74 7d 0a 7d 0a 0a 74 65 73 74 5f  estset}.}..test_
71d0: 73 75 69 74 65 20 22 6a 6f 75 72 6e 61 6c 74 65  suite "journalte
71e0: 73 74 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  st" -description
71f0: 20 7b 0a 20 20 43 68 65 63 6b 20 74 68 61 74 20   {.  Check that 
7200: 70 61 67 65 73 20 61 72 65 20 73 79 6e 63 65 64  pages are synced
7210: 20 62 65 66 6f 72 65 20 62 65 69 6e 67 20 77 72   before being wr
7220: 69 74 74 65 6e 20 28 74 65 73 74 5f 6a 6f 75 72  itten (test_jour
7230: 6e 61 6c 2e 63 29 2e 0a 7d 20 2d 69 6e 69 74 69  nal.c)..} -initi
7240: 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20  alize {.  catch 
7250: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 72 65 67  {db close}.  reg
7260: 69 73 74 65 72 5f 6a 74 5f 76 66 73 20 2d 64 65  ister_jt_vfs -de
7270: 66 61 75 6c 74 20 22 22 0a 7d 20 2d 73 68 75 74  fault "".} -shut
7280: 64 6f 77 6e 20 7b 0a 20 20 75 6e 72 65 67 69 73  down {.  unregis
7290: 74 65 72 5f 6a 74 5f 76 66 73 0a 7d 20 2d 66 69  ter_jt_vfs.} -fi
72a0: 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a  les [test_set $:
72b0: 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  :allquicktests -
72c0: 65 78 63 6c 75 64 65 20 7b 0a 20 20 77 61 6c 2a  exclude {.  wal*
72d0: 20 69 6e 63 72 76 61 63 75 75 6d 2e 74 65 73 74   incrvacuum.test
72e0: 20 69 6f 65 72 72 2e 74 65 73 74 20 63 6f 72 72   ioerr.test corr
72f0: 75 70 74 34 2e 74 65 73 74 20 69 6f 2e 74 65 73  upt4.test io.tes
7300: 74 20 63 72 61 73 68 38 2e 74 65 73 74 20 0a 20  t crash8.test . 
7310: 20 61 73 79 6e 63 34 2e 74 65 73 74 20 62 69 67   async4.test big
7320: 66 69 6c 65 2e 74 65 73 74 20 62 61 63 6b 63 6f  file.test backco
7330: 6d 70 61 74 2e 74 65 73 74 0a 7d 5d 0a 0a 69 66  mpat.test.}]..if
7340: 20 7b 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73   {[info commands
7350: 20 72 65 67 69 73 74 65 72 5f 64 65 6d 6f 76 66   register_demovf
7360: 73 5d 20 21 3d 20 22 22 7d 20 7b 0a 20 20 74 65  s] != ""} {.  te
7370: 73 74 5f 73 75 69 74 65 20 22 64 65 6d 6f 76 66  st_suite "demovf
7380: 73 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  s" -description 
7390: 7b 0a 20 20 20 20 43 68 65 63 6b 20 74 68 61 74  {.    Check that
73a0: 20 74 68 65 20 64 65 6d 6f 76 66 73 20 28 63 6f   the demovfs (co
73b0: 64 65 20 69 6e 20 74 65 73 74 5f 64 65 6d 6f 76  de in test_demov
73c0: 66 73 2e 63 29 20 6d 6f 72 65 20 6f 72 20 6c 65  fs.c) more or le
73d0: 73 73 20 77 6f 72 6b 73 2e 0a 20 20 7d 20 2d 69  ss works..  } -i
73e0: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20  nitialize {.    
73f0: 72 65 67 69 73 74 65 72 5f 64 65 6d 6f 76 66 73  register_demovfs
7400: 0a 20 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b  .  } -shutdown {
7410: 0a 20 20 20 20 75 6e 72 65 67 69 73 74 65 72 5f  .    unregister_
7420: 64 65 6d 6f 76 66 73 0a 20 20 7d 20 2d 66 69 6c  demovfs.  } -fil
7430: 65 73 20 7b 0a 20 20 20 20 69 6e 73 65 72 74 2e  es {.    insert.
7440: 74 65 73 74 20 20 20 69 6e 73 65 72 74 32 2e 74  test   insert2.t
7450: 65 73 74 20 20 69 6e 73 65 72 74 33 2e 74 65 73  est  insert3.tes
7460: 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20  t rollback.test 
7470: 0a 20 20 20 20 73 65 6c 65 63 74 31 2e 74 65 73  .    select1.tes
7480: 74 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20  t  select2.test 
7490: 20 73 65 6c 65 63 74 33 2e 74 65 73 74 0a 20 20   select3.test.  
74a0: 7d 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20  }.}..test_suite 
74b0: 22 77 61 6c 22 20 2d 64 65 73 63 72 69 70 74 69  "wal" -descripti
74c0: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73  on {.  Run tests
74d0: 20 77 69 74 68 20 6a 6f 75 72 6e 61 6c 5f 6d 6f   with journal_mo
74e0: 64 65 3d 57 41 4c 0a 7d 20 2d 69 6e 69 74 69 61  de=WAL.} -initia
74f0: 6c 69 7a 65 20 7b 0a 20 20 73 65 74 20 3a 3a 47  lize {.  set ::G
7500: 28 73 61 76 65 70 6f 69 6e 74 36 5f 69 74 65 72  (savepoint6_iter
7510: 61 74 69 6f 6e 73 29 20 31 30 30 0a 7d 20 2d 73  ations) 100.} -s
7520: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 75 6e 73 65  hutdown {.  unse
7530: 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a  t -nocomplain ::
7540: 47 28 73 61 76 65 70 6f 69 6e 74 36 5f 69 74 65  G(savepoint6_ite
7550: 72 61 74 69 6f 6e 73 29 0a 7d 20 2d 66 69 6c 65  rations).} -file
7560: 73 20 7b 0a 20 20 73 61 76 65 70 6f 69 6e 74 2e  s {.  savepoint.
7570: 74 65 73 74 20 20 20 20 20 73 61 76 65 70 6f 69  test     savepoi
7580: 6e 74 32 2e 74 65 73 74 20 20 20 20 20 73 61 76  nt2.test     sav
7590: 65 70 6f 69 6e 74 36 2e 74 65 73 74 0a 20 20 74  epoint6.test.  t
75a0: 72 61 6e 73 2e 74 65 73 74 20 20 20 20 20 20 20  rans.test       
75b0: 20 20 61 76 74 72 61 6e 73 2e 74 65 73 74 0a 0a    avtrans.test..
75c0: 20 20 66 74 73 33 61 61 2e 74 65 73 74 20 20 66    fts3aa.test  f
75d0: 74 73 33 61 62 2e 74 65 73 74 20 20 66 74 73 33  ts3ab.test  fts3
75e0: 61 63 2e 74 65 73 74 20 20 66 74 73 33 61 64 2e  ac.test  fts3ad.
75f0: 74 65 73 74 0a 20 20 66 74 73 33 61 65 2e 74 65  test.  fts3ae.te
7600: 73 74 20 20 66 74 73 33 61 66 2e 74 65 73 74 20  st  fts3af.test 
7610: 20 66 74 73 33 61 67 2e 74 65 73 74 20 20 66 74   fts3ag.test  ft
7620: 73 33 61 68 2e 74 65 73 74 0a 20 20 66 74 73 33  s3ah.test.  fts3
7630: 61 69 2e 74 65 73 74 20 20 66 74 73 33 61 6a 2e  ai.test  fts3aj.
7640: 74 65 73 74 20 20 66 74 73 33 61 6b 2e 74 65 73  test  fts3ak.tes
7650: 74 20 20 66 74 73 33 61 6c 2e 74 65 73 74 0a 20  t  fts3al.test. 
7660: 20 66 74 73 33 61 6d 2e 74 65 73 74 20 20 66 74   fts3am.test  ft
7670: 73 33 61 6e 2e 74 65 73 74 20 20 66 74 73 33 61  s3an.test  fts3a
7680: 6f 2e 74 65 73 74 20 20 66 74 73 33 62 2e 74 65  o.test  fts3b.te
7690: 73 74 0a 20 20 66 74 73 33 63 2e 74 65 73 74 20  st.  fts3c.test 
76a0: 20 20 66 74 73 33 64 2e 74 65 73 74 20 20 20 66    fts3d.test   f
76b0: 74 73 33 65 2e 74 65 73 74 20 20 20 66 74 73 33  ts3e.test   fts3
76c0: 71 75 65 72 79 2e 74 65 73 74 20 0a 7d 0a 0a 74  query.test .}..t
76d0: 65 73 74 5f 73 75 69 74 65 20 22 72 74 72 65 65  est_suite "rtree
76e0: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
76f0: 0a 20 20 41 6c 6c 20 52 2d 74 72 65 65 20 72 65  .  All R-tree re
7700: 6c 61 74 65 64 20 74 65 73 74 73 2e 20 50 72 6f  lated tests. Pro
7710: 76 69 64 65 73 20 63 6f 76 65 72 61 67 65 20 6f  vides coverage o
7720: 66 20 73 6f 75 72 63 65 20 66 69 6c 65 20 72 74  f source file rt
7730: 72 65 65 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20  ree.c..} -files 
7740: 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69  [glob -nocomplai
7750: 6e 20 24 3a 3a 74 65 73 74 64 69 72 2f 2e 2e 2f  n $::testdir/../
7760: 65 78 74 2f 72 74 72 65 65 2f 2a 2e 74 65 73 74  ext/rtree/*.test
7770: 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e  ]..test_suite "n
7780: 6f 5f 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22 20  o_optimization" 
7790: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
77a0: 20 52 75 6e 20 74 65 73 74 20 73 63 72 69 70 74   Run test script
77b0: 73 20 77 69 74 68 20 6f 70 74 69 6d 69 7a 61 74  s with optimizat
77c0: 69 6f 6e 73 20 64 69 73 61 62 6c 65 64 20 75 73  ions disabled us
77d0: 69 6e 67 20 74 68 65 0a 20 20 73 71 6c 69 74 65  ing the.  sqlite
77e0: 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28 53  3_test_control(S
77f0: 51 4c 49 54 45 5f 54 45 53 54 43 54 52 4c 5f 4f  QLITE_TESTCTRL_O
7800: 50 54 49 4d 49 5a 41 54 49 4f 4e 53 29 20 69 6e  PTIMIZATIONS) in
7810: 74 65 72 66 61 63 65 2e 0a 7d 20 2d 66 69 6c 65  terface..} -file
7820: 73 20 7b 0a 20 20 77 68 65 72 65 2e 74 65 73 74  s {.  where.test
7830: 20 77 68 65 72 65 32 2e 74 65 73 74 20 77 68 65   where2.test whe
7840: 72 65 33 2e 74 65 73 74 20 77 68 65 72 65 34 2e  re3.test where4.
7850: 74 65 73 74 20 77 68 65 72 65 35 2e 74 65 73 74  test where5.test
7860: 0a 20 20 77 68 65 72 65 36 2e 74 65 73 74 20 77  .  where6.test w
7870: 68 65 72 65 37 2e 74 65 73 74 20 77 68 65 72 65  here7.test where
7880: 38 2e 74 65 73 74 20 77 68 65 72 65 39 2e 74 65  8.test where9.te
7890: 73 74 0a 20 20 77 68 65 72 65 41 2e 74 65 73 74  st.  whereA.test
78a0: 20 77 68 65 72 65 42 2e 74 65 73 74 20 77 68 65   whereB.test whe
78b0: 72 65 6c 69 6d 69 74 2e 74 65 73 74 0a 20 20 73  relimit.test.  s
78c0: 65 6c 65 63 74 31 2e 74 65 73 74 20 73 65 6c 65  elect1.test sele
78d0: 63 74 32 2e 74 65 73 74 20 73 65 6c 65 63 74 33  ct2.test select3
78e0: 2e 74 65 73 74 20 73 65 6c 65 63 74 34 2e 74 65  .test select4.te
78f0: 73 74 20 73 65 6c 65 63 74 35 2e 74 65 73 74 0a  st select5.test.
7900: 20 20 73 65 6c 65 63 74 37 2e 74 65 73 74 20 73    select7.test s
7910: 65 6c 65 63 74 38 2e 74 65 73 74 20 73 65 6c 65  elect8.test sele
7920: 63 74 41 2e 74 65 73 74 20 73 65 6c 65 63 74 43  ctA.test selectC
7930: 2e 74 65 73 74 0a 7d 20 2d 64 62 63 6f 6e 66 69  .test.} -dbconfi
7940: 67 20 7b 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69  g {.  optimizati
7950: 6f 6e 5f 63 6f 6e 74 72 6f 6c 20 24 3a 3a 64 62  on_control $::db
7960: 68 61 6e 64 6c 65 20 61 6c 6c 20 30 0a 7d 0a 0a  handle all 0.}..
7970: 74 65 73 74 5f 73 75 69 74 65 20 22 70 72 65 70  test_suite "prep
7980: 61 72 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f  are" -descriptio
7990: 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20  n {.  Run tests 
79a0: 77 69 74 68 20 74 68 65 20 64 62 20 63 6f 6e 6e  with the db conn
79b0: 65 63 74 69 6f 6e 20 75 73 69 6e 67 20 73 71 6c  ection using sql
79c0: 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 69  ite3_prepare() i
79d0: 6e 73 74 65 61 64 20 6f 66 20 5f 76 32 28 29 2e  nstead of _v2().
79e0: 0a 7d 20 2d 64 62 63 6f 6e 66 69 67 20 7b 0a 20  .} -dbconfig {. 
79f0: 20 64 62 5f 75 73 65 5f 6c 65 67 61 63 79 5f 70   db_use_legacy_p
7a00: 72 65 70 61 72 65 20 24 3a 3a 64 62 68 61 6e 64  repare $::dbhand
7a10: 6c 65 20 31 0a 20 20 23 24 3a 3a 64 62 68 61 6e  le 1.  #$::dbhan
7a20: 64 6c 65 20 63 61 63 68 65 20 73 69 7a 65 20 30  dle cache size 0
7a30: 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65  .} -files [.  te
7a40: 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b  st_set $allquick
7a50: 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a  tests -exclude *
7a60: 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20  malloc* *ioerr* 
7a70: 2a 66 61 75 6c 74 2a 0a 5d 0a 0a 23 20 45 6e 64  *fault*.]..# End
7a80: 20 6f 66 20 74 65 73 74 73 0a 23 23 23 23 23 23   of tests.######
7a90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7aa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7ab0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7ac0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7ad0: 23 23 23 23 23 23 23 0a 0a 23 20 72 75 6e 5f 74  #######..# run_t
7ae0: 65 73 74 73 20 4e 41 4d 45 20 4f 50 54 49 4f 4e  ests NAME OPTION
7af0: 53 0a 23 0a 23 20 77 68 65 72 65 20 61 76 61 69  S.#.# where avai
7b00: 6c 61 62 6c 65 20 6f 70 74 69 6f 6e 73 20 61 72  lable options ar
7b10: 65 3a 20 20 0a 23 0a 23 20 20 20 20 20 20 20 2d  e:  .#.#       -
7b20: 64 65 73 63 72 69 70 74 69 6f 6e 20 54 49 54 4c  description TITL
7b30: 45 0a 23 20 20 20 20 20 20 20 2d 69 6e 69 74 69  E.#       -initi
7b40: 61 6c 69 7a 65 20 20 53 43 52 49 50 54 0a 23 20  alize  SCRIPT.# 
7b50: 20 20 20 20 20 20 2d 73 68 75 74 64 6f 77 6e 20        -shutdown 
7b60: 20 20 20 53 43 52 49 50 54 0a 23 20 20 20 20 20     SCRIPT.#     
7b70: 20 20 2d 70 72 65 73 71 6c 20 20 20 20 20 20 53    -presql      S
7b80: 51 4c 0a 23 20 20 20 20 20 20 20 2d 66 69 6c 65  QL.#       -file
7b90: 73 20 20 20 20 20 20 20 4c 49 53 54 2d 4f 46 2d  s       LIST-OF-
7ba0: 46 49 4c 45 53 0a 23 20 20 20 20 20 20 20 2d 70  FILES.#       -p
7bb0: 72 65 66 69 78 20 20 20 20 20 20 4e 41 4d 45 0a  refix      NAME.
7bc0: 23 0a 70 72 6f 63 20 72 75 6e 5f 74 65 73 74 73  #.proc run_tests
7bd0: 20 7b 6e 61 6d 65 20 61 72 67 73 7d 20 7b 0a 20   {name args} {. 
7be0: 20 61 72 72 61 79 20 73 65 74 20 6f 70 74 69 6f   array set optio
7bf0: 6e 73 20 24 61 72 67 73 0a 0a 20 20 73 65 74 20  ns $args..  set 
7c00: 3a 3a 47 28 70 65 72 6d 3a 6e 61 6d 65 29 20 20  ::G(perm:name)  
7c10: 20 20 20 20 20 20 20 24 6e 61 6d 65 0a 20 20 73         $name.  s
7c20: 65 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65 66  et ::G(perm:pref
7c30: 69 78 29 20 20 20 20 20 20 20 24 6f 70 74 69 6f  ix)       $optio
7c40: 6e 73 28 2d 70 72 65 66 69 78 29 0a 20 20 73 65  ns(-prefix).  se
7c50: 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65 73 71  t ::G(perm:presq
7c60: 6c 29 20 20 20 20 20 20 20 24 6f 70 74 69 6f 6e  l)       $option
7c70: 73 28 2d 70 72 65 73 71 6c 29 0a 20 20 73 65 74  s(-presql).  set
7c80: 20 3a 3a 47 28 69 73 71 75 69 63 6b 29 20 20 20   ::G(isquick)   
7c90: 20 20 20 20 20 20 20 20 31 0a 20 20 73 65 74 20          1.  set 
7ca0: 3a 3a 47 28 70 65 72 6d 3a 64 62 63 6f 6e 66 69  ::G(perm:dbconfi
7cb0: 67 29 20 20 20 20 20 24 6f 70 74 69 6f 6e 73 28  g)     $options(
7cc0: 2d 64 62 63 6f 6e 66 69 67 29 0a 0a 20 20 75 70  -dbconfig)..  up
7cd0: 6c 65 76 65 6c 20 24 6f 70 74 69 6f 6e 73 28 2d  level $options(-
7ce0: 69 6e 69 74 69 61 6c 69 7a 65 29 0a 0a 20 20 66  initialize)..  f
7cf0: 6f 72 65 61 63 68 20 66 69 6c 65 20 5b 6c 73 6f  oreach file [lso
7d00: 72 74 20 24 6f 70 74 69 6f 6e 73 28 2d 66 69 6c  rt $options(-fil
7d10: 65 73 29 5d 20 7b 0a 20 20 20 20 69 66 20 7b 5b  es)] {.    if {[
7d20: 66 69 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 5d  file tail $file]
7d30: 20 3d 3d 20 24 66 69 6c 65 7d 20 7b 20 73 65 74   == $file} { set
7d40: 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f 69 6e   file [file join
7d50: 20 24 3a 3a 74 65 73 74 64 69 72 20 24 66 69 6c   $::testdir $fil
7d60: 65 5d 20 7d 0a 20 20 20 20 73 6c 61 76 65 5f 74  e] }.    slave_t
7d70: 65 73 74 5f 66 69 6c 65 20 24 66 69 6c 65 0a 20  est_file $file. 
7d80: 20 7d 0a 0a 20 20 75 70 6c 65 76 65 6c 20 24 6f   }..  uplevel $o
7d90: 70 74 69 6f 6e 73 28 2d 73 68 75 74 64 6f 77 6e  ptions(-shutdown
7da0: 29 0a 0a 20 20 75 6e 73 65 74 20 3a 3a 47 28 70  )..  unset ::G(p
7db0: 65 72 6d 3a 6e 61 6d 65 29 0a 20 20 75 6e 73 65  erm:name).  unse
7dc0: 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65 66 69  t ::G(perm:prefi
7dd0: 78 29 0a 20 20 75 6e 73 65 74 20 3a 3a 47 28 70  x).  unset ::G(p
7de0: 65 72 6d 3a 70 72 65 73 71 6c 29 0a 20 20 75 6e  erm:presql).  un
7df0: 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 64 62 63  set ::G(perm:dbc
7e00: 6f 6e 66 69 67 29 0a 7d 0a 0a 70 72 6f 63 20 72  onfig).}..proc r
7e10: 75 6e 5f 74 65 73 74 5f 73 75 69 74 65 20 7b 6e  un_test_suite {n
7e20: 61 6d 65 7d 20 7b 0a 20 20 69 66 20 7b 5b 69 6e  ame} {.  if {[in
7e30: 66 6f 20 65 78 69 73 74 73 20 3a 3a 74 65 73 74  fo exists ::test
7e40: 73 70 65 63 28 24 6e 61 6d 65 29 5d 3d 3d 30 7d  spec($name)]==0}
7e50: 20 7b 0a 20 20 20 20 65 72 72 6f 72 20 22 4e 6f   {.    error "No
7e60: 20 73 75 63 68 20 74 65 73 74 20 73 75 69 74 65   such test suite
7e70: 3a 20 24 6e 61 6d 65 22 0a 20 20 7d 0a 20 20 75  : $name".  }.  u
7e80: 70 6c 65 76 65 6c 20 72 75 6e 5f 74 65 73 74 73  plevel run_tests
7e90: 20 24 6e 61 6d 65 20 24 3a 3a 74 65 73 74 73 70   $name $::testsp
7ea0: 65 63 28 24 6e 61 6d 65 29 0a 7d 0a 0a 70 72 6f  ec($name).}..pro
7eb0: 63 20 68 65 6c 70 20 7b 7d 20 7b 0a 20 20 70 75  c help {} {.  pu
7ec0: 74 73 20 22 55 73 61 67 65 3a 20 24 3a 3a 61 72  ts "Usage: $::ar
7ed0: 67 76 30 20 54 45 53 54 53 55 49 54 45 20 3f 54  gv0 TESTSUITE ?T
7ee0: 45 53 54 46 49 4c 45 3f 22 0a 20 20 70 75 74 73  ESTFILE?".  puts
7ef0: 20 22 22 0a 20 20 70 75 74 73 20 22 41 76 61 69   "".  puts "Avai
7f00: 6c 61 62 6c 65 20 74 65 73 74 2d 73 75 69 74 65  lable test-suite
7f10: 73 20 61 72 65 3a 22 0a 20 20 66 6f 72 65 61 63  s are:".  foreac
7f20: 68 20 6b 20 24 3a 3a 74 65 73 74 73 75 69 74 65  h k $::testsuite
7f30: 6c 69 73 74 20 7b 0a 20 20 20 20 69 66 20 7b 5b  list {.    if {[
7f40: 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 74 65  info exists ::te
7f50: 73 74 73 70 65 63 28 24 6b 29 5d 3d 3d 30 7d 20  stspec($k)]==0} 
7f60: 7b 0a 20 20 20 20 20 20 70 75 74 73 20 22 20 20  {.      puts "  
7f70: 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d         ---------
7f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22  ---------------"
7fa0: 0a 20 20 20 20 20 20 70 75 74 73 20 22 22 0a 20  .      puts "". 
7fb0: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20     } else {.    
7fc0: 20 20 61 72 72 61 79 20 73 65 74 20 6f 20 24 3a    array set o $:
7fd0: 3a 74 65 73 74 73 70 65 63 28 24 6b 29 0a 20 20  :testspec($k).  
7fe0: 20 20 20 20 70 75 74 73 20 22 54 65 73 74 20 73      puts "Test s
7ff0: 75 69 74 65 3a 20 5c 22 24 6b 5c 22 22 0a 20 20  uite: \"$k\"".  
8000: 20 20 20 20 73 65 74 20 64 20 5b 73 74 72 69 6e      set d [strin
8010: 67 20 74 72 69 6d 20 24 6f 28 2d 64 65 73 63 72  g trim $o(-descr
8020: 69 70 74 69 6f 6e 29 5d 0a 20 20 20 20 20 20 73  iption)].      s
8030: 65 74 20 64 20 5b 72 65 67 73 75 62 20 7b 5c 6e  et d [regsub {\n
8040: 20 2a 7d 20 24 64 20 22 5c 6e 20 20 22 5d 0a 20   *} $d "\n  "]. 
8050: 20 20 20 20 20 70 75 74 73 20 22 20 20 24 64 22       puts "  $d"
8060: 0a 20 20 20 20 20 20 70 75 74 73 20 22 22 0a 20  .      puts "". 
8070: 20 20 20 7d 0a 20 20 7d 0a 20 20 65 78 69 74 20     }.  }.  exit 
8080: 2d 31 0a 7d 0a 0a 69 66 20 7b 5b 69 6e 66 6f 20  -1.}..if {[info 
8090: 73 63 72 69 70 74 5d 20 3d 3d 20 24 61 72 67 76  script] == $argv
80a0: 30 7d 20 7b 0a 20 20 70 72 6f 63 20 6d 61 69 6e  0} {.  proc main
80b0: 20 7b 61 72 67 76 7d 20 7b 0a 20 20 20 20 69 66   {argv} {.    if
80c0: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 76   {[llength $argv
80d0: 5d 3d 3d 30 7d 20 7b 0a 20 20 20 20 20 20 68 65  ]==0} {.      he
80e0: 6c 70 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  lp.    } else {.
80f0: 20 20 20 20 20 20 73 65 74 20 73 75 69 74 65 20        set suite 
8100: 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20 30 5d  [lindex $argv 0]
8110: 0a 20 20 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f  .      if {[info
8120: 20 65 78 69 73 74 73 20 3a 3a 74 65 73 74 73 70   exists ::testsp
8130: 65 63 28 24 73 75 69 74 65 29 5d 3d 3d 30 7d 20  ec($suite)]==0} 
8140: 68 65 6c 70 0a 20 20 20 20 20 20 73 65 74 20 65  help.      set e
8150: 78 74 72 61 20 22 22 0a 20 20 20 20 20 20 69 66  xtra "".      if
8160: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 76   {[llength $argv
8170: 5d 3e 31 7d 20 7b 20 73 65 74 20 65 78 74 72 61  ]>1} { set extra
8180: 20 5b 6c 69 73 74 20 2d 66 69 6c 65 73 20 5b 6c   [list -files [l
8190: 72 61 6e 67 65 20 24 61 72 67 76 20 31 20 65 6e  range $argv 1 en
81a0: 64 5d 5d 20 7d 0a 20 20 20 20 20 20 65 76 61 6c  d]] }.      eval
81b0: 20 72 75 6e 5f 74 65 73 74 73 20 24 73 75 69 74   run_tests $suit
81c0: 65 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24 73  e $::testspec($s
81d0: 75 69 74 65 29 20 24 65 78 74 72 61 0a 20 20 20  uite) $extra.   
81e0: 20 7d 0a 20 20 7d 0a 20 20 6d 61 69 6e 20 24 61   }.  }.  main $a
81f0: 72 67 76 0a 20 20 66 69 6e 69 73 68 5f 74 65 73  rgv.  finish_tes
8200: 74 0a 7d 0a                                      t.}.