SQLite4
Hex Artifact Content
Not logged in

Artifact 58ed67551688016067762d6505371f083ed4b2ef:


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 0a 7d  st  rtree.test.}
0b90: 5d 0a 0a 73 65 74 20 61 6c 6c 71 75 69 63 6b 74  ]..set allquickt
0ba0: 65 73 74 73 20 5b 74 65 73 74 5f 73 65 74 20 24  ests [test_set $
0bb0: 61 6c 6c 74 65 73 74 73 20 2d 65 78 63 6c 75 64  alltests -exclud
0bc0: 65 20 7b 0a 20 20 61 73 79 6e 63 32 2e 74 65 73  e {.  async2.tes
0bd0: 74 20 61 73 79 6e 63 33 2e 74 65 73 74 20 62 61  t async3.test ba
0be0: 63 6b 75 70 5f 69 6f 65 72 72 2e 74 65 73 74 20  ckup_ioerr.test 
0bf0: 63 6f 72 72 75 70 74 2e 74 65 73 74 0a 20 20 63  corrupt.test.  c
0c00: 6f 72 72 75 70 74 43 2e 74 65 73 74 20 63 72 61  orruptC.test cra
0c10: 73 68 2e 74 65 73 74 20 63 72 61 73 68 32 2e 74  sh.test crash2.t
0c20: 65 73 74 20 63 72 61 73 68 33 2e 74 65 73 74 20  est crash3.test 
0c30: 63 72 61 73 68 34 2e 74 65 73 74 20 63 72 61 73  crash4.test cras
0c40: 68 35 2e 74 65 73 74 0a 20 20 63 72 61 73 68 36  h5.test.  crash6
0c50: 2e 74 65 73 74 20 63 72 61 73 68 37 2e 74 65 73  .test crash7.tes
0c60: 74 20 64 65 6c 65 74 65 33 2e 74 65 73 74 20 65  t delete3.test e
0c70: 5f 66 74 73 33 2e 74 65 73 74 20 66 74 73 33 72  _fts3.test fts3r
0c80: 6e 64 2e 74 65 73 74 0a 20 20 66 6b 65 79 5f 6d  nd.test.  fkey_m
0c90: 61 6c 6c 6f 63 2e 74 65 73 74 20 66 75 7a 7a 2e  alloc.test fuzz.
0ca0: 74 65 73 74 20 66 75 7a 7a 33 2e 74 65 73 74 20  test fuzz3.test 
0cb0: 66 75 7a 7a 5f 6d 61 6c 6c 6f 63 2e 74 65 73 74  fuzz_malloc.test
0cc0: 20 69 6e 32 2e 74 65 73 74 20 6c 6f 61 64 65 78   in2.test loadex
0cd0: 74 2e 74 65 73 74 0a 20 20 6d 69 73 63 37 2e 74  t.test.  misc7.t
0ce0: 65 73 74 20 6d 75 74 65 78 32 2e 74 65 73 74 20  est mutex2.test 
0cf0: 6e 6f 74 69 66 79 32 2e 74 65 73 74 20 6f 6e 65  notify2.test one
0d00: 66 69 6c 65 2e 74 65 73 74 20 70 61 67 65 72 66  file.test pagerf
0d10: 61 75 6c 74 32 2e 74 65 73 74 20 0a 20 20 73 61  ault2.test .  sa
0d20: 76 65 70 6f 69 6e 74 34 2e 74 65 73 74 20 73 61  vepoint4.test sa
0d30: 76 65 70 6f 69 6e 74 36 2e 74 65 73 74 20 73 65  vepoint6.test se
0d40: 6c 65 63 74 39 2e 74 65 73 74 20 0a 20 20 73 70  lect9.test .  sp
0d50: 65 65 64 31 2e 74 65 73 74 20 73 70 65 65 64 31  eed1.test speed1
0d60: 70 2e 74 65 73 74 20 73 70 65 65 64 32 2e 74 65  p.test speed2.te
0d70: 73 74 20 73 70 65 65 64 33 2e 74 65 73 74 20 73  st speed3.test s
0d80: 70 65 65 64 34 2e 74 65 73 74 20 0a 20 20 73 70  peed4.test .  sp
0d90: 65 65 64 34 70 2e 74 65 73 74 20 73 71 6c 6c 69  eed4p.test sqlli
0da0: 6d 69 74 73 31 2e 74 65 73 74 20 73 72 63 34 2e  mits1.test src4.
0db0: 74 65 73 74 20 74 6b 74 32 36 38 36 2e 74 65 73  test tkt2686.tes
0dc0: 74 20 74 68 72 65 61 64 30 30 31 2e 74 65 73 74  t thread001.test
0dd0: 20 0a 20 20 74 68 72 65 61 64 30 30 32 2e 74 65   .  thread002.te
0de0: 73 74 20 74 68 72 65 61 64 30 30 33 2e 74 65 73  st thread003.tes
0df0: 74 20 74 68 72 65 61 64 30 30 34 2e 74 65 73 74  t thread004.test
0e00: 20 74 68 72 65 61 64 30 30 35 2e 74 65 73 74 20   thread005.test 
0e10: 74 72 61 6e 73 32 2e 74 65 73 74 20 0a 20 20 76  trans2.test .  v
0e20: 61 63 75 75 6d 33 2e 74 65 73 74 20 69 6e 63 72  acuum3.test incr
0e30: 76 61 63 75 75 6d 5f 69 6f 65 72 72 2e 74 65 73  vacuum_ioerr.tes
0e40: 74 20 61 75 74 6f 76 61 63 75 75 6d 5f 63 72 61  t autovacuum_cra
0e50: 73 68 2e 74 65 73 74 20 62 74 72 65 65 38 2e 74  sh.test btree8.t
0e60: 65 73 74 20 0a 20 20 73 68 61 72 65 64 5f 65 72  est .  shared_er
0e70: 72 2e 74 65 73 74 20 76 74 61 62 5f 65 72 72 2e  r.test vtab_err.
0e80: 74 65 73 74 20 77 61 6c 73 6c 6f 77 2e 74 65 73  test walslow.tes
0e90: 74 20 77 61 6c 63 72 61 73 68 2e 74 65 73 74 20  t walcrash.test 
0ea0: 77 61 6c 63 72 61 73 68 33 2e 74 65 73 74 0a 20  walcrash3.test. 
0eb0: 20 77 61 6c 74 68 72 65 61 64 2e 74 65 73 74 20   walthread.test 
0ec0: 72 74 72 65 65 33 2e 74 65 73 74 20 69 6e 64 65  rtree3.test inde
0ed0: 78 66 61 75 6c 74 2e 74 65 73 74 20 0a 7d 5d 0a  xfault.test .}].
0ee0: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
0ef0: 20 3a 3a 65 6e 76 28 51 55 49 43 4b 54 45 53 54   ::env(QUICKTEST
0f00: 5f 49 4e 43 4c 55 44 45 29 5d 7d 20 7b 0a 20 20  _INCLUDE)]} {.  
0f10: 73 65 74 20 61 6c 6c 71 75 69 63 6b 74 65 73 74  set allquicktest
0f20: 73 20 5b 63 6f 6e 63 61 74 20 24 61 6c 6c 71 75  s [concat $allqu
0f30: 69 63 6b 74 65 73 74 73 20 24 3a 3a 65 6e 76 28  icktests $::env(
0f40: 51 55 49 43 4b 54 45 53 54 5f 49 4e 43 4c 55 44  QUICKTEST_INCLUD
0f50: 45 29 5d 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23  E)].}..#########
0f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fa0: 23 23 23 23 0a 23 20 53 74 61 72 74 20 6f 66 20  ####.# Start of 
0fb0: 74 65 73 74 73 0a 23 0a 0a 23 2d 2d 2d 2d 2d 2d  tests.#..#------
0fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1000: 2d 2d 2d 0a 23 20 44 65 66 69 6e 65 20 74 68 65  ---.# Define the
1010: 20 67 65 6e 65 72 69 63 20 74 65 73 74 20 73 75   generic test su
1020: 69 74 65 73 3a 0a 23 0a 23 20 20 20 73 72 63 34  ites:.#.#   src4
1030: 0a 23 20 20 20 62 74 0a 23 20 20 20 76 65 72 79  .#   bt.#   very
1040: 71 75 69 63 6b 0a 23 20 20 20 71 75 69 63 6b 0a  quick.#   quick.
1050: 23 20 20 20 66 75 6c 6c 0a 23 0a 6c 61 70 70 65  #   full.#.lappe
1060: 6e 64 20 3a 3a 74 65 73 74 73 75 69 74 65 6c 69  nd ::testsuiteli
1070: 73 74 20 78 78 78 0a 0a 74 65 73 74 5f 73 75 69  st xxx..test_sui
1080: 74 65 20 22 62 74 22 20 2d 70 72 65 66 69 78 20  te "bt" -prefix 
1090: 22 62 74 2d 22 20 2d 64 65 73 63 72 69 70 74 69  "bt-" -descripti
10a0: 6f 6e 20 7b 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  on {.} -files {.
10b0: 62 74 31 2e 74 65 73 74 0a 72 65 63 6f 76 65 72  bt1.test.recover
10c0: 31 2e 74 65 73 74 20 72 65 63 6f 76 65 72 32 2e  1.test recover2.
10d0: 74 65 73 74 0a 0a 61 67 67 65 72 72 6f 72 2e 74  test..aggerror.t
10e0: 65 73 74 0a 61 6c 74 65 72 2e 74 65 73 74 0a 61  est.alter.test.a
10f0: 6c 74 65 72 33 2e 74 65 73 74 0a 61 6c 74 65 72  lter3.test.alter
1100: 34 2e 74 65 73 74 0a 61 6e 61 6c 79 7a 65 2e 74  4.test.analyze.t
1110: 65 73 74 0a 61 6e 61 6c 79 7a 65 33 2e 74 65 73  est.analyze3.tes
1120: 74 0a 61 6e 61 6c 79 7a 65 34 2e 74 65 73 74 0a  t.analyze4.test.
1130: 61 6e 61 6c 79 7a 65 35 2e 74 65 73 74 0a 61 6e  analyze5.test.an
1140: 61 6c 79 7a 65 36 2e 74 65 73 74 0a 61 6e 61 6c  alyze6.test.anal
1150: 79 7a 65 37 2e 74 65 73 74 0a 61 6e 61 6c 79 7a  yze7.test.analyz
1160: 65 38 2e 74 65 73 74 0a 61 74 74 61 63 68 2e 74  e8.test.attach.t
1170: 65 73 74 0a 61 74 74 61 63 68 33 2e 74 65 73 74  est.attach3.test
1180: 0a 61 74 74 61 63 68 34 2e 74 65 73 74 0a 61 75  .attach4.test.au
1190: 74 68 2e 74 65 73 74 0a 61 75 74 68 32 2e 74 65  th.test.auth2.te
11a0: 73 74 0a 61 75 74 68 33 2e 74 65 73 74 0a 61 75  st.auth3.test.au
11b0: 74 68 34 2e 74 65 73 74 0a 61 75 74 6f 69 6e 64  th4.test.autoind
11c0: 65 78 31 2e 74 65 73 74 0a 62 61 64 75 74 66 2e  ex1.test.badutf.
11d0: 74 65 73 74 0a 62 61 64 75 74 66 32 2e 74 65 73  test.badutf2.tes
11e0: 74 0a 62 65 74 77 65 65 6e 2e 74 65 73 74 0a 62  t.between.test.b
11f0: 69 67 72 6f 77 2e 74 65 73 74 0a 62 69 6e 64 2e  igrow.test.bind.
1200: 74 65 73 74 0a 62 6c 6f 62 2e 74 65 73 74 0a 62  test.blob.test.b
1210: 6f 75 6e 64 61 72 79 31 2e 74 65 73 74 0a 62 6f  oundary1.test.bo
1220: 75 6e 64 61 72 79 32 2e 74 65 73 74 0a 62 6f 75  undary2.test.bou
1230: 6e 64 61 72 79 33 2e 74 65 73 74 0a 62 6f 75 6e  ndary3.test.boun
1240: 64 61 72 79 34 2e 74 65 73 74 0a 63 61 70 69 32  dary4.test.capi2
1250: 2e 74 65 73 74 0a 63 61 73 74 2e 74 65 73 74 0a  .test.cast.test.
1260: 63 68 65 63 6b 2e 74 65 73 74 0a 63 6f 61 6c 65  check.test.coale
1270: 73 63 65 2e 74 65 73 74 0a 63 6f 6c 6c 61 74 65  sce.test.collate
1280: 31 2e 74 65 73 74 0a 63 6f 6c 6c 61 74 65 32 2e  1.test.collate2.
1290: 74 65 73 74 0a 63 6f 6c 6c 61 74 65 33 2e 74 65  test.collate3.te
12a0: 73 74 0a 63 6f 6c 6c 61 74 65 34 2e 74 65 73 74  st.collate4.test
12b0: 0a 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74 0a 63  .collate5.test.c
12c0: 6f 6c 6c 61 74 65 36 2e 74 65 73 74 0a 63 6f 6c  ollate6.test.col
12d0: 6c 61 74 65 37 2e 74 65 73 74 0a 63 6f 6c 6c 61  late7.test.colla
12e0: 74 65 38 2e 74 65 73 74 0a 63 6f 6c 6c 61 74 65  te8.test.collate
12f0: 39 2e 74 65 73 74 0a 63 6f 6c 6c 61 74 65 41 2e  9.test.collateA.
1300: 74 65 73 74 0a 63 6f 6c 6c 61 74 65 65 72 72 2e  test.collateerr.
1310: 74 65 73 74 0a 63 6f 6e 66 6c 69 63 74 2e 74 65  test.conflict.te
1320: 73 74 0a 63 6f 75 6e 74 2e 74 65 73 74 0a 63 6f  st.count.test.co
1330: 76 69 64 78 2e 74 65 73 74 0a 63 72 65 61 74 65  vidx.test.create
1340: 74 61 62 2e 74 65 73 74 0a 63 73 65 2e 74 65 73  tab.test.cse.tes
1350: 74 0a 63 74 69 6d 65 2e 74 65 73 74 0a 64 61 74  t.ctime.test.dat
1360: 65 2e 74 65 73 74 0a 64 65 66 61 75 6c 74 2e 74  e.test.default.t
1370: 65 73 74 0a 64 65 6c 65 74 65 2e 74 65 73 74 0a  est.delete.test.
1380: 64 65 6c 65 74 65 32 2e 74 65 73 74 0a 64 65 6c  delete2.test.del
1390: 65 74 65 33 2e 74 65 73 74 0a 64 65 73 63 69 64  ete3.test.descid
13a0: 78 31 2e 74 65 73 74 0a 64 65 73 63 69 64 78 32  x1.test.descidx2
13b0: 2e 74 65 73 74 0a 64 65 73 63 69 64 78 33 2e 74  .test.descidx3.t
13c0: 65 73 74 0a 64 69 73 74 69 6e 63 74 2e 74 65 73  est.distinct.tes
13d0: 74 0a 64 69 73 74 69 6e 63 74 61 67 67 2e 74 65  t.distinctagg.te
13e0: 73 74 0a 65 5f 63 72 65 61 74 65 74 61 62 6c 65  st.e_createtable
13f0: 2e 74 65 73 74 0a 65 5f 64 65 6c 65 74 65 2e 74  .test.e_delete.t
1400: 65 73 74 0a 65 5f 64 72 6f 70 74 72 69 67 67 65  est.e_droptrigge
1410: 72 2e 74 65 73 74 0a 65 5f 64 72 6f 70 76 69 65  r.test.e_dropvie
1420: 77 2e 74 65 73 74 0a 65 5f 65 78 70 72 2e 74 65  w.test.e_expr.te
1430: 73 74 0a 65 5f 66 6b 65 79 2e 74 65 73 74 0a 65  st.e_fkey.test.e
1440: 5f 69 6e 73 65 72 74 2e 74 65 73 74 0a 65 5f 72  _insert.test.e_r
1450: 65 69 6e 64 65 78 2e 74 65 73 74 0a 65 5f 72 65  eindex.test.e_re
1460: 73 6f 6c 76 65 2e 74 65 73 74 0a 65 5f 73 65 6c  solve.test.e_sel
1470: 65 63 74 2e 74 65 73 74 0a 65 5f 73 65 6c 65 63  ect.test.e_selec
1480: 74 32 2e 74 65 73 74 0a 65 5f 75 70 64 61 74 65  t2.test.e_update
1490: 2e 74 65 73 74 0a 65 6e 63 2e 74 65 73 74 0a 65  .test.enc.test.e
14a0: 6e 63 33 2e 74 65 73 74 0a 65 6e 63 34 2e 74 65  nc3.test.enc4.te
14b0: 73 74 0a 65 72 72 6d 73 67 2e 74 65 73 74 0a 65  st.errmsg.test.e
14c0: 76 61 6c 2e 74 65 73 74 0a 65 78 65 63 2e 74 65  val.test.exec.te
14d0: 73 74 0a 65 78 69 73 74 73 2e 74 65 73 74 0a 65  st.exists.test.e
14e0: 78 70 72 2e 74 65 73 74 0a 66 61 75 6c 74 31 2e  xpr.test.fault1.
14f0: 74 65 73 74 0a 66 6b 65 79 31 2e 74 65 73 74 0a  test.fkey1.test.
1500: 66 6b 65 79 32 2e 74 65 73 74 0a 66 6b 65 79 33  fkey2.test.fkey3
1510: 2e 74 65 73 74 0a 66 6b 65 79 34 2e 74 65 73 74  .test.fkey4.test
1520: 0a 66 75 6e 63 2e 74 65 73 74 0a 66 75 6e 63 32  .func.test.func2
1530: 2e 74 65 73 74 0a 66 75 6e 63 33 2e 74 65 73 74  .test.func3.test
1540: 0a 66 75 7a 7a 2e 74 65 73 74 0a 66 75 7a 7a 32  .fuzz.test.fuzz2
1550: 2e 74 65 73 74 0a 69 6e 2e 74 65 73 74 0a 69 6e  .test.in.test.in
1560: 32 2e 74 65 73 74 0a 69 6e 33 2e 74 65 73 74 0a  2.test.in3.test.
1570: 69 6e 34 2e 74 65 73 74 0a 69 6e 64 65 78 2e 74  in4.test.index.t
1580: 65 73 74 0a 69 6e 64 65 78 32 2e 74 65 73 74 0a  est.index2.test.
1590: 69 6e 64 65 78 33 2e 74 65 73 74 0a 69 6e 64 65  index3.test.inde
15a0: 78 34 2e 74 65 73 74 0a 69 6e 73 65 72 74 2e 74  x4.test.insert.t
15b0: 65 73 74 0a 69 6e 73 65 72 74 32 2e 74 65 73 74  est.insert2.test
15c0: 0a 69 6e 73 65 72 74 33 2e 74 65 73 74 0a 69 6e  .insert3.test.in
15d0: 73 65 72 74 35 2e 74 65 73 74 0a 6a 6f 69 6e 2e  sert5.test.join.
15e0: 74 65 73 74 0a 6a 6f 69 6e 32 2e 74 65 73 74 0a  test.join2.test.
15f0: 6a 6f 69 6e 33 2e 74 65 73 74 0a 6a 6f 69 6e 34  join3.test.join4
1600: 2e 74 65 73 74 0a 6a 6f 69 6e 35 2e 74 65 73 74  .test.join5.test
1610: 0a 6a 6f 69 6e 36 2e 74 65 73 74 0a 6b 65 79 77  .join6.test.keyw
1620: 6f 72 64 31 2e 74 65 73 74 0a 6b 76 73 74 6f 72  ord1.test.kvstor
1630: 65 2e 74 65 73 74 0a 6b 76 73 74 6f 72 65 32 2e  e.test.kvstore2.
1640: 74 65 73 74 0a 6c 61 73 74 73 74 6d 74 63 68 61  test.laststmtcha
1650: 6e 67 65 73 2e 74 65 73 74 0a 6c 69 6b 65 2e 74  nges.test.like.t
1660: 65 73 74 0a 6c 69 6b 65 32 2e 74 65 73 74 0a 6c  est.like2.test.l
1670: 69 6d 69 74 2e 74 65 73 74 0a 6d 61 69 6e 2e 74  imit.test.main.t
1680: 65 73 74 0a 6d 61 6e 79 64 62 2e 74 65 73 74 0a  est.manydb.test.
1690: 6d 69 6e 6d 61 78 2e 74 65 73 74 0a 6d 69 6e 6d  minmax.test.minm
16a0: 61 78 32 2e 74 65 73 74 0a 6d 69 73 63 31 2e 74  ax2.test.misc1.t
16b0: 65 73 74 0a 6d 69 73 63 32 2e 74 65 73 74 0a 6d  est.misc2.test.m
16c0: 69 73 63 33 2e 74 65 73 74 0a 6d 69 73 63 34 2e  isc3.test.misc4.
16d0: 74 65 73 74 0a 6d 69 73 63 35 2e 74 65 73 74 0a  test.misc5.test.
16e0: 6d 69 73 63 36 2e 74 65 73 74 0a 6d 69 73 75 73  misc6.test.misus
16f0: 65 2e 74 65 73 74 0a 6e 6f 74 6e 75 6c 6c 2e 74  e.test.notnull.t
1700: 65 73 74 0a 6e 75 6c 6c 2e 74 65 73 74 0a 6e 75  est.null.test.nu
1710: 6d 2e 74 65 73 74 0a 6e 75 6d 32 2e 74 65 73 74  m.test.num2.test
1720: 0a 70 72 69 6e 74 66 2e 74 65 73 74 0a 71 75 6f  .printf.test.quo
1730: 74 65 2e 74 65 73 74 0a 72 61 6e 64 65 78 70 72  te.test.randexpr
1740: 31 2e 74 65 73 74 0a 72 6f 77 68 61 73 68 2e 74  1.test.rowhash.t
1750: 65 73 74 0a 73 61 76 65 70 6f 69 6e 74 2e 74 65  est.savepoint.te
1760: 73 74 0a 73 61 76 65 70 6f 69 6e 74 32 2e 74 65  st.savepoint2.te
1770: 73 74 0a 73 61 76 65 70 6f 69 6e 74 35 2e 74 65  st.savepoint5.te
1780: 73 74 0a 73 61 76 65 70 6f 69 6e 74 36 2e 74 65  st.savepoint6.te
1790: 73 74 0a 73 63 68 65 6d 61 33 2e 74 65 73 74 0a  st.schema3.test.
17a0: 73 63 68 65 6d 61 34 2e 74 65 73 74 0a 73 65 6c  schema4.test.sel
17b0: 65 63 74 31 2e 74 65 73 74 0a 73 65 6c 65 63 74  ect1.test.select
17c0: 32 2e 74 65 73 74 0a 73 65 6c 65 63 74 33 2e 74  2.test.select3.t
17d0: 65 73 74 0a 73 65 6c 65 63 74 34 2e 74 65 73 74  est.select4.test
17e0: 0a 73 65 6c 65 63 74 35 2e 74 65 73 74 0a 73 65  .select5.test.se
17f0: 6c 65 63 74 36 2e 74 65 73 74 0a 73 65 6c 65 63  lect6.test.selec
1800: 74 37 2e 74 65 73 74 0a 73 65 6c 65 63 74 38 2e  t7.test.select8.
1810: 74 65 73 74 0a 73 65 6c 65 63 74 39 2e 74 65 73  test.select9.tes
1820: 74 0a 73 65 6c 65 63 74 41 2e 74 65 73 74 0a 73  t.selectA.test.s
1830: 65 6c 65 63 74 42 2e 74 65 73 74 0a 73 65 6c 65  electB.test.sele
1840: 63 74 43 2e 74 65 73 74 0a 73 65 6c 65 63 74 46  ctC.test.selectF
1850: 2e 74 65 73 74 0a 73 69 64 65 64 65 6c 65 74 65  .test.sidedelete
1860: 2e 74 65 73 74 0a 73 69 6d 70 6c 65 2e 74 65 73  .test.simple.tes
1870: 74 0a 73 69 6d 70 6c 65 32 2e 74 65 73 74 0a 73  t.simple2.test.s
1880: 69 6d 70 6c 65 33 2e 74 65 73 74 0a 73 6f 72 74  imple3.test.sort
1890: 2e 74 65 73 74 0a 73 74 6f 72 61 67 65 31 2e 74  .test.storage1.t
18a0: 65 73 74 0a 73 75 62 71 75 65 72 79 2e 74 65 73  est.subquery.tes
18b0: 74 0a 73 75 62 71 75 65 72 79 32 2e 74 65 73 74  t.subquery2.test
18c0: 0a 73 75 62 73 65 6c 65 63 74 2e 74 65 73 74 0a  .subselect.test.
18d0: 73 75 62 73 74 72 2e 74 65 73 74 0a 74 61 62 6c  substr.test.tabl
18e0: 65 2e 74 65 73 74 0a 74 6b 74 2d 30 32 61 38 65  e.test.tkt-02a8e
18f0: 38 31 64 34 34 2e 74 65 73 74 0a 74 6b 74 2d 32  81d44.test.tkt-2
1900: 36 66 66 30 63 32 64 31 65 2e 74 65 73 74 0a 74  6ff0c2d1e.test.t
1910: 6b 74 2d 32 64 31 61 35 63 36 37 64 2e 74 65 73  kt-2d1a5c67d.tes
1920: 74 0a 74 6b 74 2d 32 65 61 32 34 32 35 64 33 34  t.tkt-2ea2425d34
1930: 2e 74 65 73 74 0a 74 6b 74 2d 33 31 33 33 38 64  .test.tkt-31338d
1940: 63 61 37 65 2e 74 65 73 74 0a 74 6b 74 2d 33 38  ca7e.test.tkt-38
1950: 63 62 35 64 66 33 37 35 2e 74 65 73 74 0a 74 6b  cb5df375.test.tk
1960: 74 2d 33 39 39 38 36 38 33 61 31 36 2e 74 65 73  t-3998683a16.tes
1970: 74 0a 74 6b 74 2d 33 61 37 37 63 39 37 31 34 65  t.tkt-3a77c9714e
1980: 2e 74 65 73 74 0a 74 6b 74 2d 33 66 65 38 39 37  .test.tkt-3fe897
1990: 33 35 32 65 2e 74 65 73 74 0a 74 6b 74 2d 34 61  352e.test.tkt-4a
19a0: 30 33 65 64 63 34 63 38 2e 74 65 73 74 0a 74 6b  03edc4c8.test.tk
19b0: 74 2d 35 34 38 34 34 65 65 61 33 66 2e 74 65 73  t-54844eea3f.tes
19c0: 74 0a 74 6b 74 2d 35 65 31 30 34 32 30 65 38 64  t.tkt-5e10420e8d
19d0: 2e 74 65 73 74 0a 74 6b 74 2d 37 35 32 65 31 36  .test.tkt-752e16
19e0: 34 36 66 63 2e 74 65 73 74 0a 74 6b 74 2d 38 30  46fc.test.tkt-80
19f0: 62 61 32 30 31 30 37 39 2e 74 65 73 74 0a 74 6b  ba201079.test.tk
1a00: 74 2d 38 30 65 30 33 31 61 30 30 66 2e 74 65 73  t-80e031a00f.tes
1a10: 74 0a 74 6b 74 2d 38 34 35 34 61 32 30 37 62 39  t.tkt-8454a207b9
1a20: 2e 74 65 73 74 0a 74 6b 74 2d 39 31 65 32 65 38  .test.tkt-91e2e8
1a30: 62 61 36 66 2e 74 65 73 74 0a 74 6b 74 2d 39 64  ba6f.test.tkt-9d
1a40: 36 38 63 38 38 33 2e 74 65 73 74 0a 74 6b 74 2d  68c883.test.tkt-
1a50: 62 31 64 33 61 32 65 35 33 31 2e 74 65 73 74 0a  b1d3a2e531.test.
1a60: 74 6b 74 2d 62 33 35 31 64 39 35 66 39 2e 74 65  tkt-b351d95f9.te
1a70: 73 74 0a 74 6b 74 2d 62 37 32 37 38 37 62 31 2e  st.tkt-b72787b1.
1a80: 74 65 73 74 0a 74 6b 74 2d 62 64 34 38 34 61 30  test.tkt-bd484a0
1a90: 39 30 63 2e 74 65 73 74 0a 74 6b 74 2d 63 62 64  90c.test.tkt-cbd
1aa0: 30 35 34 66 61 36 62 2e 74 65 73 74 0a 74 6b 74  054fa6b.test.tkt
1ab0: 2d 64 31 31 66 30 39 64 33 36 65 2e 74 65 73 74  -d11f09d36e.test
1ac0: 0a 74 6b 74 2d 64 36 33 35 32 33 36 33 37 35 2e  .tkt-d635236375.
1ad0: 74 65 73 74 0a 74 6b 74 2d 66 39 37 33 63 37 61  test.tkt-f973c7a
1ae0: 63 33 31 2e 74 65 73 74 0a 74 6b 74 2d 66 61 37  c31.test.tkt-fa7
1af0: 62 66 35 65 63 2e 74 65 73 74 0a 74 6b 74 31 34  bf5ec.test.tkt14
1b00: 33 35 2e 74 65 73 74 0a 74 6b 74 31 34 34 33 2e  35.test.tkt1443.
1b10: 74 65 73 74 0a 74 6b 74 31 34 34 34 2e 74 65 73  test.tkt1444.tes
1b20: 74 0a 74 6b 74 31 34 34 39 2e 74 65 73 74 0a 74  t.tkt1449.test.t
1b30: 6b 74 31 34 37 33 2e 74 65 73 74 0a 74 6b 74 31  kt1473.test.tkt1
1b40: 35 30 31 2e 74 65 73 74 0a 74 6b 74 31 35 31 34  501.test.tkt1514
1b50: 2e 74 65 73 74 0a 74 6b 74 31 35 33 37 2e 74 65  .test.tkt1537.te
1b60: 73 74 0a 74 6b 74 31 38 37 33 2e 74 65 73 74 0a  st.tkt1873.test.
1b70: 74 6b 74 32 31 34 31 2e 74 65 73 74 0a 74 6b 74  tkt2141.test.tkt
1b80: 32 31 39 32 2e 74 65 73 74 0a 74 6b 74 32 32 31  2192.test.tkt221
1b90: 33 2e 74 65 73 74 0a 74 6b 74 32 32 35 31 2e 74  3.test.tkt2251.t
1ba0: 65 73 74 0a 74 6b 74 32 32 38 35 2e 74 65 73 74  est.tkt2285.test
1bb0: 0a 74 6b 74 32 33 33 39 2e 74 65 73 74 0a 74 6b  .tkt2339.test.tk
1bc0: 74 32 33 39 31 2e 74 65 73 74 0a 74 6b 74 32 34  t2391.test.tkt24
1bd0: 35 30 2e 74 65 73 74 0a 74 6b 74 32 36 34 30 2e  50.test.tkt2640.
1be0: 74 65 73 74 0a 74 6b 74 32 36 34 33 2e 74 65 73  test.tkt2643.tes
1bf0: 74 0a 74 6b 74 32 37 36 37 2e 74 65 73 74 0a 74  t.tkt2767.test.t
1c00: 6b 74 32 38 31 37 2e 74 65 73 74 0a 74 6b 74 32  kt2817.test.tkt2
1c10: 38 32 32 2e 74 65 73 74 0a 74 6b 74 32 38 33 32  822.test.tkt2832
1c20: 2e 74 65 73 74 0a 74 6b 74 32 39 32 37 2e 74 65  .test.tkt2927.te
1c30: 73 74 0a 74 6b 74 32 39 34 32 2e 74 65 73 74 0a  st.tkt2942.test.
1c40: 74 6b 74 33 31 32 31 2e 74 65 73 74 0a 74 6b 74  tkt3121.test.tkt
1c50: 33 32 30 31 2e 74 65 73 74 0a 74 6b 74 33 32 39  3201.test.tkt329
1c60: 32 2e 74 65 73 74 0a 74 6b 74 33 32 39 38 2e 74  2.test.tkt3298.t
1c70: 65 73 74 0a 74 6b 74 33 33 33 34 2e 74 65 73 74  est.tkt3334.test
1c80: 0a 74 6b 74 33 33 34 36 2e 74 65 73 74 0a 74 6b  .tkt3346.test.tk
1c90: 74 33 33 35 37 2e 74 65 73 74 0a 74 6b 74 33 34  t3357.test.tkt34
1ca0: 31 39 2e 74 65 73 74 0a 74 6b 74 33 34 32 34 2e  19.test.tkt3424.
1cb0: 74 65 73 74 0a 74 6b 74 33 34 34 32 2e 74 65 73  test.tkt3442.tes
1cc0: 74 0a 74 6b 74 33 34 36 31 2e 74 65 73 74 0a 74  t.tkt3461.test.t
1cd0: 6b 74 33 34 39 33 2e 74 65 73 74 0a 74 6b 74 33  kt3493.test.tkt3
1ce0: 35 30 38 2e 74 65 73 74 0a 74 6b 74 33 35 32 32  508.test.tkt3522
1cf0: 2e 74 65 73 74 0a 74 6b 74 33 35 32 37 2e 74 65  .test.tkt3527.te
1d00: 73 74 0a 74 6b 74 33 35 34 31 2e 74 65 73 74 0a  st.tkt3541.test.
1d10: 74 6b 74 33 35 35 34 2e 74 65 73 74 0a 74 6b 74  tkt3554.test.tkt
1d20: 33 35 38 31 2e 74 65 73 74 0a 74 6b 74 33 35 78  3581.test.tkt35x
1d30: 78 2e 74 65 73 74 0a 74 6b 74 33 36 33 30 2e 74  x.test.tkt3630.t
1d40: 65 73 74 0a 74 6b 74 33 37 31 38 2e 74 65 73 74  est.tkt3718.test
1d50: 0a 74 6b 74 33 37 36 31 2e 74 65 73 74 0a 74 6b  .tkt3761.test.tk
1d60: 74 33 37 37 33 2e 74 65 73 74 0a 74 6b 74 33 37  t3773.test.tkt37
1d70: 39 31 2e 74 65 73 74 0a 74 6b 74 33 38 31 30 2e  91.test.tkt3810.
1d80: 74 65 73 74 0a 74 6b 74 33 38 33 38 2e 74 65 73  test.tkt3838.tes
1d90: 74 0a 74 6b 74 33 38 34 31 2e 74 65 73 74 0a 74  t.tkt3841.test.t
1da0: 6b 74 33 38 37 31 2e 74 65 73 74 0a 74 6b 74 33  kt3871.test.tkt3
1db0: 38 37 39 2e 74 65 73 74 0a 74 6b 74 33 39 31 31  879.test.tkt3911
1dc0: 2e 74 65 73 74 0a 74 6b 74 33 39 31 38 2e 74 65  .test.tkt3918.te
1dd0: 73 74 0a 74 6b 74 33 39 32 32 2e 74 65 73 74 0a  st.tkt3922.test.
1de0: 74 6b 74 33 39 32 39 2e 74 65 73 74 0a 74 6b 74  tkt3929.test.tkt
1df0: 33 39 33 35 2e 74 65 73 74 0a 74 6b 74 33 39 39  3935.test.tkt399
1e00: 37 2e 74 65 73 74 0a 74 6f 6b 65 6e 69 7a 65 2e  7.test.tokenize.
1e10: 74 65 73 74 0a 74 72 61 63 65 2e 74 65 73 74 0a  test.trace.test.
1e20: 74 72 61 63 65 32 2e 74 65 73 74 0a 74 72 61 63  trace2.test.trac
1e30: 65 33 2e 74 65 73 74 0a 74 72 61 6e 73 2e 74 65  e3.test.trans.te
1e40: 73 74 0a 74 72 61 6e 73 32 2e 74 65 73 74 0a 74  st.trans2.test.t
1e50: 72 61 6e 73 33 2e 74 65 73 74 0a 74 72 69 67 67  rans3.test.trigg
1e60: 65 72 31 2e 74 65 73 74 0a 74 72 69 67 67 65 72  er1.test.trigger
1e70: 32 2e 74 65 73 74 0a 74 72 69 67 67 65 72 33 2e  2.test.trigger3.
1e80: 74 65 73 74 0a 74 72 69 67 67 65 72 34 2e 74 65  test.trigger4.te
1e90: 73 74 0a 74 72 69 67 67 65 72 35 2e 74 65 73 74  st.trigger5.test
1ea0: 0a 74 72 69 67 67 65 72 36 2e 74 65 73 74 0a 74  .trigger6.test.t
1eb0: 72 69 67 67 65 72 37 2e 74 65 73 74 0a 74 72 69  rigger7.test.tri
1ec0: 67 67 65 72 38 2e 74 65 73 74 0a 74 72 69 67 67  gger8.test.trigg
1ed0: 65 72 39 2e 74 65 73 74 0a 74 72 69 67 67 65 72  er9.test.trigger
1ee0: 41 2e 74 65 73 74 0a 74 72 69 67 67 65 72 42 2e  A.test.triggerB.
1ef0: 74 65 73 74 0a 74 72 69 67 67 65 72 43 2e 74 65  test.triggerC.te
1f00: 73 74 0a 74 72 69 67 67 65 72 44 2e 74 65 73 74  st.triggerD.test
1f10: 0a 74 79 70 65 73 32 2e 74 65 73 74 0a 74 79 70  .types2.test.typ
1f20: 65 73 33 2e 74 65 73 74 0a 75 6e 69 71 75 65 2e  es3.test.unique.
1f30: 74 65 73 74 0a 75 6e 69 78 65 78 63 6c 2e 74 65  test.unixexcl.te
1f40: 73 74 0a 75 70 64 61 74 65 2e 74 65 73 74 0a 76  st.update.test.v
1f50: 69 65 77 2e 74 65 73 74 0a 77 68 65 72 65 2e 74  iew.test.where.t
1f60: 65 73 74 0a 77 68 65 72 65 34 2e 74 65 73 74 0a  est.where4.test.
1f70: 77 68 65 72 65 35 2e 74 65 73 74 0a 77 68 65 72  where5.test.wher
1f80: 65 36 2e 74 65 73 74 0a 77 68 65 72 65 37 2e 74  e6.test.where7.t
1f90: 65 73 74 0a 77 68 65 72 65 38 2e 74 65 73 74 0a  est.where8.test.
1fa0: 77 68 65 72 65 39 2e 74 65 73 74 0a 77 68 65 72  where9.test.wher
1fb0: 65 41 2e 74 65 73 74 0a 77 68 65 72 65 42 2e 74  eA.test.whereB.t
1fc0: 65 73 74 0a 77 68 65 72 65 43 2e 74 65 73 74 0a  est.whereC.test.
1fd0: 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a  } -initialize {.
1fe0: 20 20 23 20 6b 76 5f 64 65 66 61 75 6c 74 20 62    # kv_default b
1ff0: 74 0a 20 20 6b 76 77 72 61 70 20 75 6e 69 6e 73  t.  kvwrap unins
2000: 74 61 6c 6c 0a 20 20 6b 76 77 72 61 70 20 69 6e  tall.  kvwrap in
2010: 73 74 61 6c 6c 20 62 74 0a 7d 0a 0a 0a 0a 74 65  stall bt.}....te
2020: 73 74 5f 73 75 69 74 65 20 22 73 72 63 34 22 20  st_suite "src4" 
2030: 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65 73 63  -prefix "" -desc
2040: 72 69 70 74 69 6f 6e 20 7b 0a 7d 20 2d 66 69 6c  ription {.} -fil
2050: 65 73 20 7b 0a 20 20 73 69 6d 70 6c 65 2e 74 65  es {.  simple.te
2060: 73 74 20 73 69 6d 70 6c 65 32 2e 74 65 73 74 0a  st simple2.test.
2070: 20 20 6c 73 6d 31 2e 74 65 73 74 20 6c 73 6d 32    lsm1.test lsm2
2080: 2e 74 65 73 74 20 6c 73 6d 33 2e 74 65 73 74 20  .test lsm3.test 
2090: 6c 73 6d 34 2e 74 65 73 74 20 6c 73 6d 35 2e 74  lsm4.test lsm5.t
20a0: 65 73 74 0a 20 20 63 73 72 31 2e 74 65 73 74 0a  est.  csr1.test.
20b0: 20 20 63 6b 70 74 31 2e 74 65 73 74 0a 20 20 6d    ckpt1.test.  m
20c0: 63 31 2e 74 65 73 74 0a 20 20 66 74 73 35 65 78  c1.test.  fts5ex
20d0: 70 72 31 2e 74 65 73 74 20 66 74 73 35 71 75 65  pr1.test fts5que
20e0: 72 79 31 2e 74 65 73 74 20 66 74 73 35 72 6e 64  ry1.test fts5rnd
20f0: 31 2e 74 65 73 74 20 66 74 73 35 63 72 65 61 74  1.test fts5creat
2100: 65 2e 74 65 73 74 20 66 74 73 35 73 6e 69 70 70  e.test fts5snipp
2110: 65 74 2e 74 65 73 74 0a 0a 20 20 61 6c 74 65 72  et.test..  alter
2120: 2e 74 65 73 74 20 61 6c 74 65 72 33 2e 74 65 73  .test alter3.tes
2130: 74 20 61 6c 74 65 72 34 2e 74 65 73 74 0a 20 20  t alter4.test.  
2140: 61 6e 61 6c 79 7a 65 2e 74 65 73 74 20 61 6e 61  analyze.test ana
2150: 6c 79 7a 65 33 2e 74 65 73 74 20 61 6e 61 6c 79  lyze3.test analy
2160: 7a 65 34 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  ze4.test analyze
2170: 35 2e 74 65 73 74 20 0a 20 20 61 6e 61 6c 79 7a  5.test .  analyz
2180: 65 36 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 37  e6.test analyze7
2190: 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 38 2e 74  .test analyze8.t
21a0: 65 73 74 0a 20 20 61 75 74 68 2e 74 65 73 74 20  est.  auth.test 
21b0: 61 75 74 68 32 2e 74 65 73 74 20 61 75 74 68 33  auth2.test auth3
21c0: 2e 74 65 73 74 20 61 75 74 68 34 2e 74 65 73 74  .test auth4.test
21d0: 0a 20 20 61 67 67 65 72 72 6f 72 2e 74 65 73 74  .  aggerror.test
21e0: 0a 20 20 61 74 74 61 63 68 2e 74 65 73 74 20 61  .  attach.test a
21f0: 74 74 61 63 68 33 2e 74 65 73 74 20 61 74 74 61  ttach3.test atta
2200: 63 68 34 2e 74 65 73 74 0a 20 20 61 75 74 6f 69  ch4.test.  autoi
2210: 6e 64 65 78 31 2e 74 65 73 74 0a 20 20 62 61 64  ndex1.test.  bad
2220: 75 74 66 2e 74 65 73 74 20 62 61 64 75 74 66 32  utf.test badutf2
2230: 2e 74 65 73 74 0a 20 20 62 65 74 77 65 65 6e 2e  .test.  between.
2240: 74 65 73 74 0a 20 20 62 69 67 72 6f 77 2e 74 65  test.  bigrow.te
2250: 73 74 0a 20 20 62 69 6e 64 2e 74 65 73 74 0a 20  st.  bind.test. 
2260: 20 62 6c 6f 62 2e 74 65 73 74 0a 20 20 62 6f 75   blob.test.  bou
2270: 6e 64 61 72 79 31 2e 74 65 73 74 20 62 6f 75 6e  ndary1.test boun
2280: 64 61 72 79 32 2e 74 65 73 74 20 62 6f 75 6e 64  dary2.test bound
2290: 61 72 79 33 2e 74 65 73 74 20 62 6f 75 6e 64 61  ary3.test bounda
22a0: 72 79 34 2e 74 65 73 74 0a 20 20 63 61 70 69 32  ry4.test.  capi2
22b0: 2e 74 65 73 74 0a 20 20 63 61 73 74 2e 74 65 73  .test.  cast.tes
22c0: 74 0a 20 20 63 68 65 63 6b 2e 74 65 73 74 0a 20  t.  check.test. 
22d0: 20 63 6f 61 6c 65 73 63 65 2e 74 65 73 74 20 0a   coalesce.test .
22e0: 20 20 63 6f 6c 6c 61 74 65 31 2e 74 65 73 74 20    collate1.test 
22f0: 63 6f 6c 6c 61 74 65 32 2e 74 65 73 74 20 63 6f  collate2.test co
2300: 6c 6c 61 74 65 33 2e 74 65 73 74 20 63 6f 6c 6c  llate3.test coll
2310: 61 74 65 34 2e 74 65 73 74 20 63 6f 6c 6c 61 74  ate4.test collat
2320: 65 35 2e 74 65 73 74 0a 20 20 63 6f 6c 6c 61 74  e5.test.  collat
2330: 65 36 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 37  e6.test collate7
2340: 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 38 2e 74  .test collate8.t
2350: 65 73 74 20 63 6f 6c 6c 61 74 65 39 2e 74 65 73  est collate9.tes
2360: 74 20 63 6f 6c 6c 61 74 65 41 2e 74 65 73 74 0a  t collateA.test.
2370: 20 20 63 6f 6c 6c 61 74 65 65 72 72 2e 74 65 73    collateerr.tes
2380: 74 0a 20 20 63 6f 76 69 64 78 2e 74 65 73 74 0a  t.  covidx.test.
2390: 20 20 63 6f 6e 66 6c 69 63 74 2e 74 65 73 74 20    conflict.test 
23a0: 0a 20 20 63 6f 75 6e 74 2e 74 65 73 74 0a 20 20  .  count.test.  
23b0: 63 72 65 61 74 65 74 61 62 2e 74 65 73 74 0a 20  createtab.test. 
23c0: 20 63 73 65 2e 74 65 73 74 0a 20 20 63 74 69 6d   cse.test.  ctim
23d0: 65 2e 74 65 73 74 0a 20 20 64 61 74 65 2e 74 65  e.test.  date.te
23e0: 73 74 0a 20 20 64 65 66 61 75 6c 74 2e 74 65 73  st.  default.tes
23f0: 74 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20  t.  delete.test 
2400: 64 65 6c 65 74 65 32 2e 74 65 73 74 20 64 65 6c  delete2.test del
2410: 65 74 65 33 2e 74 65 73 74 0a 20 20 64 65 73 63  ete3.test.  desc
2420: 69 64 78 31 2e 74 65 73 74 20 64 65 73 63 69 64  idx1.test descid
2430: 78 32 2e 74 65 73 74 20 64 65 73 63 69 64 78 33  x2.test descidx3
2440: 2e 74 65 73 74 20 0a 20 20 64 69 73 74 69 6e 63  .test .  distinc
2450: 74 2e 74 65 73 74 20 64 69 73 74 69 6e 63 74 61  t.test distincta
2460: 67 67 2e 74 65 73 74 0a 20 20 65 5f 63 72 65 61  gg.test.  e_crea
2470: 74 65 74 61 62 6c 65 2e 74 65 73 74 20 65 5f 64  tetable.test e_d
2480: 65 6c 65 74 65 2e 74 65 73 74 20 65 5f 64 72 6f  elete.test e_dro
2490: 70 74 72 69 67 67 65 72 2e 74 65 73 74 20 65 5f  ptrigger.test e_
24a0: 64 72 6f 70 76 69 65 77 2e 74 65 73 74 0a 20 20  dropview.test.  
24b0: 65 5f 65 78 70 72 2e 74 65 73 74 20 65 5f 66 6b  e_expr.test e_fk
24c0: 65 79 2e 74 65 73 74 20 65 5f 69 6e 73 65 72 74  ey.test e_insert
24d0: 2e 74 65 73 74 20 65 5f 72 65 69 6e 64 65 78 2e  .test e_reindex.
24e0: 74 65 73 74 0a 20 20 65 5f 72 65 73 6f 6c 76 65  test.  e_resolve
24f0: 2e 74 65 73 74 20 65 5f 73 65 6c 65 63 74 2e 74  .test e_select.t
2500: 65 73 74 20 65 5f 73 65 6c 65 63 74 32 2e 74 65  est e_select2.te
2510: 73 74 20 65 5f 75 70 64 61 74 65 2e 74 65 73 74  st e_update.test
2520: 0a 20 20 65 6e 63 2e 74 65 73 74 20 65 6e 63 33  .  enc.test enc3
2530: 2e 74 65 73 74 20 65 6e 63 34 2e 74 65 73 74 0a  .test enc4.test.
2540: 20 20 65 72 72 6d 73 67 2e 74 65 73 74 0a 20 20    errmsg.test.  
2550: 65 76 61 6c 2e 74 65 73 74 0a 20 20 65 78 70 72  eval.test.  expr
2560: 2e 74 65 73 74 0a 20 20 65 78 65 63 2e 74 65 73  .test.  exec.tes
2570: 74 0a 20 20 65 78 69 73 74 73 2e 74 65 73 74 0a  t.  exists.test.
2580: 20 20 66 6b 65 79 31 2e 74 65 73 74 20 66 6b 65    fkey1.test fke
2590: 79 32 2e 74 65 73 74 20 66 6b 65 79 33 2e 74 65  y2.test fkey3.te
25a0: 73 74 20 66 6b 65 79 34 2e 74 65 73 74 0a 20 20  st fkey4.test.  
25b0: 66 75 6e 63 2e 74 65 73 74 20 66 75 6e 63 32 2e  func.test func2.
25c0: 74 65 73 74 20 66 75 6e 63 33 2e 74 65 73 74 20  test func3.test 
25d0: 0a 20 20 66 75 7a 7a 2e 74 65 73 74 20 66 75 7a  .  fuzz.test fuz
25e0: 7a 32 2e 74 65 73 74 20 0a 20 20 69 6e 2e 74 65  z2.test .  in.te
25f0: 73 74 20 69 6e 32 2e 74 65 73 74 20 69 6e 33 2e  st in2.test in3.
2600: 74 65 73 74 20 69 6e 34 2e 74 65 73 74 0a 20 20  test in4.test.  
2610: 69 6e 64 65 78 2e 74 65 73 74 20 69 6e 64 65 78  index.test index
2620: 32 2e 74 65 73 74 20 69 6e 64 65 78 33 2e 74 65  2.test index3.te
2630: 73 74 20 69 6e 64 65 78 34 2e 74 65 73 74 20 0a  st index4.test .
2640: 20 20 69 6e 73 65 72 74 2e 74 65 73 74 20 69 6e    insert.test in
2650: 73 65 72 74 32 2e 74 65 73 74 20 69 6e 73 65 72  sert2.test inser
2660: 74 33 2e 74 65 73 74 20 69 6e 73 65 72 74 35 2e  t3.test insert5.
2670: 74 65 73 74 0a 20 20 6a 6f 69 6e 2e 74 65 73 74  test.  join.test
2680: 20 6a 6f 69 6e 32 2e 74 65 73 74 20 6a 6f 69 6e   join2.test join
2690: 33 2e 74 65 73 74 20 6a 6f 69 6e 34 2e 74 65 73  3.test join4.tes
26a0: 74 20 6a 6f 69 6e 35 2e 74 65 73 74 20 6a 6f 69  t join5.test joi
26b0: 6e 36 2e 74 65 73 74 0a 20 20 6b 65 79 77 6f 72  n6.test.  keywor
26c0: 64 31 2e 74 65 73 74 0a 20 20 6b 76 73 74 6f 72  d1.test.  kvstor
26d0: 65 2e 74 65 73 74 20 6b 76 73 74 6f 72 65 32 2e  e.test kvstore2.
26e0: 74 65 73 74 0a 20 20 6c 61 73 74 73 74 6d 74 63  test.  laststmtc
26f0: 68 61 6e 67 65 73 2e 74 65 73 74 0a 20 20 6c 69  hanges.test.  li
2700: 6d 69 74 2e 74 65 73 74 0a 20 20 6c 69 6b 65 2e  mit.test.  like.
2710: 74 65 73 74 20 6c 69 6b 65 32 2e 74 65 73 74 0a  test like2.test.
2720: 20 20 6d 61 69 6e 2e 74 65 73 74 0a 20 20 6d 61    main.test.  ma
2730: 6e 79 64 62 2e 74 65 73 74 0a 20 20 6d 69 73 63  nydb.test.  misc
2740: 35 2e 74 65 73 74 20 6d 69 73 63 36 2e 74 65 73  5.test misc6.tes
2750: 74 0a 20 20 6d 69 73 75 73 65 2e 74 65 73 74 0a  t.  misuse.test.
2760: 20 20 6e 6f 74 6e 75 6c 6c 2e 74 65 73 74 0a 20    notnull.test. 
2770: 20 6e 75 6c 6c 2e 74 65 73 74 0a 20 20 6e 75 6d   null.test.  num
2780: 2e 74 65 73 74 20 6e 75 6d 32 2e 74 65 73 74 0a  .test num2.test.
2790: 20 20 70 72 61 67 6d 61 33 2e 74 65 73 74 0a 20    pragma3.test. 
27a0: 20 70 72 69 6e 74 66 2e 74 65 73 74 20 0a 20 20   printf.test .  
27b0: 71 75 6f 74 65 2e 74 65 73 74 0a 0a 20 20 73 61  quote.test..  sa
27c0: 76 65 70 6f 69 6e 74 2e 74 65 73 74 20 73 61 76  vepoint.test sav
27d0: 65 70 6f 69 6e 74 35 2e 74 65 73 74 20 0a 0a 20  epoint5.test .. 
27e0: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20 73 65   select1.test se
27f0: 6c 65 63 74 32 2e 74 65 73 74 20 73 65 6c 65 63  lect2.test selec
2800: 74 33 2e 74 65 73 74 20 73 65 6c 65 63 74 34 2e  t3.test select4.
2810: 74 65 73 74 20 73 65 6c 65 63 74 35 2e 74 65 73  test select5.tes
2820: 74 20 0a 20 20 73 65 6c 65 63 74 36 2e 74 65 73  t .  select6.tes
2830: 74 20 73 65 6c 65 63 74 37 2e 74 65 73 74 20 73  t select7.test s
2840: 65 6c 65 63 74 38 2e 74 65 73 74 20 73 65 6c 65  elect8.test sele
2850: 63 74 39 2e 74 65 73 74 20 73 65 6c 65 63 74 41  ct9.test selectA
2860: 2e 74 65 73 74 20 0a 20 20 73 65 6c 65 63 74 42  .test .  selectB
2870: 2e 74 65 73 74 20 73 65 6c 65 63 74 43 2e 74 65  .test selectC.te
2880: 73 74 20 73 65 6c 65 63 74 46 2e 74 65 73 74 0a  st selectF.test.
2890: 0a 20 20 73 6f 72 74 2e 74 65 73 74 0a 20 20 73  .  sort.test.  s
28a0: 74 6f 72 61 67 65 31 2e 74 65 73 74 0a 0a 20 20  torage1.test..  
28b0: 73 75 62 71 75 65 72 79 2e 74 65 73 74 20 73 75  subquery.test su
28c0: 62 71 75 65 72 79 32 2e 74 65 73 74 0a 20 20 73  bquery2.test.  s
28d0: 75 62 73 74 72 2e 74 65 73 74 20 0a 0a 20 20 74  ubstr.test ..  t
28e0: 72 61 63 65 32 2e 74 65 73 74 20 74 72 61 63 65  race2.test trace
28f0: 33 2e 74 65 73 74 0a 0a 20 20 74 72 69 67 67 65  3.test..  trigge
2900: 72 31 2e 74 65 73 74 20 74 72 69 67 67 65 72 32  r1.test trigger2
2910: 2e 74 65 73 74 20 74 72 69 67 67 65 72 33 2e 74  .test trigger3.t
2920: 65 73 74 20 74 72 69 67 67 65 72 34 2e 74 65 73  est trigger4.tes
2930: 74 20 74 72 69 67 67 65 72 35 2e 74 65 73 74 20  t trigger5.test 
2940: 0a 20 20 74 72 69 67 67 65 72 36 2e 74 65 73 74  .  trigger6.test
2950: 20 74 72 69 67 67 65 72 37 2e 74 65 73 74 20 74   trigger7.test t
2960: 72 69 67 67 65 72 38 2e 74 65 73 74 20 74 72 69  rigger8.test tri
2970: 67 67 65 72 39 2e 74 65 73 74 20 74 72 69 67 67  gger9.test trigg
2980: 65 72 42 2e 74 65 73 74 0a 20 20 74 72 69 67 67  erB.test.  trigg
2990: 65 72 43 2e 74 65 73 74 0a 0a 20 20 75 70 64 61  erC.test..  upda
29a0: 74 65 2e 74 65 73 74 0a 20 20 76 69 65 77 2e 74  te.test.  view.t
29b0: 65 73 74 0a 0a 20 20 77 68 65 72 65 2e 74 65 73  est..  where.tes
29c0: 74 20 20 77 68 65 72 65 35 2e 74 65 73 74 20 77  t  where5.test w
29d0: 68 65 72 65 36 2e 74 65 73 74 20 77 68 65 72 65  here6.test where
29e0: 37 2e 74 65 73 74 20 77 68 65 72 65 38 2e 74 65  7.test where8.te
29f0: 73 74 20 77 68 65 72 65 41 2e 74 65 73 74 20 0a  st whereA.test .
2a00: 20 20 77 68 65 72 65 42 2e 74 65 73 74 20 77 68    whereB.test wh
2a10: 65 72 65 43 2e 74 65 73 74 0a 0a 20 20 74 6b 74  ereC.test..  tkt
2a20: 2d 30 32 61 38 65 38 31 64 34 34 2e 74 65 73 74  -02a8e81d44.test
2a30: 20 74 6b 74 2d 32 36 66 66 30 63 32 64 31 65 2e   tkt-26ff0c2d1e.
2a40: 74 65 73 74 20 74 6b 74 2d 32 64 31 61 35 63 36  test tkt-2d1a5c6
2a50: 37 64 2e 74 65 73 74 0a 20 20 74 6b 74 2d 32 65  7d.test.  tkt-2e
2a60: 61 32 34 32 35 64 33 34 2e 74 65 73 74 20 74 6b  a2425d34.test tk
2a70: 74 2d 33 31 33 33 38 64 63 61 37 65 2e 74 65 73  t-31338dca7e.tes
2a80: 74 0a 20 20 74 6b 74 2d 33 38 63 62 35 64 66 33  t.  tkt-38cb5df3
2a90: 37 35 2e 74 65 73 74 20 74 6b 74 2d 33 39 39 38  75.test tkt-3998
2aa0: 36 38 33 61 31 36 2e 74 65 73 74 20 74 6b 74 2d  683a16.test tkt-
2ab0: 33 61 37 37 63 39 37 31 34 65 2e 74 65 73 74 0a  3a77c9714e.test.
2ac0: 20 20 74 6b 74 2d 33 66 65 38 39 37 33 35 32 65    tkt-3fe897352e
2ad0: 2e 74 65 73 74 20 74 6b 74 2d 34 61 30 33 65 64  .test tkt-4a03ed
2ae0: 63 34 63 38 2e 74 65 73 74 20 74 6b 74 2d 35 34  c4c8.test tkt-54
2af0: 38 34 34 65 65 61 33 66 2e 74 65 73 74 0a 20 20  844eea3f.test.  
2b00: 74 6b 74 2d 35 65 31 30 34 32 30 65 38 64 2e 74  tkt-5e10420e8d.t
2b10: 65 73 74 20 74 6b 74 2d 37 35 32 65 31 36 34 36  est tkt-752e1646
2b20: 66 63 2e 74 65 73 74 20 74 6b 74 2d 38 30 62 61  fc.test tkt-80ba
2b30: 32 30 31 30 37 39 2e 74 65 73 74 0a 20 20 74 6b  201079.test.  tk
2b40: 74 2d 38 30 65 30 33 31 61 30 30 66 2e 74 65 73  t-80e031a00f.tes
2b50: 74 20 74 6b 74 2d 39 31 65 32 65 38 62 61 36 66  t tkt-91e2e8ba6f
2b60: 2e 74 65 73 74 20 74 6b 74 2d 39 64 36 38 63 38  .test tkt-9d68c8
2b70: 38 33 2e 74 65 73 74 0a 20 20 74 6b 74 2d 62 31  83.test.  tkt-b1
2b80: 64 33 61 32 65 35 33 31 2e 74 65 73 74 20 74 6b  d3a2e531.test tk
2b90: 74 2d 62 33 35 31 64 39 35 66 39 2e 74 65 73 74  t-b351d95f9.test
2ba0: 20 20 74 6b 74 2d 62 37 32 37 38 37 62 31 2e 74    tkt-b72787b1.t
2bb0: 65 73 74 0a 20 20 74 6b 74 2d 62 64 34 38 34 61  est.  tkt-bd484a
2bc0: 30 39 30 63 2e 74 65 73 74 20 74 6b 74 2d 64 31  090c.test tkt-d1
2bd0: 31 66 30 39 64 33 36 65 2e 74 65 73 74 0a 20 20  1f09d36e.test.  
2be0: 74 6b 74 2d 64 36 33 35 32 33 36 33 37 35 2e 74  tkt-d635236375.t
2bf0: 65 73 74 20 74 6b 74 2d 66 39 37 33 63 37 61 63  est tkt-f973c7ac
2c00: 33 31 2e 74 65 73 74 20 74 6b 74 2d 66 61 37 62  31.test tkt-fa7b
2c10: 66 35 65 63 2e 74 65 73 74 0a 20 20 74 6b 74 31  f5ec.test.  tkt1
2c20: 34 34 33 2e 74 65 73 74 20 74 6b 74 31 34 34 34  443.test tkt1444
2c30: 2e 74 65 73 74 20 74 6b 74 31 34 34 39 2e 74 65  .test tkt1449.te
2c40: 73 74 20 74 6b 74 31 34 37 33 2e 74 65 73 74 20  st tkt1473.test 
2c50: 74 6b 74 31 35 30 31 2e 74 65 73 74 0a 20 20 74  tkt1501.test.  t
2c60: 6b 74 31 35 31 34 2e 74 65 73 74 20 74 6b 74 31  kt1514.test tkt1
2c70: 35 33 37 2e 74 65 73 74 20 74 6b 74 31 38 37 33  537.test tkt1873
2c80: 2e 74 65 73 74 0a 20 20 74 6b 74 32 31 34 31 2e  .test.  tkt2141.
2c90: 74 65 73 74 20 74 6b 74 32 31 39 32 2e 74 65 73  test tkt2192.tes
2ca0: 74 20 74 6b 74 32 32 31 33 2e 74 65 73 74 20 74  t tkt2213.test t
2cb0: 6b 74 32 32 38 35 2e 74 65 73 74 20 74 6b 74 32  kt2285.test tkt2
2cc0: 33 33 39 2e 74 65 73 74 0a 20 20 74 6b 74 32 33  339.test.  tkt23
2cd0: 39 31 2e 74 65 73 74 20 74 6b 74 32 34 35 30 2e  91.test tkt2450.
2ce0: 74 65 73 74 20 74 6b 74 32 36 34 30 2e 74 65 73  test tkt2640.tes
2cf0: 74 20 74 6b 74 32 37 36 37 2e 74 65 73 74 20 74  t tkt2767.test t
2d00: 6b 74 32 38 31 37 2e 74 65 73 74 0a 20 20 74 6b  kt2817.test.  tk
2d10: 74 32 38 32 32 2e 74 65 73 74 20 74 6b 74 32 38  t2822.test tkt28
2d20: 33 32 2e 74 65 73 74 20 74 6b 74 32 39 32 37 2e  32.test tkt2927.
2d30: 74 65 73 74 20 74 6b 74 32 39 34 32 2e 74 65 73  test tkt2942.tes
2d40: 74 20 74 6b 74 33 31 32 31 2e 74 65 73 74 0a 20  t tkt3121.test. 
2d50: 20 74 6b 74 33 32 30 31 2e 74 65 73 74 20 74 6b   tkt3201.test tk
2d60: 74 33 32 39 32 2e 74 65 73 74 20 74 6b 74 33 32  t3292.test tkt32
2d70: 39 38 2e 74 65 73 74 20 74 6b 74 33 33 33 34 2e  98.test tkt3334.
2d80: 74 65 73 74 20 74 6b 74 33 33 34 36 2e 74 65 73  test tkt3346.tes
2d90: 74 0a 20 20 74 6b 74 33 34 31 39 2e 74 65 73 74  t.  tkt3419.test
2da0: 20 74 6b 74 33 34 32 34 2e 74 65 73 74 20 74 6b   tkt3424.test tk
2db0: 74 33 34 34 32 2e 74 65 73 74 20 74 6b 74 33 34  t3442.test tkt34
2dc0: 36 31 2e 74 65 73 74 20 74 6b 74 33 34 39 33 2e  61.test tkt3493.
2dd0: 74 65 73 74 0a 20 20 74 6b 74 33 35 30 38 2e 74  test.  tkt3508.t
2de0: 65 73 74 20 74 6b 74 33 35 32 32 2e 74 65 73 74  est tkt3522.test
2df0: 20 74 6b 74 33 35 32 37 2e 74 65 73 74 20 74 6b   tkt3527.test tk
2e00: 74 33 35 34 31 2e 74 65 73 74 20 74 6b 74 33 35  t3541.test tkt35
2e10: 35 34 2e 74 65 73 74 0a 20 20 74 6b 74 33 35 38  54.test.  tkt358
2e20: 31 2e 74 65 73 74 20 74 6b 74 33 35 78 78 2e 74  1.test tkt35xx.t
2e30: 65 73 74 20 74 6b 74 33 36 33 30 2e 74 65 73 74  est tkt3630.test
2e40: 20 74 6b 74 33 37 31 38 2e 74 65 73 74 20 74 6b   tkt3718.test tk
2e50: 74 33 37 36 31 2e 74 65 73 74 0a 20 20 74 6b 74  t3761.test.  tkt
2e60: 33 37 37 33 2e 74 65 73 74 20 74 6b 74 33 38 34  3773.test tkt384
2e70: 31 2e 74 65 73 74 20 74 6b 74 33 38 37 31 2e 74  1.test tkt3871.t
2e80: 65 73 74 20 74 6b 74 33 38 37 39 2e 74 65 73 74  est tkt3879.test
2e90: 20 74 6b 74 33 39 31 31 2e 74 65 73 74 0a 20 20   tkt3911.test.  
2ea0: 74 6b 74 33 39 31 38 2e 74 65 73 74 20 74 6b 74  tkt3918.test tkt
2eb0: 33 39 32 32 2e 74 65 73 74 20 74 6b 74 33 39 32  3922.test tkt392
2ec0: 39 2e 74 65 73 74 20 74 6b 74 33 39 33 35 2e 74  9.test tkt3935.t
2ed0: 65 73 74 20 74 6b 74 33 39 39 37 2e 74 65 73 74  est tkt3997.test
2ee0: 0a 7d 0a 23 20 20 6c 6f 67 33 2e 74 65 73 74 20  .}.#  log3.test 
2ef0: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 76 65  ..test_suite "ve
2f00: 72 79 71 75 69 63 6b 22 20 2d 70 72 65 66 69 78  ryquick" -prefix
2f10: 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e   "" -description
2f20: 20 7b 0a 20 20 22 56 65 72 79 22 20 71 75 69 63   {.  "Very" quic
2f30: 6b 20 74 65 73 74 20 73 75 69 74 65 2e 20 52 75  k test suite. Ru
2f40: 6e 73 20 69 6e 20 6c 65 73 73 20 74 68 61 6e 20  ns in less than 
2f50: 35 20 6d 69 6e 75 74 65 73 20 6f 6e 20 61 20 77  5 minutes on a w
2f60: 6f 72 6b 73 74 61 74 69 6f 6e 2e 20 0a 20 20 54  orkstation. .  T
2f70: 68 69 73 20 74 65 73 74 20 73 75 69 74 65 20 69  his test suite i
2f80: 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68  s the same as th
2f90: 65 20 22 71 75 69 63 6b 22 20 74 65 73 74 73 2c  e "quick" tests,
2fa0: 20 65 78 63 65 70 74 20 74 68 61 74 20 73 6f 6d   except that som
2fb0: 65 20 66 69 6c 65 73 0a 20 20 74 68 61 74 20 74  e files.  that t
2fc0: 65 73 74 20 6d 61 6c 6c 6f 63 20 61 6e 64 20 49  est malloc and I
2fd0: 4f 20 65 72 72 6f 72 73 20 61 72 65 20 6f 6d 69  O errors are omi
2fe0: 74 74 65 64 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b  tted..} -files [
2ff0: 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c 6c  .  test_set $all
3000: 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c  quicktests -excl
3010: 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f  ude *malloc* *io
3020: 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 20 20 20  err* *fault*    
3030: 5c 0a 20 20 20 20 62 6f 75 6e 64 61 72 79 33 2e  \.    boundary3.
3040: 74 65 73 74 20 62 75 73 79 2e 74 65 73 74 20 63  test busy.test c
3050: 61 63 68 65 2e 74 65 73 74 20 63 61 70 69 2a 20  ache.test capi* 
3060: 63 6f 72 72 75 70 74 2a 20 20 20 20 20 20 20 20  corrupt*        
3070: 20 5c 0a 20 20 20 20 64 62 73 74 61 74 75 73 2e   \.    dbstatus.
3080: 74 65 73 74 20 65 5f 63 72 65 61 74 65 74 61 62  test e_createtab
3090: 6c 65 2e 74 65 73 74 20 65 5f 75 72 69 2e 74 65  le.test e_uri.te
30a0: 73 74 20 66 61 6c 6c 6f 63 61 74 65 2e 74 65 73  st fallocate.tes
30b0: 74 20 5c 0a 20 20 20 20 69 6f 2a 20 6d 65 6d 73  t \.    io* mems
30c0: 75 62 73 79 73 2a 20 6d 75 74 65 78 2a 20 6f 73  ubsys* mutex* os
30d0: 65 72 72 6f 72 2e 74 65 73 74 20 70 61 67 65 72  error.test pager
30e0: 2a 20 70 63 61 63 68 65 2a 20 71 75 6f 74 61 2a  * pcache* quota*
30f0: 20 20 20 5c 0a 20 20 20 20 72 6f 6c 6c 62 61 63     \.    rollbac
3100: 6b 2e 74 65 73 74 20 77 68 65 72 65 38 6d 2e 74  k.test where8m.t
3110: 65 73 74 20 73 63 68 65 6d 61 2a 20 73 61 76 65  est schema* save
3120: 70 6f 69 6e 74 33 2e 74 65 73 74 20 20 20 20 20  point3.test     
3130: 20 20 20 20 5c 0a 20 20 20 20 74 65 6d 70 74 72      \.    temptr
3140: 69 67 67 65 72 2e 74 65 73 74 20 74 6b 74 2d 66  igger.test tkt-f
3150: 63 36 32 61 66 34 35 32 33 2e 74 65 73 74 20 74  c62af4523.test t
3160: 6b 74 32 33 33 32 2e 74 65 73 74 20 20 20 20 20  kt2332.test     
3170: 20 20 20 20 20 5c 0a 20 20 20 20 74 6b 74 32 34       \.    tkt24
3180: 30 39 2e 74 65 73 74 20 74 6b 74 32 35 30 36 2e  09.test tkt2506.
3190: 74 65 73 74 20 74 6b 74 32 35 36 35 2e 74 65 73  test tkt2565.tes
31a0: 74 20 74 6b 74 32 38 35 34 2e 74 65 73 74 20 20  t tkt2854.test  
31b0: 20 20 20 20 20 20 5c 0a 20 20 20 20 74 6b 74 33        \.    tkt3
31c0: 37 39 33 2e 74 65 73 74 20 74 72 69 67 67 65 72  793.test trigger
31d0: 41 2e 74 65 73 74 20 75 6e 6f 72 64 65 72 65 64  A.test unordered
31e0: 2e 74 65 73 74 20 75 72 69 2e 74 65 73 74 20 20  .test uri.test  
31f0: 20 20 20 20 20 20 20 5c 0a 20 20 20 20 7a 65 72         \.    zer
3200: 6f 62 6c 6f 62 2e 74 65 73 74 0a 5d 0a 0a 74 65  oblob.test.]..te
3210: 73 74 5f 73 75 69 74 65 20 22 76 61 6c 67 72 69  st_suite "valgri
3220: 6e 64 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d  nd" -prefix "" -
3230: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
3240: 52 75 6e 20 74 68 65 20 22 76 65 72 79 71 75 69  Run the "veryqui
3250: 63 6b 22 20 74 65 73 74 20 73 75 69 74 65 20 77  ck" test suite w
3260: 69 74 68 20 61 20 63 6f 75 70 6c 65 20 6f 66 20  ith a couple of 
3270: 6d 75 6c 74 69 2d 70 72 6f 63 65 73 73 20 74 65  multi-process te
3280: 73 74 73 20 28 74 68 61 74 0a 20 20 66 61 69 6c  sts (that.  fail
3290: 20 75 6e 64 65 72 20 76 61 6c 67 72 69 6e 64 29   under valgrind)
32a0: 20 6f 6d 69 74 74 65 64 2e 0a 7d 20 2d 66 69 6c   omitted..} -fil
32b0: 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20  es [.  test_set 
32c0: 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  $allquicktests -
32d0: 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a  exclude *malloc*
32e0: 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a   *ioerr* *fault*
32f0: 20 77 61 6c 2e 74 65 73 74 0a 5d 20 2d 69 6e 69   wal.test.] -ini
3300: 74 69 61 6c 69 7a 65 20 7b 0a 20 20 73 65 74 20  tialize {.  set 
3310: 3a 3a 47 28 76 61 6c 67 72 69 6e 64 29 20 31 0a  ::G(valgrind) 1.
3320: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
3330: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69  unset -nocomplai
3340: 6e 20 3a 3a 47 28 76 61 6c 67 72 69 6e 64 29 0a  n ::G(valgrind).
3350: 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 71  }..test_suite "q
3360: 75 69 63 6b 22 20 2d 70 72 65 66 69 78 20 22 22  uick" -prefix ""
3370: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
3380: 20 20 51 75 69 63 6b 20 74 65 73 74 20 73 75 69    Quick test sui
3390: 74 65 2e 20 52 75 6e 73 20 69 6e 20 61 72 6f 75  te. Runs in arou
33a0: 6e 64 20 31 30 20 6d 69 6e 75 74 65 73 20 6f 6e  nd 10 minutes on
33b0: 20 61 20 77 6f 72 6b 73 74 61 74 69 6f 6e 2e 0a   a workstation..
33c0: 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73  } -files [.  tes
33d0: 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74  t_set $allquickt
33e0: 65 73 74 73 0a 5d 0a 0a 74 65 73 74 5f 73 75 69  ests.]..test_sui
33f0: 74 65 20 22 66 75 6c 6c 22 20 2d 70 72 65 66 69  te "full" -prefi
3400: 78 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f  x "" -descriptio
3410: 6e 20 7b 0a 20 20 46 75 6c 6c 20 74 65 73 74 20  n {.  Full test 
3420: 73 75 69 74 65 2e 20 54 61 6b 65 73 20 61 20 6c  suite. Takes a l
3430: 6f 6e 67 20 74 69 6d 65 2e 0a 7d 20 2d 66 69 6c  ong time..} -fil
3440: 65 73 20 5b 20 0a 20 20 74 65 73 74 5f 73 65 74  es [ .  test_set
3450: 20 24 61 6c 6c 74 65 73 74 73 20 0a 5d 20 2d 69   $alltests .] -i
3460: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 75 6e  nitialize {.  un
3470: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
3480: 3a 3a 47 28 69 73 71 75 69 63 6b 29 0a 7d 0a 0a  ::G(isquick).}..
3490: 74 65 73 74 5f 73 75 69 74 65 20 22 74 68 72 65  test_suite "thre
34a0: 61 64 73 22 20 2d 70 72 65 66 69 78 20 22 22 20  ads" -prefix "" 
34b0: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
34c0: 20 41 6c 6c 20 6d 75 6c 74 69 2d 74 68 72 65 61   All multi-threa
34d0: 64 65 64 20 74 65 73 74 73 2e 0a 7d 20 2d 66 69  ded tests..} -fi
34e0: 6c 65 73 20 7b 0a 20 20 6e 6f 74 69 66 79 32 2e  les {.  notify2.
34f0: 74 65 73 74 20 20 20 74 68 72 65 61 64 30 30 31  test   thread001
3500: 2e 74 65 73 74 20 74 68 72 65 61 64 30 30 32 2e  .test thread002.
3510: 74 65 73 74 20 74 68 72 65 61 64 30 30 33 2e 74  test thread003.t
3520: 65 73 74 20 0a 20 20 74 68 72 65 61 64 30 30 34  est .  thread004
3530: 2e 74 65 73 74 20 74 68 72 65 61 64 30 30 35 2e  .test thread005.
3540: 74 65 73 74 20 77 61 6c 74 68 72 65 61 64 2e 74  test walthread.t
3550: 65 73 74 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74  est.}..test_suit
3560: 65 20 22 66 74 73 33 22 20 2d 70 72 65 66 69 78  e "fts3" -prefix
3570: 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e   "" -description
3580: 20 7b 0a 20 20 41 6c 6c 20 46 54 53 33 20 74 65   {.  All FTS3 te
3590: 73 74 73 20 65 78 63 65 70 74 20 66 74 73 33 72  sts except fts3r
35a0: 6e 64 2e 74 65 73 74 2e 0a 7d 20 2d 66 69 6c 65  nd.test..} -file
35b0: 73 20 7b 0a 20 20 66 74 73 33 61 61 2e 74 65 73  s {.  fts3aa.tes
35c0: 74 20 66 74 73 33 61 62 2e 74 65 73 74 20 66 74  t fts3ab.test ft
35d0: 73 33 61 63 2e 74 65 73 74 20 66 74 73 33 61 64  s3ac.test fts3ad
35e0: 2e 74 65 73 74 20 66 74 73 33 61 65 2e 74 65 73  .test fts3ae.tes
35f0: 74 0a 20 20 66 74 73 33 61 66 2e 74 65 73 74 20  t.  fts3af.test 
3600: 66 74 73 33 61 67 2e 74 65 73 74 20 66 74 73 33  fts3ag.test fts3
3610: 61 68 2e 74 65 73 74 20 66 74 73 33 61 69 2e 74  ah.test fts3ai.t
3620: 65 73 74 20 66 74 73 33 61 6a 2e 74 65 73 74 0a  est fts3aj.test.
3630: 20 20 66 74 73 33 61 6b 2e 74 65 73 74 20 66 74    fts3ak.test ft
3640: 73 33 61 6c 2e 74 65 73 74 20 66 74 73 33 61 6d  s3al.test fts3am
3650: 2e 74 65 73 74 20 66 74 73 33 61 6e 2e 74 65 73  .test fts3an.tes
3660: 74 20 66 74 73 33 61 6f 2e 74 65 73 74 0a 20 20  t fts3ao.test.  
3670: 66 74 73 33 61 74 6f 6b 65 6e 2e 74 65 73 74 20  fts3atoken.test 
3680: 66 74 73 33 62 2e 74 65 73 74 20 66 74 73 33 63  fts3b.test fts3c
3690: 2e 74 65 73 74 20 66 74 73 33 63 6f 76 2e 74 65  .test fts3cov.te
36a0: 73 74 20 66 74 73 33 64 2e 74 65 73 74 0a 20 20  st fts3d.test.  
36b0: 66 74 73 33 64 65 66 65 72 2e 74 65 73 74 20 66  fts3defer.test f
36c0: 74 73 33 64 65 66 65 72 32 2e 74 65 73 74 20 66  ts3defer2.test f
36d0: 74 73 33 65 2e 74 65 73 74 20 66 74 73 33 65 78  ts3e.test fts3ex
36e0: 70 72 2e 74 65 73 74 20 66 74 73 33 65 78 70 72  pr.test fts3expr
36f0: 32 2e 74 65 73 74 20 0a 20 20 66 74 73 33 6e 65  2.test .  fts3ne
3700: 61 72 2e 74 65 73 74 20 66 74 73 33 71 75 65 72  ar.test fts3quer
3710: 79 2e 74 65 73 74 20 66 74 73 33 73 68 61 72 65  y.test fts3share
3720: 64 2e 74 65 73 74 20 66 74 73 33 73 6e 69 70 70  d.test fts3snipp
3730: 65 74 2e 74 65 73 74 20 0a 20 20 66 74 73 33 73  et.test .  fts3s
3740: 6f 72 74 2e 74 65 73 74 0a 20 20 66 74 73 33 66  ort.test.  fts3f
3750: 61 75 6c 74 2e 74 65 73 74 20 66 74 73 33 6d 61  ault.test fts3ma
3760: 6c 6c 6f 63 2e 74 65 73 74 20 66 74 73 33 6d 61  lloc.test fts3ma
3770: 74 63 68 69 6e 66 6f 2e 74 65 73 74 0a 20 20 66  tchinfo.test.  f
3780: 74 73 33 61 75 78 31 2e 74 65 73 74 20 66 74 73  ts3aux1.test fts
3790: 33 63 6f 6d 70 31 2e 74 65 73 74 20 66 74 73 33  3comp1.test fts3
37a0: 61 75 74 6f 2e 74 65 73 74 0a 20 20 66 74 73 34  auto.test.  fts4
37b0: 61 61 2e 74 65 73 74 20 66 74 73 34 63 6f 6e 74  aa.test fts4cont
37c0: 65 6e 74 2e 74 65 73 74 0a 20 20 66 74 73 33 63  ent.test.  fts3c
37d0: 6f 6e 66 2e 74 65 73 74 20 66 74 73 33 70 72 65  onf.test fts3pre
37e0: 66 69 78 2e 74 65 73 74 20 66 74 73 33 66 61 75  fix.test fts3fau
37f0: 6c 74 32 2e 74 65 73 74 20 66 74 73 33 63 6f 72  lt2.test fts3cor
3800: 72 75 70 74 2e 74 65 73 74 0a 20 20 66 74 73 33  rupt.test.  fts3
3810: 63 6f 72 72 75 70 74 32 2e 74 65 73 74 0a 20 20  corrupt2.test.  
3820: 66 74 73 33 66 69 72 73 74 2e 74 65 73 74 0a 7d  fts3first.test.}
3830: 0a 0a 0a 6c 61 70 70 65 6e 64 20 3a 3a 74 65 73  ...lappend ::tes
3840: 74 73 75 69 74 65 6c 69 73 74 20 78 78 78 0a 23  tsuitelist xxx.#
3850: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3860: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3870: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3880: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 44 65 66 69  ---------.# Defi
38a0: 6e 65 20 74 68 65 20 63 6f 76 65 72 61 67 65 20  ne the coverage 
38b0: 72 65 6c 61 74 65 64 20 74 65 73 74 20 73 75 69  related test sui
38c0: 74 65 73 3a 0a 23 0a 23 20 20 20 63 6f 76 65 72  tes:.#.#   cover
38d0: 61 67 65 2d 77 61 6c 0a 23 0a 74 65 73 74 5f 73  age-wal.#.test_s
38e0: 75 69 74 65 20 22 63 6f 76 65 72 61 67 65 2d 77  uite "coverage-w
38f0: 61 6c 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  al" -description
3900: 20 7b 0a 20 20 43 6f 76 65 72 61 67 65 20 74 65   {.  Coverage te
3910: 73 74 73 20 66 6f 72 20 66 69 6c 65 20 77 61 6c  sts for file wal
3920: 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  .c..} -files {. 
3930: 20 77 61 6c 2e 74 65 73 74 20 20 20 20 20 20 20   wal.test       
3940: 77 61 6c 32 2e 74 65 73 74 20 20 20 20 20 77 61  wal2.test     wa
3950: 6c 33 2e 74 65 73 74 20 20 20 20 20 20 20 77 61  l3.test       wa
3960: 6c 6d 6f 64 65 2e 74 65 73 74 20 20 20 20 0a 20  lmode.test    . 
3970: 20 77 61 6c 62 61 6b 2e 74 65 73 74 20 20 20 20   walbak.test    
3980: 77 61 6c 68 6f 6f 6b 2e 74 65 73 74 20 20 77 61  walhook.test  wa
3990: 6c 63 72 61 73 68 32 2e 74 65 73 74 20 20 77 61  lcrash2.test  wa
39a0: 6c 63 6b 73 75 6d 2e 74 65 73 74 0a 20 20 77 61  lcksum.test.  wa
39b0: 6c 66 61 75 6c 74 2e 74 65 73 74 20 20 77 61 6c  lfault.test  wal
39c0: 62 69 67 2e 74 65 73 74 20 20 20 77 61 6c 6e 6f  big.test   walno
39d0: 73 68 6d 2e 74 65 73 74 0a 20 20 77 61 6c 35 2e  shm.test.  wal5.
39e0: 74 65 73 74 0a 7d 20 0a 0a 74 65 73 74 5f 73 75  test.} ..test_su
39f0: 69 74 65 20 22 63 6f 76 65 72 61 67 65 2d 70 61  ite "coverage-pa
3a00: 67 65 72 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ger" -descriptio
3a10: 6e 20 7b 0a 20 20 43 6f 76 65 72 61 67 65 20 74  n {.  Coverage t
3a20: 65 73 74 73 20 66 6f 72 20 66 69 6c 65 20 70 61  ests for file pa
3a30: 67 65 72 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20  ger.c..} -files 
3a40: 7b 0a 20 20 70 61 67 65 72 31 2e 74 65 73 74 20  {.  pager1.test 
3a50: 20 20 20 70 61 67 65 72 32 2e 74 65 73 74 20 20     pager2.test  
3a60: 70 61 67 65 72 66 61 75 6c 74 2e 74 65 73 74 20  pagerfault.test 
3a70: 20 70 61 67 65 72 66 61 75 6c 74 32 2e 74 65 73   pagerfault2.tes
3a80: 74 0a 20 20 77 61 6c 66 61 75 6c 74 2e 74 65 73  t.  walfault.tes
3a90: 74 20 20 77 61 6c 62 61 6b 2e 74 65 73 74 20 20  t  walbak.test  
3aa0: 6a 6f 75 72 6e 61 6c 32 2e 74 65 73 74 20 20 20  journal2.test   
3ab0: 20 74 6b 74 2d 39 64 36 38 63 38 38 33 2e 74 65   tkt-9d68c883.te
3ac0: 73 74 0a 7d 20 0a 0a 0a 6c 61 70 70 65 6e 64 20  st.} ...lappend 
3ad0: 3a 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74 20  ::testsuitelist 
3ae0: 78 78 78 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  xxx.#-----------
3af0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3b20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23  --------------.#
3b30: 20 44 65 66 69 6e 65 20 74 68 65 20 70 65 72 6d   Define the perm
3b40: 75 74 61 74 69 6f 6e 20 74 65 73 74 20 73 75 69  utation test sui
3b50: 74 65 73 3a 0a 23 0a 0a 23 20 52 75 6e 20 73 6f  tes:.#..# Run so
3b60: 6d 65 20 74 65 73 74 73 20 75 73 69 6e 67 20 70  me tests using p
3b70: 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67  re-allocated pag
3b80: 65 20 61 6e 64 20 73 63 72 61 74 63 68 20 62 6c  e and scratch bl
3b90: 6f 63 6b 73 2e 0a 23 0a 74 65 73 74 5f 73 75 69  ocks..#.test_sui
3ba0: 74 65 20 22 6d 65 6d 73 75 62 73 79 73 31 22 20  te "memsubsys1" 
3bb0: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
3bc0: 20 54 65 73 74 73 20 75 73 69 6e 67 20 70 72 65   Tests using pre
3bd0: 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67 65 20  -allocated page 
3be0: 61 6e 64 20 73 63 72 61 74 63 68 20 62 6c 6f 63  and scratch bloc
3bf0: 6b 73 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20  ks.} -files [.  
3c00: 74 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71  test_set $::allq
3c10: 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75  uicktests -exclu
3c20: 64 65 20 69 6f 65 72 72 35 2e 74 65 73 74 20 6d  de ioerr5.test m
3c30: 61 6c 6c 6f 63 35 2e 74 65 73 74 0a 5d 20 2d 69  alloc5.test.] -i
3c40: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61  nitialize {.  ca
3c50: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
3c60: 20 73 71 6c 69 74 65 34 5f 73 68 75 74 64 6f 77   sqlite4_shutdow
3c70: 6e 0a 20 20 73 71 6c 69 74 65 34 5f 63 6f 6e 66  n.  sqlite4_conf
3c80: 69 67 5f 70 61 67 65 63 61 63 68 65 20 34 30 39  ig_pagecache 409
3c90: 36 20 32 34 0a 20 20 73 71 6c 69 74 65 34 5f 63  6 24.  sqlite4_c
3ca0: 6f 6e 66 69 67 5f 73 63 72 61 74 63 68 20 32 35  onfig_scratch 25
3cb0: 30 30 30 20 31 0a 20 20 73 71 6c 69 74 65 34 5f  000 1.  sqlite4_
3cc0: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74  initialize.  aut
3cd0: 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75  oinstall_test_fu
3ce0: 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64  nctions.} -shutd
3cf0: 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68 20 7b 64  own {.  catch {d
3d00: 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74  b close}.  sqlit
3d10: 65 34 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71  e4_shutdown.  sq
3d20: 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f 70 61 67  lite4_config_pag
3d30: 65 63 61 63 68 65 20 30 20 30 0a 20 20 73 71 6c  ecache 0 0.  sql
3d40: 69 74 65 34 5f 63 6f 6e 66 69 67 5f 73 63 72 61  ite4_config_scra
3d50: 74 63 68 20 30 20 30 0a 20 20 73 71 6c 69 74 65  tch 0 0.  sqlite
3d60: 34 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61  4_initialize.  a
3d70: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
3d80: 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a 23 20 52  functions.}..# R
3d90: 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 75 73  un some tests us
3da0: 69 6e 67 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65  ing pre-allocate
3db0: 64 20 70 61 67 65 20 61 6e 64 20 73 63 72 61 74  d page and scrat
3dc0: 63 68 20 62 6c 6f 63 6b 73 2e 20 54 68 69 73 20  ch blocks. This 
3dd0: 74 69 6d 65 0a 23 20 74 68 65 20 61 6c 6c 6f 63  time.# the alloc
3de0: 61 74 69 6f 6e 73 20 61 72 65 20 74 6f 6f 20 73  ations are too s
3df0: 6d 61 6c 6c 20 74 6f 20 75 73 65 20 69 6e 20 6d  mall to use in m
3e00: 6f 73 74 20 63 61 73 65 73 2e 0a 23 0a 74 65 73  ost cases..#.tes
3e10: 74 5f 73 75 69 74 65 20 22 6d 65 6d 73 75 62 73  t_suite "memsubs
3e20: 79 73 32 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ys2" -descriptio
3e30: 6e 20 7b 0a 20 20 54 65 73 74 73 20 75 73 69 6e  n {.  Tests usin
3e40: 67 20 73 6d 61 6c 6c 20 70 72 65 2d 61 6c 6c 6f  g small pre-allo
3e50: 63 61 74 65 64 20 70 61 67 65 20 61 6e 64 20 73  cated page and s
3e60: 63 72 61 74 63 68 20 62 6c 6f 63 6b 73 0a 7d 20  cratch blocks.} 
3e70: 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f  -files [.  test_
3e80: 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74  set $::allquickt
3e90: 65 73 74 73 0a 5d 20 2d 69 6e 69 74 69 61 6c 69  ests.] -initiali
3ea0: 7a 65 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62  ze {.  catch {db
3eb0: 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65   close}.  sqlite
3ec0: 34 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c  4_shutdown.  sql
3ed0: 69 74 65 34 5f 63 6f 6e 66 69 67 5f 70 61 67 65  ite4_config_page
3ee0: 63 61 63 68 65 20 35 31 32 20 35 0a 20 20 73 71  cache 512 5.  sq
3ef0: 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f 73 63 72  lite4_config_scr
3f00: 61 74 63 68 20 31 30 30 30 20 31 0a 20 20 73 71  atch 1000 1.  sq
3f10: 6c 69 74 65 34 5f 69 6e 69 74 69 61 6c 69 7a 65  lite4_initialize
3f20: 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74  .  autoinstall_t
3f30: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20  est_functions.} 
3f40: 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 63 61  -shutdown {.  ca
3f50: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
3f60: 20 73 71 6c 69 74 65 34 5f 73 68 75 74 64 6f 77   sqlite4_shutdow
3f70: 6e 0a 20 20 73 71 6c 69 74 65 34 5f 63 6f 6e 66  n.  sqlite4_conf
3f80: 69 67 5f 70 61 67 65 63 61 63 68 65 20 30 20 30  ig_pagecache 0 0
3f90: 0a 20 20 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69  .  sqlite4_confi
3fa0: 67 5f 73 63 72 61 74 63 68 20 30 20 30 0a 20 20  g_scratch 0 0.  
3fb0: 73 71 6c 69 74 65 34 5f 69 6e 69 74 69 61 6c 69  sqlite4_initiali
3fc0: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
3fd0: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
3fe0: 7d 0a 0a 23 20 52 75 6e 20 61 6c 6c 20 74 65 73  }..# Run all tes
3ff0: 74 73 20 77 69 74 68 20 74 68 65 20 6c 6f 6f 6b  ts with the look
4000: 61 73 69 64 65 20 61 6c 6c 6f 63 61 74 6f 72 20  aside allocator 
4010: 64 69 73 61 62 6c 65 64 2e 0a 23 0a 74 65 73 74  disabled..#.test
4020: 5f 73 75 69 74 65 20 22 6e 6f 6c 6f 6f 6b 61 73  _suite "nolookas
4030: 69 64 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ide" -descriptio
4040: 6e 20 7b 0a 20 20 4f 4f 4d 20 74 65 73 74 73 20  n {.  OOM tests 
4050: 77 69 74 68 20 6c 6f 6f 6b 61 73 69 64 65 20 64  with lookaside d
4060: 69 73 61 62 6c 65 64 0a 7d 20 2d 69 6e 69 74 69  isabled.} -initi
4070: 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20  alize {.  catch 
4080: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
4090: 69 74 65 34 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite4_shutdown.  
40a0: 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f 6c  sqlite4_config_l
40b0: 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a 20 20 73  ookaside 0 0.  s
40c0: 71 6c 69 74 65 34 5f 69 6e 69 74 69 61 6c 69 7a  qlite4_initializ
40d0: 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f  e.  autoinstall_
40e0: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d  test_functions.}
40f0: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 63   -shutdown {.  c
4100: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
4110: 20 20 73 71 6c 69 74 65 34 5f 73 68 75 74 64 6f    sqlite4_shutdo
4120: 77 6e 0a 20 20 73 71 6c 69 74 65 34 5f 63 6f 6e  wn.  sqlite4_con
4130: 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31 30  fig_lookaside 10
4140: 30 20 35 30 30 0a 20 20 73 71 6c 69 74 65 34 5f  0 500.  sqlite4_
4150: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74  initialize.  aut
4160: 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75  oinstall_test_fu
4170: 6e 63 74 69 6f 6e 73 0a 7d 20 2d 66 69 6c 65 73  nctions.} -files
4180: 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74   $::allquicktest
4190: 73 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65  s..# Run some te
41a0: 73 74 73 20 69 6e 20 53 51 4c 49 54 45 34 5f 43  sts in SQLITE4_C
41b0: 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45  ONFIG_SINGLETHRE
41c0: 41 44 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f  AD mode..#.test_
41d0: 73 75 69 74 65 20 22 73 69 6e 67 6c 65 74 68 72  suite "singlethr
41e0: 65 61 64 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ead" -descriptio
41f0: 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75 6e 20  n {.  Tests run 
4200: 69 6e 20 53 51 4c 49 54 45 34 5f 43 4f 4e 46 49  in SQLITE4_CONFI
4210: 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20 6d  G_SINGLETHREAD m
4220: 6f 64 65 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a  ode.} -initializ
4230: 65 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20  e {.  catch {db 
4240: 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 34  close}.  sqlite4
4250: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63  _shutdown.  catc
4260: 68 20 7b 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69  h {sqlite4_confi
4270: 67 20 73 69 6e 67 6c 65 74 68 72 65 61 64 7d 0a  g singlethread}.
4280: 20 20 73 71 6c 69 74 65 34 5f 69 6e 69 74 69 61    sqlite4_initia
4290: 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61  lize.  autoinsta
42a0: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
42b0: 73 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64  s.} -files {.  d
42c0: 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64 65 6c  elete.test   del
42d0: 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73 65 72  ete2.test  inser
42e0: 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b  t.test  rollback
42f0: 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74  .test  select1.t
4300: 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65  est.  select2.te
4310: 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74 20 20  st  trans.test  
4320: 20 20 75 70 64 61 74 65 2e 74 65 73 74 20 20 76    update.test  v
4330: 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20 74 79  acuum.test    ty
4340: 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70 65 73  pes.test.  types
4350: 32 2e 74 65 73 74 20 20 20 74 79 70 65 73 33 2e  2.test   types3.
4360: 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  test.} -shutdown
4370: 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   {.  catch {db c
4380: 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 34 5f  lose}.  sqlite4_
4390: 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63 68  shutdown.  catch
43a0: 20 7b 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69 67   {sqlite4_config
43b0: 20 73 65 72 69 61 6c 69 7a 65 64 7d 0a 20 20 73   serialized}.  s
43c0: 71 6c 69 74 65 34 5f 69 6e 69 74 69 61 6c 69 7a  qlite4_initializ
43d0: 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f  e.  autoinstall_
43e0: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d  test_functions.}
43f0: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f  ..test_suite "no
4400: 6d 75 74 65 78 22 20 2d 64 65 73 63 72 69 70 74  mutex" -descript
4410: 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75  ion {.  Tests ru
4420: 6e 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54  n with the SQLIT
4430: 45 34 5f 4f 50 45 4e 5f 4d 55 4c 54 49 54 48 52  E4_OPEN_MULTITHR
4440: 45 41 44 45 44 20 66 6c 61 67 20 70 61 73 73 65  EADED flag passe
4450: 64 20 74 6f 20 73 71 6c 69 74 65 34 5f 6f 70 65  d to sqlite4_ope
4460: 6e 28 29 2e 0a 7d 20 2d 69 6e 69 74 69 61 6c 69  n()..} -initiali
4470: 7a 65 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  ze {.  rename sq
4480: 6c 69 74 65 34 20 73 71 6c 69 74 65 34 5f 6e 6f  lite4 sqlite4_no
4490: 6d 75 74 65 78 0a 20 20 70 72 6f 63 20 73 71 6c  mutex.  proc sql
44a0: 69 74 65 34 20 7b 61 72 67 73 7d 20 7b 0a 20 20  ite4 {args} {.  
44b0: 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 72 61    if {[string ra
44c0: 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  nge [lindex $arg
44d0: 73 20 30 5d 20 30 20 30 5d 20 6e 65 20 22 2d 22  s 0] 0 0] ne "-"
44e0: 7d 20 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e  } {.      lappen
44f0: 64 20 61 72 67 73 20 2d 66 75 6c 6c 6d 75 74 65  d args -fullmute
4500: 78 20 30 20 2d 6e 6f 6d 75 74 65 78 20 31 0a 20  x 0 -nomutex 1. 
4510: 20 20 20 7d 0a 20 20 20 20 75 70 6c 65 76 65 6c     }.    uplevel
4520: 20 5b 63 6f 6e 63 61 74 20 73 71 6c 69 74 65 34   [concat sqlite4
4530: 5f 6e 6f 6d 75 74 65 78 20 24 61 72 67 73 5d 0a  _nomutex $args].
4540: 20 20 7d 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20    }.} -files {. 
4550: 20 64 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64   delete.test   d
4560: 65 6c 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73  elete2.test  ins
4570: 65 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61  ert.test  rollba
4580: 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31  ck.test  select1
4590: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
45a0: 74 65 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74  test  trans.test
45b0: 20 20 20 20 75 70 64 61 74 65 2e 74 65 73 74 20      update.test 
45c0: 20 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20   vacuum.test    
45d0: 74 79 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70  types.test.  typ
45e0: 65 73 32 2e 74 65 73 74 20 20 20 74 79 70 65 73  es2.test   types
45f0: 33 2e 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f  3.test.} -shutdo
4600: 77 6e 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  wn {.  rename sq
4610: 6c 69 74 65 34 20 7b 7d 0a 20 20 72 65 6e 61 6d  lite4 {}.  renam
4620: 65 20 73 71 6c 69 74 65 34 5f 6e 6f 6d 75 74 65  e sqlite4_nomute
4630: 78 20 73 71 6c 69 74 65 34 0a 7d 0a 0a 23 20 52  x sqlite4.}..# R
4640: 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e  un some tests in
4650: 20 53 51 4c 49 54 45 34 5f 43 4f 4e 46 49 47 5f   SQLITE4_CONFIG_
4660: 4d 55 4c 54 49 54 48 52 45 41 44 20 6d 6f 64 65  MULTITHREAD mode
4670: 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22  ..#.test_suite "
4680: 6d 75 6c 74 69 74 68 72 65 61 64 22 20 2d 64 65  multithread" -de
4690: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65  scription {.  Te
46a0: 73 74 73 20 72 75 6e 20 69 6e 20 53 51 4c 49 54  sts run in SQLIT
46b0: 45 34 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54  E4_CONFIG_MULTIT
46c0: 48 52 45 41 44 20 6d 6f 64 65 0a 7d 20 2d 69 6e  HREAD mode.} -in
46d0: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74  itialize {.  cat
46e0: 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20  ch {db close}.  
46f0: 73 71 6c 69 74 65 34 5f 73 68 75 74 64 6f 77 6e  sqlite4_shutdown
4700: 0a 20 20 63 61 74 63 68 20 7b 73 71 6c 69 74 65  .  catch {sqlite
4710: 34 5f 63 6f 6e 66 69 67 20 6d 75 6c 74 69 74 68  4_config multith
4720: 72 65 61 64 7d 0a 20 20 73 71 6c 69 74 65 34 5f  read}.  sqlite4_
4730: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74  initialize.  aut
4740: 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75  oinstall_test_fu
4750: 6e 63 74 69 6f 6e 73 0a 7d 20 2d 66 69 6c 65 73  nctions.} -files
4760: 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74   {.  delete.test
4770: 20 20 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20     delete2.test 
4780: 20 69 6e 73 65 72 74 2e 74 65 73 74 20 20 72 6f   insert.test  ro
4790: 6c 6c 62 61 63 6b 2e 74 65 73 74 20 20 73 65 6c  llback.test  sel
47a0: 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65  ect1.test.  sele
47b0: 63 74 32 2e 74 65 73 74 20 20 74 72 61 6e 73 2e  ct2.test  trans.
47c0: 74 65 73 74 20 20 20 20 75 70 64 61 74 65 2e 74  test    update.t
47d0: 65 73 74 20 20 76 61 63 75 75 6d 2e 74 65 73 74  est  vacuum.test
47e0: 20 20 20 20 74 79 70 65 73 2e 74 65 73 74 0a 20      types.test. 
47f0: 20 74 79 70 65 73 32 2e 74 65 73 74 20 20 20 74   types2.test   t
4800: 79 70 65 73 33 2e 74 65 73 74 0a 7d 20 2d 73 68  ypes3.test.} -sh
4810: 75 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68  utdown {.  catch
4820: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71   {db close}.  sq
4830: 6c 69 74 65 34 5f 73 68 75 74 64 6f 77 6e 0a 20  lite4_shutdown. 
4840: 20 63 61 74 63 68 20 7b 73 71 6c 69 74 65 34 5f   catch {sqlite4_
4850: 63 6f 6e 66 69 67 20 73 65 72 69 61 6c 69 7a 65  config serialize
4860: 64 7d 0a 20 20 73 71 6c 69 74 65 34 5f 69 6e 69  d}.  sqlite4_ini
4870: 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e  tialize.  autoin
4880: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
4890: 69 6f 6e 73 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f  ions.}..# Run so
48a0: 6d 65 20 74 65 73 74 73 20 69 6e 20 53 51 4c 49  me tests in SQLI
48b0: 54 45 34 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54  TE4_OPEN_FULLMUT
48c0: 45 58 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f  EX mode..#.test_
48d0: 73 75 69 74 65 20 22 66 75 6c 6c 6d 75 74 65 78  suite "fullmutex
48e0: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
48f0: 0a 20 20 54 65 73 74 73 20 72 75 6e 20 69 6e 20  .  Tests run in 
4900: 53 51 4c 49 54 45 34 5f 4f 50 45 4e 5f 46 55 4c  SQLITE4_OPEN_FUL
4910: 4c 4d 55 54 45 58 20 6d 6f 64 65 0a 7d 20 2d 69  LMUTEX mode.} -i
4920: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 72 65  nitialize {.  re
4930: 6e 61 6d 65 20 73 71 6c 69 74 65 34 20 73 71 6c  name sqlite4 sql
4940: 69 74 65 34 5f 66 75 6c 6c 6d 75 74 65 78 0a 20  ite4_fullmutex. 
4950: 20 70 72 6f 63 20 73 71 6c 69 74 65 34 20 7b 61   proc sqlite4 {a
4960: 72 67 73 7d 20 7b 0a 20 20 20 20 69 66 20 7b 5b  rgs} {.    if {[
4970: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 6c 69  string range [li
4980: 6e 64 65 78 20 24 61 72 67 73 20 30 5d 20 30 20  ndex $args 0] 0 
4990: 30 5d 20 6e 65 20 22 2d 22 7d 20 7b 0a 20 20 20  0] ne "-"} {.   
49a0: 20 20 20 6c 61 70 70 65 6e 64 20 61 72 67 73 20     lappend args 
49b0: 2d 6e 6f 6d 75 74 65 78 20 30 20 2d 66 75 6c 6c  -nomutex 0 -full
49c0: 6d 75 74 65 78 20 31 0a 20 20 20 20 7d 0a 20 20  mutex 1.    }.  
49d0: 20 20 75 70 6c 65 76 65 6c 20 5b 63 6f 6e 63 61    uplevel [conca
49e0: 74 20 73 71 6c 69 74 65 34 5f 66 75 6c 6c 6d 75  t sqlite4_fullmu
49f0: 74 65 78 20 24 61 72 67 73 5d 0a 20 20 7d 0a 7d  tex $args].  }.}
4a00: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65   -files {.  dele
4a10: 74 65 2e 74 65 73 74 20 20 20 64 65 6c 65 74 65  te.test   delete
4a20: 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 2e 74  2.test  insert.t
4a30: 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65  est  rollback.te
4a40: 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74  st  select1.test
4a50: 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20  .  select2.test 
4a60: 20 74 72 61 6e 73 2e 74 65 73 74 20 20 20 20 75   trans.test    u
4a70: 70 64 61 74 65 2e 74 65 73 74 20 20 76 61 63 75  pdate.test  vacu
4a80: 75 6d 2e 74 65 73 74 20 20 20 20 74 79 70 65 73  um.test    types
4a90: 2e 74 65 73 74 0a 20 20 74 79 70 65 73 32 2e 74  .test.  types2.t
4aa0: 65 73 74 20 20 20 74 79 70 65 73 33 2e 74 65 73  est   types3.tes
4ab0: 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  t.} -shutdown {.
4ac0: 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65 34    rename sqlite4
4ad0: 20 7b 7d 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c   {}.  rename sql
4ae0: 69 74 65 34 5f 66 75 6c 6c 6d 75 74 65 78 20 73  ite4_fullmutex s
4af0: 71 6c 69 74 65 34 0a 7d 0a 0a 23 20 52 75 6e 20  qlite4.}..# Run 
4b00: 73 6f 6d 65 20 74 65 73 74 73 20 75 73 69 6e 67  some tests using
4b10: 20 74 68 65 20 22 6f 6e 65 66 69 6c 65 22 20 64   the "onefile" d
4b20: 65 6d 6f 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74  emo..#.test_suit
4b30: 65 20 22 6f 6e 65 66 69 6c 65 22 20 2d 64 65 73  e "onefile" -des
4b40: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e  cription {.  Run
4b50: 20 73 6f 6d 65 20 74 65 73 74 73 20 75 73 69 6e   some tests usin
4b60: 67 20 74 68 65 20 22 74 65 73 74 5f 6f 6e 65 66  g the "test_onef
4b70: 69 6c 65 2e 63 22 20 64 65 6d 6f 0a 7d 20 2d 69  ile.c" demo.} -i
4b80: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 72 65  nitialize {.  re
4b90: 6e 61 6d 65 20 73 71 6c 69 74 65 34 20 73 71 6c  name sqlite4 sql
4ba0: 69 74 65 34 5f 6f 6e 65 66 69 6c 65 0a 20 20 70  ite4_onefile.  p
4bb0: 72 6f 63 20 73 71 6c 69 74 65 34 20 7b 61 72 67  roc sqlite4 {arg
4bc0: 73 7d 20 7b 0a 20 20 20 20 69 66 20 7b 5b 73 74  s} {.    if {[st
4bd0: 72 69 6e 67 20 72 61 6e 67 65 20 5b 6c 69 6e 64  ring range [lind
4be0: 65 78 20 24 61 72 67 73 20 30 5d 20 30 20 30 5d  ex $args 0] 0 0]
4bf0: 20 6e 65 20 22 2d 22 7d 20 7b 0a 20 20 20 20 20   ne "-"} {.     
4c00: 20 6c 61 70 70 65 6e 64 20 61 72 67 73 20 2d 76   lappend args -v
4c10: 66 73 20 66 73 0a 20 20 20 20 7d 0a 20 20 20 20  fs fs.    }.    
4c20: 75 70 6c 65 76 65 6c 20 5b 63 6f 6e 63 61 74 20  uplevel [concat 
4c30: 73 71 6c 69 74 65 34 5f 6f 6e 65 66 69 6c 65 20  sqlite4_onefile 
4c40: 24 61 72 67 73 5d 0a 20 20 7d 0a 7d 20 2d 66 69  $args].  }.} -fi
4c50: 6c 65 73 20 7b 0a 20 20 63 6f 6e 66 6c 69 63 74  les {.  conflict
4c60: 2e 74 65 73 74 20 20 69 6e 73 65 72 74 2e 74 65  .test  insert.te
4c70: 73 74 20 20 20 69 6e 73 65 72 74 32 2e 74 65 73  st   insert2.tes
4c80: 74 20 20 69 6e 73 65 72 74 33 2e 74 65 73 74 0a  t  insert3.test.
4c90: 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20    rollback.test 
4ca0: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20 20 73   select1.test  s
4cb0: 65 6c 65 63 74 32 2e 74 65 73 74 20 20 73 65 6c  elect2.test  sel
4cc0: 65 63 74 33 2e 74 65 73 74 0a 7d 20 2d 73 68 75  ect3.test.} -shu
4cd0: 74 64 6f 77 6e 20 7b 0a 20 20 72 65 6e 61 6d 65  tdown {.  rename
4ce0: 20 73 71 6c 69 74 65 34 20 7b 7d 0a 20 20 72 65   sqlite4 {}.  re
4cf0: 6e 61 6d 65 20 73 71 6c 69 74 65 34 5f 6f 6e 65  name sqlite4_one
4d00: 66 69 6c 65 20 73 71 6c 69 74 65 34 0a 7d 0a 0a  file sqlite4.}..
4d10: 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73  # Run some tests
4d20: 20 75 73 69 6e 67 20 55 54 46 2d 31 36 20 64 61   using UTF-16 da
4d30: 74 61 62 61 73 65 73 2e 0a 23 0a 74 65 73 74 5f  tabases..#.test_
4d40: 73 75 69 74 65 20 22 75 74 66 31 36 22 20 2d 64  suite "utf16" -d
4d50: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
4d60: 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67 20 55  un tests using U
4d70: 54 46 2d 31 36 20 64 61 74 61 62 61 73 65 73 0a  TF-16 databases.
4d80: 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72  } -presql {.  pr
4d90: 61 67 6d 61 20 65 6e 63 6f 64 69 6e 67 20 3d 20  agma encoding = 
4da0: 27 55 54 46 2d 31 36 27 0a 7d 20 2d 66 69 6c 65  'UTF-16'.} -file
4db0: 73 20 7b 0a 20 20 20 20 61 6c 74 65 72 2e 74 65  s {.    alter.te
4dc0: 73 74 20 61 6c 74 65 72 33 2e 74 65 73 74 0a 20  st alter3.test. 
4dd0: 20 20 20 61 75 74 68 2e 74 65 73 74 20 62 69 6e     auth.test bin
4de0: 64 2e 74 65 73 74 20 62 6c 6f 62 2e 74 65 73 74  d.test blob.test
4df0: 20 63 61 70 69 32 2e 74 65 73 74 20 63 61 70 69   capi2.test capi
4e00: 33 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 31 2e  3.test collate1.
4e10: 74 65 73 74 0a 20 20 20 20 63 6f 6c 6c 61 74 65  test.    collate
4e20: 32 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 33 2e  2.test collate3.
4e30: 74 65 73 74 20 63 6f 6c 6c 61 74 65 34 2e 74 65  test collate4.te
4e40: 73 74 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74  st collate5.test
4e50: 20 63 6f 6c 6c 61 74 65 36 2e 74 65 73 74 0a 20   collate6.test. 
4e60: 20 20 20 63 6f 6e 66 6c 69 63 74 2e 74 65 73 74     conflict.test
4e70: 20 64 61 74 65 2e 74 65 73 74 20 64 65 6c 65 74   date.test delet
4e80: 65 2e 74 65 73 74 20 65 78 70 72 2e 74 65 73 74  e.test expr.test
4e90: 20 66 6b 65 79 31 2e 74 65 73 74 20 66 75 6e 63   fkey1.test func
4ea0: 2e 74 65 73 74 0a 20 20 20 20 68 6f 6f 6b 2e 74  .test.    hook.t
4eb0: 65 73 74 20 69 6e 64 65 78 2e 74 65 73 74 20 69  est index.test i
4ec0: 6e 73 65 72 74 32 2e 74 65 73 74 20 69 6e 73 65  nsert2.test inse
4ed0: 72 74 2e 74 65 73 74 20 69 6e 74 65 72 72 75 70  rt.test interrup
4ee0: 74 2e 74 65 73 74 20 69 6e 2e 74 65 73 74 0a 20  t.test in.test. 
4ef0: 20 20 20 69 6e 74 70 6b 65 79 2e 74 65 73 74 20     intpkey.test 
4f00: 69 6f 65 72 72 2e 74 65 73 74 20 6a 6f 69 6e 32  ioerr.test join2
4f10: 2e 74 65 73 74 20 6a 6f 69 6e 2e 74 65 73 74 20  .test join.test 
4f20: 6c 61 73 74 69 6e 73 65 72 74 2e 74 65 73 74 0a  lastinsert.test.
4f30: 20 20 20 20 6c 61 73 74 73 74 6d 74 63 68 61 6e      laststmtchan
4f40: 67 65 73 2e 74 65 73 74 20 6c 69 6d 69 74 2e 74  ges.test limit.t
4f50: 65 73 74 20 6c 6f 63 6b 32 2e 74 65 73 74 20 6c  est lock2.test l
4f60: 6f 63 6b 2e 74 65 73 74 20 6d 61 69 6e 2e 74 65  ock.test main.te
4f70: 73 74 20 0a 20 20 20 20 6d 65 6d 64 62 2e 74 65  st .    memdb.te
4f80: 73 74 20 6d 69 6e 6d 61 78 2e 74 65 73 74 20 6d  st minmax.test m
4f90: 69 73 63 31 2e 74 65 73 74 20 6d 69 73 63 32 2e  isc1.test misc2.
4fa0: 74 65 73 74 20 6d 69 73 63 33 2e 74 65 73 74 20  test misc3.test 
4fb0: 6e 6f 74 6e 75 6c 6c 2e 74 65 73 74 0a 20 20 20  notnull.test.   
4fc0: 20 6e 75 6c 6c 2e 74 65 73 74 20 70 72 6f 67 72   null.test progr
4fd0: 65 73 73 2e 74 65 73 74 20 71 75 6f 74 65 2e 74  ess.test quote.t
4fe0: 65 73 74 20 72 6f 77 69 64 2e 74 65 73 74 20 73  est rowid.test s
4ff0: 65 6c 65 63 74 31 2e 74 65 73 74 20 73 65 6c 65  elect1.test sele
5000: 63 74 32 2e 74 65 73 74 0a 20 20 20 20 73 65 6c  ct2.test.    sel
5010: 65 63 74 33 2e 74 65 73 74 20 73 65 6c 65 63 74  ect3.test select
5020: 34 2e 74 65 73 74 20 73 65 6c 65 63 74 35 2e 74  4.test select5.t
5030: 65 73 74 20 73 65 6c 65 63 74 36 2e 74 65 73 74  est select6.test
5040: 20 73 6f 72 74 2e 74 65 73 74 20 0a 20 20 20 20   sort.test .    
5050: 73 75 62 73 65 6c 65 63 74 2e 74 65 73 74 20 74  subselect.test t
5060: 61 62 6c 65 61 70 69 2e 74 65 73 74 20 74 61 62  ableapi.test tab
5070: 6c 65 2e 74 65 73 74 20 74 65 6d 70 74 61 62 6c  le.test temptabl
5080: 65 2e 74 65 73 74 0a 20 20 20 20 74 72 61 63 65  e.test.    trace
5090: 2e 74 65 73 74 20 74 72 69 67 67 65 72 31 2e 74  .test trigger1.t
50a0: 65 73 74 20 74 72 69 67 67 65 72 32 2e 74 65 73  est trigger2.tes
50b0: 74 20 74 72 69 67 67 65 72 33 2e 74 65 73 74 0a  t trigger3.test.
50c0: 20 20 20 20 74 72 69 67 67 65 72 34 2e 74 65 73      trigger4.tes
50d0: 74 20 74 79 70 65 73 32 2e 74 65 73 74 20 74 79  t types2.test ty
50e0: 70 65 73 2e 74 65 73 74 20 75 6e 69 71 75 65 2e  pes.test unique.
50f0: 74 65 73 74 20 75 70 64 61 74 65 2e 74 65 73 74  test update.test
5100: 0a 20 20 20 20 76 61 63 75 75 6d 2e 74 65 73 74  .    vacuum.test
5110: 20 76 69 65 77 2e 74 65 73 74 20 77 68 65 72 65   view.test where
5120: 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75 6e 20 73  .test.}..# Run s
5130: 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 65 78 63  ome tests in exc
5140: 6c 75 73 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d  lusive locking m
5150: 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74  ode..#.test_suit
5160: 65 20 22 65 78 63 6c 75 73 69 76 65 22 20 2d 64  e "exclusive" -d
5170: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
5180: 75 6e 20 74 65 73 74 73 20 69 6e 20 65 78 63 6c  un tests in excl
5190: 75 73 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f  usive locking mo
51a0: 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a  de..} -presql {.
51b0: 20 20 70 72 61 67 6d 61 20 6c 6f 63 6b 69 6e 67    pragma locking
51c0: 5f 6d 6f 64 65 20 3d 20 27 65 78 63 6c 75 73 69  _mode = 'exclusi
51d0: 76 65 27 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  ve'.} -files {. 
51e0: 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73   rollback.test s
51f0: 65 6c 65 63 74 31 2e 74 65 73 74 20 73 65 6c 65  elect1.test sele
5200: 63 74 32 2e 74 65 73 74 20 0a 20 20 6d 61 6c 6c  ct2.test .  mall
5210: 6f 63 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65  oc.test ioerr.te
5220: 73 74 0a 7d 20 0a 0a 23 20 52 75 6e 20 73 6f 6d  st.} ..# Run som
5230: 65 20 74 65 73 74 73 20 69 6e 20 65 78 63 6c 75  e tests in exclu
5240: 73 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64  sive locking mod
5250: 65 20 77 69 74 68 20 74 72 75 6e 63 61 74 65 64  e with truncated
5260: 20 6a 6f 75 72 6e 61 6c 73 2e 0a 23 0a 74 65 73   journals..#.tes
5270: 74 5f 73 75 69 74 65 20 22 65 78 63 6c 75 73 69  t_suite "exclusi
5280: 76 65 2d 74 72 75 6e 63 61 74 65 22 20 2d 64 65  ve-truncate" -de
5290: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75  scription {.  Ru
52a0: 6e 20 74 65 73 74 73 20 69 6e 20 65 78 63 6c 75  n tests in exclu
52b0: 73 69 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64  sive locking mod
52c0: 65 20 61 6e 64 20 74 72 75 6e 63 61 74 65 20 6a  e and truncate j
52d0: 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d  ournal mode..} -
52e0: 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d  presql {.  pragm
52f0: 61 20 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 3d  a locking_mode =
5300: 20 27 65 78 63 6c 75 73 69 76 65 27 3b 0a 20 20   'exclusive';.  
5310: 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d  pragma journal_m
5320: 6f 64 65 20 3d 20 54 52 55 4e 43 41 54 45 3b 0a  ode = TRUNCATE;.
5330: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c  } -files {.  del
5340: 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65 32  ete.test delete2
5350: 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65 73  .test insert.tes
5360: 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20  t rollback.test 
5370: 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20 73  select1.test.  s
5380: 65 6c 65 63 74 32 2e 74 65 73 74 20 75 70 64 61  elect2.test upda
5390: 74 65 2e 74 65 73 74 20 6d 61 6c 6c 6f 63 2e 74  te.test malloc.t
53a0: 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d  est ioerr.test.}
53b0: 20 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65   ..# Run some te
53c0: 73 74 73 20 69 6e 20 70 65 72 73 69 73 74 65 6e  sts in persisten
53d0: 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a  t journal mode..
53e0: 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 70 65  #.test_suite "pe
53f0: 72 73 69 73 74 65 6e 74 5f 6a 6f 75 72 6e 61 6c  rsistent_journal
5400: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
5410: 0a 20 20 52 75 6e 20 74 65 73 74 73 20 69 6e 20  .  Run tests in 
5420: 70 65 72 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e  persistent-journ
5430: 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  al mode..} -pres
5440: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f  ql {.  pragma jo
5450: 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72  urnal_mode = per
5460: 73 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  sist.} -files {.
5470: 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64 65    delete.test de
5480: 6c 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65 72  lete2.test inser
5490: 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e  t.test rollback.
54a0: 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73  test select1.tes
54b0: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
54c0: 20 74 72 61 6e 73 2e 74 65 73 74 20 75 70 64 61   trans.test upda
54d0: 74 65 2e 74 65 73 74 20 76 61 63 75 75 6d 2e 74  te.test vacuum.t
54e0: 65 73 74 20 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f  est .}..# Run so
54f0: 6d 65 20 74 65 73 74 73 20 69 6e 20 74 72 75 6e  me tests in trun
5500: 63 61 74 69 6e 67 20 6a 6f 75 72 6e 61 6c 20 6d  cating journal m
5510: 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74  ode..#.test_suit
5520: 65 20 22 74 72 75 6e 63 61 74 65 5f 6a 6f 75 72  e "truncate_jour
5530: 6e 61 6c 22 20 2d 64 65 73 63 72 69 70 74 69 6f  nal" -descriptio
5540: 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20  n {.  Run tests 
5550: 69 6e 20 70 65 72 73 69 73 74 65 6e 74 2d 6a 6f  in persistent-jo
5560: 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70  urnal mode..} -p
5570: 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61  resql {.  pragma
5580: 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20   journal_mode = 
5590: 74 72 75 6e 63 61 74 65 0a 7d 20 2d 66 69 6c 65  truncate.} -file
55a0: 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73  s {.  delete.tes
55b0: 74 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20 69  t delete2.test i
55c0: 6e 73 65 72 74 2e 74 65 73 74 20 72 6f 6c 6c 62  nsert.test rollb
55d0: 61 63 6b 2e 74 65 73 74 20 73 65 6c 65 63 74 31  ack.test select1
55e0: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
55f0: 74 65 73 74 20 74 72 61 6e 73 2e 74 65 73 74 20  test trans.test 
5600: 75 70 64 61 74 65 2e 74 65 73 74 20 76 61 63 75  update.test vacu
5610: 75 6d 2e 74 65 73 74 20 0a 20 20 6d 61 6c 6c 6f  um.test .  mallo
5620: 63 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65 73  c.test ioerr.tes
5630: 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20  t.}..# Run some 
5640: 65 72 72 6f 72 20 74 65 73 74 73 20 69 6e 20 70  error tests in p
5650: 65 72 73 69 73 74 65 6e 74 20 6a 6f 75 72 6e 61  ersistent journa
5660: 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73  l mode..#.test_s
5670: 75 69 74 65 20 22 70 65 72 73 69 73 74 65 6e 74  uite "persistent
5680: 5f 6a 6f 75 72 6e 61 6c 5f 65 72 72 6f 72 22 20  _journal_error" 
5690: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
56a0: 20 52 75 6e 20 6d 61 6c 6c 6f 63 2e 74 65 73 74   Run malloc.test
56b0: 20 61 6e 64 20 69 6f 65 72 72 2e 74 65 73 74 20   and ioerr.test 
56c0: 69 6e 20 70 65 72 73 69 73 74 65 6e 74 2d 6a 6f  in persistent-jo
56d0: 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70  urnal mode..} -p
56e0: 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61  resql {.  pragma
56f0: 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20   journal_mode = 
5700: 70 65 72 73 69 73 74 0a 7d 20 2d 66 69 6c 65 73  persist.} -files
5710: 20 7b 0a 20 20 6d 61 6c 6c 6f 63 2e 74 65 73 74   {.  malloc.test
5720: 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d 0a 0a 23   ioerr.test.}..#
5730: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
5740: 69 6e 20 6e 6f 20 6a 6f 75 72 6e 61 6c 20 6d 6f  in no journal mo
5750: 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65  de..#.test_suite
5760: 20 22 6e 6f 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64   "no_journal" -d
5770: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
5780: 75 6e 20 74 65 73 74 73 20 69 6e 20 6e 6f 2d 6a  un tests in no-j
5790: 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d  ournal mode..} -
57a0: 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d  presql {.  pragm
57b0: 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d  a journal_mode =
57c0: 20 70 65 72 73 69 73 74 0a 7d 20 2d 66 69 6c 65   persist.} -file
57d0: 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73  s {.  delete.tes
57e0: 74 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20 69  t delete2.test i
57f0: 6e 73 65 72 74 2e 74 65 73 74 20 72 6f 6c 6c 62  nsert.test rollb
5800: 61 63 6b 2e 74 65 73 74 20 73 65 6c 65 63 74 31  ack.test select1
5810: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
5820: 74 65 73 74 20 74 72 61 6e 73 2e 74 65 73 74 20  test trans.test 
5830: 75 70 64 61 74 65 2e 74 65 73 74 20 76 61 63 75  update.test vacu
5840: 75 6d 2e 74 65 73 74 20 0a 7d 0a 0a 23 20 52 75  um.test .}..# Ru
5850: 6e 20 73 6f 6d 65 20 65 72 72 6f 72 20 74 65 73  n some error tes
5860: 74 73 20 69 6e 20 6e 6f 20 6a 6f 75 72 6e 61 6c  ts in no journal
5870: 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75   mode..#.test_su
5880: 69 74 65 20 22 6e 6f 5f 6a 6f 75 72 6e 61 6c 5f  ite "no_journal_
5890: 65 72 72 6f 72 22 20 2d 64 65 73 63 72 69 70 74  error" -descript
58a0: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 6d 61 6c 6c  ion {.  Run mall
58b0: 6f 63 2e 74 65 73 74 20 61 6e 64 20 69 6f 65 72  oc.test and ioer
58c0: 72 2e 74 65 73 74 20 69 6e 20 6e 6f 2d 6a 6f 75  r.test in no-jou
58d0: 72 6e 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72  rnal mode..} -pr
58e0: 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20  esql {.  pragma 
58f0: 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70  journal_mode = p
5900: 65 72 73 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20  ersist.} -files 
5910: 7b 0a 20 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20  {.  malloc.test 
5920: 69 6f 65 72 72 2e 74 65 73 74 0a 7d 0a 0a 23 20  ioerr.test.}..# 
5930: 52 75 6e 20 73 6f 6d 65 20 63 72 61 73 68 2d 74  Run some crash-t
5940: 65 73 74 73 20 69 6e 20 61 75 74 6f 76 61 63 75  ests in autovacu
5950: 75 6d 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f  um mode..#.test_
5960: 73 75 69 74 65 20 22 61 75 74 6f 76 61 63 75 75  suite "autovacuu
5970: 6d 5f 63 72 61 73 68 22 20 2d 64 65 73 63 72 69  m_crash" -descri
5980: 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 63 72  ption {.  Run cr
5990: 61 73 68 2e 74 65 73 74 20 69 6e 20 61 75 74 6f  ash.test in auto
59a0: 76 61 63 75 75 6d 20 6d 6f 64 65 2e 0a 7d 20 2d  vacuum mode..} -
59b0: 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d  presql {.  pragm
59c0: 61 20 61 75 74 6f 5f 76 61 63 75 75 6d 20 3d 20  a auto_vacuum = 
59d0: 31 0a 7d 20 2d 66 69 6c 65 73 20 63 72 61 73 68  1.} -files crash
59e0: 2e 74 65 73 74 0a 0a 23 20 52 75 6e 20 73 6f 6d  .test..# Run som
59f0: 65 20 69 6f 65 72 72 2d 74 65 73 74 73 20 69 6e  e ioerr-tests in
5a00: 20 61 75 74 6f 76 61 63 75 75 6d 20 6d 6f 64 65   autovacuum mode
5a10: 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22  ..#.test_suite "
5a20: 61 75 74 6f 76 61 63 75 75 6d 5f 69 6f 65 72 72  autovacuum_ioerr
5a30: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
5a40: 0a 20 20 52 75 6e 20 69 6f 65 72 72 2e 74 65 73  .  Run ioerr.tes
5a50: 74 20 69 6e 20 61 75 74 6f 76 61 63 75 75 6d 20  t in autovacuum 
5a60: 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20  mode..} -presql 
5a70: 7b 0a 20 20 70 72 61 67 6d 61 20 61 75 74 6f 5f  {.  pragma auto_
5a80: 76 61 63 75 75 6d 20 3d 20 31 0a 7d 20 2d 66 69  vacuum = 1.} -fi
5a90: 6c 65 73 20 69 6f 65 72 72 2e 74 65 73 74 0a 0a  les ioerr.test..
5aa0: 23 20 52 75 6e 20 74 65 73 74 73 20 77 69 74 68  # Run tests with
5ab0: 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 6a 6f   an in-memory jo
5ac0: 75 72 6e 61 6c 2e 0a 23 0a 74 65 73 74 5f 73 75  urnal..#.test_su
5ad0: 69 74 65 20 22 69 6e 6d 65 6d 6f 72 79 5f 6a 6f  ite "inmemory_jo
5ae0: 75 72 6e 61 6c 22 20 2d 64 65 73 63 72 69 70 74  urnal" -descript
5af0: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74  ion {.  Run test
5b00: 73 20 77 69 74 68 20 61 6e 20 69 6e 2d 6d 65 6d  s with an in-mem
5b10: 6f 72 79 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  ory journal file
5b20: 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20  ..} -presql {.  
5b30: 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d  pragma journal_m
5b40: 6f 64 65 20 3d 20 27 6d 65 6d 6f 72 79 27 0a 7d  ode = 'memory'.}
5b50: 20 2d 66 69 6c 65 73 20 5b 74 65 73 74 5f 73 65   -files [test_se
5b60: 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73  t $::allquicktes
5b70: 74 73 20 2d 65 78 63 6c 75 64 65 20 7b 0a 20 20  ts -exclude {.  
5b80: 23 20 45 78 63 6c 75 64 65 20 61 6c 6c 20 74 65  # Exclude all te
5b90: 73 74 73 20 74 68 61 74 20 73 69 6d 75 6c 61 74  sts that simulat
5ba0: 65 20 49 4f 20 65 72 72 6f 72 73 2e 0a 20 20 61  e IO errors..  a
5bb0: 75 74 6f 76 61 63 75 75 6d 5f 69 6f 65 72 72 32  utovacuum_ioerr2
5bc0: 2e 74 65 73 74 20 69 6e 63 72 76 61 63 75 75 6d  .test incrvacuum
5bd0: 5f 69 6f 65 72 72 2e 74 65 73 74 20 69 6f 65 72  _ioerr.test ioer
5be0: 72 2e 74 65 73 74 0a 20 20 69 6f 65 72 72 2e 74  r.test.  ioerr.t
5bf0: 65 73 74 20 69 6f 65 72 72 32 2e 74 65 73 74 20  est ioerr2.test 
5c00: 69 6f 65 72 72 33 2e 74 65 73 74 20 69 6f 65 72  ioerr3.test ioer
5c10: 72 34 2e 74 65 73 74 20 69 6f 65 72 72 35 2e 74  r4.test ioerr5.t
5c20: 65 73 74 0a 20 20 76 61 63 75 75 6d 33 2e 74 65  est.  vacuum3.te
5c30: 73 74 20 69 6e 63 72 62 6c 6f 62 5f 65 72 72 2e  st incrblob_err.
5c40: 74 65 73 74 20 64 69 73 6b 66 75 6c 6c 2e 74 65  test diskfull.te
5c50: 73 74 20 62 61 63 6b 75 70 5f 69 6f 65 72 72 2e  st backup_ioerr.
5c60: 74 65 73 74 0a 20 20 65 5f 66 74 73 33 2e 74 65  test.  e_fts3.te
5c70: 73 74 20 66 74 73 33 63 6f 76 2e 74 65 73 74 20  st fts3cov.test 
5c80: 66 74 73 33 6d 61 6c 6c 6f 63 2e 74 65 73 74 20  fts3malloc.test 
5c90: 66 74 73 33 72 6e 64 2e 74 65 73 74 0a 20 20 66  fts3rnd.test.  f
5ca0: 74 73 33 73 6e 69 70 70 65 74 2e 74 65 73 74 0a  ts3snippet.test.
5cb0: 0a 20 20 23 20 45 78 63 6c 75 64 65 20 74 65 73  .  # Exclude tes
5cc0: 74 20 73 63 72 69 70 74 73 20 74 68 61 74 20 75  t scripts that u
5cd0: 73 65 20 74 63 6c 20 49 4f 20 74 6f 20 61 63 63  se tcl IO to acc
5ce0: 65 73 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  ess journal file
5cf0: 73 20 6f 72 20 63 6f 75 6e 74 0a 20 20 23 20 74  s or count.  # t
5d00: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 66 73 79  he number of fsy
5d10: 6e 63 28 29 20 63 61 6c 6c 73 2e 0a 20 20 70 61  nc() calls..  pa
5d20: 67 65 72 2e 74 65 73 74 20 65 78 63 6c 75 73 69  ger.test exclusi
5d30: 76 65 2e 74 65 73 74 20 6a 72 6e 6c 6d 6f 64 65  ve.test jrnlmode
5d40: 2e 74 65 73 74 20 73 79 6e 63 2e 74 65 73 74 20  .test sync.test 
5d50: 6d 69 73 63 31 2e 74 65 73 74 20 0a 20 20 6a 6f  misc1.test .  jo
5d60: 75 72 6e 61 6c 31 2e 74 65 73 74 20 63 6f 6e 66  urnal1.test conf
5d70: 6c 69 63 74 2e 74 65 73 74 20 63 72 61 73 68 38  lict.test crash8
5d80: 2e 74 65 73 74 20 74 6b 74 33 34 35 37 2e 74 65  .test tkt3457.te
5d90: 73 74 20 69 6f 2e 74 65 73 74 0a 20 20 6a 6f 75  st io.test.  jou
5da0: 72 6e 61 6c 33 2e 74 65 73 74 20 38 5f 33 5f 6e  rnal3.test 8_3_n
5db0: 61 6d 65 73 2e 74 65 73 74 0a 0a 20 20 70 61 67  ames.test..  pag
5dc0: 65 72 31 2e 74 65 73 74 20 61 73 79 6e 63 34 2e  er1.test async4.
5dd0: 74 65 73 74 20 63 6f 72 72 75 70 74 2e 74 65 73  test corrupt.tes
5de0: 74 20 66 69 6c 65 66 6d 74 2e 74 65 73 74 20 70  t filefmt.test p
5df0: 61 67 65 72 32 2e 74 65 73 74 0a 20 20 63 6f 72  ager2.test.  cor
5e00: 72 75 70 74 35 2e 74 65 73 74 20 63 6f 72 72 75  rupt5.test corru
5e10: 70 74 41 2e 74 65 73 74 20 70 61 67 65 72 6f 70  ptA.test pagerop
5e20: 74 2e 74 65 73 74 0a 0a 20 20 23 20 45 78 63 6c  t.test..  # Excl
5e30: 75 64 65 20 73 74 6d 74 2e 74 65 73 74 2c 20 77  ude stmt.test, w
5e40: 68 69 63 68 20 65 78 70 65 63 74 73 20 73 75 62  hich expects sub
5e50: 2d 6a 6f 75 72 6e 61 6c 73 20 74 6f 20 75 73 65  -journals to use
5e60: 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73   temporary files
5e70: 2e 0a 20 20 73 74 6d 74 2e 74 65 73 74 0a 0a 20  ..  stmt.test.. 
5e80: 20 7a 65 72 6f 64 61 6d 61 67 65 2e 74 65 73 74   zerodamage.test
5e90: 0a 0a 20 20 23 20 57 41 4c 20 6d 6f 64 65 20 69  ..  # WAL mode i
5ea0: 73 20 64 69 66 66 65 72 65 6e 74 2e 0a 20 20 77  s different..  w
5eb0: 61 6c 2a 20 74 6b 74 2d 32 64 31 61 35 63 36 37  al* tkt-2d1a5c67
5ec0: 64 2e 74 65 73 74 20 62 61 63 6b 63 6f 6d 70 61  d.test backcompa
5ed0: 74 2e 74 65 73 74 0a 7d 5d 0a 0a 69 66 63 61 70  t.test.}]..ifcap
5ee0: 61 62 6c 65 20 6d 65 6d 33 20 7b 0a 20 20 74 65  able mem3 {.  te
5ef0: 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73 79 73  st_suite "memsys
5f00: 33 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  3" -description 
5f10: 7b 0a 20 20 20 20 52 75 6e 20 74 65 73 74 73 20  {.    Run tests 
5f20: 75 73 69 6e 67 20 74 68 65 20 61 6c 6c 6f 63 61  using the alloca
5f30: 74 6f 72 20 69 6e 20 6d 65 6d 33 2e 63 2e 0a 20  tor in mem3.c.. 
5f40: 20 7d 20 2d 66 69 6c 65 73 20 5b 74 65 73 74 5f   } -files [test_
5f50: 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74  set $::allquickt
5f60: 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 7b 0a  ests -exclude {.
5f70: 20 20 20 20 61 75 74 6f 76 61 63 75 75 6d 2e 74      autovacuum.t
5f80: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 64 65  est           de
5f90: 6c 65 74 65 33 2e 74 65 73 74 20 20 20 20 20 20  lete3.test      
5fa0: 20 20 20 20 20 20 20 20 6d 61 6e 79 64 62 2e 74          manydb.t
5fb0: 65 73 74 0a 20 20 20 20 62 69 67 72 6f 77 2e 74  est.    bigrow.t
5fc0: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20  est             
5fd0: 20 20 69 6e 63 72 62 6c 6f 62 32 2e 74 65 73 74    incrblob2.test
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 64              memd
5ff0: 62 2e 74 65 73 74 0a 20 20 20 20 62 69 74 76 65  b.test.    bitve
6000: 63 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20  c.test          
6010: 20 20 20 20 20 69 6e 64 65 78 32 2e 74 65 73 74       index2.test
6020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
6030: 65 6d 73 75 62 73 79 73 31 2e 74 65 73 74 0a 20  emsubsys1.test. 
6040: 20 20 20 63 61 70 69 33 63 2e 74 65 73 74 20 20     capi3c.test  
6050: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6f 65               ioe
6060: 72 72 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  rr.test         
6070: 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73 79 73         memsubsys
6080: 32 2e 74 65 73 74 0a 20 20 20 20 63 61 70 69 33  2.test.    capi3
6090: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
60a0: 20 20 20 20 20 6a 6f 69 6e 33 2e 74 65 73 74 20       join3.test 
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
60c0: 61 67 65 73 69 7a 65 2e 74 65 73 74 0a 20 20 20  agesize.test.   
60d0: 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74 20 20   collate5.test  
60e0: 20 20 20 20 20 20 20 20 20 20 20 6c 69 6d 69 74             limit
60f0: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
6100: 20 20 20 20 20 62 61 63 6b 75 70 5f 69 6f 65 72       backup_ioer
6110: 72 2e 74 65 73 74 0a 20 20 20 20 62 61 63 6b 75  r.test.    backu
6120: 70 5f 6d 61 6c 6c 6f 63 2e 74 65 73 74 0a 20 20  p_malloc.test.  
6130: 7d 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  }] -initialize {
6140: 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62 20 63  .    catch {db c
6150: 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65  lose}.    sqlite
6160: 34 5f 72 65 73 65 74 5f 61 75 74 6f 5f 65 78 74  4_reset_auto_ext
6170: 65 6e 73 69 6f 6e 0a 20 20 20 20 73 71 6c 69 74  ension.    sqlit
6180: 65 34 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20  e4_shutdown.    
6190: 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f 68  sqlite4_config_h
61a0: 65 61 70 20 32 35 30 30 30 30 30 30 20 30 0a 20  eap 25000000 0. 
61b0: 20 20 20 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69     sqlite4_confi
61c0: 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a  g_lookaside 0 0.
61d0: 20 20 20 20 69 66 63 61 70 61 62 6c 65 20 6d 65      ifcapable me
61e0: 6d 35 20 7b 0a 20 20 20 20 20 20 23 20 49 66 20  m5 {.      # If 
61f0: 62 6f 74 68 20 6d 65 6d 73 79 73 33 20 61 6e 64  both memsys3 and
6200: 20 6d 65 6d 73 79 73 35 20 61 72 65 20 65 6e 61   memsys5 are ena
6210: 62 6c 65 64 20 69 6e 20 74 68 65 20 62 75 69 6c  bled in the buil
6220: 64 2c 20 74 68 65 20 63 61 6c 6c 20 74 6f 0a 20  d, the call to. 
6230: 20 20 20 20 20 23 20 5b 73 71 6c 69 74 65 34 5f       # [sqlite4_
6240: 63 6f 6e 66 69 67 5f 68 65 61 70 5d 20 77 69 6c  config_heap] wil
6250: 6c 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65  l initialize the
6260: 20 73 79 73 74 65 6d 20 74 6f 20 75 73 65 20 6d   system to use m
6270: 65 6d 73 79 73 35 2e 0a 20 20 20 20 20 20 23 20  emsys5..      # 
6280: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 76  The following ov
6290: 65 72 72 69 64 65 73 20 74 68 69 73 20 70 72 65  errides this pre
62a0: 66 65 72 65 6e 63 65 20 61 6e 64 20 69 6e 73 74  ference and inst
62b0: 61 6c 6c 73 20 74 68 65 20 6d 65 6d 73 79 73 33  alls the memsys3
62c0: 0a 20 20 20 20 20 20 23 20 61 6c 6c 6f 63 61 74  .      # allocat
62d0: 6f 72 2e 0a 20 20 20 20 20 20 73 71 6c 69 74 65  or..      sqlite
62e0: 34 5f 69 6e 73 74 61 6c 6c 5f 6d 65 6d 73 79 73  4_install_memsys
62f0: 33 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 73 74  3.    }.    inst
6300: 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74  all_malloc_fault
6310: 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69 74  sim 1 .    sqlit
6320: 65 34 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20  e4_initialize.  
6330: 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65    autoinstall_te
6340: 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d  st_functions.  }
6350: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20   -shutdown {.   
6360: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
6370: 7d 0a 20 20 20 20 73 71 6c 69 74 65 34 5f 73 68  }.    sqlite4_sh
6380: 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74  utdown.    sqlit
6390: 65 34 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20 30  e4_config_heap 0
63a0: 20 30 0a 20 20 20 20 73 71 6c 69 74 65 34 5f 63   0.    sqlite4_c
63b0: 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20  onfig_lookaside 
63c0: 31 30 30 20 35 30 30 0a 20 20 20 20 69 6e 73 74  100 500.    inst
63d0: 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74  all_malloc_fault
63e0: 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69 74  sim 1 .    sqlit
63f0: 65 34 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20  e4_initialize.  
6400: 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65    autoinstall_te
6410: 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d  st_functions.  }
6420: 0a 7d 0a 0a 69 66 63 61 70 61 62 6c 65 20 6d 65  .}..ifcapable me
6430: 6d 35 20 7b 0a 20 20 74 65 73 74 5f 73 75 69 74  m5 {.  test_suit
6440: 65 20 22 6d 65 6d 73 79 73 35 22 20 2d 64 65 73  e "memsys5" -des
6450: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 52  cription {.    R
6460: 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67 20 74  un tests using t
6470: 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 20  he allocator in 
6480: 6d 65 6d 35 2e 63 2e 0a 20 20 7d 20 2d 66 69 6c  mem5.c..  } -fil
6490: 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a 3a  es [test_set $::
64a0: 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65  allquicktests -e
64b0: 78 63 6c 75 64 65 20 7b 0a 20 20 20 20 61 75 74  xclude {.    aut
64c0: 6f 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20  ovacuum.test    
64d0: 20 20 20 20 20 20 20 64 65 6c 65 74 65 33 2e 74         delete3.t
64e0: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20  est             
64f0: 20 6d 61 6e 79 64 62 2e 74 65 73 74 0a 20 20 20   manydb.test.   
6500: 20 62 69 67 72 6f 77 2e 74 65 73 74 20 20 20 20   bigrow.test    
6510: 20 20 20 20 20 20 20 20 20 20 20 69 6e 63 72 62             incrb
6520: 6c 6f 62 32 2e 74 65 73 74 20 20 20 20 20 20 20  lob2.test       
6530: 20 20 20 20 20 6d 65 6d 64 62 2e 74 65 73 74 0a       memdb.test.
6540: 20 20 20 20 62 69 74 76 65 63 2e 74 65 73 74 20      bitvec.test 
6550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
6560: 64 65 78 32 2e 74 65 73 74 20 20 20 20 20 20 20  dex2.test       
6570: 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73 79          memsubsy
6580: 73 31 2e 74 65 73 74 0a 20 20 20 20 63 61 70 69  s1.test.    capi
6590: 33 63 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  3c.test         
65a0: 20 20 20 20 20 20 69 6f 65 72 72 2e 74 65 73 74        ioerr.test
65b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65c0: 6d 65 6d 73 75 62 73 79 73 32 2e 74 65 73 74 0a  memsubsys2.test.
65d0: 20 20 20 20 63 61 70 69 33 2e 74 65 73 74 20 20      capi3.test  
65e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 6f                jo
65f0: 69 6e 33 2e 74 65 73 74 20 20 20 20 20 20 20 20  in3.test        
6600: 20 20 20 20 20 20 20 20 70 61 67 65 73 69 7a 65          pagesize
6610: 2e 74 65 73 74 0a 20 20 20 20 63 6f 6c 6c 61 74  .test.    collat
6620: 65 35 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  e5.test         
6630: 20 20 20 20 6c 69 6d 69 74 2e 74 65 73 74 20 20      limit.test  
6640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7a 65                ze
6650: 72 6f 62 6c 6f 62 2e 74 65 73 74 0a 20 20 7d 5d  roblob.test.  }]
6660: 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20   -initialize {. 
6670: 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f     catch {db clo
6680: 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 34 5f  se}.    sqlite4_
6690: 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c  shutdown.    sql
66a0: 69 74 65 34 5f 63 6f 6e 66 69 67 5f 68 65 61 70  ite4_config_heap
66b0: 20 32 35 30 30 30 30 30 30 20 36 34 0a 20 20 20   25000000 64.   
66c0: 20 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f   sqlite4_config_
66d0: 6c 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a 20 20  lookaside 0 0.  
66e0: 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63    install_malloc
66f0: 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20 20  _faultsim 1 .   
6700: 20 73 71 6c 69 74 65 34 5f 69 6e 69 74 69 61 6c   sqlite4_initial
6710: 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74  ize.    autoinst
6720: 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f  all_test_functio
6730: 6e 73 0a 20 20 7d 20 2d 73 68 75 74 64 6f 77 6e  ns.  } -shutdown
6740: 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62   {.    catch {db
6750: 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69   close}.    sqli
6760: 74 65 34 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20  te4_shutdown.   
6770: 20 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f   sqlite4_config_
6780: 68 65 61 70 20 30 20 30 0a 20 20 20 20 73 71 6c  heap 0 0.    sql
6790: 69 74 65 34 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b  ite4_config_look
67a0: 61 73 69 64 65 20 31 30 30 20 35 30 30 0a 20 20  aside 100 500.  
67b0: 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63    install_malloc
67c0: 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20 20  _faultsim 1 .   
67d0: 20 73 71 6c 69 74 65 34 5f 69 6e 69 74 69 61 6c   sqlite4_initial
67e0: 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74  ize.    autoinst
67f0: 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f  all_test_functio
6800: 6e 73 0a 20 20 7d 0a 0a 20 20 74 65 73 74 5f 73  ns.  }..  test_s
6810: 75 69 74 65 20 22 6d 65 6d 73 79 73 35 2d 32 22  uite "memsys5-2"
6820: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
6830: 20 20 20 20 52 75 6e 20 74 65 73 74 73 20 75 73      Run tests us
6840: 69 6e 67 20 74 68 65 20 61 6c 6c 6f 63 61 74 6f  ing the allocato
6850: 72 20 69 6e 20 6d 65 6d 35 2e 63 20 69 6e 20 61  r in mem5.c in a
6860: 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 69   different confi
6870: 67 75 72 61 74 69 6f 6e 2e 0a 20 20 7d 20 2d 66  guration..  } -f
6880: 69 6c 65 73 20 7b 0a 20 20 20 20 73 65 6c 65 63  iles {.    selec
6890: 74 31 2e 74 65 73 74 20 0a 20 20 7d 20 2d 69 6e  t1.test .  } -in
68a0: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63  itialize {.    c
68b0: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
68c0: 20 20 20 20 73 71 6c 69 74 65 34 5f 73 68 75 74      sqlite4_shut
68d0: 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 34  down.    sqlite4
68e0: 5f 65 6e 76 5f 63 6f 6e 66 69 67 5f 6d 65 6d 73  _env_config_mems
68f0: 74 61 74 75 73 20 30 0a 20 20 20 20 73 71 6c 69  tatus 0.    sqli
6900: 74 65 34 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20  te4_config_heap 
6910: 34 30 30 30 30 30 30 30 20 31 36 0a 20 20 20 20  40000000 16.    
6920: 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f 6c  sqlite4_config_l
6930: 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a 20 20 20  ookaside 0 0.   
6940: 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f   install_malloc_
6950: 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20 20 20  faultsim 1 .    
6960: 73 71 6c 69 74 65 34 5f 69 6e 69 74 69 61 6c 69  sqlite4_initiali
6970: 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61  ze.    autoinsta
6980: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
6990: 73 0a 20 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20  s.  } -shutdown 
69a0: 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62 20  {.    catch {db 
69b0: 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74  close}.    sqlit
69c0: 65 34 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20  e4_shutdown.    
69d0: 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f 68  sqlite4_config_h
69e0: 65 61 70 20 30 20 30 0a 20 20 20 20 73 71 6c 69  eap 0 0.    sqli
69f0: 74 65 34 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61  te4_config_looka
6a00: 73 69 64 65 20 31 30 30 20 35 30 30 0a 20 20 20  side 100 500.   
6a10: 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f   install_malloc_
6a20: 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20 20 20  faultsim 1 .    
6a30: 73 71 6c 69 74 65 34 5f 69 6e 69 74 69 61 6c 69  sqlite4_initiali
6a40: 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61  ze.    autoinsta
6a50: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
6a60: 73 0a 20 20 7d 0a 7d 0a 0a 69 66 63 61 70 61 62  s.  }.}..ifcapab
6a70: 6c 65 20 74 68 72 65 61 64 73 61 66 65 20 7b 0a  le threadsafe {.
6a80: 20 20 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f    test_suite "no
6a90: 5f 6d 75 74 65 78 5f 74 72 79 22 20 2d 64 65 73  _mutex_try" -des
6aa0: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 20  cription {.     
6ab0: 54 68 65 20 73 71 6c 69 74 65 34 5f 6d 75 74 65  The sqlite4_mute
6ac0: 78 5f 74 72 79 28 29 20 69 6e 74 65 72 66 61 63  x_try() interfac
6ad0: 65 20 61 6c 77 61 79 73 20 66 61 69 6c 73 0a 20  e always fails. 
6ae0: 20 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 20 20   } -files [.    
6af0: 74 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71  test_set $::allq
6b00: 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75  uicktests -exclu
6b10: 64 65 20 6d 75 74 65 78 31 2e 74 65 73 74 20 6d  de mutex1.test m
6b20: 75 74 65 78 32 2e 74 65 73 74 0a 20 20 5d 20 2d  utex2.test.  ] -
6b30: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20  initialize {.   
6b40: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
6b50: 7d 0a 20 20 20 20 73 71 6c 69 74 65 34 5f 73 68  }.    sqlite4_sh
6b60: 75 74 64 6f 77 6e 0a 20 20 20 20 69 6e 73 74 61  utdown.    insta
6b70: 6c 6c 5f 6d 75 74 65 78 5f 63 6f 75 6e 74 65 72  ll_mutex_counter
6b80: 73 20 31 0a 20 20 20 20 73 65 74 20 3a 3a 64 69  s 1.    set ::di
6b90: 73 61 62 6c 65 5f 6d 75 74 65 78 5f 74 72 79 20  sable_mutex_try 
6ba0: 31 0a 20 20 20 20 73 71 6c 69 74 65 34 5f 69 6e  1.    sqlite4_in
6bb0: 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74  itialize.    aut
6bc0: 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75  oinstall_test_fu
6bd0: 6e 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75  nctions.  } -shu
6be0: 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74 63  tdown {.    catc
6bf0: 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20  h {db close}.   
6c00: 20 73 71 6c 69 74 65 34 5f 73 68 75 74 64 6f 77   sqlite4_shutdow
6c10: 6e 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 75  n.    install_mu
6c20: 74 65 78 5f 63 6f 75 6e 74 65 72 73 20 30 0a 20  tex_counters 0. 
6c30: 20 20 20 73 71 6c 69 74 65 34 5f 69 6e 69 74 69     sqlite4_initi
6c40: 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e  alize.    autoin
6c50: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
6c60: 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a 23 20 72 75  ions.  }.}..# ru
6c70: 6e 5f 74 65 73 74 73 20 22 63 72 61 73 68 5f 73  n_tests "crash_s
6c80: 61 66 65 5f 61 70 70 65 6e 64 22 20 2d 64 65 73  afe_append" -des
6c90: 63 72 69 70 74 69 6f 6e 20 7b 0a 23 20 20 20 52  cription {.#   R
6ca0: 75 6e 20 63 72 61 73 68 2e 74 65 73 74 20 77 69  un crash.test wi
6cb0: 74 68 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f  th persistent jo
6cc0: 75 72 6e 61 6c 73 20 6f 6e 20 61 20 53 41 46 45  urnals on a SAFE
6cd0: 5f 41 50 50 45 4e 44 20 66 69 6c 65 2d 73 79 73  _APPEND file-sys
6ce0: 74 65 6d 2e 0a 23 20 7d 20 2d 69 6e 69 74 69 61  tem..# } -initia
6cf0: 6c 69 7a 65 20 7b 0a 23 20 20 20 72 65 6e 61 6d  lize {.#   renam
6d00: 65 20 63 72 61 73 68 73 71 6c 20 73 61 5f 63 72  e crashsql sa_cr
6d10: 61 73 68 73 71 6c 0a 23 20 20 20 70 72 6f 63 20  ashsql.#   proc 
6d20: 63 72 61 73 68 73 71 6c 20 7b 61 72 67 73 7d 20  crashsql {args} 
6d30: 7b 0a 23 20 20 20 20 20 73 65 74 20 6f 70 74 69  {.#     set opti
6d40: 6f 6e 73 20 5b 6c 72 61 6e 67 65 20 24 61 72 67  ons [lrange $arg
6d50: 73 20 30 20 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e  s 0 [expr {[llen
6d60: 67 74 68 20 24 61 72 67 73 5d 2d 32 7d 5d 5d 0a  gth $args]-2}]].
6d70: 23 20 20 20 20 20 6c 61 70 70 65 6e 64 20 6f 70  #     lappend op
6d80: 74 69 6f 6e 73 20 2d 63 68 61 72 20 73 61 66 65  tions -char safe
6d90: 5f 61 70 70 65 6e 64 0a 23 20 20 20 20 20 73 65  _append.#     se
6da0: 74 20 73 71 6c 20 5b 6c 69 6e 64 65 78 20 24 61  t sql [lindex $a
6db0: 72 67 73 20 65 6e 64 5d 0a 23 20 20 20 20 20 6c  rgs end].#     l
6dc0: 61 70 70 65 6e 64 20 6f 70 74 69 6f 6e 73 20 22  append options "
6dd0: 0a 23 20 20 20 20 20 20 20 50 52 41 47 4d 41 20  .#       PRAGMA 
6de0: 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3d 70 65 72  journal_mode=per
6df0: 73 69 73 74 65 6e 74 3b 0a 23 20 20 20 20 20 20  sistent;.#      
6e00: 20 24 73 71 6c 0a 23 20 20 20 20 20 22 0a 23 20   $sql.#     ".# 
6e10: 20 20 20 20 73 65 74 20 66 64 20 5b 6f 70 65 6e      set fd [open
6e20: 20 74 65 73 74 2e 64 62 2d 6a 6f 75 72 6e 61 6c   test.db-journal
6e30: 20 77 5d 0a 23 20 20 20 20 20 70 75 74 73 20 24   w].#     puts $
6e40: 66 64 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61  fd [string repea
6e50: 74 20 31 32 33 34 35 36 37 38 39 30 20 31 30 30  t 1234567890 100
6e60: 30 30 30 5d 0a 23 20 20 20 20 20 63 6c 6f 73 65  000].#     close
6e70: 20 24 66 64 0a 23 20 20 20 20 20 65 76 61 6c 20   $fd.#     eval 
6e80: 73 61 5f 63 72 61 73 68 73 71 6c 20 24 6f 70 74  sa_crashsql $opt
6e90: 69 6f 6e 73 0a 23 20 20 20 7d 0a 23 20 7d 20 2d  ions.#   }.# } -
6ea0: 73 68 75 74 64 6f 77 6e 20 7b 0a 23 20 20 20 72  shutdown {.#   r
6eb0: 65 6e 61 6d 65 20 63 72 61 73 68 73 71 6c 20 7b  ename crashsql {
6ec0: 7d 0a 23 20 20 20 72 65 6e 61 6d 65 20 73 61 5f  }.#   rename sa_
6ed0: 63 72 61 73 68 73 71 6c 20 63 72 61 73 68 73 71  crashsql crashsq
6ee0: 6c 0a 23 20 7d 20 2d 66 69 6c 65 73 20 63 72 61  l.# } -files cra
6ef0: 73 68 2e 74 65 73 74 0a 0a 74 65 73 74 5f 73 75  sh.test..test_su
6f00: 69 74 65 20 22 73 61 66 65 5f 61 70 70 65 6e 64  ite "safe_append
6f10: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
6f20: 0a 20 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74  .  Run some test
6f30: 73 20 6f 6e 20 61 20 53 41 46 45 5f 41 50 50 45  s on a SAFE_APPE
6f40: 4e 44 20 66 69 6c 65 2d 73 79 73 74 65 6d 2e 0a  ND file-system..
6f50: 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a  } -initialize {.
6f60: 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65 34    rename sqlite4
6f70: 20 73 71 6c 69 74 65 34 5f 73 61 66 65 61 70 70   sqlite4_safeapp
6f80: 65 6e 64 0a 20 20 70 72 6f 63 20 73 71 6c 69 74  end.  proc sqlit
6f90: 65 34 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20  e4 {args} {.    
6fa0: 69 66 20 7b 5b 73 74 72 69 6e 67 20 72 61 6e 67  if {[string rang
6fb0: 65 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20  e [lindex $args 
6fc0: 30 5d 20 30 20 30 5d 20 6e 65 20 22 2d 22 7d 20  0] 0 0] ne "-"} 
6fd0: 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20  {.      lappend 
6fe0: 61 72 67 73 20 2d 76 66 73 20 64 65 76 73 79 6d  args -vfs devsym
6ff0: 0a 20 20 20 20 7d 0a 20 20 20 20 75 70 6c 65 76  .    }.    uplev
7000: 65 6c 20 5b 63 6f 6e 63 61 74 20 73 71 6c 69 74  el [concat sqlit
7010: 65 34 5f 73 61 66 65 61 70 70 65 6e 64 20 24 61  e4_safeappend $a
7020: 72 67 73 5d 0a 20 20 7d 0a 20 20 73 71 6c 69 74  rgs].  }.  sqlit
7030: 65 34 5f 73 69 6d 75 6c 61 74 65 5f 64 65 76 69  e4_simulate_devi
7040: 63 65 20 2d 63 68 61 72 20 73 61 66 65 5f 61 70  ce -char safe_ap
7050: 70 65 6e 64 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  pend.} -shutdown
7060: 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69   {.  rename sqli
7070: 74 65 34 20 7b 7d 0a 20 20 72 65 6e 61 6d 65 20  te4 {}.  rename 
7080: 73 71 6c 69 74 65 34 5f 73 68 75 74 64 6f 77 6e  sqlite4_shutdown
7090: 20 73 71 6c 69 74 65 34 0a 7d 20 2d 66 69 6c 65   sqlite4.} -file
70a0: 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24  s [.  test_set $
70b0: 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20  ::allquicktests 
70c0: 73 68 61 72 65 64 5f 65 72 72 2e 74 65 73 74 20  shared_err.test 
70d0: 2d 65 78 63 6c 75 64 65 20 61 73 79 6e 63 33 2e  -exclude async3.
70e0: 74 65 73 74 0a 5d 0a 0a 23 20 54 68 65 20 73 65  test.]..# The se
70f0: 74 20 6f 66 20 74 65 73 74 73 20 74 6f 20 72 75  t of tests to ru
7100: 6e 20 6f 6e 20 74 68 65 20 61 6c 74 65 72 6e 61  n on the alterna
7110: 74 69 76 65 2d 70 63 61 63 68 65 0a 73 65 74 20  tive-pcache.set 
7120: 70 65 72 6d 2d 61 6c 74 2d 70 63 61 63 68 65 2d  perm-alt-pcache-
7130: 74 65 73 74 73 65 74 20 7b 0a 20 20 61 73 79 6e  testset {.  asyn
7140: 63 2e 74 65 73 74 0a 20 20 61 74 74 61 63 68 2e  c.test.  attach.
7150: 74 65 73 74 0a 20 20 64 65 6c 65 74 65 2e 74 65  test.  delete.te
7160: 73 74 20 64 65 6c 65 74 65 32 2e 74 65 73 74 0a  st delete2.test.
7170: 20 20 69 6e 64 65 78 2e 74 65 73 74 0a 20 20 69    index.test.  i
7180: 6e 73 65 72 74 2e 74 65 73 74 20 69 6e 73 65 72  nsert.test inser
7190: 74 32 2e 74 65 73 74 0a 20 20 6a 6f 69 6e 2e 74  t2.test.  join.t
71a0: 65 73 74 20 6a 6f 69 6e 32 2e 74 65 73 74 0a 20  est join2.test. 
71b0: 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 0a 20   rollback.test. 
71c0: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20 73 65   select1.test se
71d0: 6c 65 63 74 32 2e 74 65 73 74 0a 20 20 74 72 61  lect2.test.  tra
71e0: 6e 73 2e 74 65 73 74 0a 20 20 75 70 64 61 74 65  ns.test.  update
71f0: 2e 74 65 73 74 0a 7d 0a 0a 66 6f 72 65 61 63 68  .test.}..foreach
7200: 20 64 69 73 63 61 72 64 5f 72 61 74 65 20 7b 30   discard_rate {0
7210: 20 31 30 20 35 30 20 39 30 20 31 30 30 7d 20 7b   10 50 90 100} {
7220: 0a 20 20 74 65 73 74 5f 73 75 69 74 65 20 22 70  .  test_suite "p
7230: 63 61 63 68 65 24 7b 64 69 73 63 61 72 64 5f 72  cache${discard_r
7240: 61 74 65 7d 22 20 2d 64 65 73 63 72 69 70 74 69  ate}" -descripti
7250: 6f 6e 20 22 0a 20 20 20 20 41 6c 74 65 72 6e 61  on ".    Alterna
7260: 74 69 76 65 20 70 63 61 63 68 65 20 69 6d 70 6c  tive pcache impl
7270: 65 6d 65 6e 74 61 74 69 6f 6e 20 77 69 74 68 20  ementation with 
7280: 24 7b 64 69 73 63 61 72 64 5f 72 61 74 65 7d 25  ${discard_rate}%
7290: 20 72 61 6e 64 6f 6d 20 64 69 73 63 61 72 64 0a   random discard.
72a0: 20 20 22 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20    " -initialize 
72b0: 22 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62 20  ".    catch {db 
72c0: 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74  close}.    sqlit
72d0: 65 34 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20  e4_shutdown.    
72e0: 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f 61  sqlite4_config_a
72f0: 6c 74 5f 70 63 61 63 68 65 20 31 20 24 64 69 73  lt_pcache 1 $dis
7300: 63 61 72 64 5f 72 61 74 65 20 31 0a 20 20 20 20  card_rate 1.    
7310: 73 71 6c 69 74 65 34 5f 69 6e 69 74 69 61 6c 69  sqlite4_initiali
7320: 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61  ze.    autoinsta
7330: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
7340: 73 0a 20 20 22 20 2d 73 68 75 74 64 6f 77 6e 20  s.  " -shutdown 
7350: 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62 20  {.    catch {db 
7360: 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74  close}.    sqlit
7370: 65 34 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20  e4_shutdown.    
7380: 73 71 6c 69 74 65 34 5f 63 6f 6e 66 69 67 5f 61  sqlite4_config_a
7390: 6c 74 5f 70 63 61 63 68 65 20 30 20 30 20 30 0a  lt_pcache 0 0 0.
73a0: 20 20 20 20 73 71 6c 69 74 65 34 5f 63 6f 6e 66      sqlite4_conf
73b0: 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30  ig_lookaside 100
73c0: 20 35 30 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c   500.    install
73d0: 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d  _malloc_faultsim
73e0: 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65 34 5f   1 .    sqlite4_
73f0: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61  initialize.    a
7400: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
7410: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 66  functions.  } -f
7420: 69 6c 65 73 20 24 7b 70 65 72 6d 2d 61 6c 74 2d  iles ${perm-alt-
7430: 70 63 61 63 68 65 2d 74 65 73 74 73 65 74 7d 0a  pcache-testset}.
7440: 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6a  }..test_suite "j
7450: 6f 75 72 6e 61 6c 74 65 73 74 22 20 2d 64 65 73  ournaltest" -des
7460: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 43 68 65  cription {.  Che
7470: 63 6b 20 74 68 61 74 20 70 61 67 65 73 20 61 72  ck that pages ar
7480: 65 20 73 79 6e 63 65 64 20 62 65 66 6f 72 65 20  e synced before 
7490: 62 65 69 6e 67 20 77 72 69 74 74 65 6e 20 28 74  being written (t
74a0: 65 73 74 5f 6a 6f 75 72 6e 61 6c 2e 63 29 2e 0a  est_journal.c)..
74b0: 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a  } -initialize {.
74c0: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
74d0: 65 7d 0a 20 20 72 65 67 69 73 74 65 72 5f 6a 74  e}.  register_jt
74e0: 5f 76 66 73 20 2d 64 65 66 61 75 6c 74 20 22 22  _vfs -default ""
74f0: 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20  .} -shutdown {. 
7500: 20 75 6e 72 65 67 69 73 74 65 72 5f 6a 74 5f 76   unregister_jt_v
7510: 66 73 0a 7d 20 2d 66 69 6c 65 73 20 5b 74 65 73  fs.} -files [tes
7520: 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63  t_set $::allquic
7530: 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20  ktests -exclude 
7540: 7b 0a 20 20 77 61 6c 2a 20 69 6e 63 72 76 61 63  {.  wal* incrvac
7550: 75 75 6d 2e 74 65 73 74 20 69 6f 65 72 72 2e 74  uum.test ioerr.t
7560: 65 73 74 20 63 6f 72 72 75 70 74 34 2e 74 65 73  est corrupt4.tes
7570: 74 20 69 6f 2e 74 65 73 74 20 63 72 61 73 68 38  t io.test crash8
7580: 2e 74 65 73 74 20 0a 20 20 61 73 79 6e 63 34 2e  .test .  async4.
7590: 74 65 73 74 20 62 69 67 66 69 6c 65 2e 74 65 73  test bigfile.tes
75a0: 74 20 62 61 63 6b 63 6f 6d 70 61 74 2e 74 65 73  t backcompat.tes
75b0: 74 0a 7d 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65  t.}]..test_suite
75c0: 20 22 77 61 6c 22 20 2d 64 65 73 63 72 69 70 74   "wal" -descript
75d0: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74  ion {.  Run test
75e0: 73 20 77 69 74 68 20 6a 6f 75 72 6e 61 6c 5f 6d  s with journal_m
75f0: 6f 64 65 3d 57 41 4c 0a 7d 20 2d 69 6e 69 74 69  ode=WAL.} -initi
7600: 61 6c 69 7a 65 20 7b 0a 20 20 73 65 74 20 3a 3a  alize {.  set ::
7610: 47 28 73 61 76 65 70 6f 69 6e 74 36 5f 69 74 65  G(savepoint6_ite
7620: 72 61 74 69 6f 6e 73 29 20 31 30 30 0a 7d 20 2d  rations) 100.} -
7630: 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 75 6e 73  shutdown {.  uns
7640: 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 3a  et -nocomplain :
7650: 3a 47 28 73 61 76 65 70 6f 69 6e 74 36 5f 69 74  :G(savepoint6_it
7660: 65 72 61 74 69 6f 6e 73 29 0a 7d 20 2d 66 69 6c  erations).} -fil
7670: 65 73 20 7b 0a 20 20 73 61 76 65 70 6f 69 6e 74  es {.  savepoint
7680: 2e 74 65 73 74 20 20 20 20 20 73 61 76 65 70 6f  .test     savepo
7690: 69 6e 74 32 2e 74 65 73 74 20 20 20 20 20 73 61  int2.test     sa
76a0: 76 65 70 6f 69 6e 74 36 2e 74 65 73 74 0a 20 20  vepoint6.test.  
76b0: 74 72 61 6e 73 2e 74 65 73 74 20 20 20 20 20 20  trans.test      
76c0: 20 20 20 61 76 74 72 61 6e 73 2e 74 65 73 74 0a     avtrans.test.
76d0: 0a 20 20 66 74 73 33 61 61 2e 74 65 73 74 20 20  .  fts3aa.test  
76e0: 66 74 73 33 61 62 2e 74 65 73 74 20 20 66 74 73  fts3ab.test  fts
76f0: 33 61 63 2e 74 65 73 74 20 20 66 74 73 33 61 64  3ac.test  fts3ad
7700: 2e 74 65 73 74 0a 20 20 66 74 73 33 61 65 2e 74  .test.  fts3ae.t
7710: 65 73 74 20 20 66 74 73 33 61 66 2e 74 65 73 74  est  fts3af.test
7720: 20 20 66 74 73 33 61 67 2e 74 65 73 74 20 20 66    fts3ag.test  f
7730: 74 73 33 61 68 2e 74 65 73 74 0a 20 20 66 74 73  ts3ah.test.  fts
7740: 33 61 69 2e 74 65 73 74 20 20 66 74 73 33 61 6a  3ai.test  fts3aj
7750: 2e 74 65 73 74 20 20 66 74 73 33 61 6b 2e 74 65  .test  fts3ak.te
7760: 73 74 20 20 66 74 73 33 61 6c 2e 74 65 73 74 0a  st  fts3al.test.
7770: 20 20 66 74 73 33 61 6d 2e 74 65 73 74 20 20 66    fts3am.test  f
7780: 74 73 33 61 6e 2e 74 65 73 74 20 20 66 74 73 33  ts3an.test  fts3
7790: 61 6f 2e 74 65 73 74 20 20 66 74 73 33 62 2e 74  ao.test  fts3b.t
77a0: 65 73 74 0a 20 20 66 74 73 33 63 2e 74 65 73 74  est.  fts3c.test
77b0: 20 20 20 66 74 73 33 64 2e 74 65 73 74 20 20 20     fts3d.test   
77c0: 66 74 73 33 65 2e 74 65 73 74 20 20 20 66 74 73  fts3e.test   fts
77d0: 33 71 75 65 72 79 2e 74 65 73 74 20 0a 7d 0a 0a  3query.test .}..
77e0: 74 65 73 74 5f 73 75 69 74 65 20 22 72 74 72 65  test_suite "rtre
77f0: 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  e" -description 
7800: 7b 0a 20 20 41 6c 6c 20 52 2d 74 72 65 65 20 72  {.  All R-tree r
7810: 65 6c 61 74 65 64 20 74 65 73 74 73 2e 20 50 72  elated tests. Pr
7820: 6f 76 69 64 65 73 20 63 6f 76 65 72 61 67 65 20  ovides coverage 
7830: 6f 66 20 73 6f 75 72 63 65 20 66 69 6c 65 20 72  of source file r
7840: 74 72 65 65 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73  tree.c..} -files
7850: 20 5b 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61   [glob -nocompla
7860: 69 6e 20 24 3a 3a 74 65 73 74 64 69 72 2f 2e 2e  in $::testdir/..
7870: 2f 65 78 74 2f 72 74 72 65 65 2f 2a 2e 74 65 73  /ext/rtree/*.tes
7880: 74 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  t]..test_suite "
7890: 6e 6f 5f 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22  no_optimization"
78a0: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
78b0: 20 20 52 75 6e 20 74 65 73 74 20 73 63 72 69 70    Run test scrip
78c0: 74 73 20 77 69 74 68 20 6f 70 74 69 6d 69 7a 61  ts with optimiza
78d0: 74 69 6f 6e 73 20 64 69 73 61 62 6c 65 64 20 75  tions disabled u
78e0: 73 69 6e 67 20 74 68 65 0a 20 20 73 71 6c 69 74  sing the.  sqlit
78f0: 65 34 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28  e4_test_control(
7900: 53 51 4c 49 54 45 34 5f 54 45 53 54 43 54 52 4c  SQLITE4_TESTCTRL
7910: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 53 29 20  _OPTIMIZATIONS) 
7920: 69 6e 74 65 72 66 61 63 65 2e 0a 7d 20 2d 66 69  interface..} -fi
7930: 6c 65 73 20 7b 0a 20 20 77 68 65 72 65 2e 74 65  les {.  where.te
7940: 73 74 20 77 68 65 72 65 32 2e 74 65 73 74 20 77  st where2.test w
7950: 68 65 72 65 33 2e 74 65 73 74 20 77 68 65 72 65  here3.test where
7960: 34 2e 74 65 73 74 20 77 68 65 72 65 35 2e 74 65  4.test where5.te
7970: 73 74 0a 20 20 77 68 65 72 65 36 2e 74 65 73 74  st.  where6.test
7980: 20 77 68 65 72 65 37 2e 74 65 73 74 20 77 68 65   where7.test whe
7990: 72 65 38 2e 74 65 73 74 20 77 68 65 72 65 39 2e  re8.test where9.
79a0: 74 65 73 74 0a 20 20 77 68 65 72 65 41 2e 74 65  test.  whereA.te
79b0: 73 74 20 77 68 65 72 65 42 2e 74 65 73 74 20 77  st whereB.test w
79c0: 68 65 72 65 6c 69 6d 69 74 2e 74 65 73 74 0a 20  herelimit.test. 
79d0: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20 73 65   select1.test se
79e0: 6c 65 63 74 32 2e 74 65 73 74 20 73 65 6c 65 63  lect2.test selec
79f0: 74 33 2e 74 65 73 74 20 73 65 6c 65 63 74 34 2e  t3.test select4.
7a00: 74 65 73 74 20 73 65 6c 65 63 74 35 2e 74 65 73  test select5.tes
7a10: 74 0a 20 20 73 65 6c 65 63 74 37 2e 74 65 73 74  t.  select7.test
7a20: 20 73 65 6c 65 63 74 38 2e 74 65 73 74 20 73 65   select8.test se
7a30: 6c 65 63 74 41 2e 74 65 73 74 20 73 65 6c 65 63  lectA.test selec
7a40: 74 43 2e 74 65 73 74 0a 7d 20 2d 64 62 63 6f 6e  tC.test.} -dbcon
7a50: 66 69 67 20 7b 0a 20 20 6f 70 74 69 6d 69 7a 61  fig {.  optimiza
7a60: 74 69 6f 6e 5f 63 6f 6e 74 72 6f 6c 20 24 3a 3a  tion_control $::
7a70: 64 62 68 61 6e 64 6c 65 20 61 6c 6c 20 30 0a 7d  dbhandle all 0.}
7a80: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 70 72  ..test_suite "pr
7a90: 65 70 61 72 65 22 20 2d 64 65 73 63 72 69 70 74  epare" -descript
7aa0: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74  ion {.  Run test
7ab0: 73 20 77 69 74 68 20 74 68 65 20 64 62 20 63 6f  s with the db co
7ac0: 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67 20 73  nnection using s
7ad0: 71 6c 69 74 65 34 5f 70 72 65 70 61 72 65 28 29  qlite4_prepare()
7ae0: 20 69 6e 73 74 65 61 64 20 6f 66 20 5f 76 32 28   instead of _v2(
7af0: 29 2e 0a 7d 20 2d 64 62 63 6f 6e 66 69 67 20 7b  )..} -dbconfig {
7b00: 0a 20 20 64 62 5f 75 73 65 5f 6c 65 67 61 63 79  .  db_use_legacy
7b10: 5f 70 72 65 70 61 72 65 20 24 3a 3a 64 62 68 61  _prepare $::dbha
7b20: 6e 64 6c 65 20 31 0a 20 20 23 24 3a 3a 64 62 68  ndle 1.  #$::dbh
7b30: 61 6e 64 6c 65 20 63 61 63 68 65 20 73 69 7a 65  andle cache size
7b40: 20 30 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20   0.} -files [.  
7b50: 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69  test_set $allqui
7b60: 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  cktests -exclude
7b70: 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72   *malloc* *ioerr
7b80: 2a 20 2a 66 61 75 6c 74 2a 0a 5d 0a 0a 23 20 45  * *fault*.]..# E
7b90: 6e 64 20 6f 66 20 74 65 73 74 73 0a 23 23 23 23  nd of tests.####
7ba0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7bb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7bc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7bd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7be0: 23 23 23 23 23 23 23 23 23 0a 0a 23 20 72 75 6e  #########..# run
7bf0: 5f 74 65 73 74 73 20 4e 41 4d 45 20 4f 50 54 49  _tests NAME OPTI
7c00: 4f 4e 53 0a 23 0a 23 20 77 68 65 72 65 20 61 76  ONS.#.# where av
7c10: 61 69 6c 61 62 6c 65 20 6f 70 74 69 6f 6e 73 20  ailable options 
7c20: 61 72 65 3a 20 20 0a 23 0a 23 20 20 20 20 20 20  are:  .#.#      
7c30: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 54 49   -description TI
7c40: 54 4c 45 0a 23 20 20 20 20 20 20 20 2d 69 6e 69  TLE.#       -ini
7c50: 74 69 61 6c 69 7a 65 20 20 53 43 52 49 50 54 0a  tialize  SCRIPT.
7c60: 23 20 20 20 20 20 20 20 2d 73 68 75 74 64 6f 77  #       -shutdow
7c70: 6e 20 20 20 20 53 43 52 49 50 54 0a 23 20 20 20  n    SCRIPT.#   
7c80: 20 20 20 20 2d 70 72 65 73 71 6c 20 20 20 20 20      -presql     
7c90: 20 53 51 4c 0a 23 20 20 20 20 20 20 20 2d 66 69   SQL.#       -fi
7ca0: 6c 65 73 20 20 20 20 20 20 20 4c 49 53 54 2d 4f  les       LIST-O
7cb0: 46 2d 46 49 4c 45 53 0a 23 20 20 20 20 20 20 20  F-FILES.#       
7cc0: 2d 70 72 65 66 69 78 20 20 20 20 20 20 4e 41 4d  -prefix      NAM
7cd0: 45 0a 23 0a 70 72 6f 63 20 72 75 6e 5f 74 65 73  E.#.proc run_tes
7ce0: 74 73 20 7b 6e 61 6d 65 20 61 72 67 73 7d 20 7b  ts {name args} {
7cf0: 0a 20 20 61 72 72 61 79 20 73 65 74 20 6f 70 74  .  array set opt
7d00: 69 6f 6e 73 20 24 61 72 67 73 0a 0a 20 20 73 65  ions $args..  se
7d10: 74 20 3a 3a 47 28 70 65 72 6d 3a 6e 61 6d 65 29  t ::G(perm:name)
7d20: 20 20 20 20 20 20 20 20 20 24 6e 61 6d 65 0a 20           $name. 
7d30: 20 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72   set ::G(perm:pr
7d40: 65 66 69 78 29 20 20 20 20 20 20 20 24 6f 70 74  efix)       $opt
7d50: 69 6f 6e 73 28 2d 70 72 65 66 69 78 29 0a 20 20  ions(-prefix).  
7d60: 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65  set ::G(perm:pre
7d70: 73 71 6c 29 20 20 20 20 20 20 20 24 6f 70 74 69  sql)       $opti
7d80: 6f 6e 73 28 2d 70 72 65 73 71 6c 29 0a 20 20 73  ons(-presql).  s
7d90: 65 74 20 3a 3a 47 28 69 73 71 75 69 63 6b 29 20  et ::G(isquick) 
7da0: 20 20 20 20 20 20 20 20 20 20 31 0a 20 20 73 65            1.  se
7db0: 74 20 3a 3a 47 28 70 65 72 6d 3a 64 62 63 6f 6e  t ::G(perm:dbcon
7dc0: 66 69 67 29 20 20 20 20 20 24 6f 70 74 69 6f 6e  fig)     $option
7dd0: 73 28 2d 64 62 63 6f 6e 66 69 67 29 0a 0a 20 20  s(-dbconfig)..  
7de0: 75 70 6c 65 76 65 6c 20 24 6f 70 74 69 6f 6e 73  uplevel $options
7df0: 28 2d 69 6e 69 74 69 61 6c 69 7a 65 29 0a 0a 20  (-initialize).. 
7e00: 20 66 6f 72 65 61 63 68 20 66 69 6c 65 20 5b 6c   foreach file [l
7e10: 73 6f 72 74 20 24 6f 70 74 69 6f 6e 73 28 2d 66  sort $options(-f
7e20: 69 6c 65 73 29 5d 20 7b 0a 20 20 20 20 69 66 20  iles)] {.    if 
7e30: 7b 5b 66 69 6c 65 20 74 61 69 6c 20 24 66 69 6c  {[file tail $fil
7e40: 65 5d 20 3d 3d 20 24 66 69 6c 65 7d 20 7b 20 73  e] == $file} { s
7e50: 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f  et file [file jo
7e60: 69 6e 20 24 3a 3a 74 65 73 74 64 69 72 20 24 66  in $::testdir $f
7e70: 69 6c 65 5d 20 7d 0a 20 20 20 20 73 6c 61 76 65  ile] }.    slave
7e80: 5f 74 65 73 74 5f 66 69 6c 65 20 24 66 69 6c 65  _test_file $file
7e90: 0a 20 20 7d 0a 0a 20 20 75 70 6c 65 76 65 6c 20  .  }..  uplevel 
7ea0: 24 6f 70 74 69 6f 6e 73 28 2d 73 68 75 74 64 6f  $options(-shutdo
7eb0: 77 6e 29 0a 0a 20 20 75 6e 73 65 74 20 3a 3a 47  wn)..  unset ::G
7ec0: 28 70 65 72 6d 3a 6e 61 6d 65 29 0a 20 20 75 6e  (perm:name).  un
7ed0: 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65  set ::G(perm:pre
7ee0: 66 69 78 29 0a 20 20 75 6e 73 65 74 20 3a 3a 47  fix).  unset ::G
7ef0: 28 70 65 72 6d 3a 70 72 65 73 71 6c 29 0a 20 20  (perm:presql).  
7f00: 75 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 64  unset ::G(perm:d
7f10: 62 63 6f 6e 66 69 67 29 0a 7d 0a 0a 70 72 6f 63  bconfig).}..proc
7f20: 20 72 75 6e 5f 74 65 73 74 5f 73 75 69 74 65 20   run_test_suite 
7f30: 7b 6e 61 6d 65 7d 20 7b 0a 20 20 69 66 20 7b 5b  {name} {.  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 6e 61 6d 65 29 5d 3d 3d  stspec($name)]==
7f60: 30 7d 20 7b 0a 20 20 20 20 65 72 72 6f 72 20 22  0} {.    error "
7f70: 4e 6f 20 73 75 63 68 20 74 65 73 74 20 73 75 69  No such test sui
7f80: 74 65 3a 20 24 6e 61 6d 65 22 0a 20 20 7d 0a 20  te: $name".  }. 
7f90: 20 75 70 6c 65 76 65 6c 20 72 75 6e 5f 74 65 73   uplevel run_tes
7fa0: 74 73 20 24 6e 61 6d 65 20 24 3a 3a 74 65 73 74  ts $name $::test
7fb0: 73 70 65 63 28 24 6e 61 6d 65 29 0a 7d 0a 0a 70  spec($name).}..p
7fc0: 72 6f 63 20 68 65 6c 70 20 7b 7d 20 7b 0a 20 20  roc help {} {.  
7fd0: 70 75 74 73 20 22 55 73 61 67 65 3a 20 24 3a 3a  puts "Usage: $::
7fe0: 61 72 67 76 30 20 54 45 53 54 53 55 49 54 45 20  argv0 TESTSUITE 
7ff0: 3f 54 45 53 54 46 49 4c 45 3f 22 0a 20 20 70 75  ?TESTFILE?".  pu
8000: 74 73 20 22 22 0a 20 20 70 75 74 73 20 22 41 76  ts "".  puts "Av
8010: 61 69 6c 61 62 6c 65 20 74 65 73 74 2d 73 75 69  ailable test-sui
8020: 74 65 73 20 61 72 65 3a 22 0a 20 20 66 6f 72 65  tes are:".  fore
8030: 61 63 68 20 6b 20 24 3a 3a 74 65 73 74 73 75 69  ach k $::testsui
8040: 74 65 6c 69 73 74 20 7b 0a 20 20 20 20 69 66 20  telist {.    if 
8050: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a  {[info exists ::
8060: 74 65 73 74 73 70 65 63 28 24 6b 29 5d 3d 3d 30  testspec($k)]==0
8070: 7d 20 7b 0a 20 20 20 20 20 20 70 75 74 73 20 22  } {.      puts "
8080: 20 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d           -------
8090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
80a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
80b0: 2d 22 0a 20 20 20 20 20 20 70 75 74 73 20 22 22  -".      puts ""
80c0: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20  .    } else {.  
80d0: 20 20 20 20 61 72 72 61 79 20 73 65 74 20 6f 20      array set o 
80e0: 24 3a 3a 74 65 73 74 73 70 65 63 28 24 6b 29 0a  $::testspec($k).
80f0: 20 20 20 20 20 20 70 75 74 73 20 22 54 65 73 74        puts "Test
8100: 20 73 75 69 74 65 3a 20 5c 22 24 6b 5c 22 22 0a   suite: \"$k\"".
8110: 20 20 20 20 20 20 73 65 74 20 64 20 5b 73 74 72        set d [str
8120: 69 6e 67 20 74 72 69 6d 20 24 6f 28 2d 64 65 73  ing trim $o(-des
8130: 63 72 69 70 74 69 6f 6e 29 5d 0a 20 20 20 20 20  cription)].     
8140: 20 73 65 74 20 64 20 5b 72 65 67 73 75 62 20 7b   set d [regsub {
8150: 5c 6e 20 2a 7d 20 24 64 20 22 5c 6e 20 20 22 5d  \n *} $d "\n  "]
8160: 0a 20 20 20 20 20 20 70 75 74 73 20 22 20 20 24  .      puts "  $
8170: 64 22 0a 20 20 20 20 20 20 70 75 74 73 20 22 22  d".      puts ""
8180: 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 65 78 69  .    }.  }.  exi
8190: 74 20 2d 31 0a 7d 0a 0a 69 66 20 7b 5b 69 6e 66  t -1.}..if {[inf
81a0: 6f 20 73 63 72 69 70 74 5d 20 3d 3d 20 24 61 72  o script] == $ar
81b0: 67 76 30 7d 20 7b 0a 20 20 70 72 6f 63 20 6d 61  gv0} {.  proc ma
81c0: 69 6e 20 7b 61 72 67 76 7d 20 7b 0a 20 20 20 20  in {argv} {.    
81d0: 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72  if {[llength $ar
81e0: 67 76 5d 3d 3d 30 7d 20 7b 0a 20 20 20 20 20 20  gv]==0} {.      
81f0: 68 65 6c 70 0a 20 20 20 20 7d 20 65 6c 73 65 20  help.    } else 
8200: 7b 0a 20 20 20 20 20 20 73 65 74 20 73 75 69 74  {.      set suit
8210: 65 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20  e [lindex $argv 
8220: 30 5d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69 6e  0].      if {[in
8230: 66 6f 20 65 78 69 73 74 73 20 3a 3a 74 65 73 74  fo exists ::test
8240: 73 70 65 63 28 24 73 75 69 74 65 29 5d 3d 3d 30  spec($suite)]==0
8250: 7d 20 68 65 6c 70 0a 20 20 20 20 20 20 73 65 74  } help.      set
8260: 20 65 78 74 72 61 20 22 22 0a 20 20 20 20 20 20   extra "".      
8270: 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72  if {[llength $ar
8280: 67 76 5d 3e 31 7d 20 7b 20 73 65 74 20 65 78 74  gv]>1} { set ext
8290: 72 61 20 5b 6c 69 73 74 20 2d 66 69 6c 65 73 20  ra [list -files 
82a0: 5b 6c 72 61 6e 67 65 20 24 61 72 67 76 20 31 20  [lrange $argv 1 
82b0: 65 6e 64 5d 5d 20 7d 0a 20 20 20 20 20 20 65 76  end]] }.      ev
82c0: 61 6c 20 72 75 6e 5f 74 65 73 74 73 20 24 73 75  al run_tests $su
82d0: 69 74 65 20 24 3a 3a 74 65 73 74 73 70 65 63 28  ite $::testspec(
82e0: 24 73 75 69 74 65 29 20 24 65 78 74 72 61 0a 20  $suite) $extra. 
82f0: 20 20 20 7d 0a 20 20 7d 0a 20 20 6d 61 69 6e 20     }.  }.  main 
8300: 24 61 72 67 76 0a 20 20 66 69 6e 69 73 68 5f 74  $argv.  finish_t
8310: 65 73 74 0a 7d 0a                                est.}.