/ Hex Artifact Content
Login

Artifact cef25f5e8499a15846eccd06785f17f4180407ab:


0000: 23 20 32 30 30 38 20 4a 75 6e 65 20 32 31 0a 23  # 2008 June 21.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  you give..#.#***
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 0a 23 0a 0a 73 65 74 20 74 65 73 74  ****.#..set test
0170: 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d  dir [file dirnam
0180: 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65  e $argv0].source
0190: 20 24 74 65 73 74 64 69 72 2f 74 65 73 74 65 72   $testdir/tester
01a0: 2e 74 63 6c 0a 64 62 20 63 6c 6f 73 65 0a 0a 23  .tcl.db close..#
01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 74 65 73 74  ---------.# test
0200: 5f 73 75 69 74 65 20 4e 41 4d 45 20 4f 50 54 49  _suite NAME OPTI
0210: 4f 4e 53 0a 23 0a 23 20 77 68 65 72 65 20 61 76  ONS.#.# where av
0220: 61 69 6c 61 62 6c 65 20 6f 70 74 69 6f 6e 73 20  ailable options 
0230: 61 72 65 3a 20 20 0a 23 0a 23 20 20 20 20 20 20  are:  .#.#      
0240: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 54 49   -description TI
0250: 54 4c 45 20 20 20 20 20 20 20 20 20 20 20 20 20  TLE             
0260: 20 20 20 20 20 28 64 65 66 61 75 6c 74 20 22 22       (default ""
0270: 29 0a 23 20 20 20 20 20 20 20 2d 69 6e 69 74 69  ).#       -initi
0280: 61 6c 69 7a 65 20 20 53 43 52 49 50 54 20 20 20  alize  SCRIPT   
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64                (d
02a0: 65 66 61 75 6c 74 20 22 22 29 0a 23 20 20 20 20  efault "").#    
02b0: 20 20 20 2d 73 68 75 74 64 6f 77 6e 20 20 20 20     -shutdown    
02c0: 53 43 52 49 50 54 20 20 20 20 20 20 20 20 20 20  SCRIPT          
02d0: 20 20 20 20 20 20 20 28 64 65 66 61 75 6c 74 20         (default 
02e0: 22 22 29 0a 23 20 20 20 20 20 20 20 2d 70 72 65  "").#       -pre
02f0: 73 71 6c 20 20 20 20 20 20 53 51 4c 20 20 20 20  sql      SQL    
0300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0310: 28 64 65 66 61 75 6c 74 20 22 22 29 0a 23 20 20  (default "").#  
0320: 20 20 20 20 20 2d 66 69 6c 65 73 20 20 20 20 20       -files     
0330: 20 20 4c 49 53 54 2d 4f 46 2d 46 49 4c 45 53 20    LIST-OF-FILES 
0340: 20 20 20 20 20 20 20 20 20 28 64 65 66 61 75 6c           (defaul
0350: 74 20 24 3a 3a 41 4c 4c 54 45 53 54 53 29 0a 23  t $::ALLTESTS).#
0360: 20 20 20 20 20 20 20 2d 70 72 65 66 69 78 20 20         -prefix  
0370: 20 20 20 20 4e 41 4d 45 20 20 20 20 20 20 20 20      NAME        
0380: 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66 61             (defa
0390: 75 6c 74 20 22 24 3a 3a 4e 41 4d 45 2e 22 29 0a  ult "$::NAME.").
03a0: 23 20 20 20 20 20 20 20 2d 64 62 63 6f 6e 66 69  #       -dbconfi
03b0: 67 20 20 20 20 53 43 52 49 50 54 20 20 20 20 20  g    SCRIPT     
03c0: 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 66              (def
03d0: 61 75 6c 74 20 22 22 29 0a 23 0a 70 72 6f 63 20  ault "").#.proc 
03e0: 74 65 73 74 5f 73 75 69 74 65 20 7b 6e 61 6d 65  test_suite {name
03f0: 20 61 72 67 73 7d 20 7b 0a 0a 20 20 73 65 74 20   args} {..  set 
0400: 64 65 66 61 75 6c 74 28 2d 73 68 75 74 64 6f 77  default(-shutdow
0410: 6e 29 20 20 20 20 22 22 0a 20 20 73 65 74 20 64  n)    "".  set d
0420: 65 66 61 75 6c 74 28 2d 69 6e 69 74 69 61 6c 69  efault(-initiali
0430: 7a 65 29 20 20 22 22 0a 20 20 73 65 74 20 64 65  ze)  "".  set de
0440: 66 61 75 6c 74 28 2d 70 72 65 73 71 6c 29 20 20  fault(-presql)  
0450: 20 20 20 20 22 22 0a 20 20 73 65 74 20 64 65 66      "".  set def
0460: 61 75 6c 74 28 2d 64 65 73 63 72 69 70 74 69 6f  ault(-descriptio
0470: 6e 29 20 22 6e 6f 20 64 65 73 63 72 69 70 74 69  n) "no descripti
0480: 6f 6e 20 73 75 70 70 6c 69 65 64 20 28 66 69 78  on supplied (fix
0490: 6d 65 29 22 0a 20 20 73 65 74 20 64 65 66 61 75  me)".  set defau
04a0: 6c 74 28 2d 66 69 6c 65 73 29 20 20 20 20 20 20  lt(-files)      
04b0: 20 22 22 0a 20 20 73 65 74 20 64 65 66 61 75 6c   "".  set defaul
04c0: 74 28 2d 70 72 65 66 69 78 29 20 20 20 20 20 20  t(-prefix)      
04d0: 22 24 7b 6e 61 6d 65 7d 2e 22 0a 20 20 73 65 74  "${name}.".  set
04e0: 20 64 65 66 61 75 6c 74 28 2d 64 62 63 6f 6e 66   default(-dbconf
04f0: 69 67 29 20 20 20 20 22 22 0a 0a 20 20 61 72 72  ig)    ""..  arr
0500: 61 79 20 73 65 74 20 6f 70 74 69 6f 6e 73 20 5b  ay set options [
0510: 61 72 72 61 79 20 67 65 74 20 64 65 66 61 75 6c  array get defaul
0520: 74 5d 0a 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74  t].  if {[llengt
0530: 68 20 24 61 72 67 73 5d 25 32 7d 20 7b 0a 20 20  h $args]%2} {.  
0540: 20 20 65 72 72 6f 72 20 22 75 6e 65 76 65 6e 20    error "uneven 
0550: 6e 75 6d 62 65 72 20 6f 66 20 6f 70 74 69 6f 6e  number of option
0560: 73 2f 73 77 69 74 63 68 65 73 20 70 61 73 73 65  s/switches passe
0570: 64 20 74 6f 20 74 65 73 74 5f 73 75 69 74 65 22  d to test_suite"
0580: 0a 20 20 7d 0a 20 20 66 6f 72 65 61 63 68 20 7b  .  }.  foreach {
0590: 6b 20 76 7d 20 24 61 72 67 73 20 7b 0a 20 20 20  k v} $args {.   
05a0: 20 73 65 74 20 6f 20 5b 61 72 72 61 79 20 6e 61   set o [array na
05b0: 6d 65 73 20 6f 70 74 69 6f 6e 73 20 24 7b 6b 7d  mes options ${k}
05c0: 2a 5d 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e  *].    if {[llen
05d0: 67 74 68 20 24 6f 5d 3e 31 7d 20 20 7b 20 65 72  gth $o]>1}  { er
05e0: 72 6f 72 20 22 61 6d 62 69 67 75 6f 75 73 20 6f  ror "ambiguous o
05f0: 70 74 69 6f 6e 3a 20 24 6b 22 20 7d 0a 20 20 20  ption: $k" }.   
0600: 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6f   if {[llength $o
0610: 5d 3d 3d 30 7d 20 7b 20 65 72 72 6f 72 20 22 75  ]==0} { error "u
0620: 6e 6b 6e 6f 77 6e 20 6f 70 74 69 6f 6e 3a 20 24  nknown option: $
0630: 6b 22 20 7d 0a 20 20 20 20 73 65 74 20 6f 70 74  k" }.    set opt
0640: 69 6f 6e 73 28 5b 6c 69 6e 64 65 78 20 24 6f 20  ions([lindex $o 
0650: 30 5d 29 20 24 76 0a 20 20 7d 0a 0a 20 20 73 65  0]) $v.  }..  se
0660: 74 20 20 20 20 20 3a 3a 74 65 73 74 73 70 65 63  t     ::testspec
0670: 28 24 6e 61 6d 65 29 20 5b 61 72 72 61 79 20 67  ($name) [array g
0680: 65 74 20 6f 70 74 69 6f 6e 73 5d 0a 20 20 6c 61  et options].  la
0690: 70 70 65 6e 64 20 3a 3a 74 65 73 74 73 75 69 74  ppend ::testsuit
06a0: 65 6c 69 73 74 20 24 6e 61 6d 65 0a 7d 0a 0a 23  elist $name.}..#
06b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 74 65 73 74  ---------.# test
0700: 5f 73 65 74 20 41 52 47 53 2e 2e 2e 0a 23 0a 70  _set ARGS....#.p
0710: 72 6f 63 20 74 65 73 74 5f 73 65 74 20 7b 61 72  roc test_set {ar
0720: 67 73 7d 20 7b 0a 20 20 73 65 74 20 69 73 45 78  gs} {.  set isEx
0730: 63 6c 75 64 65 20 30 0a 20 20 66 6f 72 65 61 63  clude 0.  foreac
0740: 68 20 61 20 24 61 72 67 73 20 7b 0a 20 20 20 20  h a $args {.    
0750: 69 66 20 7b 5b 73 74 72 69 6e 67 20 6d 61 74 63  if {[string matc
0760: 68 20 2d 2a 20 24 61 5d 7d 20 7b 0a 20 20 20 20  h -* $a]} {.    
0770: 20 20 73 77 69 74 63 68 20 2d 2d 20 24 61 20 7b    switch -- $a {
0780: 0a 20 20 20 20 20 20 20 20 2d 69 6e 63 6c 75 64  .        -includ
0790: 65 20 7b 20 73 65 74 20 69 73 45 78 63 6c 75 64  e { set isExclud
07a0: 65 20 30 20 7d 0a 20 20 20 20 20 20 20 20 2d 65  e 0 }.        -e
07b0: 78 63 6c 75 64 65 20 7b 20 73 65 74 20 69 73 45  xclude { set isE
07c0: 78 63 6c 75 64 65 20 31 20 7d 0a 20 20 20 20 20  xclude 1 }.     
07d0: 20 20 20 64 65 66 61 75 6c 74 20 7b 0a 20 20 20     default {.   
07e0: 20 20 20 20 20 20 20 65 72 72 6f 72 20 22 55 6e         error "Un
07f0: 6b 6e 6f 77 6e 20 73 77 69 74 63 68 3a 20 24 61  known switch: $a
0800: 22 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ".        }.    
0810: 20 20 7d 0a 20 20 20 20 7d 20 65 6c 73 65 69 66    }.    } elseif
0820: 20 7b 24 69 73 45 78 63 6c 75 64 65 20 3d 3d 20   {$isExclude == 
0830: 30 7d 20 7b 0a 20 20 20 20 20 20 66 6f 72 65 61  0} {.      forea
0840: 63 68 20 66 20 24 61 20 7b 20 73 65 74 20 74 28  ch f $a { set t(
0850: 24 66 29 20 31 20 7d 0a 20 20 20 20 7d 20 65 6c  $f) 1 }.    } el
0860: 73 65 20 7b 0a 20 20 20 20 20 20 66 6f 72 65 61  se {.      forea
0870: 63 68 20 66 20 24 61 20 7b 20 61 72 72 61 79 20  ch f $a { array 
0880: 75 6e 73 65 74 20 74 20 24 66 20 7d 0a 20 20 20  unset t $f }.   
0890: 20 20 20 66 6f 72 65 61 63 68 20 66 20 24 61 20     foreach f $a 
08a0: 7b 20 61 72 72 61 79 20 75 6e 73 65 74 20 74 20  { array unset t 
08b0: 2a 2f 24 66 20 7d 0a 20 20 20 20 7d 0a 20 20 7d  */$f }.    }.  }
08c0: 0a 0a 20 20 72 65 74 75 72 6e 20 5b 61 72 72 61  ..  return [arra
08d0: 79 20 6e 61 6d 65 73 20 74 5d 0a 7d 0a 0a 23 2d  y names t].}..#-
08e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
08f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0900: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0910: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0920: 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 53 65 74 20 75  --------.# Set u
0930: 70 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  p the following 
0940: 67 6c 6f 62 61 6c 20 6c 69 73 74 20 76 61 72 69  global list vari
0950: 61 62 6c 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67  ables containing
0960: 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 0a 23   the names of .#
0970: 20 76 61 72 69 6f 75 73 20 74 65 73 74 20 73 63   various test sc
0980: 72 69 70 74 73 3a 0a 23 0a 23 20 20 20 24 61 6c  ripts:.#.#   $al
0990: 6c 74 65 73 74 73 0a 23 20 20 20 24 61 6c 6c 71  ltests.#   $allq
09a0: 75 69 63 6b 74 65 73 74 73 0a 23 0a 73 65 74 20  uicktests.#.set 
09b0: 61 6c 6c 74 65 73 74 73 20 5b 6c 69 73 74 5d 0a  alltests [list].
09c0: 66 6f 72 65 61 63 68 20 66 20 5b 67 6c 6f 62 20  foreach f [glob 
09d0: 24 74 65 73 74 64 69 72 2f 2a 2e 74 65 73 74 5d  $testdir/*.test]
09e0: 20 7b 20 6c 61 70 70 65 6e 64 20 61 6c 6c 74 65   { lappend allte
09f0: 73 74 73 20 5b 66 69 6c 65 20 74 61 69 6c 20 24  sts [file tail $
0a00: 66 5d 20 7d 0a 66 6f 72 65 61 63 68 20 66 20 5b  f] }.foreach f [
0a10: 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  glob -nocomplain
0a20: 20 24 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74   $testdir/../ext
0a30: 2f 72 74 72 65 65 2f 2a 2e 74 65 73 74 5d 20 7b  /rtree/*.test] {
0a40: 20 0a 20 20 6c 61 70 70 65 6e 64 20 61 6c 6c 74   .  lappend allt
0a50: 65 73 74 73 20 24 66 20 0a 7d 0a 0a 69 66 20 7b  ests $f .}..if {
0a60: 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28  $::tcl_platform(
0a70: 70 6c 61 74 66 6f 72 6d 29 21 3d 22 75 6e 69 78  platform)!="unix
0a80: 22 7d 20 7b 0a 20 20 73 65 74 20 61 6c 6c 74 65  "} {.  set allte
0a90: 73 74 73 20 5b 74 65 73 74 5f 73 65 74 20 24 61  sts [test_set $a
0aa0: 6c 6c 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  lltests -exclude
0ab0: 20 63 72 61 73 68 2e 74 65 73 74 20 63 72 61 73   crash.test cras
0ac0: 68 32 2e 74 65 73 74 5d 0a 7d 0a 73 65 74 20 61  h2.test].}.set a
0ad0: 6c 6c 74 65 73 74 73 20 5b 74 65 73 74 5f 73 65  lltests [test_se
0ae0: 74 20 24 61 6c 6c 74 65 73 74 73 20 2d 65 78 63  t $alltests -exc
0af0: 6c 75 64 65 20 7b 0a 20 20 61 6c 6c 2e 74 65 73  lude {.  all.tes
0b00: 74 20 20 20 20 20 20 20 20 61 73 79 6e 63 2e 74  t        async.t
0b10: 65 73 74 20 20 20 20 20 20 20 20 20 71 75 69 63  est         quic
0b20: 6b 2e 74 65 73 74 20 20 76 65 72 79 71 75 69 63  k.test  veryquic
0b30: 6b 2e 74 65 73 74 0a 20 20 6d 65 6d 6c 65 61 6b  k.test.  memleak
0b40: 2e 74 65 73 74 20 20 20 20 70 65 72 6d 75 74 61  .test    permuta
0b50: 74 69 6f 6e 73 2e 74 65 73 74 20 20 73 6f 61 6b  tions.test  soak
0b60: 2e 74 65 73 74 20 20 20 66 74 73 33 2e 74 65 73  .test   fts3.tes
0b70: 74 0a 20 20 6d 61 6c 6c 6f 63 41 6c 6c 2e 74 65  t.  mallocAll.te
0b80: 73 74 20 20 72 74 72 65 65 2e 74 65 73 74 20 20  st  rtree.test  
0b90: 20 20 20 20 20 20 20 66 75 6c 6c 2e 74 65 73 74         full.test
0ba0: 0a 7d 5d 0a 0a 73 65 74 20 61 6c 6c 71 75 69 63  .}]..set allquic
0bb0: 6b 74 65 73 74 73 20 5b 74 65 73 74 5f 73 65 74  ktests [test_set
0bc0: 20 24 61 6c 6c 74 65 73 74 73 20 2d 65 78 63 6c   $alltests -excl
0bd0: 75 64 65 20 7b 0a 20 20 61 73 79 6e 63 32 2e 74  ude {.  async2.t
0be0: 65 73 74 20 61 73 79 6e 63 33 2e 74 65 73 74 20  est async3.test 
0bf0: 62 61 63 6b 75 70 5f 69 6f 65 72 72 2e 74 65 73  backup_ioerr.tes
0c00: 74 20 63 6f 72 72 75 70 74 2e 74 65 73 74 0a 20  t corrupt.test. 
0c10: 20 63 6f 72 72 75 70 74 43 2e 74 65 73 74 20 63   corruptC.test c
0c20: 72 61 73 68 2e 74 65 73 74 20 63 72 61 73 68 32  rash.test crash2
0c30: 2e 74 65 73 74 20 63 72 61 73 68 33 2e 74 65 73  .test crash3.tes
0c40: 74 20 63 72 61 73 68 34 2e 74 65 73 74 20 63 72  t crash4.test cr
0c50: 61 73 68 35 2e 74 65 73 74 0a 20 20 63 72 61 73  ash5.test.  cras
0c60: 68 36 2e 74 65 73 74 20 63 72 61 73 68 37 2e 74  h6.test crash7.t
0c70: 65 73 74 20 64 65 6c 65 74 65 33 2e 74 65 73 74  est delete3.test
0c80: 20 65 5f 66 74 73 33 2e 74 65 73 74 20 66 74 73   e_fts3.test fts
0c90: 33 72 6e 64 2e 74 65 73 74 0a 20 20 66 6b 65 79  3rnd.test.  fkey
0ca0: 5f 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 66 75 7a  _malloc.test fuz
0cb0: 7a 2e 74 65 73 74 20 66 75 7a 7a 33 2e 74 65 73  z.test fuzz3.tes
0cc0: 74 20 66 75 7a 7a 5f 6d 61 6c 6c 6f 63 2e 74 65  t fuzz_malloc.te
0cd0: 73 74 20 69 6e 32 2e 74 65 73 74 20 6c 6f 61 64  st in2.test load
0ce0: 65 78 74 2e 74 65 73 74 0a 20 20 6d 69 73 63 37  ext.test.  misc7
0cf0: 2e 74 65 73 74 20 6d 75 74 65 78 32 2e 74 65 73  .test mutex2.tes
0d00: 74 20 6e 6f 74 69 66 79 32 2e 74 65 73 74 20 6f  t notify2.test o
0d10: 6e 65 66 69 6c 65 2e 74 65 73 74 20 70 61 67 65  nefile.test page
0d20: 72 66 61 75 6c 74 32 2e 74 65 73 74 20 0a 20 20  rfault2.test .  
0d30: 73 61 76 65 70 6f 69 6e 74 34 2e 74 65 73 74 20  savepoint4.test 
0d40: 73 61 76 65 70 6f 69 6e 74 36 2e 74 65 73 74 20  savepoint6.test 
0d50: 73 65 6c 65 63 74 39 2e 74 65 73 74 20 0a 20 20  select9.test .  
0d60: 73 70 65 65 64 31 2e 74 65 73 74 20 73 70 65 65  speed1.test spee
0d70: 64 31 70 2e 74 65 73 74 20 73 70 65 65 64 32 2e  d1p.test speed2.
0d80: 74 65 73 74 20 73 70 65 65 64 33 2e 74 65 73 74  test speed3.test
0d90: 20 73 70 65 65 64 34 2e 74 65 73 74 20 0a 20 20   speed4.test .  
0da0: 73 70 65 65 64 34 70 2e 74 65 73 74 20 73 71 6c  speed4p.test sql
0db0: 6c 69 6d 69 74 73 31 2e 74 65 73 74 20 74 6b 74  limits1.test tkt
0dc0: 32 36 38 36 2e 74 65 73 74 20 74 68 72 65 61 64  2686.test thread
0dd0: 30 30 31 2e 74 65 73 74 20 74 68 72 65 61 64 30  001.test thread0
0de0: 30 32 2e 74 65 73 74 0a 20 20 74 68 72 65 61 64  02.test.  thread
0df0: 30 30 33 2e 74 65 73 74 20 74 68 72 65 61 64 30  003.test thread0
0e00: 30 34 2e 74 65 73 74 20 74 68 72 65 61 64 30 30  04.test thread00
0e10: 35 2e 74 65 73 74 20 74 72 61 6e 73 32 2e 74 65  5.test trans2.te
0e20: 73 74 20 76 61 63 75 75 6d 33 2e 74 65 73 74 20  st vacuum3.test 
0e30: 0a 20 20 69 6e 63 72 76 61 63 75 75 6d 5f 69 6f  .  incrvacuum_io
0e40: 65 72 72 2e 74 65 73 74 20 61 75 74 6f 76 61 63  err.test autovac
0e50: 75 75 6d 5f 63 72 61 73 68 2e 74 65 73 74 20 62  uum_crash.test b
0e60: 74 72 65 65 38 2e 74 65 73 74 20 73 68 61 72 65  tree8.test share
0e70: 64 5f 65 72 72 2e 74 65 73 74 0a 20 20 76 74 61  d_err.test.  vta
0e80: 62 5f 65 72 72 2e 74 65 73 74 20 77 61 6c 73 6c  b_err.test walsl
0e90: 6f 77 2e 74 65 73 74 20 77 61 6c 63 72 61 73 68  ow.test walcrash
0ea0: 2e 74 65 73 74 20 77 61 6c 63 72 61 73 68 33 2e  .test walcrash3.
0eb0: 74 65 73 74 0a 20 20 77 61 6c 74 68 72 65 61 64  test.  walthread
0ec0: 2e 74 65 73 74 20 72 74 72 65 65 33 2e 74 65 73  .test rtree3.tes
0ed0: 74 20 69 6e 64 65 78 66 61 75 6c 74 2e 74 65 73  t indexfault.tes
0ee0: 74 20 73 65 63 75 72 65 64 65 6c 32 2e 74 65 73  t securedel2.tes
0ef0: 74 0a 20 20 73 6f 72 74 33 2e 74 65 73 74 20 73  t.  sort3.test s
0f00: 6f 72 74 34 2e 74 65 73 74 20 66 74 73 34 67 72  ort4.test fts4gr
0f10: 6f 77 74 68 2e 74 65 73 74 20 66 74 73 34 67 72  owth.test fts4gr
0f20: 6f 77 74 68 32 2e 74 65 73 74 0a 7d 5d 0a 69 66  owth2.test.}].if
0f30: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a   {[info exists :
0f40: 3a 65 6e 76 28 51 55 49 43 4b 54 45 53 54 5f 49  :env(QUICKTEST_I
0f50: 4e 43 4c 55 44 45 29 5d 7d 20 7b 0a 20 20 73 65  NCLUDE)]} {.  se
0f60: 74 20 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20  t allquicktests 
0f70: 5b 63 6f 6e 63 61 74 20 24 61 6c 6c 71 75 69 63  [concat $allquic
0f80: 6b 74 65 73 74 73 20 24 3a 3a 65 6e 76 28 51 55  ktests $::env(QU
0f90: 49 43 4b 54 45 53 54 5f 49 4e 43 4c 55 44 45 29  ICKTEST_INCLUDE)
0fa0: 5d 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23 23 23  ].}..###########
0fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fe0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ff0: 23 23 0a 23 20 53 74 61 72 74 20 6f 66 20 74 65  ##.# Start of te
1000: 73 74 73 0a 23 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d  sts.#..#--------
1010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1050: 2d 0a 23 20 44 65 66 69 6e 65 20 74 68 65 20 67  -.# Define the g
1060: 65 6e 65 72 69 63 20 74 65 73 74 20 73 75 69 74  eneric test suit
1070: 65 73 3a 0a 23 0a 23 20 20 20 76 65 72 79 71 75  es:.#.#   veryqu
1080: 69 63 6b 0a 23 20 20 20 71 75 69 63 6b 0a 23 20  ick.#   quick.# 
1090: 20 20 66 75 6c 6c 0a 23 0a 6c 61 70 70 65 6e 64    full.#.lappend
10a0: 20 3a 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74   ::testsuitelist
10b0: 20 78 78 78 0a 0a 74 65 73 74 5f 73 75 69 74 65   xxx..test_suite
10c0: 20 22 76 65 72 79 71 75 69 63 6b 22 20 2d 70 72   "veryquick" -pr
10d0: 65 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70  efix "" -descrip
10e0: 74 69 6f 6e 20 7b 0a 20 20 22 56 65 72 79 22 20  tion {.  "Very" 
10f0: 71 75 69 63 6b 20 74 65 73 74 20 73 75 69 74 65  quick test suite
1100: 2e 20 52 75 6e 73 20 69 6e 20 6c 65 73 73 20 74  . Runs in less t
1110: 68 61 6e 20 35 20 6d 69 6e 75 74 65 73 20 6f 6e  han 5 minutes on
1120: 20 61 20 77 6f 72 6b 73 74 61 74 69 6f 6e 2e 20   a workstation. 
1130: 0a 20 20 54 68 69 73 20 74 65 73 74 20 73 75 69  .  This test sui
1140: 74 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 61  te is the same a
1150: 73 20 74 68 65 20 22 71 75 69 63 6b 22 20 74 65  s the "quick" te
1160: 73 74 73 2c 20 65 78 63 65 70 74 20 74 68 61 74  sts, except that
1170: 20 73 6f 6d 65 20 66 69 6c 65 73 0a 20 20 74 68   some files.  th
1180: 61 74 20 74 65 73 74 20 6d 61 6c 6c 6f 63 20 61  at test malloc a
1190: 6e 64 20 49 4f 20 65 72 72 6f 72 73 20 61 72 65  nd IO errors are
11a0: 20 6f 6d 69 74 74 65 64 2e 0a 7d 20 2d 66 69 6c   omitted..} -fil
11b0: 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20  es [.  test_set 
11c0: 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  $allquicktests -
11d0: 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a  exclude *malloc*
11e0: 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a   *ioerr* *fault*
11f0: 0a 5d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  .]..test_suite "
1200: 6d 6d 61 70 22 20 2d 70 72 65 66 69 78 20 22 6d  mmap" -prefix "m
1210: 6d 2d 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  m-" -description
1220: 20 7b 0a 20 20 53 69 6d 69 6c 61 72 20 74 6f 20   {.  Similar to 
1230: 76 65 72 79 71 75 69 63 6b 2e 20 45 78 63 65 70  veryquick. Excep
1240: 74 20 77 69 74 68 20 6d 65 6d 6f 72 79 20 6d 61  t with memory ma
1250: 70 70 69 6e 67 20 64 69 73 61 62 6c 65 64 2e 0a  pping disabled..
1260: 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72  } -presql {.  pr
1270: 61 67 6d 61 20 6d 6d 61 70 5f 73 69 7a 65 20 3d  agma mmap_size =
1280: 20 32 36 38 34 33 35 34 35 36 3b 0a 7d 20 2d 66   268435456;.} -f
1290: 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65  iles [.  test_se
12a0: 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  t $allquicktests
12b0: 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f   -exclude *mallo
12c0: 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c  c* *ioerr* *faul
12d0: 74 2a 20 2d 69 6e 63 6c 75 64 65 20 6d 61 6c 6c  t* -include mall
12e0: 6f 63 2e 74 65 73 74 0a 5d 0a 0a 74 65 73 74 5f  oc.test.]..test_
12f0: 73 75 69 74 65 20 22 76 61 6c 67 72 69 6e 64 22  suite "valgrind"
1300: 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65 73   -prefix "" -des
1310: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e  cription {.  Run
1320: 20 74 68 65 20 22 76 65 72 79 71 75 69 63 6b 22   the "veryquick"
1330: 20 74 65 73 74 20 73 75 69 74 65 20 77 69 74 68   test suite with
1340: 20 61 20 63 6f 75 70 6c 65 20 6f 66 20 6d 75 6c   a couple of mul
1350: 74 69 2d 70 72 6f 63 65 73 73 20 74 65 73 74 73  ti-process tests
1360: 20 28 74 68 61 74 0a 20 20 66 61 69 6c 20 75 6e   (that.  fail un
1370: 64 65 72 20 76 61 6c 67 72 69 6e 64 29 20 6f 6d  der valgrind) om
1380: 69 74 74 65 64 2e 0a 7d 20 2d 66 69 6c 65 73 20  itted..} -files 
1390: 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c  [.  test_set $al
13a0: 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63  lquicktests -exc
13b0: 6c 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69  lude *malloc* *i
13c0: 6f 65 72 72 2a 20 2a 66 61 75 6c 74 2a 20 77 61  oerr* *fault* wa
13d0: 6c 2e 74 65 73 74 20 61 74 6f 66 31 2e 74 65 73  l.test atof1.tes
13e0: 74 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20  t.] -initialize 
13f0: 7b 0a 20 20 73 65 74 20 3a 3a 47 28 76 61 6c 67  {.  set ::G(valg
1400: 72 69 6e 64 29 20 31 0a 7d 20 2d 73 68 75 74 64  rind) 1.} -shutd
1410: 6f 77 6e 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e  own {.  unset -n
1420: 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a 47 28 76 61  ocomplain ::G(va
1430: 6c 67 72 69 6e 64 29 0a 7d 0a 0a 74 65 73 74 5f  lgrind).}..test_
1440: 73 75 69 74 65 20 22 76 61 6c 67 72 69 6e 64 2d  suite "valgrind-
1450: 6e 6f 6c 6f 6f 6b 61 73 69 64 65 22 20 2d 70 72  nolookaside" -pr
1460: 65 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70  efix "" -descrip
1470: 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 68 65  tion {.  Run the
1480: 20 22 76 65 72 79 71 75 69 63 6b 22 20 74 65 73   "veryquick" tes
1490: 74 20 73 75 69 74 65 20 77 69 74 68 20 61 20 63  t suite with a c
14a0: 6f 75 70 6c 65 20 6f 66 20 6d 75 6c 74 69 2d 70  ouple of multi-p
14b0: 72 6f 63 65 73 73 20 74 65 73 74 73 20 28 74 68  rocess tests (th
14c0: 61 74 0a 20 20 66 61 69 6c 20 75 6e 64 65 72 20  at.  fail under 
14d0: 76 61 6c 67 72 69 6e 64 29 20 6f 6d 69 74 74 65  valgrind) omitte
14e0: 64 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20  d..} -files [.  
14f0: 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69  test_set $allqui
1500: 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  cktests -exclude
1510: 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72   *malloc* *ioerr
1520: 2a 20 2a 66 61 75 6c 74 2a 20 77 61 6c 2e 74 65  * *fault* wal.te
1530: 73 74 20 61 74 6f 66 31 2e 74 65 73 74 0a 5d 20  st atof1.test.] 
1540: 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20  -initialize {.  
1550: 73 65 74 20 3a 3a 47 28 76 61 6c 67 72 69 6e 64  set ::G(valgrind
1560: 29 20 31 0a 20 20 63 61 74 63 68 20 7b 64 62 20  ) 1.  catch {db 
1570: 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33  close}.  sqlite3
1580: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69  _shutdown.  sqli
1590: 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61  te3_config_looka
15a0: 73 69 64 65 20 30 20 30 0a 20 20 73 71 6c 69 74  side 0 0.  sqlit
15b0: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20  e3_initialize.  
15c0: 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74  autoinstall_test
15d0: 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73 68  _functions.} -sh
15e0: 75 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68  utdown {.  catch
15f0: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71   {db close}.  sq
1600: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
1610: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
1620: 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30  lookaside 100 50
1630: 30 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  0.  sqlite3_init
1640: 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73  ialize.  autoins
1650: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
1660: 6f 6e 73 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63  ons.  unset -noc
1670: 6f 6d 70 6c 61 69 6e 20 3a 3a 47 28 76 61 6c 67  omplain ::G(valg
1680: 72 69 6e 64 29 0a 7d 0a 0a 0a 74 65 73 74 5f 73  rind).}...test_s
1690: 75 69 74 65 20 22 71 75 69 63 6b 22 20 2d 70 72  uite "quick" -pr
16a0: 65 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70  efix "" -descrip
16b0: 74 69 6f 6e 20 7b 0a 20 20 51 75 69 63 6b 20 74  tion {.  Quick t
16c0: 65 73 74 20 73 75 69 74 65 2e 20 52 75 6e 73 20  est suite. Runs 
16d0: 69 6e 20 61 72 6f 75 6e 64 20 31 30 20 6d 69 6e  in around 10 min
16e0: 75 74 65 73 20 6f 6e 20 61 20 77 6f 72 6b 73 74  utes on a workst
16f0: 61 74 69 6f 6e 2e 0a 7d 20 2d 66 69 6c 65 73 20  ation..} -files 
1700: 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c  [.  test_set $al
1710: 6c 71 75 69 63 6b 74 65 73 74 73 0a 5d 0a 0a 74  lquicktests.]..t
1720: 65 73 74 5f 73 75 69 74 65 20 22 66 75 6c 6c 22  est_suite "full"
1730: 20 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65 73   -prefix "" -des
1740: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 46 75 6c  cription {.  Ful
1750: 6c 20 74 65 73 74 20 73 75 69 74 65 2e 20 54 61  l test suite. Ta
1760: 6b 65 73 20 61 20 6c 6f 6e 67 20 74 69 6d 65 2e  kes a long time.
1770: 0a 7d 20 2d 66 69 6c 65 73 20 5b 20 0a 20 20 74  .} -files [ .  t
1780: 65 73 74 5f 73 65 74 20 24 61 6c 6c 74 65 73 74  est_set $alltest
1790: 73 20 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  s .] -initialize
17a0: 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f   {.  unset -noco
17b0: 6d 70 6c 61 69 6e 20 3a 3a 47 28 69 73 71 75 69  mplain ::G(isqui
17c0: 63 6b 29 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74  ck).}..test_suit
17d0: 65 20 22 74 68 72 65 61 64 73 22 20 2d 70 72 65  e "threads" -pre
17e0: 66 69 78 20 22 22 20 2d 64 65 73 63 72 69 70 74  fix "" -descript
17f0: 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20 6d 75 6c 74  ion {.  All mult
1800: 69 2d 74 68 72 65 61 64 65 64 20 74 65 73 74 73  i-threaded tests
1810: 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 6e  ..} -files {.  n
1820: 6f 74 69 66 79 32 2e 74 65 73 74 20 20 20 74 68  otify2.test   th
1830: 72 65 61 64 30 30 31 2e 74 65 73 74 20 74 68 72  read001.test thr
1840: 65 61 64 30 30 32 2e 74 65 73 74 20 74 68 72 65  ead002.test thre
1850: 61 64 30 30 33 2e 74 65 73 74 20 0a 20 20 74 68  ad003.test .  th
1860: 72 65 61 64 30 30 34 2e 74 65 73 74 20 74 68 72  read004.test thr
1870: 65 61 64 30 30 35 2e 74 65 73 74 20 77 61 6c 74  ead005.test walt
1880: 68 72 65 61 64 2e 74 65 73 74 0a 7d 0a 0a 74 65  hread.test.}..te
1890: 73 74 5f 73 75 69 74 65 20 22 66 74 73 33 22 20  st_suite "fts3" 
18a0: 2d 70 72 65 66 69 78 20 22 22 20 2d 64 65 73 63  -prefix "" -desc
18b0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 41 6c 6c 20  ription {.  All 
18c0: 46 54 53 33 20 74 65 73 74 73 20 65 78 63 65 70  FTS3 tests excep
18d0: 74 20 66 74 73 33 72 6e 64 2e 74 65 73 74 2e 0a  t fts3rnd.test..
18e0: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 66 74 73  } -files {.  fts
18f0: 33 61 61 2e 74 65 73 74 20 66 74 73 33 61 62 2e  3aa.test fts3ab.
1900: 74 65 73 74 20 66 74 73 33 61 63 2e 74 65 73 74  test fts3ac.test
1910: 20 66 74 73 33 61 64 2e 74 65 73 74 20 66 74 73   fts3ad.test fts
1920: 33 61 65 2e 74 65 73 74 0a 20 20 66 74 73 33 61  3ae.test.  fts3a
1930: 66 2e 74 65 73 74 20 66 74 73 33 61 67 2e 74 65  f.test fts3ag.te
1940: 73 74 20 66 74 73 33 61 68 2e 74 65 73 74 20 66  st fts3ah.test f
1950: 74 73 33 61 69 2e 74 65 73 74 20 66 74 73 33 61  ts3ai.test fts3a
1960: 6a 2e 74 65 73 74 0a 20 20 66 74 73 33 61 6b 2e  j.test.  fts3ak.
1970: 74 65 73 74 20 66 74 73 33 61 6c 2e 74 65 73 74  test fts3al.test
1980: 20 66 74 73 33 61 6d 2e 74 65 73 74 20 66 74 73   fts3am.test fts
1990: 33 61 6e 2e 74 65 73 74 20 66 74 73 33 61 6f 2e  3an.test fts3ao.
19a0: 74 65 73 74 0a 20 20 66 74 73 33 61 74 6f 6b 65  test.  fts3atoke
19b0: 6e 2e 74 65 73 74 20 66 74 73 33 62 2e 74 65 73  n.test fts3b.tes
19c0: 74 20 66 74 73 33 63 2e 74 65 73 74 20 66 74 73  t fts3c.test fts
19d0: 33 63 6f 76 2e 74 65 73 74 20 66 74 73 33 64 2e  3cov.test fts3d.
19e0: 74 65 73 74 0a 20 20 66 74 73 33 64 65 66 65 72  test.  fts3defer
19f0: 2e 74 65 73 74 20 66 74 73 33 64 65 66 65 72 32  .test fts3defer2
1a00: 2e 74 65 73 74 20 66 74 73 33 65 2e 74 65 73 74  .test fts3e.test
1a10: 20 66 74 73 33 65 78 70 72 2e 74 65 73 74 20 66   fts3expr.test f
1a20: 74 73 33 65 78 70 72 32 2e 74 65 73 74 20 0a 20  ts3expr2.test . 
1a30: 20 66 74 73 33 65 78 70 72 33 2e 74 65 73 74 0a   fts3expr3.test.
1a40: 20 20 66 74 73 33 6e 65 61 72 2e 74 65 73 74 20    fts3near.test 
1a50: 66 74 73 33 71 75 65 72 79 2e 74 65 73 74 20 66  fts3query.test f
1a60: 74 73 33 73 68 61 72 65 64 2e 74 65 73 74 20 66  ts3shared.test f
1a70: 74 73 33 73 6e 69 70 70 65 74 2e 74 65 73 74 20  ts3snippet.test 
1a80: 0a 20 20 66 74 73 33 73 6f 72 74 2e 74 65 73 74  .  fts3sort.test
1a90: 0a 20 20 66 74 73 33 66 61 75 6c 74 2e 74 65 73  .  fts3fault.tes
1aa0: 74 20 66 74 73 33 6d 61 6c 6c 6f 63 2e 74 65 73  t fts3malloc.tes
1ab0: 74 20 66 74 73 33 6d 61 74 63 68 69 6e 66 6f 2e  t fts3matchinfo.
1ac0: 74 65 73 74 0a 20 20 66 74 73 33 61 75 78 31 2e  test.  fts3aux1.
1ad0: 74 65 73 74 20 66 74 73 33 63 6f 6d 70 31 2e 74  test fts3comp1.t
1ae0: 65 73 74 20 66 74 73 33 61 75 74 6f 2e 74 65 73  est fts3auto.tes
1af0: 74 0a 20 20 66 74 73 34 61 61 2e 74 65 73 74 20  t.  fts4aa.test 
1b00: 66 74 73 34 63 6f 6e 74 65 6e 74 2e 74 65 73 74  fts4content.test
1b10: 0a 20 20 66 74 73 33 63 6f 6e 66 2e 74 65 73 74  .  fts3conf.test
1b20: 20 66 74 73 33 70 72 65 66 69 78 2e 74 65 73 74   fts3prefix.test
1b30: 20 66 74 73 33 66 61 75 6c 74 32 2e 74 65 73 74   fts3fault2.test
1b40: 20 66 74 73 33 63 6f 72 72 75 70 74 2e 74 65 73   fts3corrupt.tes
1b50: 74 0a 20 20 66 74 73 33 63 6f 72 72 75 70 74 32  t.  fts3corrupt2
1b60: 2e 74 65 73 74 20 66 74 73 33 66 69 72 73 74 2e  .test fts3first.
1b70: 74 65 73 74 20 66 74 73 34 6c 61 6e 67 69 64 2e  test fts4langid.
1b80: 74 65 73 74 20 66 74 73 34 6d 65 72 67 65 2e 74  test fts4merge.t
1b90: 65 73 74 0a 20 20 66 74 73 34 63 68 65 63 6b 2e  est.  fts4check.
1ba0: 74 65 73 74 20 66 74 73 34 75 6e 69 63 6f 64 65  test fts4unicode
1bb0: 2e 74 65 73 74 20 66 74 73 34 6e 6f 74 69 2e 74  .test fts4noti.t
1bc0: 65 73 74 0a 20 20 66 74 73 33 76 61 72 69 6e 74  est.  fts3varint
1bd0: 2e 74 65 73 74 0a 20 20 66 74 73 34 67 72 6f 77  .test.  fts4grow
1be0: 74 68 2e 74 65 73 74 20 66 74 73 34 67 72 6f 77  th.test fts4grow
1bf0: 74 68 32 2e 74 65 73 74 0a 7d 0a 0a 74 65 73 74  th2.test.}..test
1c00: 5f 73 75 69 74 65 20 22 6e 6f 66 61 75 6c 74 73  _suite "nofaults
1c10: 69 6d 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d  im" -prefix "" -
1c20: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
1c30: 22 56 65 72 79 22 20 71 75 69 63 6b 20 74 65 73  "Very" quick tes
1c40: 74 20 73 75 69 74 65 2e 20 52 75 6e 73 20 69 6e  t suite. Runs in
1c50: 20 6c 65 73 73 20 74 68 61 6e 20 35 20 6d 69 6e   less than 5 min
1c60: 75 74 65 73 20 6f 6e 20 61 20 77 6f 72 6b 73 74  utes on a workst
1c70: 61 74 69 6f 6e 2e 20 0a 20 20 54 68 69 73 20 74  ation. .  This t
1c80: 65 73 74 20 73 75 69 74 65 20 69 73 20 74 68 65  est suite is the
1c90: 20 73 61 6d 65 20 61 73 20 74 68 65 20 22 71 75   same as the "qu
1ca0: 69 63 6b 22 20 74 65 73 74 73 2c 20 65 78 63 65  ick" tests, exce
1cb0: 70 74 20 74 68 61 74 20 73 6f 6d 65 20 66 69 6c  pt that some fil
1cc0: 65 73 0a 20 20 74 68 61 74 20 74 65 73 74 20 6d  es.  that test m
1cd0: 61 6c 6c 6f 63 20 61 6e 64 20 49 4f 20 65 72 72  alloc and IO err
1ce0: 6f 72 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  ors are omitted.
1cf0: 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65  .} -files [.  te
1d00: 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b  st_set $allquick
1d10: 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a  tests -exclude *
1d20: 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20  malloc* *ioerr* 
1d30: 2a 66 61 75 6c 74 2a 0a 5d 20 2d 69 6e 69 74 69  *fault*.] -initi
1d40: 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20  alize {.  catch 
1d50: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
1d60: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
1d70: 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66  install_malloc_f
1d80: 61 75 6c 74 73 69 6d 20 30 0a 20 20 73 71 6c 69  aultsim 0.  sqli
1d90: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
1da0: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
1db0: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73  t_functions.} -s
1dc0: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 75 6e 73 65  hutdown {.  unse
1dd0: 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a  t -nocomplain ::
1de0: 47 28 76 61 6c 67 72 69 6e 64 29 0a 7d 0a 0a 74  G(valgrind).}..t
1df0: 65 73 74 5f 73 75 69 74 65 20 22 71 75 65 72 79  est_suite "query
1e00: 70 6c 61 6e 6e 65 72 22 20 2d 70 72 65 66 69 78  planner" -prefix
1e10: 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e   "" -description
1e20: 20 7b 0a 20 20 54 65 73 74 73 20 6f 66 20 74 68   {.  Tests of th
1e30: 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20  e query planner 
1e40: 61 6e 64 20 71 75 65 72 79 20 6f 70 74 69 6d 69  and query optimi
1e50: 7a 65 72 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  zer.} -files {. 
1e60: 20 61 6c 74 65 72 32 2e 74 65 73 74 20 61 6c 74   alter2.test alt
1e70: 65 72 33 2e 74 65 73 74 20 61 6c 74 65 72 34 2e  er3.test alter4.
1e80: 74 65 73 74 20 61 6c 74 65 72 2e 74 65 73 74 20  test alter.test 
1e90: 61 6e 61 6c 79 7a 65 33 2e 74 65 73 74 0a 20 20  analyze3.test.  
1ea0: 61 6e 61 6c 79 7a 65 34 2e 74 65 73 74 20 61 6e  analyze4.test an
1eb0: 61 6c 79 7a 65 35 2e 74 65 73 74 20 61 6e 61 6c  alyze5.test anal
1ec0: 79 7a 65 36 2e 74 65 73 74 20 61 6e 61 6c 79 7a  yze6.test analyz
1ed0: 65 37 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 38  e7.test analyze8
1ee0: 2e 74 65 73 74 0a 20 20 61 6e 61 6c 79 7a 65 2e  .test.  analyze.
1ef0: 74 65 73 74 20 61 74 74 61 63 68 32 2e 74 65 73  test attach2.tes
1f00: 74 20 61 74 74 61 63 68 33 2e 74 65 73 74 20 61  t attach3.test a
1f10: 74 74 61 63 68 34 2e 74 65 73 74 0a 20 20 61 74  ttach4.test.  at
1f20: 74 61 63 68 2e 74 65 73 74 20 61 75 74 6f 69 6e  tach.test autoin
1f30: 63 2e 74 65 73 74 20 61 75 74 6f 69 6e 64 65 78  c.test autoindex
1f40: 31 2e 74 65 73 74 20 62 65 74 77 65 65 6e 2e 74  1.test between.t
1f50: 65 73 74 20 63 61 73 74 2e 74 65 73 74 0a 20 20  est cast.test.  
1f60: 63 68 65 63 6b 2e 74 65 73 74 20 63 6c 6f 73 75  check.test closu
1f70: 72 65 30 31 2e 74 65 73 74 20 63 6f 61 6c 65 73  re01.test coales
1f80: 63 65 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 31  ce.test collate1
1f90: 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 32 2e 74  .test collate2.t
1fa0: 65 73 74 0a 20 20 63 6f 6c 6c 61 74 65 33 2e 74  est.  collate3.t
1fb0: 65 73 74 20 63 6f 6c 6c 61 74 65 34 2e 74 65 73  est collate4.tes
1fc0: 74 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74 20  t collate5.test 
1fd0: 63 6f 6c 6c 61 74 65 36 2e 74 65 73 74 20 63 6f  collate6.test co
1fe0: 6c 6c 61 74 65 37 2e 74 65 73 74 0a 20 20 63 6f  llate7.test.  co
1ff0: 6c 6c 61 74 65 38 2e 74 65 73 74 20 63 6f 6c 6c  llate8.test coll
2000: 61 74 65 39 2e 74 65 73 74 20 63 6f 6c 6c 61 74  ate9.test collat
2010: 65 41 2e 74 65 73 74 20 63 6f 6c 6d 65 74 61 2e  eA.test colmeta.
2020: 74 65 73 74 20 63 6f 6c 6e 61 6d 65 2e 74 65 73  test colname.tes
2030: 74 0a 20 20 63 6f 6e 66 6c 69 63 74 2e 74 65 73  t.  conflict.tes
2040: 74 20 63 6f 75 6e 74 2e 74 65 73 74 20 63 6f 76  t count.test cov
2050: 65 72 69 64 78 73 63 61 6e 2e 74 65 73 74 20 63  eridxscan.test c
2060: 72 65 61 74 65 74 61 62 2e 74 65 73 74 20 63 73  reatetab.test cs
2070: 65 2e 74 65 73 74 0a 20 20 64 61 74 65 2e 74 65  e.test.  date.te
2080: 73 74 20 64 62 73 74 61 74 75 73 32 2e 74 65 73  st dbstatus2.tes
2090: 74 20 64 62 73 74 61 74 75 73 2e 74 65 73 74 20  t dbstatus.test 
20a0: 64 65 66 61 75 6c 74 2e 74 65 73 74 20 64 65 6c  default.test del
20b0: 65 74 65 32 2e 74 65 73 74 0a 20 20 64 65 6c 65  ete2.test.  dele
20c0: 74 65 33 2e 74 65 73 74 20 64 65 6c 65 74 65 2e  te3.test delete.
20d0: 74 65 73 74 20 64 65 73 63 69 64 78 31 2e 74 65  test descidx1.te
20e0: 73 74 20 64 65 73 63 69 64 78 32 2e 74 65 73 74  st descidx2.test
20f0: 20 64 65 73 63 69 64 78 33 2e 74 65 73 74 0a 20   descidx3.test. 
2100: 20 64 69 73 74 69 6e 63 74 61 67 67 2e 74 65 73   distinctagg.tes
2110: 74 20 64 69 73 74 69 6e 63 74 2e 74 65 73 74 20  t distinct.test 
2120: 65 5f 63 72 65 61 74 65 74 61 62 6c 65 2e 74 65  e_createtable.te
2130: 73 74 20 65 5f 64 65 6c 65 74 65 2e 74 65 73 74  st e_delete.test
2140: 0a 20 20 65 5f 64 72 6f 70 74 72 69 67 67 65 72  .  e_droptrigger
2150: 2e 74 65 73 74 20 65 5f 64 72 6f 70 76 69 65 77  .test e_dropview
2160: 2e 74 65 73 74 20 65 5f 65 78 70 72 2e 74 65 73  .test e_expr.tes
2170: 74 20 65 5f 69 6e 73 65 72 74 2e 74 65 73 74 0a  t e_insert.test.
2180: 20 20 65 71 70 2e 74 65 73 74 20 65 5f 72 65 69    eqp.test e_rei
2190: 6e 64 65 78 2e 74 65 73 74 20 65 5f 72 65 73 6f  ndex.test e_reso
21a0: 6c 76 65 2e 74 65 73 74 20 65 5f 73 65 6c 65 63  lve.test e_selec
21b0: 74 32 2e 74 65 73 74 20 65 5f 73 65 6c 65 63 74  t2.test e_select
21c0: 2e 74 65 73 74 0a 20 20 65 5f 75 70 64 61 74 65  .test.  e_update
21d0: 2e 74 65 73 74 20 65 78 69 73 74 73 2e 74 65 73  .test exists.tes
21e0: 74 20 65 78 70 72 2e 74 65 73 74 20 66 6b 65 79  t expr.test fkey
21f0: 31 2e 74 65 73 74 20 66 6b 65 79 32 2e 74 65 73  1.test fkey2.tes
2200: 74 20 66 6b 65 79 33 2e 74 65 73 74 0a 20 20 66  t fkey3.test.  f
2210: 6b 65 79 34 2e 74 65 73 74 20 66 6b 65 79 35 2e  key4.test fkey5.
2220: 74 65 73 74 20 66 75 6e 63 32 2e 74 65 73 74 20  test func2.test 
2230: 66 75 6e 63 33 2e 74 65 73 74 20 66 75 6e 63 2e  func3.test func.
2240: 74 65 73 74 20 0a 20 20 69 6e 33 2e 74 65 73 74  test .  in3.test
2250: 20 69 6e 34 2e 74 65 73 74 20 69 6e 35 2e 74 65   in4.test in5.te
2260: 73 74 20 69 6e 64 65 78 32 2e 74 65 73 74 20 69  st index2.test i
2270: 6e 64 65 78 33 2e 74 65 73 74 0a 20 20 69 6e 64  ndex3.test.  ind
2280: 65 78 34 2e 74 65 73 74 20 69 6e 64 65 78 35 2e  ex4.test index5.
2290: 74 65 73 74 20 69 6e 64 65 78 65 64 62 79 2e 74  test indexedby.t
22a0: 65 73 74 20 69 6e 64 65 78 2e 74 65 73 74 0a 20  est index.test. 
22b0: 20 69 6e 73 65 72 74 32 2e 74 65 73 74 20 69 6e   insert2.test in
22c0: 73 65 72 74 33 2e 74 65 73 74 20 69 6e 73 65 72  sert3.test inser
22d0: 74 34 2e 74 65 73 74 20 69 6e 73 65 72 74 35 2e  t4.test insert5.
22e0: 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65 73 74  test insert.test
22f0: 0a 20 20 69 6e 73 74 72 2e 74 65 73 74 20 69 6e  .  instr.test in
2300: 2e 74 65 73 74 20 69 6e 74 70 6b 65 79 2e 74 65  .test intpkey.te
2310: 73 74 20 6a 6f 69 6e 32 2e 74 65 73 74 20 6a 6f  st join2.test jo
2320: 69 6e 33 2e 74 65 73 74 20 6a 6f 69 6e 34 2e 74  in3.test join4.t
2330: 65 73 74 0a 20 20 6a 6f 69 6e 35 2e 74 65 73 74  est.  join5.test
2340: 20 6a 6f 69 6e 36 2e 74 65 73 74 20 6a 6f 69 6e   join6.test join
2350: 2e 74 65 73 74 20 6c 69 6b 65 32 2e 74 65 73 74  .test like2.test
2360: 20 6c 69 6b 65 2e 74 65 73 74 20 6c 69 6d 69 74   like.test limit
2370: 2e 74 65 73 74 0a 20 20 6d 69 6e 6d 61 78 32 2e  .test.  minmax2.
2380: 74 65 73 74 20 6d 69 6e 6d 61 78 33 2e 74 65 73  test minmax3.tes
2390: 74 20 6d 69 6e 6d 61 78 34 2e 74 65 73 74 20 6d  t minmax4.test m
23a0: 69 6e 6d 61 78 2e 74 65 73 74 20 6d 69 73 63 31  inmax.test misc1
23b0: 2e 74 65 73 74 20 6d 69 73 63 32 2e 74 65 73 74  .test misc2.test
23c0: 0a 20 20 6d 69 73 63 33 2e 74 65 73 74 20 6d 69  .  misc3.test mi
23d0: 73 63 34 2e 74 65 73 74 20 6d 69 73 63 35 2e 74  sc4.test misc5.t
23e0: 65 73 74 20 6d 69 73 63 36 2e 74 65 73 74 20 6d  est misc6.test m
23f0: 69 73 63 37 2e 74 65 73 74 20 6f 72 64 65 72 62  isc7.test orderb
2400: 79 31 2e 74 65 73 74 0a 20 20 6f 72 64 65 72 62  y1.test.  orderb
2410: 79 32 2e 74 65 73 74 20 6f 72 64 65 72 62 79 33  y2.test orderby3
2420: 2e 74 65 73 74 20 6f 72 64 65 72 62 79 34 2e 74  .test orderby4.t
2430: 65 73 74 20 72 61 6e 64 65 78 70 72 31 2e 74 65  est randexpr1.te
2440: 73 74 20 72 65 67 65 78 70 31 2e 74 65 73 74 0a  st regexp1.test.
2450: 20 20 72 65 69 6e 64 65 78 2e 74 65 73 74 20 72    reindex.test r
2460: 6f 77 68 61 73 68 2e 74 65 73 74 20 72 6f 77 69  owhash.test rowi
2470: 64 2e 74 65 73 74 20 73 63 68 65 6d 61 32 2e 74  d.test schema2.t
2480: 65 73 74 20 73 63 68 65 6d 61 33 2e 74 65 73 74  est schema3.test
2490: 0a 20 20 73 63 68 65 6d 61 34 2e 74 65 73 74 20  .  schema4.test 
24a0: 73 63 68 65 6d 61 35 2e 74 65 73 74 20 73 63 68  schema5.test sch
24b0: 65 6d 61 2e 74 65 73 74 0a 20 20 73 65 6c 65 63  ema.test.  selec
24c0: 74 31 2e 74 65 73 74 20 73 65 6c 65 63 74 32 2e  t1.test select2.
24d0: 74 65 73 74 20 73 65 6c 65 63 74 33 2e 74 65 73  test select3.tes
24e0: 74 20 73 65 6c 65 63 74 34 2e 74 65 73 74 20 73  t select4.test s
24f0: 65 6c 65 63 74 35 2e 74 65 73 74 0a 20 20 73 65  elect5.test.  se
2500: 6c 65 63 74 36 2e 74 65 73 74 20 73 65 6c 65 63  lect6.test selec
2510: 74 37 2e 74 65 73 74 20 73 65 6c 65 63 74 38 2e  t7.test select8.
2520: 74 65 73 74 20 73 65 6c 65 63 74 39 2e 74 65 73  test select9.tes
2530: 74 20 73 65 6c 65 63 74 41 2e 74 65 73 74 0a 20  t selectA.test. 
2540: 20 73 65 6c 65 63 74 42 2e 74 65 73 74 20 73 65   selectB.test se
2550: 6c 65 63 74 43 2e 74 65 73 74 20 73 65 6c 65 63  lectC.test selec
2560: 74 44 2e 74 65 73 74 20 73 65 6c 65 63 74 45 2e  tD.test selectE.
2570: 74 65 73 74 20 73 69 64 65 64 65 6c 65 74 65 2e  test sidedelete.
2580: 74 65 73 74 0a 20 20 73 6f 72 74 2e 74 65 73 74  test.  sort.test
2590: 20 73 70 65 6c 6c 66 69 78 2e 74 65 73 74 20 73   spellfix.test s
25a0: 75 62 71 75 65 72 79 32 2e 74 65 73 74 20 73 75  ubquery2.test su
25b0: 62 71 75 65 72 79 2e 74 65 73 74 20 73 75 62 73  bquery.test subs
25c0: 65 6c 65 63 74 2e 74 65 73 74 0a 20 20 73 75 62  elect.test.  sub
25d0: 73 74 72 2e 74 65 73 74 20 74 6b 74 2d 30 32 61  str.test tkt-02a
25e0: 38 65 38 31 64 34 34 2e 74 65 73 74 20 74 6b 74  8e81d44.test tkt
25f0: 31 34 33 35 2e 74 65 73 74 20 74 6b 74 31 34 34  1435.test tkt144
2600: 33 2e 74 65 73 74 20 74 6b 74 31 34 34 34 2e 74  3.test tkt1444.t
2610: 65 73 74 0a 20 20 74 6b 74 31 34 34 39 2e 74 65  est.  tkt1449.te
2620: 73 74 20 74 6b 74 31 34 37 33 2e 74 65 73 74 20  st tkt1473.test 
2630: 74 6b 74 31 35 30 31 2e 74 65 73 74 20 74 6b 74  tkt1501.test tkt
2640: 31 35 31 32 2e 74 65 73 74 20 74 6b 74 31 35 31  1512.test tkt151
2650: 34 2e 74 65 73 74 0a 20 20 74 6b 74 31 35 33 36  4.test.  tkt1536
2660: 2e 74 65 73 74 20 74 6b 74 31 35 33 37 2e 74 65  .test tkt1537.te
2670: 73 74 20 74 6b 74 31 35 36 37 2e 74 65 73 74 20  st tkt1567.test 
2680: 74 6b 74 31 36 34 34 2e 74 65 73 74 20 74 6b 74  tkt1644.test tkt
2690: 31 36 36 37 2e 74 65 73 74 0a 20 20 74 6b 74 31  1667.test.  tkt1
26a0: 38 37 33 2e 74 65 73 74 20 74 6b 74 32 31 34 31  873.test tkt2141
26b0: 2e 74 65 73 74 20 74 6b 74 32 31 39 32 2e 74 65  .test tkt2192.te
26c0: 73 74 20 74 6b 74 32 32 31 33 2e 74 65 73 74 20  st tkt2213.test 
26d0: 74 6b 74 32 32 35 31 2e 74 65 73 74 0a 20 20 74  tkt2251.test.  t
26e0: 6b 74 32 32 38 35 2e 74 65 73 74 20 74 6b 74 32  kt2285.test tkt2
26f0: 33 33 32 2e 74 65 73 74 20 74 6b 74 32 33 33 39  332.test tkt2339
2700: 2e 74 65 73 74 20 74 6b 74 32 33 39 31 2e 74 65  .test tkt2391.te
2710: 73 74 20 74 6b 74 32 34 30 39 2e 74 65 73 74 0a  st tkt2409.test.
2720: 20 20 74 6b 74 32 34 35 30 2e 74 65 73 74 20 74    tkt2450.test t
2730: 6b 74 32 35 36 35 2e 74 65 73 74 20 74 6b 74 32  kt2565.test tkt2
2740: 36 34 30 2e 74 65 73 74 20 74 6b 74 32 36 34 33  640.test tkt2643
2750: 2e 74 65 73 74 20 74 6b 74 32 36 38 36 2e 74 65  .test tkt2686.te
2760: 73 74 0a 20 20 74 6b 74 2d 32 36 66 66 30 63 32  st.  tkt-26ff0c2
2770: 64 31 65 2e 74 65 73 74 20 74 6b 74 32 37 36 37  d1e.test tkt2767
2780: 2e 74 65 73 74 20 74 6b 74 32 38 31 37 2e 74 65  .test tkt2817.te
2790: 73 74 20 74 6b 74 32 38 32 30 2e 74 65 73 74 20  st tkt2820.test 
27a0: 74 6b 74 32 38 32 32 2e 74 65 73 74 0a 20 20 74  tkt2822.test.  t
27b0: 6b 74 32 38 33 32 2e 74 65 73 74 20 74 6b 74 32  kt2832.test tkt2
27c0: 38 35 34 2e 74 65 73 74 20 74 6b 74 32 39 32 30  854.test tkt2920
27d0: 2e 74 65 73 74 20 74 6b 74 32 39 32 37 2e 74 65  .test tkt2927.te
27e0: 73 74 20 74 6b 74 32 39 34 32 2e 74 65 73 74 0a  st tkt2942.test.
27f0: 20 20 74 6b 74 2d 32 61 35 36 32 39 32 30 32 66    tkt-2a5629202f
2800: 2e 74 65 73 74 20 74 6b 74 2d 32 64 31 61 35 63  .test tkt-2d1a5c
2810: 36 37 64 2e 74 65 73 74 20 74 6b 74 2d 32 65 61  67d.test tkt-2ea
2820: 32 34 32 35 64 33 34 2e 74 65 73 74 20 74 6b 74  2425d34.test tkt
2830: 33 30 38 30 2e 74 65 73 74 0a 20 20 74 6b 74 33  3080.test.  tkt3
2840: 30 39 33 2e 74 65 73 74 20 74 6b 74 33 31 32 31  093.test tkt3121
2850: 2e 74 65 73 74 20 74 6b 74 2d 33 31 33 33 38 64  .test tkt-31338d
2860: 63 61 37 65 2e 74 65 73 74 20 74 6b 74 2d 33 31  ca7e.test tkt-31
2870: 33 37 32 33 63 33 35 36 2e 74 65 73 74 0a 20 20  3723c356.test.  
2880: 74 6b 74 33 32 30 31 2e 74 65 73 74 20 74 6b 74  tkt3201.test tkt
2890: 33 32 39 32 2e 74 65 73 74 20 74 6b 74 33 32 39  3292.test tkt329
28a0: 38 2e 74 65 73 74 20 74 6b 74 33 33 33 34 2e 74  8.test tkt3334.t
28b0: 65 73 74 20 74 6b 74 33 33 34 36 2e 74 65 73 74  est tkt3346.test
28c0: 0a 20 20 74 6b 74 33 33 35 37 2e 74 65 73 74 20  .  tkt3357.test 
28d0: 74 6b 74 33 34 31 39 2e 74 65 73 74 20 74 6b 74  tkt3419.test tkt
28e0: 33 34 32 34 2e 74 65 73 74 20 74 6b 74 33 34 34  3424.test tkt344
28f0: 32 2e 74 65 73 74 20 74 6b 74 33 34 35 37 2e 74  2.test tkt3457.t
2900: 65 73 74 0a 20 20 74 6b 74 33 34 36 31 2e 74 65  est.  tkt3461.te
2910: 73 74 20 74 6b 74 33 34 39 33 2e 74 65 73 74 20  st tkt3493.test 
2920: 74 6b 74 33 35 30 38 2e 74 65 73 74 20 74 6b 74  tkt3508.test tkt
2930: 33 35 32 32 2e 74 65 73 74 20 74 6b 74 33 35 32  3522.test tkt352
2940: 37 2e 74 65 73 74 0a 20 20 74 6b 74 33 35 34 31  7.test.  tkt3541
2950: 2e 74 65 73 74 20 74 6b 74 33 35 35 34 2e 74 65  .test tkt3554.te
2960: 73 74 20 74 6b 74 33 35 38 31 2e 74 65 73 74 20  st tkt3581.test 
2970: 74 6b 74 33 35 78 78 2e 74 65 73 74 20 74 6b 74  tkt35xx.test tkt
2980: 33 36 33 30 2e 74 65 73 74 0a 20 20 74 6b 74 33  3630.test.  tkt3
2990: 37 31 38 2e 74 65 73 74 20 74 6b 74 33 37 33 31  718.test tkt3731
29a0: 2e 74 65 73 74 20 74 6b 74 33 37 35 37 2e 74 65  .test tkt3757.te
29b0: 73 74 20 74 6b 74 33 37 36 31 2e 74 65 73 74 20  st tkt3761.test 
29c0: 74 6b 74 33 37 36 32 2e 74 65 73 74 0a 20 20 74  tkt3762.test.  t
29d0: 6b 74 33 37 37 33 2e 74 65 73 74 20 74 6b 74 33  kt3773.test tkt3
29e0: 37 39 31 2e 74 65 73 74 20 74 6b 74 33 37 39 33  791.test tkt3793
29f0: 2e 74 65 73 74 20 74 6b 74 33 38 31 30 2e 74 65  .test tkt3810.te
2a00: 73 74 20 74 6b 74 33 38 32 34 2e 74 65 73 74 0a  st tkt3824.test.
2a10: 20 20 74 6b 74 33 38 33 32 2e 74 65 73 74 20 74    tkt3832.test t
2a20: 6b 74 33 38 33 38 2e 74 65 73 74 20 74 6b 74 33  kt3838.test tkt3
2a30: 38 34 31 2e 74 65 73 74 20 74 6b 74 2d 33 38 35  841.test tkt-385
2a40: 61 35 62 35 36 62 39 2e 74 65 73 74 20 74 6b 74  a5b56b9.test tkt
2a50: 33 38 37 31 2e 74 65 73 74 0a 20 20 74 6b 74 33  3871.test.  tkt3
2a60: 38 37 39 2e 74 65 73 74 20 74 6b 74 2d 33 38 63  879.test tkt-38c
2a70: 62 35 64 66 33 37 35 2e 74 65 73 74 20 74 6b 74  b5df375.test tkt
2a80: 33 39 31 31 2e 74 65 73 74 20 74 6b 74 33 39 31  3911.test tkt391
2a90: 38 2e 74 65 73 74 20 74 6b 74 33 39 32 32 2e 74  8.test tkt3922.t
2aa0: 65 73 74 0a 20 20 74 6b 74 33 39 32 39 2e 74 65  est.  tkt3929.te
2ab0: 73 74 20 74 6b 74 33 39 33 35 2e 74 65 73 74 20  st tkt3935.test 
2ac0: 74 6b 74 33 39 39 32 2e 74 65 73 74 20 74 6b 74  tkt3992.test tkt
2ad0: 33 39 39 37 2e 74 65 73 74 20 74 6b 74 2d 33 39  3997.test tkt-39
2ae0: 39 38 36 38 33 61 31 36 2e 74 65 73 74 0a 20 20  98683a16.test.  
2af0: 74 6b 74 2d 33 61 37 37 63 39 37 31 34 65 2e 74  tkt-3a77c9714e.t
2b00: 65 73 74 20 74 6b 74 2d 33 66 65 38 39 37 33 35  est tkt-3fe89735
2b10: 32 65 2e 74 65 73 74 20 74 6b 74 34 30 31 38 2e  2e.test tkt4018.
2b20: 74 65 73 74 20 74 6b 74 2d 34 61 30 33 65 64 63  test tkt-4a03edc
2b30: 34 63 38 2e 74 65 73 74 0a 20 20 74 6b 74 2d 34  4c8.test.  tkt-4
2b40: 64 64 39 35 66 36 39 34 33 2e 74 65 73 74 20 74  dd95f6943.test t
2b50: 6b 74 2d 35 34 38 34 34 65 65 61 33 66 2e 74 65  kt-54844eea3f.te
2b60: 73 74 20 74 6b 74 2d 35 64 38 36 33 66 38 37 36  st tkt-5d863f876
2b70: 65 2e 74 65 73 74 0a 20 20 74 6b 74 2d 35 65 31  e.test.  tkt-5e1
2b80: 30 34 32 30 65 38 64 2e 74 65 73 74 20 74 6b 74  0420e8d.test tkt
2b90: 2d 35 65 65 32 33 37 33 31 66 2e 74 65 73 74 20  -5ee23731f.test 
2ba0: 74 6b 74 2d 36 62 66 62 39 38 64 66 63 30 2e 74  tkt-6bfb98dfc0.t
2bb0: 65 73 74 0a 20 20 74 6b 74 2d 37 35 32 65 31 36  est.  tkt-752e16
2bc0: 34 36 66 63 2e 74 65 73 74 20 74 6b 74 2d 37 38  46fc.test tkt-78
2bd0: 65 30 34 65 35 32 65 61 2e 74 65 73 74 20 74 6b  e04e52ea.test tk
2be0: 74 2d 37 61 33 31 37 30 35 61 37 65 36 2e 74 65  t-7a31705a7e6.te
2bf0: 73 74 0a 20 20 74 6b 74 2d 37 62 62 66 62 37 64  st.  tkt-7bbfb7d
2c00: 34 34 32 2e 74 65 73 74 20 74 6b 74 2d 38 30 62  442.test tkt-80b
2c10: 61 32 30 31 30 37 39 2e 74 65 73 74 20 74 6b 74  a201079.test tkt
2c20: 2d 38 30 65 30 33 31 61 30 30 66 2e 74 65 73 74  -80e031a00f.test
2c30: 0a 20 20 74 6b 74 2d 38 34 35 34 61 32 30 37 62  .  tkt-8454a207b
2c40: 39 2e 74 65 73 74 20 74 6b 74 2d 39 31 65 32 65  9.test tkt-91e2e
2c50: 38 62 61 36 66 2e 74 65 73 74 20 74 6b 74 2d 39  8ba6f.test tkt-9
2c60: 34 63 30 34 65 61 61 64 62 2e 74 65 73 74 0a 20  4c04eaadb.test. 
2c70: 20 74 6b 74 2d 39 64 36 38 63 38 38 33 2e 74 65   tkt-9d68c883.te
2c80: 73 74 20 74 6b 74 2d 61 37 62 37 38 30 33 65 2e  st tkt-a7b7803e.
2c90: 74 65 73 74 20 74 6b 74 2d 62 31 64 33 61 32 65  test tkt-b1d3a2e
2ca0: 35 33 31 2e 74 65 73 74 0a 20 20 74 6b 74 2d 62  531.test.  tkt-b
2cb0: 33 35 31 64 39 35 66 39 2e 74 65 73 74 20 74 6b  351d95f9.test tk
2cc0: 74 2d 62 37 32 37 38 37 62 31 2e 74 65 73 74 20  t-b72787b1.test 
2cd0: 74 6b 74 2d 62 64 34 38 34 61 30 39 30 63 2e 74  tkt-bd484a090c.t
2ce0: 65 73 74 0a 20 20 74 6b 74 2d 62 64 63 36 62 62  est.  tkt-bdc6bb
2cf0: 62 62 33 38 2e 74 65 73 74 20 74 6b 74 2d 63 34  bb38.test tkt-c4
2d00: 38 64 39 39 64 36 39 30 2e 74 65 73 74 20 74 6b  8d99d690.test tk
2d10: 74 2d 63 62 64 30 35 34 66 61 36 62 2e 74 65 73  t-cbd054fa6b.tes
2d20: 74 0a 20 20 74 6b 74 2d 64 31 31 66 30 39 64 33  t.  tkt-d11f09d3
2d30: 36 65 2e 74 65 73 74 20 74 6b 74 2d 64 36 33 35  6e.test tkt-d635
2d40: 32 33 36 33 37 35 2e 74 65 73 74 20 74 6b 74 2d  236375.test tkt-
2d50: 64 38 32 65 33 66 33 37 32 31 2e 74 65 73 74 0a  d82e3f3721.test.
2d60: 20 20 74 6b 74 2d 66 33 65 35 61 62 65 64 35 35    tkt-f3e5abed55
2d70: 2e 74 65 73 74 20 74 6b 74 2d 66 37 37 37 32 35  .test tkt-f77725
2d80: 31 64 63 37 61 2e 74 65 73 74 20 74 6b 74 2d 66  1dc7a.test tkt-f
2d90: 37 62 34 65 64 65 63 2e 74 65 73 74 0a 20 20 74  7b4edec.test.  t
2da0: 6b 74 2d 66 39 37 33 63 37 61 63 33 31 2e 74 65  kt-f973c7ac31.te
2db0: 73 74 20 74 6b 74 2d 66 61 37 62 66 35 65 63 2e  st tkt-fa7bf5ec.
2dc0: 74 65 73 74 20 74 6b 74 2d 66 63 36 32 61 66 34  test tkt-fc62af4
2dd0: 35 32 33 2e 74 65 73 74 0a 20 20 74 6b 74 2d 66  523.test.  tkt-f
2de0: 63 37 62 64 36 33 35 38 66 2e 74 65 73 74 20 74  c7bd6358f.test t
2df0: 72 69 67 67 65 72 31 2e 74 65 73 74 20 74 72 69  rigger1.test tri
2e00: 67 67 65 72 32 2e 74 65 73 74 20 74 72 69 67 67  gger2.test trigg
2e10: 65 72 33 2e 74 65 73 74 0a 20 20 74 72 69 67 67  er3.test.  trigg
2e20: 65 72 34 2e 74 65 73 74 20 74 72 69 67 67 65 72  er4.test trigger
2e30: 35 2e 74 65 73 74 20 74 72 69 67 67 65 72 36 2e  5.test trigger6.
2e40: 74 65 73 74 20 74 72 69 67 67 65 72 37 2e 74 65  test trigger7.te
2e50: 73 74 20 74 72 69 67 67 65 72 38 2e 74 65 73 74  st trigger8.test
2e60: 0a 20 20 74 72 69 67 67 65 72 39 2e 74 65 73 74  .  trigger9.test
2e70: 20 74 72 69 67 67 65 72 41 2e 74 65 73 74 20 74   triggerA.test t
2e80: 72 69 67 67 65 72 42 2e 74 65 73 74 20 74 72 69  riggerB.test tri
2e90: 67 67 65 72 43 2e 74 65 73 74 20 74 72 69 67 67  ggerC.test trigg
2ea0: 65 72 44 2e 74 65 73 74 0a 20 20 74 79 70 65 73  erD.test.  types
2eb0: 32 2e 74 65 73 74 20 74 79 70 65 73 33 2e 74 65  2.test types3.te
2ec0: 73 74 20 74 79 70 65 73 2e 74 65 73 74 20 75 6e  st types.test un
2ed0: 69 71 75 65 2e 74 65 73 74 20 75 6e 6f 72 64 65  ique.test unorde
2ee0: 72 65 64 2e 74 65 73 74 0a 20 20 75 70 64 61 74  red.test.  updat
2ef0: 65 2e 74 65 73 74 20 76 69 65 77 2e 74 65 73 74  e.test view.test
2f00: 20 76 74 61 62 31 2e 74 65 73 74 20 76 74 61 62   vtab1.test vtab
2f10: 32 2e 74 65 73 74 20 76 74 61 62 33 2e 74 65 73  2.test vtab3.tes
2f20: 74 20 76 74 61 62 34 2e 74 65 73 74 0a 20 20 76  t vtab4.test.  v
2f30: 74 61 62 35 2e 74 65 73 74 20 76 74 61 62 36 2e  tab5.test vtab6.
2f40: 74 65 73 74 20 76 74 61 62 37 2e 74 65 73 74 20  test vtab7.test 
2f50: 76 74 61 62 38 2e 74 65 73 74 20 76 74 61 62 39  vtab8.test vtab9
2f60: 2e 74 65 73 74 20 76 74 61 62 5f 61 6c 74 65 72  .test vtab_alter
2f70: 2e 74 65 73 74 0a 20 20 76 74 61 62 41 2e 74 65  .test.  vtabA.te
2f80: 73 74 20 76 74 61 62 42 2e 74 65 73 74 20 76 74  st vtabB.test vt
2f90: 61 62 43 2e 74 65 73 74 20 76 74 61 62 44 2e 74  abC.test vtabD.t
2fa0: 65 73 74 20 76 74 61 62 45 2e 74 65 73 74 0a 20  est vtabE.test. 
2fb0: 20 76 74 61 62 46 2e 74 65 73 74 20 77 68 65 72   vtabF.test wher
2fc0: 65 32 2e 74 65 73 74 20 77 68 65 72 65 33 2e 74  e2.test where3.t
2fd0: 65 73 74 20 77 68 65 72 65 34 2e 74 65 73 74 20  est where4.test 
2fe0: 77 68 65 72 65 35 2e 74 65 73 74 20 77 68 65 72  where5.test wher
2ff0: 65 36 2e 74 65 73 74 0a 20 20 77 68 65 72 65 37  e6.test.  where7
3000: 2e 74 65 73 74 20 77 68 65 72 65 38 6d 2e 74 65  .test where8m.te
3010: 73 74 20 77 68 65 72 65 38 2e 74 65 73 74 20 77  st where8.test w
3020: 68 65 72 65 39 2e 74 65 73 74 20 77 68 65 72 65  here9.test where
3030: 41 2e 74 65 73 74 20 77 68 65 72 65 42 2e 74 65  A.test whereB.te
3040: 73 74 0a 20 20 77 68 65 72 65 43 2e 74 65 73 74  st.  whereC.test
3050: 20 77 68 65 72 65 44 2e 74 65 73 74 20 77 68 65   whereD.test whe
3060: 72 65 45 2e 74 65 73 74 20 77 68 65 72 65 46 2e  reE.test whereF.
3070: 74 65 73 74 20 77 68 65 72 65 6c 69 6d 69 74 2e  test wherelimit.
3080: 74 65 73 74 0a 20 20 77 68 65 72 65 2e 74 65 73  test.  where.tes
3090: 74 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20  t.}..test_suite 
30a0: 22 76 66 73 6c 6f 67 22 20 2d 70 72 65 66 69 78  "vfslog" -prefix
30b0: 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e   "" -description
30c0: 20 7b 0a 20 20 22 56 66 73 6c 6f 67 22 20 71 75   {.  "Vfslog" qu
30d0: 69 63 6b 20 74 65 73 74 20 73 75 69 74 65 2e 20  ick test suite. 
30e0: 4c 69 6b 65 20 22 76 65 72 79 71 75 69 63 6b 22  Like "veryquick"
30f0: 20 65 78 63 65 70 74 20 64 6f 65 73 20 6e 6f 74   except does not
3100: 20 6f 6d 69 74 73 0a 20 20 61 20 66 65 77 20 74   omits.  a few t
3110: 65 73 74 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  ests that do not
3120: 20 77 6f 72 6b 20 77 69 74 68 20 61 20 76 65 72   work with a ver
3130: 73 69 6f 6e 20 31 20 56 46 53 2e 20 41 6e 64 20  sion 1 VFS. And 
3140: 74 68 65 20 71 75 6f 74 61 2a 20 74 65 73 74 73  the quota* tests
3150: 2c 0a 20 20 77 68 69 63 68 20 64 6f 20 6e 6f 74  ,.  which do not
3160: 20 77 6f 72 6b 20 77 69 74 68 20 61 20 56 46 53   work with a VFS
3170: 20 74 68 61 74 20 75 73 65 73 20 74 68 65 20 70   that uses the p
3180: 56 66 73 20 61 72 67 75 6d 65 6e 74 20 70 61 73  Vfs argument pas
3190: 73 65 64 20 74 6f 0a 20 20 73 71 6c 69 74 65 33  sed to.  sqlite3
31a0: 5f 76 66 73 20 6d 65 74 68 6f 64 73 2e 0a 7d 20  _vfs methods..} 
31b0: 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f  -files [.  test_
31c0: 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73  set $allquicktes
31d0: 74 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c  ts -exclude *mal
31e0: 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61  loc* *ioerr* *fa
31f0: 75 6c 74 2a 20 6f 73 65 72 72 6f 72 2e 74 65 73  ult* oserror.tes
3200: 74 20 5c 0a 20 20 70 61 67 65 72 31 2e 74 65 73  t \.  pager1.tes
3210: 74 20 73 79 73 63 61 6c 6c 2e 74 65 73 74 20 73  t syscall.test s
3220: 79 73 66 61 75 6c 74 2e 74 65 73 74 20 74 6b 74  ysfault.test tkt
3230: 33 34 35 37 2e 74 65 73 74 20 71 75 6f 74 61 2a  3457.test quota*
3240: 20 73 75 70 65 72 6c 6f 63 6b 2a 20 5c 0a 20 20   superlock* \.  
3250: 77 61 6c 2a 20 6d 6d 61 70 2a 0a 5d 0a 0a 6c 61  wal* mmap*.]..la
3260: 70 70 65 6e 64 20 3a 3a 74 65 73 74 73 75 69 74  ppend ::testsuit
3270: 65 6c 69 73 74 20 78 78 78 0a 23 2d 2d 2d 2d 2d  elist xxx.#-----
3280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
32a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
32b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
32c0: 2d 2d 2d 2d 0a 23 20 44 65 66 69 6e 65 20 74 68  ----.# Define th
32d0: 65 20 63 6f 76 65 72 61 67 65 20 72 65 6c 61 74  e coverage relat
32e0: 65 64 20 74 65 73 74 20 73 75 69 74 65 73 3a 0a  ed test suites:.
32f0: 23 0a 23 20 20 20 63 6f 76 65 72 61 67 65 2d 77  #.#   coverage-w
3300: 61 6c 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  al.#.test_suite 
3310: 22 63 6f 76 65 72 61 67 65 2d 77 61 6c 22 20 2d  "coverage-wal" -
3320: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
3330: 43 6f 76 65 72 61 67 65 20 74 65 73 74 73 20 66  Coverage tests f
3340: 6f 72 20 66 69 6c 65 20 77 61 6c 2e 63 2e 0a 7d  or file wal.c..}
3350: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 77 61 6c 2e   -files {.  wal.
3360: 74 65 73 74 20 20 20 20 20 20 20 77 61 6c 32 2e  test       wal2.
3370: 74 65 73 74 20 20 20 20 20 77 61 6c 33 2e 74 65  test     wal3.te
3380: 73 74 20 20 20 20 20 20 20 77 61 6c 6d 6f 64 65  st       walmode
3390: 2e 74 65 73 74 20 20 20 20 0a 20 20 77 61 6c 62  .test    .  walb
33a0: 61 6b 2e 74 65 73 74 20 20 20 20 77 61 6c 68 6f  ak.test    walho
33b0: 6f 6b 2e 74 65 73 74 20 20 77 61 6c 63 72 61 73  ok.test  walcras
33c0: 68 32 2e 74 65 73 74 20 20 77 61 6c 63 6b 73 75  h2.test  walcksu
33d0: 6d 2e 74 65 73 74 0a 20 20 77 61 6c 66 61 75 6c  m.test.  walfaul
33e0: 74 2e 74 65 73 74 20 20 77 61 6c 62 69 67 2e 74  t.test  walbig.t
33f0: 65 73 74 20 20 20 77 61 6c 6e 6f 73 68 6d 2e 74  est   walnoshm.t
3400: 65 73 74 0a 20 20 77 61 6c 35 2e 74 65 73 74 0a  est.  wal5.test.
3410: 7d 20 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  } ..test_suite "
3420: 63 6f 76 65 72 61 67 65 2d 70 61 67 65 72 22 20  coverage-pager" 
3430: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
3440: 20 43 6f 76 65 72 61 67 65 20 74 65 73 74 73 20   Coverage tests 
3450: 66 6f 72 20 66 69 6c 65 20 70 61 67 65 72 2e 63  for file pager.c
3460: 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 70  ..} -files {.  p
3470: 61 67 65 72 31 2e 74 65 73 74 20 20 20 20 70 61  ager1.test    pa
3480: 67 65 72 32 2e 74 65 73 74 20 20 70 61 67 65 72  ger2.test  pager
3490: 66 61 75 6c 74 2e 74 65 73 74 20 20 70 61 67 65  fault.test  page
34a0: 72 66 61 75 6c 74 32 2e 74 65 73 74 0a 20 20 77  rfault2.test.  w
34b0: 61 6c 66 61 75 6c 74 2e 74 65 73 74 20 20 77 61  alfault.test  wa
34c0: 6c 62 61 6b 2e 74 65 73 74 20 20 6a 6f 75 72 6e  lbak.test  journ
34d0: 61 6c 32 2e 74 65 73 74 20 20 20 20 74 6b 74 2d  al2.test    tkt-
34e0: 39 64 36 38 63 38 38 33 2e 74 65 73 74 0a 7d 20  9d68c883.test.} 
34f0: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 63 6f  ..test_suite "co
3500: 76 65 72 61 67 65 2d 61 6e 61 6c 79 7a 65 22 20  verage-analyze" 
3510: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
3520: 20 43 6f 76 65 72 61 67 65 20 74 65 73 74 73 20   Coverage tests 
3530: 66 6f 72 20 66 69 6c 65 20 61 6e 61 6c 79 7a 65  for file analyze
3540: 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  .c..} -files {. 
3550: 20 61 6e 61 6c 79 7a 65 33 2e 74 65 73 74 20 61   analyze3.test a
3560: 6e 61 6c 79 7a 65 34 2e 74 65 73 74 20 61 6e 61  nalyze4.test ana
3570: 6c 79 7a 65 35 2e 74 65 73 74 20 61 6e 61 6c 79  lyze5.test analy
3580: 7a 65 36 2e 74 65 73 74 0a 20 20 61 6e 61 6c 79  ze6.test.  analy
3590: 7a 65 37 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  ze7.test analyze
35a0: 38 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 39 2e  8.test analyze9.
35b0: 74 65 73 74 20 61 6e 61 6c 79 7a 65 41 2e 74 65  test analyzeA.te
35c0: 73 74 0a 20 20 61 6e 61 6c 79 7a 65 2e 74 65 73  st.  analyze.tes
35d0: 74 20 61 6e 61 6c 79 7a 65 42 2e 74 65 73 74 20  t analyzeB.test 
35e0: 6d 61 6c 6c 6f 63 41 2e 74 65 73 74 0a 7d 20 0a  mallocA.test.} .
35f0: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 63 6f 76  .test_suite "cov
3600: 65 72 61 67 65 2d 73 6f 72 74 65 72 22 20 2d 64  erage-sorter" -d
3610: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 43  escription {.  C
3620: 6f 76 65 72 61 67 65 20 74 65 73 74 73 20 66 6f  overage tests fo
3630: 72 20 66 69 6c 65 20 76 64 62 65 73 6f 72 74 2e  r file vdbesort.
3640: 63 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20  c..} -files {.  
3650: 73 6f 72 74 2e 74 65 73 74 20 73 6f 72 74 66 61  sort.test sortfa
3660: 75 6c 74 2e 74 65 73 74 0a 7d 20 0a 0a 0a 6c 61  ult.test.} ...la
3670: 70 70 65 6e 64 20 3a 3a 74 65 73 74 73 75 69 74  ppend ::testsuit
3680: 65 6c 69 73 74 20 78 78 78 0a 23 2d 2d 2d 2d 2d  elist xxx.#-----
3690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
36d0: 2d 2d 2d 2d 0a 23 20 44 65 66 69 6e 65 20 74 68  ----.# Define th
36e0: 65 20 70 65 72 6d 75 74 61 74 69 6f 6e 20 74 65  e permutation te
36f0: 73 74 20 73 75 69 74 65 73 3a 0a 23 0a 0a 23 20  st suites:.#..# 
3700: 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 75  Run some tests u
3710: 73 69 6e 67 20 70 72 65 2d 61 6c 6c 6f 63 61 74  sing pre-allocat
3720: 65 64 20 70 61 67 65 20 61 6e 64 20 73 63 72 61  ed page and scra
3730: 74 63 68 20 62 6c 6f 63 6b 73 2e 0a 23 0a 23 20  tch blocks..#.# 
3740: 6d 6d 61 70 31 2e 74 65 73 74 20 69 73 20 65 78  mmap1.test is ex
3750: 63 6c 75 64 65 64 20 62 65 63 61 75 73 65 20 61  cluded because a
3760: 20 67 6f 6f 64 20 6e 75 6d 62 65 72 20 6f 66 20   good number of 
3770: 69 74 73 20 74 65 73 74 73 20 64 65 70 65 6e 64  its tests depend
3780: 20 6f 6e 20 0a 23 20 74 68 65 20 70 61 67 65 2d   on .# the page-
3790: 63 61 63 68 65 20 62 65 69 6e 67 20 6c 61 72 67  cache being larg
37a0: 65 72 20 74 68 61 6e 20 74 68 65 20 64 61 74 61  er than the data
37b0: 62 61 73 65 2e 20 42 75 74 20 74 68 69 73 20 70  base. But this p
37c0: 65 72 6d 75 74 61 74 69 6f 6e 0a 23 20 63 61 75  ermutation.# cau
37d0: 73 65 73 20 74 68 65 20 65 66 66 65 63 74 69 76  ses the effectiv
37e0: 65 20 6c 69 6d 69 74 20 6f 6e 20 74 68 65 20 70  e limit on the p
37f0: 61 67 65 2d 63 61 63 68 65 20 74 6f 20 62 65 20  age-cache to be 
3800: 6a 75 73 74 20 32 34 20 70 61 67 65 73 2e 0a 23  just 24 pages..#
3810: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d  .test_suite "mem
3820: 73 75 62 73 79 73 31 22 20 2d 64 65 73 63 72 69  subsys1" -descri
3830: 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20  ption {.  Tests 
3840: 75 73 69 6e 67 20 70 72 65 2d 61 6c 6c 6f 63 61  using pre-alloca
3850: 74 65 64 20 70 61 67 65 20 61 6e 64 20 73 63 72  ted page and scr
3860: 61 74 63 68 20 62 6c 6f 63 6b 73 0a 7d 20 2d 66  atch blocks.} -f
3870: 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65  iles [.  test_se
3880: 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73  t $::allquicktes
3890: 74 73 20 2d 65 78 63 6c 75 64 65 20 69 6f 65 72  ts -exclude ioer
38a0: 72 35 2e 74 65 73 74 20 6d 61 6c 6c 6f 63 35 2e  r5.test malloc5.
38b0: 74 65 73 74 20 6d 6d 61 70 31 2e 74 65 73 74 0a  test mmap1.test.
38c0: 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a  ] -initialize {.
38d0: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
38e0: 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75  e}.  sqlite3_shu
38f0: 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f  tdown.  sqlite3_
3900: 63 6f 6e 66 69 67 5f 70 61 67 65 63 61 63 68 65  config_pagecache
3910: 20 34 30 39 36 20 32 34 0a 20 20 73 71 6c 69 74   4096 24.  sqlit
3920: 65 33 5f 63 6f 6e 66 69 67 5f 73 63 72 61 74 63  e3_config_scratc
3930: 68 20 32 35 30 30 30 20 31 0a 20 20 73 71 6c 69  h 25000 1.  sqli
3940: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
3950: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
3960: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73  t_functions.} -s
3970: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63  hutdown {.  catc
3980: 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73  h {db close}.  s
3990: 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a  qlite3_shutdown.
39a0: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
39b0: 5f 70 61 67 65 63 61 63 68 65 20 30 20 30 0a 20  _pagecache 0 0. 
39c0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
39d0: 73 63 72 61 74 63 68 20 30 20 30 0a 20 20 73 71  scratch 0 0.  sq
39e0: 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
39f0: 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74  .  autoinstall_t
3a00: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a  est_functions.}.
3a10: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74  .# Run some test
3a20: 73 20 75 73 69 6e 67 20 70 72 65 2d 61 6c 6c 6f  s using pre-allo
3a30: 63 61 74 65 64 20 70 61 67 65 20 61 6e 64 20 73  cated page and s
3a40: 63 72 61 74 63 68 20 62 6c 6f 63 6b 73 2e 20 54  cratch blocks. T
3a50: 68 69 73 20 74 69 6d 65 0a 23 20 74 68 65 20 61  his time.# the a
3a60: 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 20 74  llocations are t
3a70: 6f 6f 20 73 6d 61 6c 6c 20 74 6f 20 75 73 65 20  oo small to use 
3a80: 69 6e 20 6d 6f 73 74 20 63 61 73 65 73 2e 0a 23  in most cases..#
3a90: 0a 23 20 42 6f 74 68 20 69 6f 65 72 72 35 2e 74  .# Both ioerr5.t
3aa0: 65 73 74 20 61 6e 64 20 6d 61 6c 6c 6f 63 35 2e  est and malloc5.
3ab0: 74 65 73 74 20 61 72 65 20 65 78 63 6c 75 64 65  test are exclude
3ac0: 64 20 62 65 63 61 75 73 65 20 74 68 65 79 20 74  d because they t
3ad0: 65 73 74 20 74 68 65 0a 23 20 73 71 6c 69 74 65  est the.# sqlite
3ae0: 33 5f 73 6f 66 74 5f 68 65 61 70 5f 6c 69 6d 69  3_soft_heap_limi
3af0: 74 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  t() and sqlite3_
3b00: 72 65 6c 65 61 73 65 5f 6d 65 6d 6f 72 79 28 29  release_memory()
3b10: 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 0a   functionality..
3b20: 23 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 61  # This functiona
3b30: 6c 69 74 79 20 69 73 20 64 69 73 61 62 6c 65 64  lity is disabled
3b40: 20 69 66 20 61 20 70 72 65 2d 61 6c 6c 6f 63 61   if a pre-alloca
3b50: 74 65 64 20 70 61 67 65 20 62 6c 6f 63 6b 20 69  ted page block i
3b60: 73 20 70 72 6f 76 69 64 65 64 2e 0a 23 0a 74 65  s provided..#.te
3b70: 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73 75 62  st_suite "memsub
3b80: 73 79 73 32 22 20 2d 64 65 73 63 72 69 70 74 69  sys2" -descripti
3b90: 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 75 73 69  on {.  Tests usi
3ba0: 6e 67 20 73 6d 61 6c 6c 20 70 72 65 2d 61 6c 6c  ng small pre-all
3bb0: 6f 63 61 74 65 64 20 70 61 67 65 20 61 6e 64 20  ocated page and 
3bc0: 73 63 72 61 74 63 68 20 62 6c 6f 63 6b 73 0a 7d  scratch blocks.}
3bd0: 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74   -files [.  test
3be0: 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b  _set $::allquick
3bf0: 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 69  tests -exclude i
3c00: 6f 65 72 72 35 2e 74 65 73 74 20 6d 61 6c 6c 6f  oerr5.test mallo
3c10: 63 35 2e 74 65 73 74 0a 5d 20 2d 69 6e 69 74 69  c5.test.] -initi
3c20: 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20  alize {.  catch 
3c30: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
3c40: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
3c50: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 70  sqlite3_config_p
3c60: 61 67 65 63 61 63 68 65 20 35 31 32 20 35 0a 20  agecache 512 5. 
3c70: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
3c80: 73 63 72 61 74 63 68 20 31 30 30 30 20 31 0a 20  scratch 1000 1. 
3c90: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
3ca0: 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c  ize.  autoinstal
3cb0: 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73  l_test_functions
3cc0: 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20  .} -shutdown {. 
3cd0: 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65   catch {db close
3ce0: 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74  }.  sqlite3_shut
3cf0: 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f 63  down.  sqlite3_c
3d00: 6f 6e 66 69 67 5f 70 61 67 65 63 61 63 68 65 20  onfig_pagecache 
3d10: 30 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f  0 0.  sqlite3_co
3d20: 6e 66 69 67 5f 73 63 72 61 74 63 68 20 30 20 30  nfig_scratch 0 0
3d30: 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  .  sqlite3_initi
3d40: 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74  alize.  autoinst
3d50: 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f  all_test_functio
3d60: 6e 73 0a 7d 0a 0a 23 20 52 75 6e 20 61 6c 6c 20  ns.}..# Run all 
3d70: 74 65 73 74 73 20 77 69 74 68 20 74 68 65 20 6c  tests with the l
3d80: 6f 6f 6b 61 73 69 64 65 20 61 6c 6c 6f 63 61 74  ookaside allocat
3d90: 6f 72 20 64 69 73 61 62 6c 65 64 2e 0a 23 0a 74  or disabled..#.t
3da0: 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 6c 6f 6f  est_suite "noloo
3db0: 6b 61 73 69 64 65 22 20 2d 64 65 73 63 72 69 70  kaside" -descrip
3dc0: 74 69 6f 6e 20 7b 0a 20 20 4f 4f 4d 20 74 65 73  tion {.  OOM tes
3dd0: 74 73 20 77 69 74 68 20 6c 6f 6f 6b 61 73 69 64  ts with lookasid
3de0: 65 20 64 69 73 61 62 6c 65 64 0a 7d 20 2d 69 6e  e disabled.} -in
3df0: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74  itialize {.  cat
3e00: 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20  ch {db close}.  
3e10: 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
3e20: 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  .  sqlite3_confi
3e30: 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a  g_lookaside 0 0.
3e40: 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61    sqlite3_initia
3e50: 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61  lize.  autoinsta
3e60: 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e  ll_test_function
3e70: 73 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  s.} -shutdown {.
3e80: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
3e90: 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75  e}.  sqlite3_shu
3ea0: 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33 5f  tdown.  sqlite3_
3eb0: 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65  config_lookaside
3ec0: 20 31 30 30 20 35 30 30 0a 20 20 73 71 6c 69 74   100 500.  sqlit
3ed0: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20  e3_initialize.  
3ee0: 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74  autoinstall_test
3ef0: 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 66 69  _functions.} -fi
3f00: 6c 65 73 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74  les $::allquickt
3f10: 65 73 74 73 0a 0a 23 20 52 75 6e 20 73 6f 6d 65  ests..# Run some
3f20: 20 74 65 73 74 73 20 69 6e 20 53 51 4c 49 54 45   tests in SQLITE
3f30: 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48  _CONFIG_SINGLETH
3f40: 52 45 41 44 20 6d 6f 64 65 2e 0a 23 0a 74 65 73  READ mode..#.tes
3f50: 74 5f 73 75 69 74 65 20 22 73 69 6e 67 6c 65 74  t_suite "singlet
3f60: 68 72 65 61 64 22 20 2d 64 65 73 63 72 69 70 74  hread" -descript
3f70: 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75  ion {.  Tests ru
3f80: 6e 20 69 6e 20 53 51 4c 49 54 45 5f 43 4f 4e 46  n in SQLITE_CONF
3f90: 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20  IG_SINGLETHREAD 
3fa0: 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74 69 61 6c 69  mode.} -initiali
3fb0: 7a 65 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62  ze {.  catch {db
3fc0: 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65   close}.  sqlite
3fd0: 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74  3_shutdown.  cat
3fe0: 63 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ch {sqlite3_conf
3ff0: 69 67 20 73 69 6e 67 6c 65 74 68 72 65 61 64 7d  ig singlethread}
4000: 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  .  sqlite3_initi
4010: 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74  alize.  autoinst
4020: 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f  all_test_functio
4030: 6e 73 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20  ns.} -files {.  
4040: 64 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64 65  delete.test   de
4050: 6c 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73 65  lete2.test  inse
4060: 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61 63  rt.test  rollbac
4070: 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31 2e  k.test  select1.
4080: 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74  test.  select2.t
4090: 65 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74 20  est  trans.test 
40a0: 20 20 20 75 70 64 61 74 65 2e 74 65 73 74 20 20     update.test  
40b0: 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20 74  vacuum.test    t
40c0: 79 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70 65  ypes.test.  type
40d0: 73 32 2e 74 65 73 74 20 20 20 74 79 70 65 73 33  s2.test   types3
40e0: 2e 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77  .test.} -shutdow
40f0: 6e 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20  n {.  catch {db 
4100: 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33  close}.  sqlite3
4110: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63  _shutdown.  catc
4120: 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  h {sqlite3_confi
4130: 67 20 73 65 72 69 61 6c 69 7a 65 64 7d 0a 20 20  g serialized}.  
4140: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
4150: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
4160: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
4170: 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e  }..test_suite "n
4180: 6f 6d 75 74 65 78 22 20 2d 64 65 73 63 72 69 70  omutex" -descrip
4190: 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72  tion {.  Tests r
41a0: 75 6e 20 77 69 74 68 20 74 68 65 20 53 51 4c 49  un with the SQLI
41b0: 54 45 5f 4f 50 45 4e 5f 4d 55 4c 54 49 54 48 52  TE_OPEN_MULTITHR
41c0: 45 41 44 45 44 20 66 6c 61 67 20 70 61 73 73 65  EADED flag passe
41d0: 64 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65  d to sqlite3_ope
41e0: 6e 28 29 2e 0a 7d 20 2d 69 6e 69 74 69 61 6c 69  n()..} -initiali
41f0: 7a 65 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  ze {.  rename sq
4200: 6c 69 74 65 33 20 73 71 6c 69 74 65 33 5f 6e 6f  lite3 sqlite3_no
4210: 6d 75 74 65 78 0a 20 20 70 72 6f 63 20 73 71 6c  mutex.  proc sql
4220: 69 74 65 33 20 7b 61 72 67 73 7d 20 7b 0a 20 20  ite3 {args} {.  
4230: 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 72 61    if {[string ra
4240: 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  nge [lindex $arg
4250: 73 20 30 5d 20 30 20 30 5d 20 6e 65 20 22 2d 22  s 0] 0 0] ne "-"
4260: 7d 20 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e  } {.      lappen
4270: 64 20 61 72 67 73 20 2d 66 75 6c 6c 6d 75 74 65  d args -fullmute
4280: 78 20 30 20 2d 6e 6f 6d 75 74 65 78 20 31 0a 20  x 0 -nomutex 1. 
4290: 20 20 20 7d 0a 20 20 20 20 75 70 6c 65 76 65 6c     }.    uplevel
42a0: 20 5b 63 6f 6e 63 61 74 20 73 71 6c 69 74 65 33   [concat sqlite3
42b0: 5f 6e 6f 6d 75 74 65 78 20 24 61 72 67 73 5d 0a  _nomutex $args].
42c0: 20 20 7d 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20    }.} -files {. 
42d0: 20 64 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64   delete.test   d
42e0: 65 6c 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73  elete2.test  ins
42f0: 65 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61  ert.test  rollba
4300: 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31  ck.test  select1
4310: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
4320: 74 65 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74  test  trans.test
4330: 20 20 20 20 75 70 64 61 74 65 2e 74 65 73 74 20      update.test 
4340: 20 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20   vacuum.test    
4350: 74 79 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70  types.test.  typ
4360: 65 73 32 2e 74 65 73 74 20 20 20 74 79 70 65 73  es2.test   types
4370: 33 2e 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f  3.test.} -shutdo
4380: 77 6e 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  wn {.  rename sq
4390: 6c 69 74 65 33 20 7b 7d 0a 20 20 72 65 6e 61 6d  lite3 {}.  renam
43a0: 65 20 73 71 6c 69 74 65 33 5f 6e 6f 6d 75 74 65  e sqlite3_nomute
43b0: 78 20 73 71 6c 69 74 65 33 0a 7d 0a 0a 23 20 52  x sqlite3.}..# R
43c0: 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e  un some tests in
43d0: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
43e0: 55 4c 54 49 54 48 52 45 41 44 20 6d 6f 64 65 2e  ULTITHREAD mode.
43f0: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6d  .#.test_suite "m
4400: 75 6c 74 69 74 68 72 65 61 64 22 20 2d 64 65 73  ultithread" -des
4410: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73  cription {.  Tes
4420: 74 73 20 72 75 6e 20 69 6e 20 53 51 4c 49 54 45  ts run in SQLITE
4430: 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52  _CONFIG_MULTITHR
4440: 45 41 44 20 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74  EAD mode.} -init
4450: 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68  ialize {.  catch
4460: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71   {db close}.  sq
4470: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
4480: 20 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f   catch {sqlite3_
4490: 63 6f 6e 66 69 67 20 6d 75 6c 74 69 74 68 72 65  config multithre
44a0: 61 64 7d 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e  ad}.  sqlite3_in
44b0: 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69  itialize.  autoi
44c0: 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63  nstall_test_func
44d0: 74 69 6f 6e 73 0a 7d 20 2d 66 69 6c 65 73 20 7b  tions.} -files {
44e0: 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 20  .  delete.test  
44f0: 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20 20 69   delete2.test  i
4500: 6e 73 65 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c  nsert.test  roll
4510: 62 61 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63  back.test  selec
4520: 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74  t1.test.  select
4530: 32 2e 74 65 73 74 20 20 74 72 61 6e 73 2e 74 65  2.test  trans.te
4540: 73 74 20 20 20 20 75 70 64 61 74 65 2e 74 65 73  st    update.tes
4550: 74 20 20 76 61 63 75 75 6d 2e 74 65 73 74 20 20  t  vacuum.test  
4560: 20 20 74 79 70 65 73 2e 74 65 73 74 0a 20 20 74    types.test.  t
4570: 79 70 65 73 32 2e 74 65 73 74 20 20 20 74 79 70  ypes2.test   typ
4580: 65 73 33 2e 74 65 73 74 20 20 20 73 6f 72 74 34  es3.test   sort4
4590: 2e 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77  .test.} -shutdow
45a0: 6e 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20  n {.  catch {db 
45b0: 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33  close}.  sqlite3
45c0: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63  _shutdown.  catc
45d0: 68 20 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  h {sqlite3_confi
45e0: 67 20 73 65 72 69 61 6c 69 7a 65 64 7d 0a 20 20  g serialized}.  
45f0: 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
4600: 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c  ze.  autoinstall
4610: 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a  _test_functions.
4620: 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65  }..# Run some te
4630: 73 74 73 20 69 6e 20 53 51 4c 49 54 45 5f 4f 50  sts in SQLITE_OP
4640: 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 20 6d 6f 64  EN_FULLMUTEX mod
4650: 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  e..#.test_suite 
4660: 22 66 75 6c 6c 6d 75 74 65 78 22 20 2d 64 65 73  "fullmutex" -des
4670: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73  cription {.  Tes
4680: 74 73 20 72 75 6e 20 69 6e 20 53 51 4c 49 54 45  ts run in SQLITE
4690: 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 20  _OPEN_FULLMUTEX 
46a0: 6d 6f 64 65 0a 7d 20 2d 69 6e 69 74 69 61 6c 69  mode.} -initiali
46b0: 7a 65 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  ze {.  rename sq
46c0: 6c 69 74 65 33 20 73 71 6c 69 74 65 33 5f 66 75  lite3 sqlite3_fu
46d0: 6c 6c 6d 75 74 65 78 0a 20 20 70 72 6f 63 20 73  llmutex.  proc s
46e0: 71 6c 69 74 65 33 20 7b 61 72 67 73 7d 20 7b 0a  qlite3 {args} {.
46f0: 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20      if {[string 
4700: 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24 61  range [lindex $a
4710: 72 67 73 20 30 5d 20 30 20 30 5d 20 6e 65 20 22  rgs 0] 0 0] ne "
4720: 2d 22 7d 20 7b 0a 20 20 20 20 20 20 6c 61 70 70  -"} {.      lapp
4730: 65 6e 64 20 61 72 67 73 20 2d 6e 6f 6d 75 74 65  end args -nomute
4740: 78 20 30 20 2d 66 75 6c 6c 6d 75 74 65 78 20 31  x 0 -fullmutex 1
4750: 0a 20 20 20 20 7d 0a 20 20 20 20 75 70 6c 65 76  .    }.    uplev
4760: 65 6c 20 5b 63 6f 6e 63 61 74 20 73 71 6c 69 74  el [concat sqlit
4770: 65 33 5f 66 75 6c 6c 6d 75 74 65 78 20 24 61 72  e3_fullmutex $ar
4780: 67 73 5d 0a 20 20 7d 0a 7d 20 2d 66 69 6c 65 73  gs].  }.} -files
4790: 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74   {.  delete.test
47a0: 20 20 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20     delete2.test 
47b0: 20 69 6e 73 65 72 74 2e 74 65 73 74 20 20 72 6f   insert.test  ro
47c0: 6c 6c 62 61 63 6b 2e 74 65 73 74 20 20 73 65 6c  llback.test  sel
47d0: 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65  ect1.test.  sele
47e0: 63 74 32 2e 74 65 73 74 20 20 74 72 61 6e 73 2e  ct2.test  trans.
47f0: 74 65 73 74 20 20 20 20 75 70 64 61 74 65 2e 74  test    update.t
4800: 65 73 74 20 20 76 61 63 75 75 6d 2e 74 65 73 74  est  vacuum.test
4810: 20 20 20 20 74 79 70 65 73 2e 74 65 73 74 0a 20      types.test. 
4820: 20 74 79 70 65 73 32 2e 74 65 73 74 20 20 20 74   types2.test   t
4830: 79 70 65 73 33 2e 74 65 73 74 0a 7d 20 2d 73 68  ypes3.test.} -sh
4840: 75 74 64 6f 77 6e 20 7b 0a 20 20 72 65 6e 61 6d  utdown {.  renam
4850: 65 20 73 71 6c 69 74 65 33 20 7b 7d 0a 20 20 72  e sqlite3 {}.  r
4860: 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 5f 66 75  ename sqlite3_fu
4870: 6c 6c 6d 75 74 65 78 20 73 71 6c 69 74 65 33 0a  llmutex sqlite3.
4880: 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65  }..# Run some te
4890: 73 74 73 20 75 73 69 6e 67 20 74 68 65 20 22 6f  sts using the "o
48a0: 6e 65 66 69 6c 65 22 20 64 65 6d 6f 2e 0a 23 0a  nefile" demo..#.
48b0: 74 65 73 74 5f 73 75 69 74 65 20 22 6f 6e 65 66  test_suite "onef
48c0: 69 6c 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ile" -descriptio
48d0: 6e 20 7b 0a 20 20 52 75 6e 20 73 6f 6d 65 20 74  n {.  Run some t
48e0: 65 73 74 73 20 75 73 69 6e 67 20 74 68 65 20 22  ests using the "
48f0: 74 65 73 74 5f 6f 6e 65 66 69 6c 65 2e 63 22 20  test_onefile.c" 
4900: 64 65 6d 6f 0a 7d 20 2d 69 6e 69 74 69 61 6c 69  demo.} -initiali
4910: 7a 65 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  ze {.  rename sq
4920: 6c 69 74 65 33 20 73 71 6c 69 74 65 33 5f 6f 6e  lite3 sqlite3_on
4930: 65 66 69 6c 65 0a 20 20 70 72 6f 63 20 73 71 6c  efile.  proc sql
4940: 69 74 65 33 20 7b 61 72 67 73 7d 20 7b 0a 20 20  ite3 {args} {.  
4950: 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 72 61    if {[string ra
4960: 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24 61 72 67  nge [lindex $arg
4970: 73 20 30 5d 20 30 20 30 5d 20 6e 65 20 22 2d 22  s 0] 0 0] ne "-"
4980: 7d 20 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e  } {.      lappen
4990: 64 20 61 72 67 73 20 2d 76 66 73 20 66 73 0a 20  d args -vfs fs. 
49a0: 20 20 20 7d 0a 20 20 20 20 75 70 6c 65 76 65 6c     }.    uplevel
49b0: 20 5b 63 6f 6e 63 61 74 20 73 71 6c 69 74 65 33   [concat sqlite3
49c0: 5f 6f 6e 65 66 69 6c 65 20 24 61 72 67 73 5d 0a  _onefile $args].
49d0: 20 20 7d 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20    }.} -files {. 
49e0: 20 63 6f 6e 66 6c 69 63 74 2e 74 65 73 74 20 20   conflict.test  
49f0: 69 6e 73 65 72 74 2e 74 65 73 74 20 20 20 69 6e  insert.test   in
4a00: 73 65 72 74 32 2e 74 65 73 74 20 20 69 6e 73 65  sert2.test  inse
4a10: 72 74 33 2e 74 65 73 74 0a 20 20 72 6f 6c 6c 62  rt3.test.  rollb
4a20: 61 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74  ack.test  select
4a30: 31 2e 74 65 73 74 20 20 73 65 6c 65 63 74 32 2e  1.test  select2.
4a40: 74 65 73 74 20 20 73 65 6c 65 63 74 33 2e 74 65  test  select3.te
4a50: 73 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b  st.} -shutdown {
4a60: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
4a70: 33 20 7b 7d 0a 20 20 72 65 6e 61 6d 65 20 73 71  3 {}.  rename sq
4a80: 6c 69 74 65 33 5f 6f 6e 65 66 69 6c 65 20 73 71  lite3_onefile sq
4a90: 6c 69 74 65 33 0a 7d 0a 0a 23 20 52 75 6e 20 73  lite3.}..# Run s
4aa0: 6f 6d 65 20 74 65 73 74 73 20 75 73 69 6e 67 20  ome tests using 
4ab0: 55 54 46 2d 31 36 20 64 61 74 61 62 61 73 65 73  UTF-16 databases
4ac0: 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22  ..#.test_suite "
4ad0: 75 74 66 31 36 22 20 2d 64 65 73 63 72 69 70 74  utf16" -descript
4ae0: 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74  ion {.  Run test
4af0: 73 20 75 73 69 6e 67 20 55 54 46 2d 31 36 20 64  s using UTF-16 d
4b00: 61 74 61 62 61 73 65 73 0a 7d 20 2d 70 72 65 73  atabases.} -pres
4b10: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 65 6e  ql {.  pragma en
4b20: 63 6f 64 69 6e 67 20 3d 20 27 55 54 46 2d 31 36  coding = 'UTF-16
4b30: 27 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 20  '.} -files {.   
4b40: 20 61 6c 74 65 72 2e 74 65 73 74 20 61 6c 74 65   alter.test alte
4b50: 72 33 2e 74 65 73 74 0a 20 20 20 20 61 6e 61 6c  r3.test.    anal
4b60: 79 7a 65 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  yze.test analyze
4b70: 33 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 34 2e  3.test analyze4.
4b80: 74 65 73 74 20 61 6e 61 6c 79 7a 65 35 2e 74 65  test analyze5.te
4b90: 73 74 20 61 6e 61 6c 79 7a 65 36 2e 74 65 73 74  st analyze6.test
4ba0: 0a 20 20 20 20 61 6e 61 6c 79 7a 65 37 2e 74 65  .    analyze7.te
4bb0: 73 74 20 61 6e 61 6c 79 7a 65 38 2e 74 65 73 74  st analyze8.test
4bc0: 20 61 6e 61 6c 79 7a 65 39 2e 74 65 73 74 20 61   analyze9.test a
4bd0: 6e 61 6c 79 7a 65 41 2e 74 65 73 74 20 61 6e 61  nalyzeA.test ana
4be0: 6c 79 7a 65 42 2e 74 65 73 74 0a 20 20 20 20 61  lyzeB.test.    a
4bf0: 75 74 68 2e 74 65 73 74 20 62 69 6e 64 2e 74 65  uth.test bind.te
4c00: 73 74 20 62 6c 6f 62 2e 74 65 73 74 20 63 61 70  st blob.test cap
4c10: 69 32 2e 74 65 73 74 20 63 61 70 69 33 2e 74 65  i2.test capi3.te
4c20: 73 74 20 63 6f 6c 6c 61 74 65 31 2e 74 65 73 74  st collate1.test
4c30: 0a 20 20 20 20 63 6f 6c 6c 61 74 65 32 2e 74 65  .    collate2.te
4c40: 73 74 20 63 6f 6c 6c 61 74 65 33 2e 74 65 73 74  st collate3.test
4c50: 20 63 6f 6c 6c 61 74 65 34 2e 74 65 73 74 20 63   collate4.test c
4c60: 6f 6c 6c 61 74 65 35 2e 74 65 73 74 20 63 6f 6c  ollate5.test col
4c70: 6c 61 74 65 36 2e 74 65 73 74 0a 20 20 20 20 63  late6.test.    c
4c80: 6f 6e 66 6c 69 63 74 2e 74 65 73 74 20 64 61 74  onflict.test dat
4c90: 65 2e 74 65 73 74 20 64 65 6c 65 74 65 2e 74 65  e.test delete.te
4ca0: 73 74 20 65 78 70 72 2e 74 65 73 74 20 66 6b 65  st expr.test fke
4cb0: 79 31 2e 74 65 73 74 20 66 75 6e 63 2e 74 65 73  y1.test func.tes
4cc0: 74 0a 20 20 20 20 68 6f 6f 6b 2e 74 65 73 74 20  t.    hook.test 
4cd0: 69 6e 64 65 78 2e 74 65 73 74 20 69 6e 73 65 72  index.test inser
4ce0: 74 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74  t2.test insert.t
4cf0: 65 73 74 20 69 6e 74 65 72 72 75 70 74 2e 74 65  est interrupt.te
4d00: 73 74 20 69 6e 2e 74 65 73 74 0a 20 20 20 20 69  st in.test.    i
4d10: 6e 74 70 6b 65 79 2e 74 65 73 74 20 69 6f 65 72  ntpkey.test ioer
4d20: 72 2e 74 65 73 74 20 6a 6f 69 6e 32 2e 74 65 73  r.test join2.tes
4d30: 74 20 6a 6f 69 6e 2e 74 65 73 74 20 6c 61 73 74  t join.test last
4d40: 69 6e 73 65 72 74 2e 74 65 73 74 0a 20 20 20 20  insert.test.    
4d50: 6c 61 73 74 73 74 6d 74 63 68 61 6e 67 65 73 2e  laststmtchanges.
4d60: 74 65 73 74 20 6c 69 6d 69 74 2e 74 65 73 74 20  test limit.test 
4d70: 6c 6f 63 6b 32 2e 74 65 73 74 20 6c 6f 63 6b 2e  lock2.test lock.
4d80: 74 65 73 74 20 6d 61 69 6e 2e 74 65 73 74 20 0a  test main.test .
4d90: 20 20 20 20 6d 65 6d 64 62 2e 74 65 73 74 20 6d      memdb.test m
4da0: 69 6e 6d 61 78 2e 74 65 73 74 20 6d 69 73 63 31  inmax.test misc1
4db0: 2e 74 65 73 74 20 6d 69 73 63 32 2e 74 65 73 74  .test misc2.test
4dc0: 20 6d 69 73 63 33 2e 74 65 73 74 20 6e 6f 74 6e   misc3.test notn
4dd0: 75 6c 6c 2e 74 65 73 74 0a 20 20 20 20 6e 75 6c  ull.test.    nul
4de0: 6c 2e 74 65 73 74 20 70 72 6f 67 72 65 73 73 2e  l.test progress.
4df0: 74 65 73 74 20 71 75 6f 74 65 2e 74 65 73 74 20  test quote.test 
4e00: 72 6f 77 69 64 2e 74 65 73 74 20 73 65 6c 65 63  rowid.test selec
4e10: 74 31 2e 74 65 73 74 20 73 65 6c 65 63 74 32 2e  t1.test select2.
4e20: 74 65 73 74 0a 20 20 20 20 73 65 6c 65 63 74 33  test.    select3
4e30: 2e 74 65 73 74 20 73 65 6c 65 63 74 34 2e 74 65  .test select4.te
4e40: 73 74 20 73 65 6c 65 63 74 35 2e 74 65 73 74 20  st select5.test 
4e50: 73 65 6c 65 63 74 36 2e 74 65 73 74 20 73 6f 72  select6.test sor
4e60: 74 2e 74 65 73 74 20 0a 20 20 20 20 73 75 62 73  t.test .    subs
4e70: 65 6c 65 63 74 2e 74 65 73 74 20 74 61 62 6c 65  elect.test table
4e80: 61 70 69 2e 74 65 73 74 20 74 61 62 6c 65 2e 74  api.test table.t
4e90: 65 73 74 20 74 65 6d 70 74 61 62 6c 65 2e 74 65  est temptable.te
4ea0: 73 74 0a 20 20 20 20 74 72 61 63 65 2e 74 65 73  st.    trace.tes
4eb0: 74 20 74 72 69 67 67 65 72 31 2e 74 65 73 74 20  t trigger1.test 
4ec0: 74 72 69 67 67 65 72 32 2e 74 65 73 74 20 74 72  trigger2.test tr
4ed0: 69 67 67 65 72 33 2e 74 65 73 74 0a 20 20 20 20  igger3.test.    
4ee0: 74 72 69 67 67 65 72 34 2e 74 65 73 74 20 74 79  trigger4.test ty
4ef0: 70 65 73 32 2e 74 65 73 74 20 74 79 70 65 73 2e  pes2.test types.
4f00: 74 65 73 74 20 75 6e 69 71 75 65 2e 74 65 73 74  test unique.test
4f10: 20 75 70 64 61 74 65 2e 74 65 73 74 0a 20 20 20   update.test.   
4f20: 20 76 61 63 75 75 6d 2e 74 65 73 74 20 76 69 65   vacuum.test vie
4f30: 77 2e 74 65 73 74 20 77 68 65 72 65 2e 74 65 73  w.test where.tes
4f40: 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20  t.}..# Run some 
4f50: 74 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69  tests in exclusi
4f60: 76 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e  ve locking mode.
4f70: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 65  .#.test_suite "e
4f80: 78 63 6c 75 73 69 76 65 22 20 2d 64 65 73 63 72  xclusive" -descr
4f90: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
4fa0: 65 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76  ests in exclusiv
4fb0: 65 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e 0a  e locking mode..
4fc0: 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72  } -presql {.  pr
4fd0: 61 67 6d 61 20 6c 6f 63 6b 69 6e 67 5f 6d 6f 64  agma locking_mod
4fe0: 65 20 3d 20 27 65 78 63 6c 75 73 69 76 65 27 0a  e = 'exclusive'.
4ff0: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 72 6f 6c  } -files {.  rol
5000: 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c 65 63  lback.test selec
5010: 74 31 2e 74 65 73 74 20 73 65 6c 65 63 74 32 2e  t1.test select2.
5020: 74 65 73 74 20 0a 20 20 6d 61 6c 6c 6f 63 2e 74  test .  malloc.t
5030: 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d  est ioerr.test.}
5040: 20 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65   ..# Run some te
5050: 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76 65  sts in exclusive
5060: 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 77 69   locking mode wi
5070: 74 68 20 74 72 75 6e 63 61 74 65 64 20 6a 6f 75  th truncated jou
5080: 72 6e 61 6c 73 2e 0a 23 0a 74 65 73 74 5f 73 75  rnals..#.test_su
5090: 69 74 65 20 22 65 78 63 6c 75 73 69 76 65 2d 74  ite "exclusive-t
50a0: 72 75 6e 63 61 74 65 22 20 2d 64 65 73 63 72 69  runcate" -descri
50b0: 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65  ption {.  Run te
50c0: 73 74 73 20 69 6e 20 65 78 63 6c 75 73 69 76 65  sts in exclusive
50d0: 20 6c 6f 63 6b 69 6e 67 20 6d 6f 64 65 20 61 6e   locking mode an
50e0: 64 20 74 72 75 6e 63 61 74 65 20 6a 6f 75 72 6e  d truncate journ
50f0: 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  al mode..} -pres
5100: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6c 6f  ql {.  pragma lo
5110: 63 6b 69 6e 67 5f 6d 6f 64 65 20 3d 20 27 65 78  cking_mode = 'ex
5120: 63 6c 75 73 69 76 65 27 3b 0a 20 20 70 72 61 67  clusive';.  prag
5130: 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  ma journal_mode 
5140: 3d 20 54 52 55 4e 43 41 54 45 3b 0a 7d 20 2d 66  = TRUNCATE;.} -f
5150: 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e  iles {.  delete.
5160: 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65 73  test delete2.tes
5170: 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20 72 6f  t insert.test ro
5180: 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c 65  llback.test sele
5190: 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65 63  ct1.test.  selec
51a0: 74 32 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  t2.test update.t
51b0: 65 73 74 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20  est malloc.test 
51c0: 69 6f 65 72 72 2e 74 65 73 74 0a 7d 20 0a 0a 23  ioerr.test.} ..#
51d0: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
51e0: 69 6e 20 70 65 72 73 69 73 74 65 6e 74 20 6a 6f  in persistent jo
51f0: 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65  urnal mode..#.te
5200: 73 74 5f 73 75 69 74 65 20 22 70 65 72 73 69 73  st_suite "persis
5210: 74 65 6e 74 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64  tent_journal" -d
5220: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
5230: 75 6e 20 74 65 73 74 73 20 69 6e 20 70 65 72 73  un tests in pers
5240: 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61 6c 20 6d  istent-journal m
5250: 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ode..} -presql {
5260: 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61  .  pragma journa
5270: 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69 73 74  l_mode = persist
5280: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65  .} -files {.  de
5290: 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65  lete.test delete
52a0: 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65  2.test insert.te
52b0: 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74  st rollback.test
52c0: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20   select1.test.  
52d0: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 74 72 61  select2.test tra
52e0: 6e 73 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  ns.test update.t
52f0: 65 73 74 20 76 61 63 75 75 6d 2e 74 65 73 74 20  est vacuum.test 
5300: 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74  .}..# Run some t
5310: 65 73 74 73 20 69 6e 20 74 72 75 6e 63 61 74 69  ests in truncati
5320: 6e 67 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  ng journal mode.
5330: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 74  .#.test_suite "t
5340: 72 75 6e 63 61 74 65 5f 6a 6f 75 72 6e 61 6c 22  runcate_journal"
5350: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
5360: 20 20 52 75 6e 20 74 65 73 74 73 20 69 6e 20 70    Run tests in p
5370: 65 72 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61  ersistent-journa
5380: 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71  l mode..} -presq
5390: 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75  l {.  pragma jou
53a0: 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 74 72 75 6e  rnal_mode = trun
53b0: 63 61 74 65 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  cate.} -files {.
53c0: 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64 65    delete.test de
53d0: 6c 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65 72  lete2.test inser
53e0: 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e  t.test rollback.
53f0: 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73  test select1.tes
5400: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
5410: 20 74 72 61 6e 73 2e 74 65 73 74 20 75 70 64 61   trans.test upda
5420: 74 65 2e 74 65 73 74 20 76 61 63 75 75 6d 2e 74  te.test vacuum.t
5430: 65 73 74 20 0a 20 20 6d 61 6c 6c 6f 63 2e 74 65  est .  malloc.te
5440: 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 7d 0a  st ioerr.test.}.
5450: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 65 72 72 6f  .# Run some erro
5460: 72 20 74 65 73 74 73 20 69 6e 20 70 65 72 73 69  r tests in persi
5470: 73 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f  stent journal mo
5480: 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65  de..#.test_suite
5490: 20 22 70 65 72 73 69 73 74 65 6e 74 5f 6a 6f 75   "persistent_jou
54a0: 72 6e 61 6c 5f 65 72 72 6f 72 22 20 2d 64 65 73  rnal_error" -des
54b0: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e  cription {.  Run
54c0: 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 61 6e 64   malloc.test and
54d0: 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6e 20 70   ioerr.test in p
54e0: 65 72 73 69 73 74 65 6e 74 2d 6a 6f 75 72 6e 61  ersistent-journa
54f0: 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71  l mode..} -presq
5500: 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75  l {.  pragma jou
5510: 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73  rnal_mode = pers
5520: 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  ist.} -files {. 
5530: 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65   malloc.test ioe
5540: 72 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75 6e  rr.test.}..# Run
5550: 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 6e   some tests in n
5560: 6f 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a  o journal mode..
5570: 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f  #.test_suite "no
5580: 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64 65 73 63 72  _journal" -descr
5590: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
55a0: 65 73 74 73 20 69 6e 20 6e 6f 2d 6a 6f 75 72 6e  ests in no-journ
55b0: 61 6c 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  al mode..} -pres
55c0: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f  ql {.  pragma jo
55d0: 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72  urnal_mode = per
55e0: 73 69 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a  sist.} -files {.
55f0: 20 20 64 65 6c 65 74 65 2e 74 65 73 74 20 64 65    delete.test de
5600: 6c 65 74 65 32 2e 74 65 73 74 20 69 6e 73 65 72  lete2.test inser
5610: 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61 63 6b 2e  t.test rollback.
5620: 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74 65 73  test select1.tes
5630: 74 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  t.  select2.test
5640: 20 74 72 61 6e 73 2e 74 65 73 74 20 75 70 64 61   trans.test upda
5650: 74 65 2e 74 65 73 74 20 76 61 63 75 75 6d 2e 74  te.test vacuum.t
5660: 65 73 74 20 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f  est .}..# Run so
5670: 6d 65 20 65 72 72 6f 72 20 74 65 73 74 73 20 69  me error tests i
5680: 6e 20 6e 6f 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64  n no journal mod
5690: 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  e..#.test_suite 
56a0: 22 6e 6f 5f 6a 6f 75 72 6e 61 6c 5f 65 72 72 6f  "no_journal_erro
56b0: 72 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  r" -description 
56c0: 7b 0a 20 20 52 75 6e 20 6d 61 6c 6c 6f 63 2e 74  {.  Run malloc.t
56d0: 65 73 74 20 61 6e 64 20 69 6f 65 72 72 2e 74 65  est and ioerr.te
56e0: 73 74 20 69 6e 20 6e 6f 2d 6a 6f 75 72 6e 61 6c  st in no-journal
56f0: 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c   mode..} -presql
5700: 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72   {.  pragma jour
5710: 6e 61 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69  nal_mode = persi
5720: 73 74 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20  st.} -files {.  
5730: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65 72  malloc.test ioer
5740: 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52 75 6e 20  r.test.}..# Run 
5750: 73 6f 6d 65 20 63 72 61 73 68 2d 74 65 73 74 73  some crash-tests
5760: 20 69 6e 20 61 75 74 6f 76 61 63 75 75 6d 20 6d   in autovacuum m
5770: 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74  ode..#.test_suit
5780: 65 20 22 61 75 74 6f 76 61 63 75 75 6d 5f 63 72  e "autovacuum_cr
5790: 61 73 68 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ash" -descriptio
57a0: 6e 20 7b 0a 20 20 52 75 6e 20 63 72 61 73 68 2e  n {.  Run crash.
57b0: 74 65 73 74 20 69 6e 20 61 75 74 6f 76 61 63 75  test in autovacu
57c0: 75 6d 20 6d 6f 64 65 2e 0a 7d 20 2d 70 72 65 73  um mode..} -pres
57d0: 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 61 75  ql {.  pragma au
57e0: 74 6f 5f 76 61 63 75 75 6d 20 3d 20 31 0a 7d 20  to_vacuum = 1.} 
57f0: 2d 66 69 6c 65 73 20 63 72 61 73 68 2e 74 65 73  -files crash.tes
5800: 74 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 69 6f  t..# Run some io
5810: 65 72 72 2d 74 65 73 74 73 20 69 6e 20 61 75 74  err-tests in aut
5820: 6f 76 61 63 75 75 6d 20 6d 6f 64 65 2e 0a 23 0a  ovacuum mode..#.
5830: 74 65 73 74 5f 73 75 69 74 65 20 22 61 75 74 6f  test_suite "auto
5840: 76 61 63 75 75 6d 5f 69 6f 65 72 72 22 20 2d 64  vacuum_ioerr" -d
5850: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52  escription {.  R
5860: 75 6e 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6e  un ioerr.test in
5870: 20 61 75 74 6f 76 61 63 75 75 6d 20 6d 6f 64 65   autovacuum mode
5880: 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20  ..} -presql {.  
5890: 70 72 61 67 6d 61 20 61 75 74 6f 5f 76 61 63 75  pragma auto_vacu
58a0: 75 6d 20 3d 20 31 0a 7d 20 2d 66 69 6c 65 73 20  um = 1.} -files 
58b0: 69 6f 65 72 72 2e 74 65 73 74 0a 0a 23 20 52 75  ioerr.test..# Ru
58c0: 6e 20 74 65 73 74 73 20 77 69 74 68 20 61 6e 20  n tests with an 
58d0: 69 6e 2d 6d 65 6d 6f 72 79 20 6a 6f 75 72 6e 61  in-memory journa
58e0: 6c 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  l..#.test_suite 
58f0: 22 69 6e 6d 65 6d 6f 72 79 5f 6a 6f 75 72 6e 61  "inmemory_journa
5900: 6c 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  l" -description 
5910: 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20 77 69  {.  Run tests wi
5920: 74 68 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20  th an in-memory 
5930: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2e 0a 7d 20  journal file..} 
5940: 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67  -presql {.  prag
5950: 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  ma journal_mode 
5960: 3d 20 27 6d 65 6d 6f 72 79 27 0a 7d 20 2d 66 69  = 'memory'.} -fi
5970: 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a  les [test_set $:
5980: 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  :allquicktests -
5990: 65 78 63 6c 75 64 65 20 7b 0a 20 20 23 20 45 78  exclude {.  # Ex
59a0: 63 6c 75 64 65 20 61 6c 6c 20 74 65 73 74 73 20  clude all tests 
59b0: 74 68 61 74 20 73 69 6d 75 6c 61 74 65 20 49 4f  that simulate IO
59c0: 20 65 72 72 6f 72 73 2e 0a 20 20 61 75 74 6f 76   errors..  autov
59d0: 61 63 75 75 6d 5f 69 6f 65 72 72 32 2e 74 65 73  acuum_ioerr2.tes
59e0: 74 20 69 6e 63 72 76 61 63 75 75 6d 5f 69 6f 65  t incrvacuum_ioe
59f0: 72 72 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65  rr.test ioerr.te
5a00: 73 74 0a 20 20 69 6f 65 72 72 2e 74 65 73 74 20  st.  ioerr.test 
5a10: 69 6f 65 72 72 32 2e 74 65 73 74 20 69 6f 65 72  ioerr2.test ioer
5a20: 72 33 2e 74 65 73 74 20 69 6f 65 72 72 34 2e 74  r3.test ioerr4.t
5a30: 65 73 74 20 69 6f 65 72 72 35 2e 74 65 73 74 0a  est ioerr5.test.
5a40: 20 20 76 61 63 75 75 6d 33 2e 74 65 73 74 20 69    vacuum3.test i
5a50: 6e 63 72 62 6c 6f 62 5f 65 72 72 2e 74 65 73 74  ncrblob_err.test
5a60: 20 64 69 73 6b 66 75 6c 6c 2e 74 65 73 74 20 62   diskfull.test b
5a70: 61 63 6b 75 70 5f 69 6f 65 72 72 2e 74 65 73 74  ackup_ioerr.test
5a80: 0a 20 20 65 5f 66 74 73 33 2e 74 65 73 74 20 66  .  e_fts3.test f
5a90: 74 73 33 63 6f 76 2e 74 65 73 74 20 66 74 73 33  ts3cov.test fts3
5aa0: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 66 74 73 33  malloc.test fts3
5ab0: 72 6e 64 2e 74 65 73 74 0a 20 20 66 74 73 33 73  rnd.test.  fts3s
5ac0: 6e 69 70 70 65 74 2e 74 65 73 74 20 6d 6d 61 70  nippet.test mmap
5ad0: 66 61 75 6c 74 2e 74 65 73 74 0a 0a 20 20 23 20  fault.test..  # 
5ae0: 45 78 63 6c 75 64 65 20 74 65 73 74 20 73 63 72  Exclude test scr
5af0: 69 70 74 73 20 74 68 61 74 20 75 73 65 20 74 63  ipts that use tc
5b00: 6c 20 49 4f 20 74 6f 20 61 63 63 65 73 73 20 6a  l IO to access j
5b10: 6f 75 72 6e 61 6c 20 66 69 6c 65 73 20 6f 72 20  ournal files or 
5b20: 63 6f 75 6e 74 0a 20 20 23 20 74 68 65 20 6e 75  count.  # the nu
5b30: 6d 62 65 72 20 6f 66 20 66 73 79 6e 63 28 29 20  mber of fsync() 
5b40: 63 61 6c 6c 73 2e 0a 20 20 70 61 67 65 72 2e 74  calls..  pager.t
5b50: 65 73 74 20 65 78 63 6c 75 73 69 76 65 2e 74 65  est exclusive.te
5b60: 73 74 20 6a 72 6e 6c 6d 6f 64 65 2e 74 65 73 74  st jrnlmode.test
5b70: 20 73 79 6e 63 2e 74 65 73 74 20 6d 69 73 63 31   sync.test misc1
5b80: 2e 74 65 73 74 20 0a 20 20 6a 6f 75 72 6e 61 6c  .test .  journal
5b90: 31 2e 74 65 73 74 20 63 6f 6e 66 6c 69 63 74 2e  1.test conflict.
5ba0: 74 65 73 74 20 63 72 61 73 68 38 2e 74 65 73 74  test crash8.test
5bb0: 20 74 6b 74 33 34 35 37 2e 74 65 73 74 20 69 6f   tkt3457.test io
5bc0: 2e 74 65 73 74 0a 20 20 6a 6f 75 72 6e 61 6c 33  .test.  journal3
5bd0: 2e 74 65 73 74 20 38 5f 33 5f 6e 61 6d 65 73 2e  .test 8_3_names.
5be0: 74 65 73 74 0a 0a 20 20 70 61 67 65 72 31 2e 74  test..  pager1.t
5bf0: 65 73 74 20 61 73 79 6e 63 34 2e 74 65 73 74 20  est async4.test 
5c00: 63 6f 72 72 75 70 74 2e 74 65 73 74 20 66 69 6c  corrupt.test fil
5c10: 65 66 6d 74 2e 74 65 73 74 20 70 61 67 65 72 32  efmt.test pager2
5c20: 2e 74 65 73 74 0a 20 20 63 6f 72 72 75 70 74 35  .test.  corrupt5
5c30: 2e 74 65 73 74 20 63 6f 72 72 75 70 74 41 2e 74  .test corruptA.t
5c40: 65 73 74 20 70 61 67 65 72 6f 70 74 2e 74 65 73  est pageropt.tes
5c50: 74 0a 0a 20 20 23 20 45 78 63 6c 75 64 65 20 73  t..  # Exclude s
5c60: 74 6d 74 2e 74 65 73 74 2c 20 77 68 69 63 68 20  tmt.test, which 
5c70: 65 78 70 65 63 74 73 20 73 75 62 2d 6a 6f 75 72  expects sub-jour
5c80: 6e 61 6c 73 20 74 6f 20 75 73 65 20 74 65 6d 70  nals to use temp
5c90: 6f 72 61 72 79 20 66 69 6c 65 73 2e 0a 20 20 73  orary files..  s
5ca0: 74 6d 74 2e 74 65 73 74 0a 0a 20 20 7a 65 72 6f  tmt.test..  zero
5cb0: 64 61 6d 61 67 65 2e 74 65 73 74 0a 0a 20 20 23  damage.test..  #
5cc0: 20 57 41 4c 20 6d 6f 64 65 20 69 73 20 64 69 66   WAL mode is dif
5cd0: 66 65 72 65 6e 74 2e 0a 20 20 77 61 6c 2a 20 74  ferent..  wal* t
5ce0: 6b 74 2d 32 64 31 61 35 63 36 37 64 2e 74 65 73  kt-2d1a5c67d.tes
5cf0: 74 20 62 61 63 6b 63 6f 6d 70 61 74 2e 74 65 73  t backcompat.tes
5d00: 74 0a 7d 5d 0a 0a 69 66 63 61 70 61 62 6c 65 20  t.}]..ifcapable 
5d10: 6d 65 6d 33 20 7b 0a 20 20 74 65 73 74 5f 73 75  mem3 {.  test_su
5d20: 69 74 65 20 22 6d 65 6d 73 79 73 33 22 20 2d 64  ite "memsys3" -d
5d30: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20  escription {.   
5d40: 20 52 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67   Run tests using
5d50: 20 74 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69   the allocator i
5d60: 6e 20 6d 65 6d 33 2e 63 2e 0a 20 20 7d 20 2d 66  n mem3.c..  } -f
5d70: 69 6c 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24  iles [test_set $
5d80: 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20  ::allquicktests 
5d90: 2d 65 78 63 6c 75 64 65 20 7b 0a 20 20 20 20 61  -exclude {.    a
5da0: 75 74 6f 76 61 63 75 75 6d 2e 74 65 73 74 20 20  utovacuum.test  
5db0: 20 20 20 20 20 20 20 20 20 64 65 6c 65 74 65 33           delete3
5dc0: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
5dd0: 20 20 20 6d 61 6e 79 64 62 2e 74 65 73 74 0a 20     manydb.test. 
5de0: 20 20 20 62 69 67 72 6f 77 2e 74 65 73 74 20 20     bigrow.test  
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 63               inc
5e00: 72 62 6c 6f 62 32 2e 74 65 73 74 20 20 20 20 20  rblob2.test     
5e10: 20 20 20 20 20 20 20 6d 65 6d 64 62 2e 74 65 73         memdb.tes
5e20: 74 0a 20 20 20 20 62 69 74 76 65 63 2e 74 65 73  t.    bitvec.tes
5e30: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
5e40: 69 6e 64 65 78 32 2e 74 65 73 74 20 20 20 20 20  index2.test     
5e50: 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 75 62            memsub
5e60: 73 79 73 31 2e 74 65 73 74 0a 20 20 20 20 63 61  sys1.test.    ca
5e70: 70 69 33 63 2e 74 65 73 74 20 20 20 20 20 20 20  pi3c.test       
5e80: 20 20 20 20 20 20 20 20 69 6f 65 72 72 2e 74 65          ioerr.te
5e90: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  st              
5ea0: 20 20 6d 65 6d 73 75 62 73 79 73 32 2e 74 65 73    memsubsys2.tes
5eb0: 74 0a 20 20 20 20 63 61 70 69 33 2e 74 65 73 74  t.    capi3.test
5ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ed0: 6a 6f 69 6e 33 2e 74 65 73 74 20 20 20 20 20 20  join3.test      
5ee0: 20 20 20 20 20 20 20 20 20 20 70 61 67 65 73 69            pagesi
5ef0: 7a 65 2e 74 65 73 74 0a 20 20 20 20 63 6f 6c 6c  ze.test.    coll
5f00: 61 74 65 35 2e 74 65 73 74 20 20 20 20 20 20 20  ate5.test       
5f10: 20 20 20 20 20 20 6c 69 6d 69 74 2e 74 65 73 74        limit.test
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f30: 62 61 63 6b 75 70 5f 69 6f 65 72 72 2e 74 65 73  backup_ioerr.tes
5f40: 74 0a 20 20 20 20 62 61 63 6b 75 70 5f 6d 61 6c  t.    backup_mal
5f50: 6c 6f 63 2e 74 65 73 74 0a 20 20 7d 5d 20 2d 69  loc.test.  }] -i
5f60: 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20  nitialize {.    
5f70: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
5f80: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 72 65 73  .    sqlite3_res
5f90: 65 74 5f 61 75 74 6f 5f 65 78 74 65 6e 73 69 6f  et_auto_extensio
5fa0: 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68  n.    sqlite3_sh
5fb0: 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74  utdown.    sqlit
5fc0: 65 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20 32  e3_config_heap 2
5fd0: 35 30 30 30 30 30 30 20 30 0a 20 20 20 20 73 71  5000000 0.    sq
5fe0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f  lite3_config_loo
5ff0: 6b 61 73 69 64 65 20 30 20 30 0a 20 20 20 20 69  kaside 0 0.    i
6000: 66 63 61 70 61 62 6c 65 20 6d 65 6d 35 20 7b 0a  fcapable mem5 {.
6010: 20 20 20 20 20 20 23 20 49 66 20 62 6f 74 68 20        # If both 
6020: 6d 65 6d 73 79 73 33 20 61 6e 64 20 6d 65 6d 73  memsys3 and mems
6030: 79 73 35 20 61 72 65 20 65 6e 61 62 6c 65 64 20  ys5 are enabled 
6040: 69 6e 20 74 68 65 20 62 75 69 6c 64 2c 20 74 68  in the build, th
6050: 65 20 63 61 6c 6c 20 74 6f 0a 20 20 20 20 20 20  e call to.      
6060: 23 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  # [sqlite3_confi
6070: 67 5f 68 65 61 70 5d 20 77 69 6c 6c 20 69 6e 69  g_heap] will ini
6080: 74 69 61 6c 69 7a 65 20 74 68 65 20 73 79 73 74  tialize the syst
6090: 65 6d 20 74 6f 20 75 73 65 20 6d 65 6d 73 79 73  em to use memsys
60a0: 35 2e 0a 20 20 20 20 20 20 23 20 54 68 65 20 66  5..      # The f
60b0: 6f 6c 6c 6f 77 69 6e 67 20 6f 76 65 72 72 69 64  ollowing overrid
60c0: 65 73 20 74 68 69 73 20 70 72 65 66 65 72 65 6e  es this preferen
60d0: 63 65 20 61 6e 64 20 69 6e 73 74 61 6c 6c 73 20  ce and installs 
60e0: 74 68 65 20 6d 65 6d 73 79 73 33 0a 20 20 20 20  the memsys3.    
60f0: 20 20 23 20 61 6c 6c 6f 63 61 74 6f 72 2e 0a 20    # allocator.. 
6100: 20 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 73       sqlite3_ins
6110: 74 61 6c 6c 5f 6d 65 6d 73 79 73 33 0a 20 20 20  tall_memsys3.   
6120: 20 7d 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d   }.    install_m
6130: 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31  alloc_faultsim 1
6140: 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e   .    sqlite3_in
6150: 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74  itialize.    aut
6160: 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75  oinstall_test_fu
6170: 6e 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75  nctions.  } -shu
6180: 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74 63  tdown {.    catc
6190: 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20  h {db close}.   
61a0: 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
61b0: 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f  n.    sqlite3_co
61c0: 6e 66 69 67 5f 68 65 61 70 20 30 20 30 0a 20 20  nfig_heap 0 0.  
61d0: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
61e0: 5f 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30 20 35  _lookaside 100 5
61f0: 30 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d  00.    install_m
6200: 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31  alloc_faultsim 1
6210: 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e   .    sqlite3_in
6220: 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74  itialize.    aut
6230: 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75  oinstall_test_fu
6240: 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a 69  nctions.  }.}..i
6250: 66 63 61 70 61 62 6c 65 20 6d 65 6d 35 20 7b 0a  fcapable mem5 {.
6260: 20 20 74 65 73 74 5f 73 75 69 74 65 20 22 6d 65    test_suite "me
6270: 6d 73 79 73 35 22 20 2d 64 65 73 63 72 69 70 74  msys5" -descript
6280: 69 6f 6e 20 7b 0a 20 20 20 20 52 75 6e 20 74 65  ion {.    Run te
6290: 73 74 73 20 75 73 69 6e 67 20 74 68 65 20 61 6c  sts using the al
62a0: 6c 6f 63 61 74 6f 72 20 69 6e 20 6d 65 6d 35 2e  locator in mem5.
62b0: 63 2e 0a 20 20 7d 20 2d 66 69 6c 65 73 20 5b 74  c..  } -files [t
62c0: 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75  est_set $::allqu
62d0: 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64  icktests -exclud
62e0: 65 20 7b 0a 20 20 20 20 61 75 74 6f 76 61 63 75  e {.    autovacu
62f0: 75 6d 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  um.test         
6300: 20 20 64 65 6c 65 74 65 33 2e 74 65 73 74 20 20    delete3.test  
6310: 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 6e 79              many
6320: 64 62 2e 74 65 73 74 0a 20 20 20 20 62 69 67 72  db.test.    bigr
6330: 6f 77 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  ow.test         
6340: 20 20 20 20 20 20 69 6e 63 72 62 6c 6f 62 32 2e        incrblob2.
6350: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20  test            
6360: 6d 65 6d 64 62 2e 74 65 73 74 0a 20 20 20 20 62  memdb.test.    b
6370: 69 74 76 65 63 2e 74 65 73 74 20 20 20 20 20 20  itvec.test      
6380: 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 32 2e           index2.
6390: 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20  test            
63a0: 20 20 20 6d 65 6d 73 75 62 73 79 73 31 2e 74 65     memsubsys1.te
63b0: 73 74 0a 20 20 20 20 63 61 70 69 33 63 2e 74 65  st.    capi3c.te
63c0: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  st              
63d0: 20 69 6f 65 72 72 2e 74 65 73 74 20 20 20 20 20   ioerr.test     
63e0: 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 73 75             memsu
63f0: 62 73 79 73 32 2e 74 65 73 74 0a 20 20 20 20 63  bsys2.test.    c
6400: 61 70 69 33 2e 74 65 73 74 20 20 20 20 20 20 20  api3.test       
6410: 20 20 20 20 20 20 20 20 20 6a 6f 69 6e 33 2e 74           join3.t
6420: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20  est             
6430: 20 20 20 70 61 67 65 73 69 7a 65 2e 74 65 73 74     pagesize.test
6440: 0a 20 20 20 20 63 6f 6c 6c 61 74 65 35 2e 74 65  .    collate5.te
6450: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 6c  st             l
6460: 69 6d 69 74 2e 74 65 73 74 20 20 20 20 20 20 20  imit.test       
6470: 20 20 20 20 20 20 20 20 20 7a 65 72 6f 62 6c 6f           zeroblo
6480: 62 2e 74 65 73 74 0a 20 20 7d 5d 20 2d 69 6e 69  b.test.  }] -ini
6490: 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63 61  tialize {.    ca
64a0: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
64b0: 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64     sqlite3_shutd
64c0: 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  own.    sqlite3_
64d0: 63 6f 6e 66 69 67 5f 68 65 61 70 20 32 35 30 30  config_heap 2500
64e0: 30 30 30 30 20 36 34 0a 20 20 20 20 73 71 6c 69  0000 64.    sqli
64f0: 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61  te3_config_looka
6500: 73 69 64 65 20 30 20 30 0a 20 20 20 20 69 6e 73  side 0 0.    ins
6510: 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c  tall_malloc_faul
6520: 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69  tsim 1 .    sqli
6530: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
6540: 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74     autoinstall_t
6550: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20  est_functions.  
6560: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
6570: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
6580: 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 73  e}.    sqlite3_s
6590: 68 75 74 64 6f 77 6e 0a 20 20 20 20 73 71 6c 69  hutdown.    sqli
65a0: 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65 61 70 20  te3_config_heap 
65b0: 30 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  0 0.    sqlite3_
65c0: 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65  config_lookaside
65d0: 20 31 30 30 20 35 30 30 0a 20 20 20 20 69 6e 73   100 500.    ins
65e0: 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c  tall_malloc_faul
65f0: 74 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69  tsim 1 .    sqli
6600: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
6610: 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74     autoinstall_t
6620: 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20  est_functions.  
6630: 7d 0a 0a 20 20 74 65 73 74 5f 73 75 69 74 65 20  }..  test_suite 
6640: 22 6d 65 6d 73 79 73 35 2d 32 22 20 2d 64 65 73  "memsys5-2" -des
6650: 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 52  cription {.    R
6660: 75 6e 20 74 65 73 74 73 20 75 73 69 6e 67 20 74  un tests using t
6670: 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 20  he allocator in 
6680: 6d 65 6d 35 2e 63 20 69 6e 20 61 20 64 69 66 66  mem5.c in a diff
6690: 65 72 65 6e 74 20 63 6f 6e 66 69 67 75 72 61 74  erent configurat
66a0: 69 6f 6e 2e 0a 20 20 7d 20 2d 66 69 6c 65 73 20  ion..  } -files 
66b0: 7b 0a 20 20 20 20 73 65 6c 65 63 74 31 2e 74 65  {.    select1.te
66c0: 73 74 20 0a 20 20 7d 20 2d 69 6e 69 74 69 61 6c  st .  } -initial
66d0: 69 7a 65 20 7b 0a 20 20 20 20 63 61 74 63 68 20  ize {.    catch 
66e0: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73  {db close}.    s
66f0: 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a  qlite3_shutdown.
6700: 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66      sqlite3_conf
6710: 69 67 5f 6d 65 6d 73 74 61 74 75 73 20 30 0a 20  ig_memstatus 0. 
6720: 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69     sqlite3_confi
6730: 67 5f 68 65 61 70 20 34 30 30 30 30 30 30 30 20  g_heap 40000000 
6740: 31 36 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63  16.    sqlite3_c
6750: 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20  onfig_lookaside 
6760: 30 20 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f  0 0.    install_
6770: 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20  malloc_faultsim 
6780: 31 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69  1 .    sqlite3_i
6790: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75  nitialize.    au
67a0: 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66  toinstall_test_f
67b0: 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 73 68  unctions.  } -sh
67c0: 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74  utdown {.    cat
67d0: 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20  ch {db close}.  
67e0: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
67f0: 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63  wn.    sqlite3_c
6800: 6f 6e 66 69 67 5f 68 65 61 70 20 30 20 30 0a 20  onfig_heap 0 0. 
6810: 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69     sqlite3_confi
6820: 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30 20  g_lookaside 100 
6830: 35 30 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c 5f  500.    install_
6840: 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20  malloc_faultsim 
6850: 31 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69  1 .    sqlite3_i
6860: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75  nitialize.    au
6870: 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66  toinstall_test_f
6880: 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a  unctions.  }.}..
6890: 69 66 63 61 70 61 62 6c 65 20 74 68 72 65 61 64  ifcapable thread
68a0: 73 61 66 65 20 7b 0a 20 20 74 65 73 74 5f 73 75  safe {.  test_su
68b0: 69 74 65 20 22 6e 6f 5f 6d 75 74 65 78 5f 74 72  ite "no_mutex_tr
68c0: 79 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  y" -description 
68d0: 7b 0a 20 20 20 20 20 54 68 65 20 73 71 6c 69 74  {.     The sqlit
68e0: 65 33 5f 6d 75 74 65 78 5f 74 72 79 28 29 20 69  e3_mutex_try() i
68f0: 6e 74 65 72 66 61 63 65 20 61 6c 77 61 79 73 20  nterface always 
6900: 66 61 69 6c 73 0a 20 20 7d 20 2d 66 69 6c 65 73  fails.  } -files
6910: 20 5b 0a 20 20 20 20 74 65 73 74 5f 73 65 74 20   [.    test_set 
6920: 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  $::allquicktests
6930: 20 2d 65 78 63 6c 75 64 65 20 6d 75 74 65 78 31   -exclude mutex1
6940: 2e 74 65 73 74 20 6d 75 74 65 78 32 2e 74 65 73  .test mutex2.tes
6950: 74 0a 20 20 5d 20 2d 69 6e 69 74 69 61 6c 69 7a  t.  ] -initializ
6960: 65 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64  e {.    catch {d
6970: 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c  b close}.    sql
6980: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
6990: 20 20 69 6e 73 74 61 6c 6c 5f 6d 75 74 65 78 5f    install_mutex_
69a0: 63 6f 75 6e 74 65 72 73 20 31 0a 20 20 20 20 73  counters 1.    s
69b0: 65 74 20 3a 3a 64 69 73 61 62 6c 65 5f 6d 75 74  et ::disable_mut
69c0: 65 78 5f 74 72 79 20 31 0a 20 20 20 20 73 71 6c  ex_try 1.    sql
69d0: 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a  ite3_initialize.
69e0: 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f      autoinstall_
69f0: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20  test_functions. 
6a00: 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20   } -shutdown {. 
6a10: 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f     catch {db clo
6a20: 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  se}.    sqlite3_
6a30: 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 69 6e 73  shutdown.    ins
6a40: 74 61 6c 6c 5f 6d 75 74 65 78 5f 63 6f 75 6e 74  tall_mutex_count
6a50: 65 72 73 20 30 0a 20 20 20 20 73 71 6c 69 74 65  ers 0.    sqlite
6a60: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20  3_initialize.   
6a70: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
6a80: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a  t_functions.  }.
6a90: 7d 0a 0a 23 20 72 75 6e 5f 74 65 73 74 73 20 22  }..# run_tests "
6aa0: 63 72 61 73 68 5f 73 61 66 65 5f 61 70 70 65 6e  crash_safe_appen
6ab0: 64 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  d" -description 
6ac0: 7b 0a 23 20 20 20 52 75 6e 20 63 72 61 73 68 2e  {.#   Run crash.
6ad0: 74 65 73 74 20 77 69 74 68 20 70 65 72 73 69 73  test with persis
6ae0: 74 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 20 6f 6e  tent journals on
6af0: 20 61 20 53 41 46 45 5f 41 50 50 45 4e 44 20 66   a SAFE_APPEND f
6b00: 69 6c 65 2d 73 79 73 74 65 6d 2e 0a 23 20 7d 20  ile-system..# } 
6b10: 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 23 20  -initialize {.# 
6b20: 20 20 72 65 6e 61 6d 65 20 63 72 61 73 68 73 71    rename crashsq
6b30: 6c 20 73 61 5f 63 72 61 73 68 73 71 6c 0a 23 20  l sa_crashsql.# 
6b40: 20 20 70 72 6f 63 20 63 72 61 73 68 73 71 6c 20    proc crashsql 
6b50: 7b 61 72 67 73 7d 20 7b 0a 23 20 20 20 20 20 73  {args} {.#     s
6b60: 65 74 20 6f 70 74 69 6f 6e 73 20 5b 6c 72 61 6e  et options [lran
6b70: 67 65 20 24 61 72 67 73 20 30 20 5b 65 78 70 72  ge $args 0 [expr
6b80: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 73   {[llength $args
6b90: 5d 2d 32 7d 5d 5d 0a 23 20 20 20 20 20 6c 61 70  ]-2}]].#     lap
6ba0: 70 65 6e 64 20 6f 70 74 69 6f 6e 73 20 2d 63 68  pend options -ch
6bb0: 61 72 20 73 61 66 65 5f 61 70 70 65 6e 64 0a 23  ar safe_append.#
6bc0: 20 20 20 20 20 73 65 74 20 73 71 6c 20 5b 6c 69       set sql [li
6bd0: 6e 64 65 78 20 24 61 72 67 73 20 65 6e 64 5d 0a  ndex $args end].
6be0: 23 20 20 20 20 20 6c 61 70 70 65 6e 64 20 6f 70  #     lappend op
6bf0: 74 69 6f 6e 73 20 22 0a 23 20 20 20 20 20 20 20  tions ".#       
6c00: 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d  PRAGMA journal_m
6c10: 6f 64 65 3d 70 65 72 73 69 73 74 65 6e 74 3b 0a  ode=persistent;.
6c20: 23 20 20 20 20 20 20 20 24 73 71 6c 0a 23 20 20  #       $sql.#  
6c30: 20 20 20 22 0a 23 20 20 20 20 20 73 65 74 20 66     ".#     set f
6c40: 64 20 5b 6f 70 65 6e 20 74 65 73 74 2e 64 62 2d  d [open test.db-
6c50: 6a 6f 75 72 6e 61 6c 20 77 5d 0a 23 20 20 20 20  journal w].#    
6c60: 20 70 75 74 73 20 24 66 64 20 5b 73 74 72 69 6e   puts $fd [strin
6c70: 67 20 72 65 70 65 61 74 20 31 32 33 34 35 36 37  g repeat 1234567
6c80: 38 39 30 20 31 30 30 30 30 30 5d 0a 23 20 20 20  890 100000].#   
6c90: 20 20 63 6c 6f 73 65 20 24 66 64 0a 23 20 20 20    close $fd.#   
6ca0: 20 20 65 76 61 6c 20 73 61 5f 63 72 61 73 68 73    eval sa_crashs
6cb0: 71 6c 20 24 6f 70 74 69 6f 6e 73 0a 23 20 20 20  ql $options.#   
6cc0: 7d 0a 23 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20  }.# } -shutdown 
6cd0: 7b 0a 23 20 20 20 72 65 6e 61 6d 65 20 63 72 61  {.#   rename cra
6ce0: 73 68 73 71 6c 20 7b 7d 0a 23 20 20 20 72 65 6e  shsql {}.#   ren
6cf0: 61 6d 65 20 73 61 5f 63 72 61 73 68 73 71 6c 20  ame sa_crashsql 
6d00: 63 72 61 73 68 73 71 6c 0a 23 20 7d 20 2d 66 69  crashsql.# } -fi
6d10: 6c 65 73 20 63 72 61 73 68 2e 74 65 73 74 0a 0a  les crash.test..
6d20: 74 65 73 74 5f 73 75 69 74 65 20 22 73 61 66 65  test_suite "safe
6d30: 5f 61 70 70 65 6e 64 22 20 2d 64 65 73 63 72 69  _append" -descri
6d40: 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 73 6f  ption {.  Run so
6d50: 6d 65 20 74 65 73 74 73 20 6f 6e 20 61 20 53 41  me tests on a SA
6d60: 46 45 5f 41 50 50 45 4e 44 20 66 69 6c 65 2d 73  FE_APPEND file-s
6d70: 79 73 74 65 6d 2e 0a 7d 20 2d 69 6e 69 74 69 61  ystem..} -initia
6d80: 6c 69 7a 65 20 7b 0a 20 20 72 65 6e 61 6d 65 20  lize {.  rename 
6d90: 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65 33 5f  sqlite3 sqlite3_
6da0: 73 61 66 65 61 70 70 65 6e 64 0a 20 20 70 72 6f  safeappend.  pro
6db0: 63 20 73 71 6c 69 74 65 33 20 7b 61 72 67 73 7d  c sqlite3 {args}
6dc0: 20 7b 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69   {.    if {[stri
6dd0: 6e 67 20 72 61 6e 67 65 20 5b 6c 69 6e 64 65 78  ng range [lindex
6de0: 20 24 61 72 67 73 20 30 5d 20 30 20 30 5d 20 6e   $args 0] 0 0] n
6df0: 65 20 22 2d 22 7d 20 7b 0a 20 20 20 20 20 20 6c  e "-"} {.      l
6e00: 61 70 70 65 6e 64 20 61 72 67 73 20 2d 76 66 73  append args -vfs
6e10: 20 64 65 76 73 79 6d 0a 20 20 20 20 7d 0a 20 20   devsym.    }.  
6e20: 20 20 75 70 6c 65 76 65 6c 20 5b 63 6f 6e 63 61    uplevel [conca
6e30: 74 20 73 71 6c 69 74 65 33 5f 73 61 66 65 61 70  t sqlite3_safeap
6e40: 70 65 6e 64 20 24 61 72 67 73 5d 0a 20 20 7d 0a  pend $args].  }.
6e50: 20 20 73 71 6c 69 74 65 33 5f 73 69 6d 75 6c 61    sqlite3_simula
6e60: 74 65 5f 64 65 76 69 63 65 20 2d 63 68 61 72 20  te_device -char 
6e70: 73 61 66 65 5f 61 70 70 65 6e 64 0a 7d 20 2d 73  safe_append.} -s
6e80: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 72 65 6e 61  hutdown {.  rena
6e90: 6d 65 20 73 71 6c 69 74 65 33 20 7b 7d 0a 20 20  me sqlite3 {}.  
6ea0: 72 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 5f 73  rename sqlite3_s
6eb0: 68 75 74 64 6f 77 6e 20 73 71 6c 69 74 65 33 0a  hutdown sqlite3.
6ec0: 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73  } -files [.  tes
6ed0: 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63  t_set $::allquic
6ee0: 6b 74 65 73 74 73 20 73 68 61 72 65 64 5f 65 72  ktests shared_er
6ef0: 72 2e 74 65 73 74 20 2d 65 78 63 6c 75 64 65 20  r.test -exclude 
6f00: 61 73 79 6e 63 33 2e 74 65 73 74 0a 5d 0a 0a 23  async3.test.]..#
6f10: 20 54 68 65 20 73 65 74 20 6f 66 20 74 65 73 74   The set of test
6f20: 73 20 74 6f 20 72 75 6e 20 6f 6e 20 74 68 65 20  s to run on the 
6f30: 61 6c 74 65 72 6e 61 74 69 76 65 2d 70 63 61 63  alternative-pcac
6f40: 68 65 0a 73 65 74 20 70 65 72 6d 2d 61 6c 74 2d  he.set perm-alt-
6f50: 70 63 61 63 68 65 2d 74 65 73 74 73 65 74 20 7b  pcache-testset {
6f60: 0a 20 20 61 73 79 6e 63 2e 74 65 73 74 0a 20 20  .  async.test.  
6f70: 61 74 74 61 63 68 2e 74 65 73 74 0a 20 20 64 65  attach.test.  de
6f80: 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65  lete.test delete
6f90: 32 2e 74 65 73 74 0a 20 20 69 6e 64 65 78 2e 74  2.test.  index.t
6fa0: 65 73 74 0a 20 20 69 6e 73 65 72 74 2e 74 65 73  est.  insert.tes
6fb0: 74 20 69 6e 73 65 72 74 32 2e 74 65 73 74 0a 20  t insert2.test. 
6fc0: 20 6a 6f 69 6e 2e 74 65 73 74 20 6a 6f 69 6e 32   join.test join2
6fd0: 2e 74 65 73 74 0a 20 20 72 6f 6c 6c 62 61 63 6b  .test.  rollback
6fe0: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 31 2e  .test.  select1.
6ff0: 74 65 73 74 20 73 65 6c 65 63 74 32 2e 74 65 73  test select2.tes
7000: 74 0a 20 20 74 72 61 6e 73 2e 74 65 73 74 0a 20  t.  trans.test. 
7010: 20 75 70 64 61 74 65 2e 74 65 73 74 0a 7d 0a 0a   update.test.}..
7020: 66 6f 72 65 61 63 68 20 64 69 73 63 61 72 64 5f  foreach discard_
7030: 72 61 74 65 20 7b 30 20 31 30 20 35 30 20 39 30  rate {0 10 50 90
7040: 20 31 30 30 7d 20 7b 0a 20 20 74 65 73 74 5f 73   100} {.  test_s
7050: 75 69 74 65 20 22 70 63 61 63 68 65 24 7b 64 69  uite "pcache${di
7060: 73 63 61 72 64 5f 72 61 74 65 7d 22 20 2d 64 65  scard_rate}" -de
7070: 73 63 72 69 70 74 69 6f 6e 20 22 0a 20 20 20 20  scription ".    
7080: 41 6c 74 65 72 6e 61 74 69 76 65 20 70 63 61 63  Alternative pcac
7090: 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
70a0: 6e 20 77 69 74 68 20 24 7b 64 69 73 63 61 72 64  n with ${discard
70b0: 5f 72 61 74 65 7d 25 20 72 61 6e 64 6f 6d 20 64  _rate}% random d
70c0: 69 73 63 61 72 64 0a 20 20 22 20 2d 69 6e 69 74  iscard.  " -init
70d0: 69 61 6c 69 7a 65 20 22 0a 20 20 20 20 63 61 74  ialize ".    cat
70e0: 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20  ch {db close}.  
70f0: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
7100: 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63  wn.    sqlite3_c
7110: 6f 6e 66 69 67 5f 61 6c 74 5f 70 63 61 63 68 65  onfig_alt_pcache
7120: 20 31 20 24 64 69 73 63 61 72 64 5f 72 61 74 65   1 $discard_rate
7130: 20 31 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69   1.    sqlite3_i
7140: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75  nitialize.    au
7150: 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66  toinstall_test_f
7160: 75 6e 63 74 69 6f 6e 73 0a 20 20 22 20 2d 73 68  unctions.  " -sh
7170: 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61 74  utdown {.    cat
7180: 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20  ch {db close}.  
7190: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
71a0: 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63  wn.    sqlite3_c
71b0: 6f 6e 66 69 67 5f 61 6c 74 5f 70 63 61 63 68 65  onfig_alt_pcache
71c0: 20 30 20 30 20 30 0a 20 20 20 20 73 71 6c 69 74   0 0 0.    sqlit
71d0: 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73  e3_config_lookas
71e0: 69 64 65 20 31 30 30 20 35 30 30 0a 20 20 20 20  ide 100 500.    
71f0: 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66  install_malloc_f
7200: 61 75 6c 74 73 69 6d 20 31 20 0a 20 20 20 20 73  aultsim 1 .    s
7210: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
7220: 65 0a 20 20 20 20 61 75 74 6f 69 6e 73 74 61 6c  e.    autoinstal
7230: 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73  l_test_functions
7240: 0a 20 20 7d 20 2d 66 69 6c 65 73 20 24 7b 70 65  .  } -files ${pe
7250: 72 6d 2d 61 6c 74 2d 70 63 61 63 68 65 2d 74 65  rm-alt-pcache-te
7260: 73 74 73 65 74 7d 0a 7d 0a 0a 74 65 73 74 5f 73  stset}.}..test_s
7270: 75 69 74 65 20 22 6a 6f 75 72 6e 61 6c 74 65 73  uite "journaltes
7280: 74 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  t" -description 
7290: 7b 0a 20 20 43 68 65 63 6b 20 74 68 61 74 20 70  {.  Check that p
72a0: 61 67 65 73 20 61 72 65 20 73 79 6e 63 65 64 20  ages are synced 
72b0: 62 65 66 6f 72 65 20 62 65 69 6e 67 20 77 72 69  before being wri
72c0: 74 74 65 6e 20 28 74 65 73 74 5f 6a 6f 75 72 6e  tten (test_journ
72d0: 61 6c 2e 63 29 2e 0a 7d 20 2d 69 6e 69 74 69 61  al.c)..} -initia
72e0: 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68 20 7b  lize {.  catch {
72f0: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 72 65 67 69  db close}.  regi
7300: 73 74 65 72 5f 6a 74 5f 76 66 73 20 2d 64 65 66  ster_jt_vfs -def
7310: 61 75 6c 74 20 22 22 0a 7d 20 2d 73 68 75 74 64  ault "".} -shutd
7320: 6f 77 6e 20 7b 0a 20 20 75 6e 72 65 67 69 73 74  own {.  unregist
7330: 65 72 5f 6a 74 5f 76 66 73 0a 7d 20 2d 66 69 6c  er_jt_vfs.} -fil
7340: 65 73 20 5b 74 65 73 74 5f 73 65 74 20 24 3a 3a  es [test_set $::
7350: 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65  allquicktests -e
7360: 78 63 6c 75 64 65 20 7b 0a 20 20 77 61 6c 2a 20  xclude {.  wal* 
7370: 69 6e 63 72 76 61 63 75 75 6d 2e 74 65 73 74 20  incrvacuum.test 
7380: 69 6f 65 72 72 2e 74 65 73 74 20 63 6f 72 72 75  ioerr.test corru
7390: 70 74 34 2e 74 65 73 74 20 69 6f 2e 74 65 73 74  pt4.test io.test
73a0: 20 63 72 61 73 68 38 2e 74 65 73 74 20 0a 20 20   crash8.test .  
73b0: 61 73 79 6e 63 34 2e 74 65 73 74 20 62 69 67 66  async4.test bigf
73c0: 69 6c 65 2e 74 65 73 74 20 62 61 63 6b 63 6f 6d  ile.test backcom
73d0: 70 61 74 2e 74 65 73 74 0a 7d 5d 0a 0a 69 66 20  pat.test.}]..if 
73e0: 7b 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20  {[info commands 
73f0: 72 65 67 69 73 74 65 72 5f 64 65 6d 6f 76 66 73  register_demovfs
7400: 5d 20 21 3d 20 22 22 7d 20 7b 0a 20 20 74 65 73  ] != ""} {.  tes
7410: 74 5f 73 75 69 74 65 20 22 64 65 6d 6f 76 66 73  t_suite "demovfs
7420: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
7430: 0a 20 20 20 20 43 68 65 63 6b 20 74 68 61 74 20  .    Check that 
7440: 74 68 65 20 64 65 6d 6f 76 66 73 20 28 63 6f 64  the demovfs (cod
7450: 65 20 69 6e 20 74 65 73 74 5f 64 65 6d 6f 76 66  e in test_demovf
7460: 73 2e 63 29 20 6d 6f 72 65 20 6f 72 20 6c 65 73  s.c) more or les
7470: 73 20 77 6f 72 6b 73 2e 0a 20 20 7d 20 2d 69 6e  s works..  } -in
7480: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 20 20 72  itialize {.    r
7490: 65 67 69 73 74 65 72 5f 64 65 6d 6f 76 66 73 0a  egister_demovfs.
74a0: 20 20 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a    } -shutdown {.
74b0: 20 20 20 20 75 6e 72 65 67 69 73 74 65 72 5f 64      unregister_d
74c0: 65 6d 6f 76 66 73 0a 20 20 7d 20 2d 66 69 6c 65  emovfs.  } -file
74d0: 73 20 7b 0a 20 20 20 20 69 6e 73 65 72 74 2e 74  s {.    insert.t
74e0: 65 73 74 20 20 20 69 6e 73 65 72 74 32 2e 74 65  est   insert2.te
74f0: 73 74 20 20 69 6e 73 65 72 74 33 2e 74 65 73 74  st  insert3.test
7500: 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 0a   rollback.test .
7510: 20 20 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74      select1.test
7520: 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20 20    select2.test  
7530: 73 65 6c 65 63 74 33 2e 74 65 73 74 0a 20 20 7d  select3.test.  }
7540: 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  .}..test_suite "
7550: 77 61 6c 22 20 2d 64 65 73 63 72 69 70 74 69 6f  wal" -descriptio
7560: 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20  n {.  Run tests 
7570: 77 69 74 68 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64  with journal_mod
7580: 65 3d 57 41 4c 0a 7d 20 2d 69 6e 69 74 69 61 6c  e=WAL.} -initial
7590: 69 7a 65 20 7b 0a 20 20 73 65 74 20 3a 3a 47 28  ize {.  set ::G(
75a0: 73 61 76 65 70 6f 69 6e 74 36 5f 69 74 65 72 61  savepoint6_itera
75b0: 74 69 6f 6e 73 29 20 31 30 30 0a 7d 20 2d 73 68  tions) 100.} -sh
75c0: 75 74 64 6f 77 6e 20 7b 0a 20 20 75 6e 73 65 74  utdown {.  unset
75d0: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a 47   -nocomplain ::G
75e0: 28 73 61 76 65 70 6f 69 6e 74 36 5f 69 74 65 72  (savepoint6_iter
75f0: 61 74 69 6f 6e 73 29 0a 7d 20 2d 66 69 6c 65 73  ations).} -files
7600: 20 7b 0a 20 20 73 61 76 65 70 6f 69 6e 74 2e 74   {.  savepoint.t
7610: 65 73 74 20 20 20 20 20 73 61 76 65 70 6f 69 6e  est     savepoin
7620: 74 32 2e 74 65 73 74 20 20 20 20 20 73 61 76 65  t2.test     save
7630: 70 6f 69 6e 74 36 2e 74 65 73 74 0a 20 20 74 72  point6.test.  tr
7640: 61 6e 73 2e 74 65 73 74 20 20 20 20 20 20 20 20  ans.test        
7650: 20 61 76 74 72 61 6e 73 2e 74 65 73 74 0a 0a 20   avtrans.test.. 
7660: 20 66 74 73 33 61 61 2e 74 65 73 74 20 20 66 74   fts3aa.test  ft
7670: 73 33 61 62 2e 74 65 73 74 20 20 66 74 73 33 61  s3ab.test  fts3a
7680: 63 2e 74 65 73 74 20 20 66 74 73 33 61 64 2e 74  c.test  fts3ad.t
7690: 65 73 74 0a 20 20 66 74 73 33 61 65 2e 74 65 73  est.  fts3ae.tes
76a0: 74 20 20 66 74 73 33 61 66 2e 74 65 73 74 20 20  t  fts3af.test  
76b0: 66 74 73 33 61 67 2e 74 65 73 74 20 20 66 74 73  fts3ag.test  fts
76c0: 33 61 68 2e 74 65 73 74 0a 20 20 66 74 73 33 61  3ah.test.  fts3a
76d0: 69 2e 74 65 73 74 20 20 66 74 73 33 61 6a 2e 74  i.test  fts3aj.t
76e0: 65 73 74 20 20 66 74 73 33 61 6b 2e 74 65 73 74  est  fts3ak.test
76f0: 20 20 66 74 73 33 61 6c 2e 74 65 73 74 0a 20 20    fts3al.test.  
7700: 66 74 73 33 61 6d 2e 74 65 73 74 20 20 66 74 73  fts3am.test  fts
7710: 33 61 6e 2e 74 65 73 74 20 20 66 74 73 33 61 6f  3an.test  fts3ao
7720: 2e 74 65 73 74 20 20 66 74 73 33 62 2e 74 65 73  .test  fts3b.tes
7730: 74 0a 20 20 66 74 73 33 63 2e 74 65 73 74 20 20  t.  fts3c.test  
7740: 20 66 74 73 33 64 2e 74 65 73 74 20 20 20 66 74   fts3d.test   ft
7750: 73 33 65 2e 74 65 73 74 20 20 20 66 74 73 33 71  s3e.test   fts3q
7760: 75 65 72 79 2e 74 65 73 74 20 0a 7d 0a 0a 74 65  uery.test .}..te
7770: 73 74 5f 73 75 69 74 65 20 22 72 74 72 65 65 22  st_suite "rtree"
7780: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
7790: 20 20 41 6c 6c 20 52 2d 74 72 65 65 20 72 65 6c    All R-tree rel
77a0: 61 74 65 64 20 74 65 73 74 73 2e 20 50 72 6f 76  ated tests. Prov
77b0: 69 64 65 73 20 63 6f 76 65 72 61 67 65 20 6f 66  ides coverage of
77c0: 20 73 6f 75 72 63 65 20 66 69 6c 65 20 72 74 72   source file rtr
77d0: 65 65 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b  ee.c..} -files [
77e0: 67 6c 6f 62 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  glob -nocomplain
77f0: 20 24 3a 3a 74 65 73 74 64 69 72 2f 2e 2e 2f 65   $::testdir/../e
7800: 78 74 2f 72 74 72 65 65 2f 2a 2e 74 65 73 74 5d  xt/rtree/*.test]
7810: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f  ..test_suite "no
7820: 5f 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 22 20 2d  _optimization" -
7830: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
7840: 52 75 6e 20 74 65 73 74 20 73 63 72 69 70 74 73  Run test scripts
7850: 20 77 69 74 68 20 6f 70 74 69 6d 69 7a 61 74 69   with optimizati
7860: 6f 6e 73 20 64 69 73 61 62 6c 65 64 20 75 73 69  ons disabled usi
7870: 6e 67 20 74 68 65 0a 20 20 73 71 6c 69 74 65 33  ng the.  sqlite3
7880: 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c 28 53 51  _test_control(SQ
7890: 4c 49 54 45 5f 54 45 53 54 43 54 52 4c 5f 4f 50  LITE_TESTCTRL_OP
78a0: 54 49 4d 49 5a 41 54 49 4f 4e 53 29 20 69 6e 74  TIMIZATIONS) int
78b0: 65 72 66 61 63 65 2e 0a 7d 20 2d 66 69 6c 65 73  erface..} -files
78c0: 20 7b 0a 20 20 77 68 65 72 65 2e 74 65 73 74 20   {.  where.test 
78d0: 77 68 65 72 65 32 2e 74 65 73 74 20 77 68 65 72  where2.test wher
78e0: 65 33 2e 74 65 73 74 20 77 68 65 72 65 34 2e 74  e3.test where4.t
78f0: 65 73 74 20 77 68 65 72 65 35 2e 74 65 73 74 0a  est where5.test.
7900: 20 20 77 68 65 72 65 36 2e 74 65 73 74 20 77 68    where6.test wh
7910: 65 72 65 37 2e 74 65 73 74 20 77 68 65 72 65 38  ere7.test where8
7920: 2e 74 65 73 74 20 77 68 65 72 65 39 2e 74 65 73  .test where9.tes
7930: 74 0a 20 20 77 68 65 72 65 41 2e 74 65 73 74 20  t.  whereA.test 
7940: 77 68 65 72 65 42 2e 74 65 73 74 20 77 68 65 72  whereB.test wher
7950: 65 6c 69 6d 69 74 2e 74 65 73 74 0a 20 20 73 65  elimit.test.  se
7960: 6c 65 63 74 31 2e 74 65 73 74 20 73 65 6c 65 63  lect1.test selec
7970: 74 32 2e 74 65 73 74 20 73 65 6c 65 63 74 33 2e  t2.test select3.
7980: 74 65 73 74 20 73 65 6c 65 63 74 34 2e 74 65 73  test select4.tes
7990: 74 20 73 65 6c 65 63 74 35 2e 74 65 73 74 0a 20  t select5.test. 
79a0: 20 73 65 6c 65 63 74 37 2e 74 65 73 74 20 73 65   select7.test se
79b0: 6c 65 63 74 38 2e 74 65 73 74 20 73 65 6c 65 63  lect8.test selec
79c0: 74 41 2e 74 65 73 74 20 73 65 6c 65 63 74 43 2e  tA.test selectC.
79d0: 74 65 73 74 0a 7d 20 2d 64 62 63 6f 6e 66 69 67  test.} -dbconfig
79e0: 20 7b 0a 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f   {.  optimizatio
79f0: 6e 5f 63 6f 6e 74 72 6f 6c 20 24 3a 3a 64 62 68  n_control $::dbh
7a00: 61 6e 64 6c 65 20 61 6c 6c 20 30 0a 7d 0a 0a 74  andle all 0.}..t
7a10: 65 73 74 5f 73 75 69 74 65 20 22 70 72 65 70 61  est_suite "prepa
7a20: 72 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  re" -description
7a30: 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20 77   {.  Run tests w
7a40: 69 74 68 20 74 68 65 20 64 62 20 63 6f 6e 6e 65  ith the db conne
7a50: 63 74 69 6f 6e 20 75 73 69 6e 67 20 73 71 6c 69  ction using sqli
7a60: 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 69 6e  te3_prepare() in
7a70: 73 74 65 61 64 20 6f 66 20 5f 76 32 28 29 2e 0a  stead of _v2()..
7a80: 7d 20 2d 64 62 63 6f 6e 66 69 67 20 7b 0a 20 20  } -dbconfig {.  
7a90: 64 62 5f 75 73 65 5f 6c 65 67 61 63 79 5f 70 72  db_use_legacy_pr
7aa0: 65 70 61 72 65 20 24 3a 3a 64 62 68 61 6e 64 6c  epare $::dbhandl
7ab0: 65 20 31 0a 20 20 23 24 3a 3a 64 62 68 61 6e 64  e 1.  #$::dbhand
7ac0: 6c 65 20 63 61 63 68 65 20 73 69 7a 65 20 30 0a  le cache size 0.
7ad0: 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73  } -files [.  tes
7ae0: 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74  t_set $allquickt
7af0: 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d  ests -exclude *m
7b00: 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a  alloc* *ioerr* *
7b10: 66 61 75 6c 74 2a 0a 5d 0a 0a 23 20 45 6e 64 20  fault*.]..# End 
7b20: 6f 66 20 74 65 73 74 73 0a 23 23 23 23 23 23 23  of tests.#######
7b30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7b40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7b50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7b60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7b70: 23 23 23 23 23 23 0a 0a 23 20 72 75 6e 5f 74 65  ######..# run_te
7b80: 73 74 73 20 4e 41 4d 45 20 4f 50 54 49 4f 4e 53  sts NAME OPTIONS
7b90: 0a 23 0a 23 20 77 68 65 72 65 20 61 76 61 69 6c  .#.# where avail
7ba0: 61 62 6c 65 20 6f 70 74 69 6f 6e 73 20 61 72 65  able options are
7bb0: 3a 20 20 0a 23 0a 23 20 20 20 20 20 20 20 2d 64  :  .#.#       -d
7bc0: 65 73 63 72 69 70 74 69 6f 6e 20 54 49 54 4c 45  escription TITLE
7bd0: 0a 23 20 20 20 20 20 20 20 2d 69 6e 69 74 69 61  .#       -initia
7be0: 6c 69 7a 65 20 20 53 43 52 49 50 54 0a 23 20 20  lize  SCRIPT.#  
7bf0: 20 20 20 20 20 2d 73 68 75 74 64 6f 77 6e 20 20       -shutdown  
7c00: 20 20 53 43 52 49 50 54 0a 23 20 20 20 20 20 20    SCRIPT.#      
7c10: 20 2d 70 72 65 73 71 6c 20 20 20 20 20 20 53 51   -presql      SQ
7c20: 4c 0a 23 20 20 20 20 20 20 20 2d 66 69 6c 65 73  L.#       -files
7c30: 20 20 20 20 20 20 20 4c 49 53 54 2d 4f 46 2d 46         LIST-OF-F
7c40: 49 4c 45 53 0a 23 20 20 20 20 20 20 20 2d 70 72  ILES.#       -pr
7c50: 65 66 69 78 20 20 20 20 20 20 4e 41 4d 45 0a 23  efix      NAME.#
7c60: 0a 70 72 6f 63 20 72 75 6e 5f 74 65 73 74 73 20  .proc run_tests 
7c70: 7b 6e 61 6d 65 20 61 72 67 73 7d 20 7b 0a 20 20  {name args} {.  
7c80: 61 72 72 61 79 20 73 65 74 20 6f 70 74 69 6f 6e  array set option
7c90: 73 20 24 61 72 67 73 0a 0a 20 20 73 65 74 20 3a  s $args..  set :
7ca0: 3a 47 28 70 65 72 6d 3a 6e 61 6d 65 29 20 20 20  :G(perm:name)   
7cb0: 20 20 20 20 20 20 24 6e 61 6d 65 0a 20 20 73 65        $name.  se
7cc0: 74 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65 66 69  t ::G(perm:prefi
7cd0: 78 29 20 20 20 20 20 20 20 24 6f 70 74 69 6f 6e  x)       $option
7ce0: 73 28 2d 70 72 65 66 69 78 29 0a 20 20 73 65 74  s(-prefix).  set
7cf0: 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65 73 71 6c   ::G(perm:presql
7d00: 29 20 20 20 20 20 20 20 24 6f 70 74 69 6f 6e 73  )       $options
7d10: 28 2d 70 72 65 73 71 6c 29 0a 20 20 73 65 74 20  (-presql).  set 
7d20: 3a 3a 47 28 69 73 71 75 69 63 6b 29 20 20 20 20  ::G(isquick)    
7d30: 20 20 20 20 20 20 20 31 0a 20 20 73 65 74 20 3a         1.  set :
7d40: 3a 47 28 70 65 72 6d 3a 64 62 63 6f 6e 66 69 67  :G(perm:dbconfig
7d50: 29 20 20 20 20 20 24 6f 70 74 69 6f 6e 73 28 2d  )     $options(-
7d60: 64 62 63 6f 6e 66 69 67 29 0a 0a 20 20 75 70 6c  dbconfig)..  upl
7d70: 65 76 65 6c 20 24 6f 70 74 69 6f 6e 73 28 2d 69  evel $options(-i
7d80: 6e 69 74 69 61 6c 69 7a 65 29 0a 0a 20 20 66 6f  nitialize)..  fo
7d90: 72 65 61 63 68 20 66 69 6c 65 20 5b 6c 73 6f 72  reach file [lsor
7da0: 74 20 24 6f 70 74 69 6f 6e 73 28 2d 66 69 6c 65  t $options(-file
7db0: 73 29 5d 20 7b 0a 20 20 20 20 69 66 20 7b 5b 66  s)] {.    if {[f
7dc0: 69 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 5d 20  ile tail $file] 
7dd0: 3d 3d 20 24 66 69 6c 65 7d 20 7b 20 73 65 74 20  == $file} { set 
7de0: 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  file [file join 
7df0: 24 3a 3a 74 65 73 74 64 69 72 20 24 66 69 6c 65  $::testdir $file
7e00: 5d 20 7d 0a 20 20 20 20 73 6c 61 76 65 5f 74 65  ] }.    slave_te
7e10: 73 74 5f 66 69 6c 65 20 24 66 69 6c 65 0a 20 20  st_file $file.  
7e20: 7d 0a 0a 20 20 75 70 6c 65 76 65 6c 20 24 6f 70  }..  uplevel $op
7e30: 74 69 6f 6e 73 28 2d 73 68 75 74 64 6f 77 6e 29  tions(-shutdown)
7e40: 0a 0a 20 20 75 6e 73 65 74 20 3a 3a 47 28 70 65  ..  unset ::G(pe
7e50: 72 6d 3a 6e 61 6d 65 29 0a 20 20 75 6e 73 65 74  rm:name).  unset
7e60: 20 3a 3a 47 28 70 65 72 6d 3a 70 72 65 66 69 78   ::G(perm:prefix
7e70: 29 0a 20 20 75 6e 73 65 74 20 3a 3a 47 28 70 65  ).  unset ::G(pe
7e80: 72 6d 3a 70 72 65 73 71 6c 29 0a 20 20 75 6e 73  rm:presql).  uns
7e90: 65 74 20 3a 3a 47 28 70 65 72 6d 3a 64 62 63 6f  et ::G(perm:dbco
7ea0: 6e 66 69 67 29 0a 7d 0a 0a 70 72 6f 63 20 72 75  nfig).}..proc ru
7eb0: 6e 5f 74 65 73 74 5f 73 75 69 74 65 20 7b 6e 61  n_test_suite {na
7ec0: 6d 65 7d 20 7b 0a 20 20 69 66 20 7b 5b 69 6e 66  me} {.  if {[inf
7ed0: 6f 20 65 78 69 73 74 73 20 3a 3a 74 65 73 74 73  o exists ::tests
7ee0: 70 65 63 28 24 6e 61 6d 65 29 5d 3d 3d 30 7d 20  pec($name)]==0} 
7ef0: 7b 0a 20 20 20 20 65 72 72 6f 72 20 22 4e 6f 20  {.    error "No 
7f00: 73 75 63 68 20 74 65 73 74 20 73 75 69 74 65 3a  such test suite:
7f10: 20 24 6e 61 6d 65 22 0a 20 20 7d 0a 20 20 75 70   $name".  }.  up
7f20: 6c 65 76 65 6c 20 72 75 6e 5f 74 65 73 74 73 20  level run_tests 
7f30: 24 6e 61 6d 65 20 24 3a 3a 74 65 73 74 73 70 65  $name $::testspe
7f40: 63 28 24 6e 61 6d 65 29 0a 7d 0a 0a 70 72 6f 63  c($name).}..proc
7f50: 20 68 65 6c 70 20 7b 7d 20 7b 0a 20 20 70 75 74   help {} {.  put
7f60: 73 20 22 55 73 61 67 65 3a 20 24 3a 3a 61 72 67  s "Usage: $::arg
7f70: 76 30 20 54 45 53 54 53 55 49 54 45 20 3f 54 45  v0 TESTSUITE ?TE
7f80: 53 54 46 49 4c 45 3f 22 0a 20 20 70 75 74 73 20  STFILE?".  puts 
7f90: 22 22 0a 20 20 70 75 74 73 20 22 41 76 61 69 6c  "".  puts "Avail
7fa0: 61 62 6c 65 20 74 65 73 74 2d 73 75 69 74 65 73  able test-suites
7fb0: 20 61 72 65 3a 22 0a 20 20 66 6f 72 65 61 63 68   are:".  foreach
7fc0: 20 6b 20 24 3a 3a 74 65 73 74 73 75 69 74 65 6c   k $::testsuitel
7fd0: 69 73 74 20 7b 0a 20 20 20 20 69 66 20 7b 5b 69  ist {.    if {[i
7fe0: 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 74 65 73  nfo exists ::tes
7ff0: 74 73 70 65 63 28 24 6b 29 5d 3d 3d 30 7d 20 7b  tspec($k)]==0} {
8000: 0a 20 20 20 20 20 20 70 75 74 73 20 22 20 20 20  .      puts "   
8010: 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d        ----------
8020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 0a  --------------".
8040: 20 20 20 20 20 20 70 75 74 73 20 22 22 0a 20 20        puts "".  
8050: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
8060: 20 61 72 72 61 79 20 73 65 74 20 6f 20 24 3a 3a   array set o $::
8070: 74 65 73 74 73 70 65 63 28 24 6b 29 0a 20 20 20  testspec($k).   
8080: 20 20 20 70 75 74 73 20 22 54 65 73 74 20 73 75     puts "Test su
8090: 69 74 65 3a 20 5c 22 24 6b 5c 22 22 0a 20 20 20  ite: \"$k\"".   
80a0: 20 20 20 73 65 74 20 64 20 5b 73 74 72 69 6e 67     set d [string
80b0: 20 74 72 69 6d 20 24 6f 28 2d 64 65 73 63 72 69   trim $o(-descri
80c0: 70 74 69 6f 6e 29 5d 0a 20 20 20 20 20 20 73 65  ption)].      se
80d0: 74 20 64 20 5b 72 65 67 73 75 62 20 7b 5c 6e 20  t d [regsub {\n 
80e0: 2a 7d 20 24 64 20 22 5c 6e 20 20 22 5d 0a 20 20  *} $d "\n  "].  
80f0: 20 20 20 20 70 75 74 73 20 22 20 20 24 64 22 0a      puts "  $d".
8100: 20 20 20 20 20 20 70 75 74 73 20 22 22 0a 20 20        puts "".  
8110: 20 20 7d 0a 20 20 7d 0a 20 20 65 78 69 74 20 2d    }.  }.  exit -
8120: 31 0a 7d 0a 0a 69 66 20 7b 5b 69 6e 66 6f 20 73  1.}..if {[info s
8130: 63 72 69 70 74 5d 20 3d 3d 20 24 61 72 67 76 30  cript] == $argv0
8140: 7d 20 7b 0a 20 20 70 72 6f 63 20 6d 61 69 6e 20  } {.  proc main 
8150: 7b 61 72 67 76 7d 20 7b 0a 20 20 20 20 69 66 20  {argv} {.    if 
8160: 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 76 5d  {[llength $argv]
8170: 3d 3d 30 7d 20 7b 0a 20 20 20 20 20 20 68 65 6c  ==0} {.      hel
8180: 70 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20  p.    } else {. 
8190: 20 20 20 20 20 73 65 74 20 73 75 69 74 65 20 5b       set suite [
81a0: 6c 69 6e 64 65 78 20 24 61 72 67 76 20 30 5d 0a  lindex $argv 0].
81b0: 20 20 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20        if {[info 
81c0: 65 78 69 73 74 73 20 3a 3a 74 65 73 74 73 70 65  exists ::testspe
81d0: 63 28 24 73 75 69 74 65 29 5d 3d 3d 30 7d 20 68  c($suite)]==0} h
81e0: 65 6c 70 0a 20 20 20 20 20 20 73 65 74 20 65 78  elp.      set ex
81f0: 74 72 61 20 22 22 0a 20 20 20 20 20 20 69 66 20  tra "".      if 
8200: 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 76 5d  {[llength $argv]
8210: 3e 31 7d 20 7b 20 73 65 74 20 65 78 74 72 61 20  >1} { set extra 
8220: 5b 6c 69 73 74 20 2d 66 69 6c 65 73 20 5b 6c 72  [list -files [lr
8230: 61 6e 67 65 20 24 61 72 67 76 20 31 20 65 6e 64  ange $argv 1 end
8240: 5d 5d 20 7d 0a 20 20 20 20 20 20 65 76 61 6c 20  ]] }.      eval 
8250: 72 75 6e 5f 74 65 73 74 73 20 24 73 75 69 74 65  run_tests $suite
8260: 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24 73 75   $::testspec($su
8270: 69 74 65 29 20 24 65 78 74 72 61 0a 20 20 20 20  ite) $extra.    
8280: 7d 0a 20 20 7d 0a 20 20 6d 61 69 6e 20 24 61 72  }.  }.  main $ar
8290: 67 76 0a 20 20 66 69 6e 69 73 68 5f 74 65 73 74  gv.  finish_test
82a0: 0a 7d 0a                                         .}.