/ Hex Artifact Content
Login

Artifact 40add071ba71aefe1c04f5845308cf46f7de8d04:


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 7d 5d 0a 69 66 20 7b 5b 69 6e 66 6f 20 65  t.}].if {[info e
0f00: 78 69 73 74 73 20 3a 3a 65 6e 76 28 51 55 49 43  xists ::env(QUIC
0f10: 4b 54 45 53 54 5f 49 4e 43 4c 55 44 45 29 5d 7d  KTEST_INCLUDE)]}
0f20: 20 7b 0a 20 20 73 65 74 20 61 6c 6c 71 75 69 63   {.  set allquic
0f30: 6b 74 65 73 74 73 20 5b 63 6f 6e 63 61 74 20 24  ktests [concat $
0f40: 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 24 3a  allquicktests $:
0f50: 3a 65 6e 76 28 51 55 49 43 4b 54 45 53 54 5f 49  :env(QUICKTEST_I
0f60: 4e 43 4c 55 44 45 29 5d 0a 7d 0a 0a 23 23 23 23  NCLUDE)].}..####
0f70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fb0: 23 23 23 23 23 23 23 23 23 0a 23 20 53 74 61 72  #########.# Star
0fc0: 74 20 6f 66 20 74 65 73 74 73 0a 23 0a 0a 23 2d  t of tests.#..#-
0fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1010: 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 44 65 66 69 6e  --------.# Defin
1020: 65 20 74 68 65 20 67 65 6e 65 72 69 63 20 74 65  e the generic te
1030: 73 74 20 73 75 69 74 65 73 3a 0a 23 0a 23 20 20  st suites:.#.#  
1040: 20 76 65 72 79 71 75 69 63 6b 0a 23 20 20 20 71   veryquick.#   q
1050: 75 69 63 6b 0a 23 20 20 20 66 75 6c 6c 0a 23 0a  uick.#   full.#.
1060: 6c 61 70 70 65 6e 64 20 3a 3a 74 65 73 74 73 75  lappend ::testsu
1070: 69 74 65 6c 69 73 74 20 78 78 78 0a 0a 74 65 73  itelist xxx..tes
1080: 74 5f 73 75 69 74 65 20 22 76 65 72 79 71 75 69  t_suite "veryqui
1090: 63 6b 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d  ck" -prefix "" -
10a0: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
10b0: 22 56 65 72 79 22 20 71 75 69 63 6b 20 74 65 73  "Very" quick tes
10c0: 74 20 73 75 69 74 65 2e 20 52 75 6e 73 20 69 6e  t suite. Runs in
10d0: 20 6c 65 73 73 20 74 68 61 6e 20 35 20 6d 69 6e   less than 5 min
10e0: 75 74 65 73 20 6f 6e 20 61 20 77 6f 72 6b 73 74  utes on a workst
10f0: 61 74 69 6f 6e 2e 20 0a 20 20 54 68 69 73 20 74  ation. .  This t
1100: 65 73 74 20 73 75 69 74 65 20 69 73 20 74 68 65  est suite is the
1110: 20 73 61 6d 65 20 61 73 20 74 68 65 20 22 71 75   same as the "qu
1120: 69 63 6b 22 20 74 65 73 74 73 2c 20 65 78 63 65  ick" tests, exce
1130: 70 74 20 74 68 61 74 20 73 6f 6d 65 20 66 69 6c  pt that some fil
1140: 65 73 0a 20 20 74 68 61 74 20 74 65 73 74 20 6d  es.  that test m
1150: 61 6c 6c 6f 63 20 61 6e 64 20 49 4f 20 65 72 72  alloc and IO err
1160: 6f 72 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  ors are omitted.
1170: 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65  .} -files [.  te
1180: 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b  st_set $allquick
1190: 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 2a  tests -exclude *
11a0: 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20  malloc* *ioerr* 
11b0: 2a 66 61 75 6c 74 2a 0a 5d 0a 0a 74 65 73 74 5f  *fault*.]..test_
11c0: 73 75 69 74 65 20 22 6d 6d 61 70 22 20 2d 70 72  suite "mmap" -pr
11d0: 65 66 69 78 20 22 6d 6d 2d 22 20 2d 64 65 73 63  efix "mm-" -desc
11e0: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 53 69 6d 69  ription {.  Simi
11f0: 6c 61 72 20 74 6f 20 76 65 72 79 71 75 69 63 6b  lar to veryquick
1200: 2e 20 45 78 63 65 70 74 20 77 69 74 68 20 6d 65  . Except with me
1210: 6d 6f 72 79 20 6d 61 70 70 69 6e 67 20 64 69 73  mory mapping dis
1220: 61 62 6c 65 64 2e 0a 7d 20 2d 70 72 65 73 71 6c  abled..} -presql
1230: 20 7b 0a 20 20 70 72 61 67 6d 61 20 6d 6d 61 70   {.  pragma mmap
1240: 5f 73 69 7a 65 20 3d 20 32 36 38 34 33 35 34 35  _size = 26843545
1250: 36 3b 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20  6;.} -files [.  
1260: 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69  test_set $allqui
1270: 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  cktests -exclude
1280: 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72   *malloc* *ioerr
1290: 2a 20 2a 66 61 75 6c 74 2a 20 2d 69 6e 63 6c 75  * *fault* -inclu
12a0: 64 65 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 0a 5d  de malloc.test.]
12b0: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 76 61  ..test_suite "va
12c0: 6c 67 72 69 6e 64 22 20 2d 70 72 65 66 69 78 20  lgrind" -prefix 
12d0: 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  "" -description 
12e0: 7b 0a 20 20 52 75 6e 20 74 68 65 20 22 76 65 72  {.  Run the "ver
12f0: 79 71 75 69 63 6b 22 20 74 65 73 74 20 73 75 69  yquick" test sui
1300: 74 65 20 77 69 74 68 20 61 20 63 6f 75 70 6c 65  te with a couple
1310: 20 6f 66 20 6d 75 6c 74 69 2d 70 72 6f 63 65 73   of multi-proces
1320: 73 20 74 65 73 74 73 20 28 74 68 61 74 0a 20 20  s tests (that.  
1330: 66 61 69 6c 20 75 6e 64 65 72 20 76 61 6c 67 72  fail under valgr
1340: 69 6e 64 29 20 6f 6d 69 74 74 65 64 2e 0a 7d 20  ind) omitted..} 
1350: 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f  -files [.  test_
1360: 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73  set $allquicktes
1370: 74 73 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c  ts -exclude *mal
1380: 6c 6f 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61  loc* *ioerr* *fa
1390: 75 6c 74 2a 20 77 61 6c 2e 74 65 73 74 20 61 74  ult* wal.test at
13a0: 6f 66 31 2e 74 65 73 74 0a 5d 20 2d 69 6e 69 74  of1.test.] -init
13b0: 69 61 6c 69 7a 65 20 7b 0a 20 20 73 65 74 20 3a  ialize {.  set :
13c0: 3a 47 28 76 61 6c 67 72 69 6e 64 29 20 31 0a 7d  :G(valgrind) 1.}
13d0: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 75   -shutdown {.  u
13e0: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
13f0: 20 3a 3a 47 28 76 61 6c 67 72 69 6e 64 29 0a 7d   ::G(valgrind).}
1400: 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22 71 75  ..test_suite "qu
1410: 69 63 6b 22 20 2d 70 72 65 66 69 78 20 22 22 20  ick" -prefix "" 
1420: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
1430: 20 51 75 69 63 6b 20 74 65 73 74 20 73 75 69 74   Quick test suit
1440: 65 2e 20 52 75 6e 73 20 69 6e 20 61 72 6f 75 6e  e. Runs in aroun
1450: 64 20 31 30 20 6d 69 6e 75 74 65 73 20 6f 6e 20  d 10 minutes on 
1460: 61 20 77 6f 72 6b 73 74 61 74 69 6f 6e 2e 0a 7d  a workstation..}
1470: 20 2d 66 69 6c 65 73 20 5b 0a 20 20 74 65 73 74   -files [.  test
1480: 5f 73 65 74 20 24 61 6c 6c 71 75 69 63 6b 74 65  _set $allquickte
1490: 73 74 73 0a 5d 0a 0a 74 65 73 74 5f 73 75 69 74  sts.]..test_suit
14a0: 65 20 22 66 75 6c 6c 22 20 2d 70 72 65 66 69 78  e "full" -prefix
14b0: 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e   "" -description
14c0: 20 7b 0a 20 20 46 75 6c 6c 20 74 65 73 74 20 73   {.  Full test s
14d0: 75 69 74 65 2e 20 54 61 6b 65 73 20 61 20 6c 6f  uite. Takes a lo
14e0: 6e 67 20 74 69 6d 65 2e 0a 7d 20 2d 66 69 6c 65  ng time..} -file
14f0: 73 20 5b 20 0a 20 20 74 65 73 74 5f 73 65 74 20  s [ .  test_set 
1500: 24 61 6c 6c 74 65 73 74 73 20 0a 5d 20 2d 69 6e  $alltests .] -in
1510: 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 75 6e 73  itialize {.  uns
1520: 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 3a  et -nocomplain :
1530: 3a 47 28 69 73 71 75 69 63 6b 29 0a 7d 0a 0a 74  :G(isquick).}..t
1540: 65 73 74 5f 73 75 69 74 65 20 22 74 68 72 65 61  est_suite "threa
1550: 64 73 22 20 2d 70 72 65 66 69 78 20 22 22 20 2d  ds" -prefix "" -
1560: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
1570: 41 6c 6c 20 6d 75 6c 74 69 2d 74 68 72 65 61 64  All multi-thread
1580: 65 64 20 74 65 73 74 73 2e 0a 7d 20 2d 66 69 6c  ed tests..} -fil
1590: 65 73 20 7b 0a 20 20 6e 6f 74 69 66 79 32 2e 74  es {.  notify2.t
15a0: 65 73 74 20 20 20 74 68 72 65 61 64 30 30 31 2e  est   thread001.
15b0: 74 65 73 74 20 74 68 72 65 61 64 30 30 32 2e 74  test thread002.t
15c0: 65 73 74 20 74 68 72 65 61 64 30 30 33 2e 74 65  est thread003.te
15d0: 73 74 20 0a 20 20 74 68 72 65 61 64 30 30 34 2e  st .  thread004.
15e0: 74 65 73 74 20 74 68 72 65 61 64 30 30 35 2e 74  test thread005.t
15f0: 65 73 74 20 77 61 6c 74 68 72 65 61 64 2e 74 65  est walthread.te
1600: 73 74 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65  st.}..test_suite
1610: 20 22 66 74 73 33 22 20 2d 70 72 65 66 69 78 20   "fts3" -prefix 
1620: 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  "" -description 
1630: 7b 0a 20 20 41 6c 6c 20 46 54 53 33 20 74 65 73  {.  All FTS3 tes
1640: 74 73 20 65 78 63 65 70 74 20 66 74 73 33 72 6e  ts except fts3rn
1650: 64 2e 74 65 73 74 2e 0a 7d 20 2d 66 69 6c 65 73  d.test..} -files
1660: 20 7b 0a 20 20 66 74 73 33 61 61 2e 74 65 73 74   {.  fts3aa.test
1670: 20 66 74 73 33 61 62 2e 74 65 73 74 20 66 74 73   fts3ab.test fts
1680: 33 61 63 2e 74 65 73 74 20 66 74 73 33 61 64 2e  3ac.test fts3ad.
1690: 74 65 73 74 20 66 74 73 33 61 65 2e 74 65 73 74  test fts3ae.test
16a0: 0a 20 20 66 74 73 33 61 66 2e 74 65 73 74 20 66  .  fts3af.test f
16b0: 74 73 33 61 67 2e 74 65 73 74 20 66 74 73 33 61  ts3ag.test fts3a
16c0: 68 2e 74 65 73 74 20 66 74 73 33 61 69 2e 74 65  h.test fts3ai.te
16d0: 73 74 20 66 74 73 33 61 6a 2e 74 65 73 74 0a 20  st fts3aj.test. 
16e0: 20 66 74 73 33 61 6b 2e 74 65 73 74 20 66 74 73   fts3ak.test fts
16f0: 33 61 6c 2e 74 65 73 74 20 66 74 73 33 61 6d 2e  3al.test fts3am.
1700: 74 65 73 74 20 66 74 73 33 61 6e 2e 74 65 73 74  test fts3an.test
1710: 20 66 74 73 33 61 6f 2e 74 65 73 74 0a 20 20 66   fts3ao.test.  f
1720: 74 73 33 61 74 6f 6b 65 6e 2e 74 65 73 74 20 66  ts3atoken.test f
1730: 74 73 33 62 2e 74 65 73 74 20 66 74 73 33 63 2e  ts3b.test fts3c.
1740: 74 65 73 74 20 66 74 73 33 63 6f 76 2e 74 65 73  test fts3cov.tes
1750: 74 20 66 74 73 33 64 2e 74 65 73 74 0a 20 20 66  t fts3d.test.  f
1760: 74 73 33 64 65 66 65 72 2e 74 65 73 74 20 66 74  ts3defer.test ft
1770: 73 33 64 65 66 65 72 32 2e 74 65 73 74 20 66 74  s3defer2.test ft
1780: 73 33 65 2e 74 65 73 74 20 66 74 73 33 65 78 70  s3e.test fts3exp
1790: 72 2e 74 65 73 74 20 66 74 73 33 65 78 70 72 32  r.test fts3expr2
17a0: 2e 74 65 73 74 20 0a 20 20 66 74 73 33 65 78 70  .test .  fts3exp
17b0: 72 33 2e 74 65 73 74 0a 20 20 66 74 73 33 6e 65  r3.test.  fts3ne
17c0: 61 72 2e 74 65 73 74 20 66 74 73 33 71 75 65 72  ar.test fts3quer
17d0: 79 2e 74 65 73 74 20 66 74 73 33 73 68 61 72 65  y.test fts3share
17e0: 64 2e 74 65 73 74 20 66 74 73 33 73 6e 69 70 70  d.test fts3snipp
17f0: 65 74 2e 74 65 73 74 20 0a 20 20 66 74 73 33 73  et.test .  fts3s
1800: 6f 72 74 2e 74 65 73 74 0a 20 20 66 74 73 33 66  ort.test.  fts3f
1810: 61 75 6c 74 2e 74 65 73 74 20 66 74 73 33 6d 61  ault.test fts3ma
1820: 6c 6c 6f 63 2e 74 65 73 74 20 66 74 73 33 6d 61  lloc.test fts3ma
1830: 74 63 68 69 6e 66 6f 2e 74 65 73 74 0a 20 20 66  tchinfo.test.  f
1840: 74 73 33 61 75 78 31 2e 74 65 73 74 20 66 74 73  ts3aux1.test fts
1850: 33 63 6f 6d 70 31 2e 74 65 73 74 20 66 74 73 33  3comp1.test fts3
1860: 61 75 74 6f 2e 74 65 73 74 0a 20 20 66 74 73 34  auto.test.  fts4
1870: 61 61 2e 74 65 73 74 20 66 74 73 34 63 6f 6e 74  aa.test fts4cont
1880: 65 6e 74 2e 74 65 73 74 0a 20 20 66 74 73 33 63  ent.test.  fts3c
1890: 6f 6e 66 2e 74 65 73 74 20 66 74 73 33 70 72 65  onf.test fts3pre
18a0: 66 69 78 2e 74 65 73 74 20 66 74 73 33 66 61 75  fix.test fts3fau
18b0: 6c 74 32 2e 74 65 73 74 20 66 74 73 33 63 6f 72  lt2.test fts3cor
18c0: 72 75 70 74 2e 74 65 73 74 0a 20 20 66 74 73 33  rupt.test.  fts3
18d0: 63 6f 72 72 75 70 74 32 2e 74 65 73 74 20 66 74  corrupt2.test ft
18e0: 73 33 66 69 72 73 74 2e 74 65 73 74 20 66 74 73  s3first.test fts
18f0: 34 6c 61 6e 67 69 64 2e 74 65 73 74 20 66 74 73  4langid.test fts
1900: 34 6d 65 72 67 65 2e 74 65 73 74 0a 20 20 66 74  4merge.test.  ft
1910: 73 34 63 68 65 63 6b 2e 74 65 73 74 20 66 74 73  s4check.test fts
1920: 34 75 6e 69 63 6f 64 65 2e 74 65 73 74 20 66 74  4unicode.test ft
1930: 73 34 6e 6f 74 69 2e 74 65 73 74 0a 20 20 66 74  s4noti.test.  ft
1940: 73 33 76 61 72 69 6e 74 2e 74 65 73 74 0a 7d 0a  s3varint.test.}.
1950: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 66  .test_suite "nof
1960: 61 75 6c 74 73 69 6d 22 20 2d 70 72 65 66 69 78  aultsim" -prefix
1970: 20 22 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e   "" -description
1980: 20 7b 0a 20 20 22 56 65 72 79 22 20 71 75 69 63   {.  "Very" quic
1990: 6b 20 74 65 73 74 20 73 75 69 74 65 2e 20 52 75  k test suite. Ru
19a0: 6e 73 20 69 6e 20 6c 65 73 73 20 74 68 61 6e 20  ns in less than 
19b0: 35 20 6d 69 6e 75 74 65 73 20 6f 6e 20 61 20 77  5 minutes on a w
19c0: 6f 72 6b 73 74 61 74 69 6f 6e 2e 20 0a 20 20 54  orkstation. .  T
19d0: 68 69 73 20 74 65 73 74 20 73 75 69 74 65 20 69  his test suite i
19e0: 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68  s the same as th
19f0: 65 20 22 71 75 69 63 6b 22 20 74 65 73 74 73 2c  e "quick" tests,
1a00: 20 65 78 63 65 70 74 20 74 68 61 74 20 73 6f 6d   except that som
1a10: 65 20 66 69 6c 65 73 0a 20 20 74 68 61 74 20 74  e files.  that t
1a20: 65 73 74 20 6d 61 6c 6c 6f 63 20 61 6e 64 20 49  est malloc and I
1a30: 4f 20 65 72 72 6f 72 73 20 61 72 65 20 6f 6d 69  O errors are omi
1a40: 74 74 65 64 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b  tted..} -files [
1a50: 0a 20 20 74 65 73 74 5f 73 65 74 20 24 61 6c 6c  .  test_set $all
1a60: 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c  quicktests -excl
1a70: 75 64 65 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f  ude *malloc* *io
1a80: 65 72 72 2a 20 2a 66 61 75 6c 74 2a 0a 5d 20 2d  err* *fault*.] -
1a90: 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20 63  initialize {.  c
1aa0: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
1ab0: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
1ac0: 77 6e 0a 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c  wn.  install_mal
1ad0: 6c 6f 63 5f 66 61 75 6c 74 73 69 6d 20 30 0a 20  loc_faultsim 0. 
1ae0: 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
1af0: 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c  ize.  autoinstal
1b00: 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73  l_test_functions
1b10: 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20  .} -shutdown {. 
1b20: 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61   unset -nocompla
1b30: 69 6e 20 3a 3a 47 28 76 61 6c 67 72 69 6e 64 29  in ::G(valgrind)
1b40: 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65 20 22  .}..test_suite "
1b50: 71 75 65 72 79 70 6c 61 6e 6e 65 72 22 20 2d 70  queryplanner" -p
1b60: 72 65 66 69 78 20 22 22 20 2d 64 65 73 63 72 69  refix "" -descri
1b70: 70 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20  ption {.  Tests 
1b80: 6f 66 20 74 68 65 20 71 75 65 72 79 20 70 6c 61  of the query pla
1b90: 6e 6e 65 72 20 61 6e 64 20 71 75 65 72 79 20 6f  nner and query o
1ba0: 70 74 69 6d 69 7a 65 72 0a 7d 20 2d 66 69 6c 65  ptimizer.} -file
1bb0: 73 20 7b 0a 20 20 61 6c 74 65 72 32 2e 74 65 73  s {.  alter2.tes
1bc0: 74 20 61 6c 74 65 72 33 2e 74 65 73 74 20 61 6c  t alter3.test al
1bd0: 74 65 72 34 2e 74 65 73 74 20 61 6c 74 65 72 2e  ter4.test alter.
1be0: 74 65 73 74 20 61 6e 61 6c 79 7a 65 33 2e 74 65  test analyze3.te
1bf0: 73 74 0a 20 20 61 6e 61 6c 79 7a 65 34 2e 74 65  st.  analyze4.te
1c00: 73 74 20 61 6e 61 6c 79 7a 65 35 2e 74 65 73 74  st analyze5.test
1c10: 20 61 6e 61 6c 79 7a 65 36 2e 74 65 73 74 20 61   analyze6.test a
1c20: 6e 61 6c 79 7a 65 37 2e 74 65 73 74 20 61 6e 61  nalyze7.test ana
1c30: 6c 79 7a 65 38 2e 74 65 73 74 0a 20 20 61 6e 61  lyze8.test.  ana
1c40: 6c 79 7a 65 2e 74 65 73 74 20 61 74 74 61 63 68  lyze.test attach
1c50: 32 2e 74 65 73 74 20 61 74 74 61 63 68 33 2e 74  2.test attach3.t
1c60: 65 73 74 20 61 74 74 61 63 68 34 2e 74 65 73 74  est attach4.test
1c70: 0a 20 20 61 74 74 61 63 68 2e 74 65 73 74 20 61  .  attach.test a
1c80: 75 74 6f 69 6e 63 2e 74 65 73 74 20 61 75 74 6f  utoinc.test auto
1c90: 69 6e 64 65 78 31 2e 74 65 73 74 20 62 65 74 77  index1.test betw
1ca0: 65 65 6e 2e 74 65 73 74 20 63 61 73 74 2e 74 65  een.test cast.te
1cb0: 73 74 0a 20 20 63 68 65 63 6b 2e 74 65 73 74 20  st.  check.test 
1cc0: 63 6c 6f 73 75 72 65 30 31 2e 74 65 73 74 20 63  closure01.test c
1cd0: 6f 61 6c 65 73 63 65 2e 74 65 73 74 20 63 6f 6c  oalesce.test col
1ce0: 6c 61 74 65 31 2e 74 65 73 74 20 63 6f 6c 6c 61  late1.test colla
1cf0: 74 65 32 2e 74 65 73 74 0a 20 20 63 6f 6c 6c 61  te2.test.  colla
1d00: 74 65 33 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65  te3.test collate
1d10: 34 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65 35 2e  4.test collate5.
1d20: 74 65 73 74 20 63 6f 6c 6c 61 74 65 36 2e 74 65  test collate6.te
1d30: 73 74 20 63 6f 6c 6c 61 74 65 37 2e 74 65 73 74  st collate7.test
1d40: 0a 20 20 63 6f 6c 6c 61 74 65 38 2e 74 65 73 74  .  collate8.test
1d50: 20 63 6f 6c 6c 61 74 65 39 2e 74 65 73 74 20 63   collate9.test c
1d60: 6f 6c 6c 61 74 65 41 2e 74 65 73 74 20 63 6f 6c  ollateA.test col
1d70: 6d 65 74 61 2e 74 65 73 74 20 63 6f 6c 6e 61 6d  meta.test colnam
1d80: 65 2e 74 65 73 74 0a 20 20 63 6f 6e 66 6c 69 63  e.test.  conflic
1d90: 74 2e 74 65 73 74 20 63 6f 75 6e 74 2e 74 65 73  t.test count.tes
1da0: 74 20 63 6f 76 65 72 69 64 78 73 63 61 6e 2e 74  t coveridxscan.t
1db0: 65 73 74 20 63 72 65 61 74 65 74 61 62 2e 74 65  est createtab.te
1dc0: 73 74 20 63 73 65 2e 74 65 73 74 0a 20 20 64 61  st cse.test.  da
1dd0: 74 65 2e 74 65 73 74 20 64 62 73 74 61 74 75 73  te.test dbstatus
1de0: 32 2e 74 65 73 74 20 64 62 73 74 61 74 75 73 2e  2.test dbstatus.
1df0: 74 65 73 74 20 64 65 66 61 75 6c 74 2e 74 65 73  test default.tes
1e00: 74 20 64 65 6c 65 74 65 32 2e 74 65 73 74 0a 20  t delete2.test. 
1e10: 20 64 65 6c 65 74 65 33 2e 74 65 73 74 20 64 65   delete3.test de
1e20: 6c 65 74 65 2e 74 65 73 74 20 64 65 73 63 69 64  lete.test descid
1e30: 78 31 2e 74 65 73 74 20 64 65 73 63 69 64 78 32  x1.test descidx2
1e40: 2e 74 65 73 74 20 64 65 73 63 69 64 78 33 2e 74  .test descidx3.t
1e50: 65 73 74 0a 20 20 64 69 73 74 69 6e 63 74 61 67  est.  distinctag
1e60: 67 2e 74 65 73 74 20 64 69 73 74 69 6e 63 74 2e  g.test distinct.
1e70: 74 65 73 74 20 65 5f 63 72 65 61 74 65 74 61 62  test e_createtab
1e80: 6c 65 2e 74 65 73 74 20 65 5f 64 65 6c 65 74 65  le.test e_delete
1e90: 2e 74 65 73 74 0a 20 20 65 5f 64 72 6f 70 74 72  .test.  e_droptr
1ea0: 69 67 67 65 72 2e 74 65 73 74 20 65 5f 64 72 6f  igger.test e_dro
1eb0: 70 76 69 65 77 2e 74 65 73 74 20 65 5f 65 78 70  pview.test e_exp
1ec0: 72 2e 74 65 73 74 20 65 5f 69 6e 73 65 72 74 2e  r.test e_insert.
1ed0: 74 65 73 74 0a 20 20 65 71 70 2e 74 65 73 74 20  test.  eqp.test 
1ee0: 65 5f 72 65 69 6e 64 65 78 2e 74 65 73 74 20 65  e_reindex.test e
1ef0: 5f 72 65 73 6f 6c 76 65 2e 74 65 73 74 20 65 5f  _resolve.test e_
1f00: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 65 5f 73  select2.test e_s
1f10: 65 6c 65 63 74 2e 74 65 73 74 0a 20 20 65 5f 75  elect.test.  e_u
1f20: 70 64 61 74 65 2e 74 65 73 74 20 65 78 69 73 74  pdate.test exist
1f30: 73 2e 74 65 73 74 20 65 78 70 72 2e 74 65 73 74  s.test expr.test
1f40: 20 66 6b 65 79 31 2e 74 65 73 74 20 66 6b 65 79   fkey1.test fkey
1f50: 32 2e 74 65 73 74 20 66 6b 65 79 33 2e 74 65 73  2.test fkey3.tes
1f60: 74 0a 20 20 66 6b 65 79 34 2e 74 65 73 74 20 66  t.  fkey4.test f
1f70: 6b 65 79 35 2e 74 65 73 74 20 66 75 6e 63 32 2e  key5.test func2.
1f80: 74 65 73 74 20 66 75 6e 63 33 2e 74 65 73 74 20  test func3.test 
1f90: 66 75 6e 63 2e 74 65 73 74 20 0a 20 20 69 6e 33  func.test .  in3
1fa0: 2e 74 65 73 74 20 69 6e 34 2e 74 65 73 74 20 69  .test in4.test i
1fb0: 6e 35 2e 74 65 73 74 20 69 6e 64 65 78 32 2e 74  n5.test index2.t
1fc0: 65 73 74 20 69 6e 64 65 78 33 2e 74 65 73 74 0a  est index3.test.
1fd0: 20 20 69 6e 64 65 78 34 2e 74 65 73 74 20 69 6e    index4.test in
1fe0: 64 65 78 35 2e 74 65 73 74 20 69 6e 64 65 78 65  dex5.test indexe
1ff0: 64 62 79 2e 74 65 73 74 20 69 6e 64 65 78 2e 74  dby.test index.t
2000: 65 73 74 0a 20 20 69 6e 73 65 72 74 32 2e 74 65  est.  insert2.te
2010: 73 74 20 69 6e 73 65 72 74 33 2e 74 65 73 74 20  st insert3.test 
2020: 69 6e 73 65 72 74 34 2e 74 65 73 74 20 69 6e 73  insert4.test ins
2030: 65 72 74 35 2e 74 65 73 74 20 69 6e 73 65 72 74  ert5.test insert
2040: 2e 74 65 73 74 0a 20 20 69 6e 73 74 72 2e 74 65  .test.  instr.te
2050: 73 74 20 69 6e 2e 74 65 73 74 20 69 6e 74 70 6b  st in.test intpk
2060: 65 79 2e 74 65 73 74 20 6a 6f 69 6e 32 2e 74 65  ey.test join2.te
2070: 73 74 20 6a 6f 69 6e 33 2e 74 65 73 74 20 6a 6f  st join3.test jo
2080: 69 6e 34 2e 74 65 73 74 0a 20 20 6a 6f 69 6e 35  in4.test.  join5
2090: 2e 74 65 73 74 20 6a 6f 69 6e 36 2e 74 65 73 74  .test join6.test
20a0: 20 6a 6f 69 6e 2e 74 65 73 74 20 6c 69 6b 65 32   join.test like2
20b0: 2e 74 65 73 74 20 6c 69 6b 65 2e 74 65 73 74 20  .test like.test 
20c0: 6c 69 6d 69 74 2e 74 65 73 74 0a 20 20 6d 69 6e  limit.test.  min
20d0: 6d 61 78 32 2e 74 65 73 74 20 6d 69 6e 6d 61 78  max2.test minmax
20e0: 33 2e 74 65 73 74 20 6d 69 6e 6d 61 78 34 2e 74  3.test minmax4.t
20f0: 65 73 74 20 6d 69 6e 6d 61 78 2e 74 65 73 74 20  est minmax.test 
2100: 6d 69 73 63 31 2e 74 65 73 74 20 6d 69 73 63 32  misc1.test misc2
2110: 2e 74 65 73 74 0a 20 20 6d 69 73 63 33 2e 74 65  .test.  misc3.te
2120: 73 74 20 6d 69 73 63 34 2e 74 65 73 74 20 6d 69  st misc4.test mi
2130: 73 63 35 2e 74 65 73 74 20 6d 69 73 63 36 2e 74  sc5.test misc6.t
2140: 65 73 74 20 6d 69 73 63 37 2e 74 65 73 74 20 6f  est misc7.test o
2150: 72 64 65 72 62 79 31 2e 74 65 73 74 0a 20 20 6f  rderby1.test.  o
2160: 72 64 65 72 62 79 32 2e 74 65 73 74 20 6f 72 64  rderby2.test ord
2170: 65 72 62 79 33 2e 74 65 73 74 20 6f 72 64 65 72  erby3.test order
2180: 62 79 34 2e 74 65 73 74 20 72 61 6e 64 65 78 70  by4.test randexp
2190: 72 31 2e 74 65 73 74 20 72 65 67 65 78 70 31 2e  r1.test regexp1.
21a0: 74 65 73 74 0a 20 20 72 65 69 6e 64 65 78 2e 74  test.  reindex.t
21b0: 65 73 74 20 72 6f 77 68 61 73 68 2e 74 65 73 74  est rowhash.test
21c0: 20 72 6f 77 69 64 2e 74 65 73 74 20 73 63 68 65   rowid.test sche
21d0: 6d 61 32 2e 74 65 73 74 20 73 63 68 65 6d 61 33  ma2.test schema3
21e0: 2e 74 65 73 74 0a 20 20 73 63 68 65 6d 61 34 2e  .test.  schema4.
21f0: 74 65 73 74 20 73 63 68 65 6d 61 35 2e 74 65 73  test schema5.tes
2200: 74 20 73 63 68 65 6d 61 2e 74 65 73 74 0a 20 20  t schema.test.  
2210: 73 65 6c 65 63 74 31 2e 74 65 73 74 20 73 65 6c  select1.test sel
2220: 65 63 74 32 2e 74 65 73 74 20 73 65 6c 65 63 74  ect2.test select
2230: 33 2e 74 65 73 74 20 73 65 6c 65 63 74 34 2e 74  3.test select4.t
2240: 65 73 74 20 73 65 6c 65 63 74 35 2e 74 65 73 74  est select5.test
2250: 0a 20 20 73 65 6c 65 63 74 36 2e 74 65 73 74 20  .  select6.test 
2260: 73 65 6c 65 63 74 37 2e 74 65 73 74 20 73 65 6c  select7.test sel
2270: 65 63 74 38 2e 74 65 73 74 20 73 65 6c 65 63 74  ect8.test select
2280: 39 2e 74 65 73 74 20 73 65 6c 65 63 74 41 2e 74  9.test selectA.t
2290: 65 73 74 0a 20 20 73 65 6c 65 63 74 42 2e 74 65  est.  selectB.te
22a0: 73 74 20 73 65 6c 65 63 74 43 2e 74 65 73 74 20  st selectC.test 
22b0: 73 65 6c 65 63 74 44 2e 74 65 73 74 20 73 65 6c  selectD.test sel
22c0: 65 63 74 45 2e 74 65 73 74 20 73 69 64 65 64 65  ectE.test sidede
22d0: 6c 65 74 65 2e 74 65 73 74 0a 20 20 73 6f 72 74  lete.test.  sort
22e0: 2e 74 65 73 74 20 73 70 65 6c 6c 66 69 78 2e 74  .test spellfix.t
22f0: 65 73 74 20 73 75 62 71 75 65 72 79 32 2e 74 65  est subquery2.te
2300: 73 74 20 73 75 62 71 75 65 72 79 2e 74 65 73 74  st subquery.test
2310: 20 73 75 62 73 65 6c 65 63 74 2e 74 65 73 74 0a   subselect.test.
2320: 20 20 73 75 62 73 74 72 2e 74 65 73 74 20 74 6b    substr.test tk
2330: 74 2d 30 32 61 38 65 38 31 64 34 34 2e 74 65 73  t-02a8e81d44.tes
2340: 74 20 74 6b 74 31 34 33 35 2e 74 65 73 74 20 74  t tkt1435.test t
2350: 6b 74 31 34 34 33 2e 74 65 73 74 20 74 6b 74 31  kt1443.test tkt1
2360: 34 34 34 2e 74 65 73 74 0a 20 20 74 6b 74 31 34  444.test.  tkt14
2370: 34 39 2e 74 65 73 74 20 74 6b 74 31 34 37 33 2e  49.test tkt1473.
2380: 74 65 73 74 20 74 6b 74 31 35 30 31 2e 74 65 73  test tkt1501.tes
2390: 74 20 74 6b 74 31 35 31 32 2e 74 65 73 74 20 74  t tkt1512.test t
23a0: 6b 74 31 35 31 34 2e 74 65 73 74 0a 20 20 74 6b  kt1514.test.  tk
23b0: 74 31 35 33 36 2e 74 65 73 74 20 74 6b 74 31 35  t1536.test tkt15
23c0: 33 37 2e 74 65 73 74 20 74 6b 74 31 35 36 37 2e  37.test tkt1567.
23d0: 74 65 73 74 20 74 6b 74 31 36 34 34 2e 74 65 73  test tkt1644.tes
23e0: 74 20 74 6b 74 31 36 36 37 2e 74 65 73 74 0a 20  t tkt1667.test. 
23f0: 20 74 6b 74 31 38 37 33 2e 74 65 73 74 20 74 6b   tkt1873.test tk
2400: 74 32 31 34 31 2e 74 65 73 74 20 74 6b 74 32 31  t2141.test tkt21
2410: 39 32 2e 74 65 73 74 20 74 6b 74 32 32 31 33 2e  92.test tkt2213.
2420: 74 65 73 74 20 74 6b 74 32 32 35 31 2e 74 65 73  test tkt2251.tes
2430: 74 0a 20 20 74 6b 74 32 32 38 35 2e 74 65 73 74  t.  tkt2285.test
2440: 20 74 6b 74 32 33 33 32 2e 74 65 73 74 20 74 6b   tkt2332.test tk
2450: 74 32 33 33 39 2e 74 65 73 74 20 74 6b 74 32 33  t2339.test tkt23
2460: 39 31 2e 74 65 73 74 20 74 6b 74 32 34 30 39 2e  91.test tkt2409.
2470: 74 65 73 74 0a 20 20 74 6b 74 32 34 35 30 2e 74  test.  tkt2450.t
2480: 65 73 74 20 74 6b 74 32 35 36 35 2e 74 65 73 74  est tkt2565.test
2490: 20 74 6b 74 32 36 34 30 2e 74 65 73 74 20 74 6b   tkt2640.test tk
24a0: 74 32 36 34 33 2e 74 65 73 74 20 74 6b 74 32 36  t2643.test tkt26
24b0: 38 36 2e 74 65 73 74 0a 20 20 74 6b 74 2d 32 36  86.test.  tkt-26
24c0: 66 66 30 63 32 64 31 65 2e 74 65 73 74 20 74 6b  ff0c2d1e.test tk
24d0: 74 32 37 36 37 2e 74 65 73 74 20 74 6b 74 32 38  t2767.test tkt28
24e0: 31 37 2e 74 65 73 74 20 74 6b 74 32 38 32 30 2e  17.test tkt2820.
24f0: 74 65 73 74 20 74 6b 74 32 38 32 32 2e 74 65 73  test tkt2822.tes
2500: 74 0a 20 20 74 6b 74 32 38 33 32 2e 74 65 73 74  t.  tkt2832.test
2510: 20 74 6b 74 32 38 35 34 2e 74 65 73 74 20 74 6b   tkt2854.test tk
2520: 74 32 39 32 30 2e 74 65 73 74 20 74 6b 74 32 39  t2920.test tkt29
2530: 32 37 2e 74 65 73 74 20 74 6b 74 32 39 34 32 2e  27.test tkt2942.
2540: 74 65 73 74 0a 20 20 74 6b 74 2d 32 61 35 36 32  test.  tkt-2a562
2550: 39 32 30 32 66 2e 74 65 73 74 20 74 6b 74 2d 32  9202f.test tkt-2
2560: 64 31 61 35 63 36 37 64 2e 74 65 73 74 20 74 6b  d1a5c67d.test tk
2570: 74 2d 32 65 61 32 34 32 35 64 33 34 2e 74 65 73  t-2ea2425d34.tes
2580: 74 20 74 6b 74 33 30 38 30 2e 74 65 73 74 0a 20  t tkt3080.test. 
2590: 20 74 6b 74 33 30 39 33 2e 74 65 73 74 20 74 6b   tkt3093.test tk
25a0: 74 33 31 32 31 2e 74 65 73 74 20 74 6b 74 2d 33  t3121.test tkt-3
25b0: 31 33 33 38 64 63 61 37 65 2e 74 65 73 74 20 74  1338dca7e.test t
25c0: 6b 74 2d 33 31 33 37 32 33 63 33 35 36 2e 74 65  kt-313723c356.te
25d0: 73 74 0a 20 20 74 6b 74 33 32 30 31 2e 74 65 73  st.  tkt3201.tes
25e0: 74 20 74 6b 74 33 32 39 32 2e 74 65 73 74 20 74  t tkt3292.test t
25f0: 6b 74 33 32 39 38 2e 74 65 73 74 20 74 6b 74 33  kt3298.test tkt3
2600: 33 33 34 2e 74 65 73 74 20 74 6b 74 33 33 34 36  334.test tkt3346
2610: 2e 74 65 73 74 0a 20 20 74 6b 74 33 33 35 37 2e  .test.  tkt3357.
2620: 74 65 73 74 20 74 6b 74 33 34 31 39 2e 74 65 73  test tkt3419.tes
2630: 74 20 74 6b 74 33 34 32 34 2e 74 65 73 74 20 74  t tkt3424.test t
2640: 6b 74 33 34 34 32 2e 74 65 73 74 20 74 6b 74 33  kt3442.test tkt3
2650: 34 35 37 2e 74 65 73 74 0a 20 20 74 6b 74 33 34  457.test.  tkt34
2660: 36 31 2e 74 65 73 74 20 74 6b 74 33 34 39 33 2e  61.test tkt3493.
2670: 74 65 73 74 20 74 6b 74 33 35 30 38 2e 74 65 73  test tkt3508.tes
2680: 74 20 74 6b 74 33 35 32 32 2e 74 65 73 74 20 74  t tkt3522.test t
2690: 6b 74 33 35 32 37 2e 74 65 73 74 0a 20 20 74 6b  kt3527.test.  tk
26a0: 74 33 35 34 31 2e 74 65 73 74 20 74 6b 74 33 35  t3541.test tkt35
26b0: 35 34 2e 74 65 73 74 20 74 6b 74 33 35 38 31 2e  54.test tkt3581.
26c0: 74 65 73 74 20 74 6b 74 33 35 78 78 2e 74 65 73  test tkt35xx.tes
26d0: 74 20 74 6b 74 33 36 33 30 2e 74 65 73 74 0a 20  t tkt3630.test. 
26e0: 20 74 6b 74 33 37 31 38 2e 74 65 73 74 20 74 6b   tkt3718.test tk
26f0: 74 33 37 33 31 2e 74 65 73 74 20 74 6b 74 33 37  t3731.test tkt37
2700: 35 37 2e 74 65 73 74 20 74 6b 74 33 37 36 31 2e  57.test tkt3761.
2710: 74 65 73 74 20 74 6b 74 33 37 36 32 2e 74 65 73  test tkt3762.tes
2720: 74 0a 20 20 74 6b 74 33 37 37 33 2e 74 65 73 74  t.  tkt3773.test
2730: 20 74 6b 74 33 37 39 31 2e 74 65 73 74 20 74 6b   tkt3791.test tk
2740: 74 33 37 39 33 2e 74 65 73 74 20 74 6b 74 33 38  t3793.test tkt38
2750: 31 30 2e 74 65 73 74 20 74 6b 74 33 38 32 34 2e  10.test tkt3824.
2760: 74 65 73 74 0a 20 20 74 6b 74 33 38 33 32 2e 74  test.  tkt3832.t
2770: 65 73 74 20 74 6b 74 33 38 33 38 2e 74 65 73 74  est tkt3838.test
2780: 20 74 6b 74 33 38 34 31 2e 74 65 73 74 20 74 6b   tkt3841.test tk
2790: 74 2d 33 38 35 61 35 62 35 36 62 39 2e 74 65 73  t-385a5b56b9.tes
27a0: 74 20 74 6b 74 33 38 37 31 2e 74 65 73 74 0a 20  t tkt3871.test. 
27b0: 20 74 6b 74 33 38 37 39 2e 74 65 73 74 20 74 6b   tkt3879.test tk
27c0: 74 2d 33 38 63 62 35 64 66 33 37 35 2e 74 65 73  t-38cb5df375.tes
27d0: 74 20 74 6b 74 33 39 31 31 2e 74 65 73 74 20 74  t tkt3911.test t
27e0: 6b 74 33 39 31 38 2e 74 65 73 74 20 74 6b 74 33  kt3918.test tkt3
27f0: 39 32 32 2e 74 65 73 74 0a 20 20 74 6b 74 33 39  922.test.  tkt39
2800: 32 39 2e 74 65 73 74 20 74 6b 74 33 39 33 35 2e  29.test tkt3935.
2810: 74 65 73 74 20 74 6b 74 33 39 39 32 2e 74 65 73  test tkt3992.tes
2820: 74 20 74 6b 74 33 39 39 37 2e 74 65 73 74 20 74  t tkt3997.test t
2830: 6b 74 2d 33 39 39 38 36 38 33 61 31 36 2e 74 65  kt-3998683a16.te
2840: 73 74 0a 20 20 74 6b 74 2d 33 61 37 37 63 39 37  st.  tkt-3a77c97
2850: 31 34 65 2e 74 65 73 74 20 74 6b 74 2d 33 66 65  14e.test tkt-3fe
2860: 38 39 37 33 35 32 65 2e 74 65 73 74 20 74 6b 74  897352e.test tkt
2870: 34 30 31 38 2e 74 65 73 74 20 74 6b 74 2d 34 61  4018.test tkt-4a
2880: 30 33 65 64 63 34 63 38 2e 74 65 73 74 0a 20 20  03edc4c8.test.  
2890: 74 6b 74 2d 34 64 64 39 35 66 36 39 34 33 2e 74  tkt-4dd95f6943.t
28a0: 65 73 74 20 74 6b 74 2d 35 34 38 34 34 65 65 61  est tkt-54844eea
28b0: 33 66 2e 74 65 73 74 20 74 6b 74 2d 35 64 38 36  3f.test tkt-5d86
28c0: 33 66 38 37 36 65 2e 74 65 73 74 0a 20 20 74 6b  3f876e.test.  tk
28d0: 74 2d 35 65 31 30 34 32 30 65 38 64 2e 74 65 73  t-5e10420e8d.tes
28e0: 74 20 74 6b 74 2d 35 65 65 32 33 37 33 31 66 2e  t tkt-5ee23731f.
28f0: 74 65 73 74 20 74 6b 74 2d 36 62 66 62 39 38 64  test tkt-6bfb98d
2900: 66 63 30 2e 74 65 73 74 0a 20 20 74 6b 74 2d 37  fc0.test.  tkt-7
2910: 35 32 65 31 36 34 36 66 63 2e 74 65 73 74 20 74  52e1646fc.test t
2920: 6b 74 2d 37 38 65 30 34 65 35 32 65 61 2e 74 65  kt-78e04e52ea.te
2930: 73 74 20 74 6b 74 2d 37 61 33 31 37 30 35 61 37  st tkt-7a31705a7
2940: 65 36 2e 74 65 73 74 0a 20 20 74 6b 74 2d 37 62  e6.test.  tkt-7b
2950: 62 66 62 37 64 34 34 32 2e 74 65 73 74 20 74 6b  bfb7d442.test tk
2960: 74 2d 38 30 62 61 32 30 31 30 37 39 2e 74 65 73  t-80ba201079.tes
2970: 74 20 74 6b 74 2d 38 30 65 30 33 31 61 30 30 66  t tkt-80e031a00f
2980: 2e 74 65 73 74 0a 20 20 74 6b 74 2d 38 34 35 34  .test.  tkt-8454
2990: 61 32 30 37 62 39 2e 74 65 73 74 20 74 6b 74 2d  a207b9.test tkt-
29a0: 39 31 65 32 65 38 62 61 36 66 2e 74 65 73 74 20  91e2e8ba6f.test 
29b0: 74 6b 74 2d 39 34 63 30 34 65 61 61 64 62 2e 74  tkt-94c04eaadb.t
29c0: 65 73 74 0a 20 20 74 6b 74 2d 39 64 36 38 63 38  est.  tkt-9d68c8
29d0: 38 33 2e 74 65 73 74 20 74 6b 74 2d 61 37 62 37  83.test tkt-a7b7
29e0: 38 30 33 65 2e 74 65 73 74 20 74 6b 74 2d 62 31  803e.test tkt-b1
29f0: 64 33 61 32 65 35 33 31 2e 74 65 73 74 0a 20 20  d3a2e531.test.  
2a00: 74 6b 74 2d 62 33 35 31 64 39 35 66 39 2e 74 65  tkt-b351d95f9.te
2a10: 73 74 20 74 6b 74 2d 62 37 32 37 38 37 62 31 2e  st tkt-b72787b1.
2a20: 74 65 73 74 20 74 6b 74 2d 62 64 34 38 34 61 30  test tkt-bd484a0
2a30: 39 30 63 2e 74 65 73 74 0a 20 20 74 6b 74 2d 62  90c.test.  tkt-b
2a40: 64 63 36 62 62 62 62 33 38 2e 74 65 73 74 20 74  dc6bbbb38.test t
2a50: 6b 74 2d 63 34 38 64 39 39 64 36 39 30 2e 74 65  kt-c48d99d690.te
2a60: 73 74 20 74 6b 74 2d 63 62 64 30 35 34 66 61 36  st tkt-cbd054fa6
2a70: 62 2e 74 65 73 74 0a 20 20 74 6b 74 2d 64 31 31  b.test.  tkt-d11
2a80: 66 30 39 64 33 36 65 2e 74 65 73 74 20 74 6b 74  f09d36e.test tkt
2a90: 2d 64 36 33 35 32 33 36 33 37 35 2e 74 65 73 74  -d635236375.test
2aa0: 20 74 6b 74 2d 64 38 32 65 33 66 33 37 32 31 2e   tkt-d82e3f3721.
2ab0: 74 65 73 74 0a 20 20 74 6b 74 2d 66 33 65 35 61  test.  tkt-f3e5a
2ac0: 62 65 64 35 35 2e 74 65 73 74 20 74 6b 74 2d 66  bed55.test tkt-f
2ad0: 37 37 37 32 35 31 64 63 37 61 2e 74 65 73 74 20  777251dc7a.test 
2ae0: 74 6b 74 2d 66 37 62 34 65 64 65 63 2e 74 65 73  tkt-f7b4edec.tes
2af0: 74 0a 20 20 74 6b 74 2d 66 39 37 33 63 37 61 63  t.  tkt-f973c7ac
2b00: 33 31 2e 74 65 73 74 20 74 6b 74 2d 66 61 37 62  31.test tkt-fa7b
2b10: 66 35 65 63 2e 74 65 73 74 20 74 6b 74 2d 66 63  f5ec.test tkt-fc
2b20: 36 32 61 66 34 35 32 33 2e 74 65 73 74 0a 20 20  62af4523.test.  
2b30: 74 6b 74 2d 66 63 37 62 64 36 33 35 38 66 2e 74  tkt-fc7bd6358f.t
2b40: 65 73 74 20 74 72 69 67 67 65 72 31 2e 74 65 73  est trigger1.tes
2b50: 74 20 74 72 69 67 67 65 72 32 2e 74 65 73 74 20  t trigger2.test 
2b60: 74 72 69 67 67 65 72 33 2e 74 65 73 74 0a 20 20  trigger3.test.  
2b70: 74 72 69 67 67 65 72 34 2e 74 65 73 74 20 74 72  trigger4.test tr
2b80: 69 67 67 65 72 35 2e 74 65 73 74 20 74 72 69 67  igger5.test trig
2b90: 67 65 72 36 2e 74 65 73 74 20 74 72 69 67 67 65  ger6.test trigge
2ba0: 72 37 2e 74 65 73 74 20 74 72 69 67 67 65 72 38  r7.test trigger8
2bb0: 2e 74 65 73 74 0a 20 20 74 72 69 67 67 65 72 39  .test.  trigger9
2bc0: 2e 74 65 73 74 20 74 72 69 67 67 65 72 41 2e 74  .test triggerA.t
2bd0: 65 73 74 20 74 72 69 67 67 65 72 42 2e 74 65 73  est triggerB.tes
2be0: 74 20 74 72 69 67 67 65 72 43 2e 74 65 73 74 20  t triggerC.test 
2bf0: 74 72 69 67 67 65 72 44 2e 74 65 73 74 0a 20 20  triggerD.test.  
2c00: 74 79 70 65 73 32 2e 74 65 73 74 20 74 79 70 65  types2.test type
2c10: 73 33 2e 74 65 73 74 20 74 79 70 65 73 2e 74 65  s3.test types.te
2c20: 73 74 20 75 6e 69 71 75 65 2e 74 65 73 74 20 75  st unique.test u
2c30: 6e 6f 72 64 65 72 65 64 2e 74 65 73 74 0a 20 20  nordered.test.  
2c40: 75 70 64 61 74 65 2e 74 65 73 74 20 76 69 65 77  update.test view
2c50: 2e 74 65 73 74 20 76 74 61 62 31 2e 74 65 73 74  .test vtab1.test
2c60: 20 76 74 61 62 32 2e 74 65 73 74 20 76 74 61 62   vtab2.test vtab
2c70: 33 2e 74 65 73 74 20 76 74 61 62 34 2e 74 65 73  3.test vtab4.tes
2c80: 74 0a 20 20 76 74 61 62 35 2e 74 65 73 74 20 76  t.  vtab5.test v
2c90: 74 61 62 36 2e 74 65 73 74 20 76 74 61 62 37 2e  tab6.test vtab7.
2ca0: 74 65 73 74 20 76 74 61 62 38 2e 74 65 73 74 20  test vtab8.test 
2cb0: 76 74 61 62 39 2e 74 65 73 74 20 76 74 61 62 5f  vtab9.test vtab_
2cc0: 61 6c 74 65 72 2e 74 65 73 74 0a 20 20 76 74 61  alter.test.  vta
2cd0: 62 41 2e 74 65 73 74 20 76 74 61 62 42 2e 74 65  bA.test vtabB.te
2ce0: 73 74 20 76 74 61 62 43 2e 74 65 73 74 20 76 74  st vtabC.test vt
2cf0: 61 62 44 2e 74 65 73 74 20 76 74 61 62 45 2e 74  abD.test vtabE.t
2d00: 65 73 74 0a 20 20 76 74 61 62 46 2e 74 65 73 74  est.  vtabF.test
2d10: 20 77 68 65 72 65 32 2e 74 65 73 74 20 77 68 65   where2.test whe
2d20: 72 65 33 2e 74 65 73 74 20 77 68 65 72 65 34 2e  re3.test where4.
2d30: 74 65 73 74 20 77 68 65 72 65 35 2e 74 65 73 74  test where5.test
2d40: 20 77 68 65 72 65 36 2e 74 65 73 74 0a 20 20 77   where6.test.  w
2d50: 68 65 72 65 37 2e 74 65 73 74 20 77 68 65 72 65  here7.test where
2d60: 38 6d 2e 74 65 73 74 20 77 68 65 72 65 38 2e 74  8m.test where8.t
2d70: 65 73 74 20 77 68 65 72 65 39 2e 74 65 73 74 20  est where9.test 
2d80: 77 68 65 72 65 41 2e 74 65 73 74 20 77 68 65 72  whereA.test wher
2d90: 65 42 2e 74 65 73 74 0a 20 20 77 68 65 72 65 43  eB.test.  whereC
2da0: 2e 74 65 73 74 20 77 68 65 72 65 44 2e 74 65 73  .test whereD.tes
2db0: 74 20 77 68 65 72 65 45 2e 74 65 73 74 20 77 68  t whereE.test wh
2dc0: 65 72 65 46 2e 74 65 73 74 20 77 68 65 72 65 6c  ereF.test wherel
2dd0: 69 6d 69 74 2e 74 65 73 74 0a 20 20 77 68 65 72  imit.test.  wher
2de0: 65 2e 74 65 73 74 0a 7d 0a 0a 74 65 73 74 5f 73  e.test.}..test_s
2df0: 75 69 74 65 20 22 76 66 73 6c 6f 67 22 20 2d 70  uite "vfslog" -p
2e00: 72 65 66 69 78 20 22 22 20 2d 64 65 73 63 72 69  refix "" -descri
2e10: 70 74 69 6f 6e 20 7b 0a 20 20 22 56 66 73 6c 6f  ption {.  "Vfslo
2e20: 67 22 20 71 75 69 63 6b 20 74 65 73 74 20 73 75  g" quick test su
2e30: 69 74 65 2e 20 4c 69 6b 65 20 22 76 65 72 79 71  ite. Like "veryq
2e40: 75 69 63 6b 22 20 65 78 63 65 70 74 20 64 6f 65  uick" except doe
2e50: 73 20 6e 6f 74 20 6f 6d 69 74 73 0a 20 20 61 20  s not omits.  a 
2e60: 66 65 77 20 74 65 73 74 73 20 74 68 61 74 20 64  few tests that d
2e70: 6f 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20  o not work with 
2e80: 61 20 76 65 72 73 69 6f 6e 20 31 20 56 46 53 2e  a version 1 VFS.
2e90: 20 41 6e 64 20 74 68 65 20 71 75 6f 74 61 2a 20   And the quota* 
2ea0: 74 65 73 74 73 2c 0a 20 20 77 68 69 63 68 20 64  tests,.  which d
2eb0: 6f 20 6e 6f 74 20 77 6f 72 6b 20 77 69 74 68 20  o not work with 
2ec0: 61 20 56 46 53 20 74 68 61 74 20 75 73 65 73 20  a VFS that uses 
2ed0: 74 68 65 20 70 56 66 73 20 61 72 67 75 6d 65 6e  the pVfs argumen
2ee0: 74 20 70 61 73 73 65 64 20 74 6f 0a 20 20 73 71  t passed to.  sq
2ef0: 6c 69 74 65 33 5f 76 66 73 20 6d 65 74 68 6f 64  lite3_vfs method
2f00: 73 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a 20 20  s..} -files [.  
2f10: 74 65 73 74 5f 73 65 74 20 24 61 6c 6c 71 75 69  test_set $allqui
2f20: 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75 64 65  cktests -exclude
2f30: 20 2a 6d 61 6c 6c 6f 63 2a 20 2a 69 6f 65 72 72   *malloc* *ioerr
2f40: 2a 20 2a 66 61 75 6c 74 2a 20 6f 73 65 72 72 6f  * *fault* oserro
2f50: 72 2e 74 65 73 74 20 5c 0a 20 20 70 61 67 65 72  r.test \.  pager
2f60: 31 2e 74 65 73 74 20 73 79 73 63 61 6c 6c 2e 74  1.test syscall.t
2f70: 65 73 74 20 73 79 73 66 61 75 6c 74 2e 74 65 73  est sysfault.tes
2f80: 74 20 74 6b 74 33 34 35 37 2e 74 65 73 74 20 71  t tkt3457.test q
2f90: 75 6f 74 61 2a 20 73 75 70 65 72 6c 6f 63 6b 2a  uota* superlock*
2fa0: 20 5c 0a 20 20 77 61 6c 2a 20 6d 6d 61 70 2a 0a   \.  wal* mmap*.
2fb0: 5d 0a 0a 6c 61 70 70 65 6e 64 20 3a 3a 74 65 73  ]..lappend ::tes
2fc0: 74 73 75 69 74 65 6c 69 73 74 20 78 78 78 0a 23  tsuitelist xxx.#
2fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 44 65 66 69  ---------.# Defi
3020: 6e 65 20 74 68 65 20 63 6f 76 65 72 61 67 65 20  ne the coverage 
3030: 72 65 6c 61 74 65 64 20 74 65 73 74 20 73 75 69  related test sui
3040: 74 65 73 3a 0a 23 0a 23 20 20 20 63 6f 76 65 72  tes:.#.#   cover
3050: 61 67 65 2d 77 61 6c 0a 23 0a 74 65 73 74 5f 73  age-wal.#.test_s
3060: 75 69 74 65 20 22 63 6f 76 65 72 61 67 65 2d 77  uite "coverage-w
3070: 61 6c 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e  al" -description
3080: 20 7b 0a 20 20 43 6f 76 65 72 61 67 65 20 74 65   {.  Coverage te
3090: 73 74 73 20 66 6f 72 20 66 69 6c 65 20 77 61 6c  sts for file wal
30a0: 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  .c..} -files {. 
30b0: 20 77 61 6c 2e 74 65 73 74 20 20 20 20 20 20 20   wal.test       
30c0: 77 61 6c 32 2e 74 65 73 74 20 20 20 20 20 77 61  wal2.test     wa
30d0: 6c 33 2e 74 65 73 74 20 20 20 20 20 20 20 77 61  l3.test       wa
30e0: 6c 6d 6f 64 65 2e 74 65 73 74 20 20 20 20 0a 20  lmode.test    . 
30f0: 20 77 61 6c 62 61 6b 2e 74 65 73 74 20 20 20 20   walbak.test    
3100: 77 61 6c 68 6f 6f 6b 2e 74 65 73 74 20 20 77 61  walhook.test  wa
3110: 6c 63 72 61 73 68 32 2e 74 65 73 74 20 20 77 61  lcrash2.test  wa
3120: 6c 63 6b 73 75 6d 2e 74 65 73 74 0a 20 20 77 61  lcksum.test.  wa
3130: 6c 66 61 75 6c 74 2e 74 65 73 74 20 20 77 61 6c  lfault.test  wal
3140: 62 69 67 2e 74 65 73 74 20 20 20 77 61 6c 6e 6f  big.test   walno
3150: 73 68 6d 2e 74 65 73 74 0a 20 20 77 61 6c 35 2e  shm.test.  wal5.
3160: 74 65 73 74 0a 7d 20 0a 0a 74 65 73 74 5f 73 75  test.} ..test_su
3170: 69 74 65 20 22 63 6f 76 65 72 61 67 65 2d 70 61  ite "coverage-pa
3180: 67 65 72 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ger" -descriptio
3190: 6e 20 7b 0a 20 20 43 6f 76 65 72 61 67 65 20 74  n {.  Coverage t
31a0: 65 73 74 73 20 66 6f 72 20 66 69 6c 65 20 70 61  ests for file pa
31b0: 67 65 72 2e 63 2e 0a 7d 20 2d 66 69 6c 65 73 20  ger.c..} -files 
31c0: 7b 0a 20 20 70 61 67 65 72 31 2e 74 65 73 74 20  {.  pager1.test 
31d0: 20 20 20 70 61 67 65 72 32 2e 74 65 73 74 20 20     pager2.test  
31e0: 70 61 67 65 72 66 61 75 6c 74 2e 74 65 73 74 20  pagerfault.test 
31f0: 20 70 61 67 65 72 66 61 75 6c 74 32 2e 74 65 73   pagerfault2.tes
3200: 74 0a 20 20 77 61 6c 66 61 75 6c 74 2e 74 65 73  t.  walfault.tes
3210: 74 20 20 77 61 6c 62 61 6b 2e 74 65 73 74 20 20  t  walbak.test  
3220: 6a 6f 75 72 6e 61 6c 32 2e 74 65 73 74 20 20 20  journal2.test   
3230: 20 74 6b 74 2d 39 64 36 38 63 38 38 33 2e 74 65   tkt-9d68c883.te
3240: 73 74 0a 7d 20 0a 0a 74 65 73 74 5f 73 75 69 74  st.} ..test_suit
3250: 65 20 22 63 6f 76 65 72 61 67 65 2d 61 6e 61 6c  e "coverage-anal
3260: 79 7a 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f  yze" -descriptio
3270: 6e 20 7b 0a 20 20 43 6f 76 65 72 61 67 65 20 74  n {.  Coverage t
3280: 65 73 74 73 20 66 6f 72 20 66 69 6c 65 20 61 6e  ests for file an
3290: 61 6c 79 7a 65 2e 63 2e 0a 7d 20 2d 66 69 6c 65  alyze.c..} -file
32a0: 73 20 7b 0a 20 20 61 6e 61 6c 79 7a 65 33 2e 74  s {.  analyze3.t
32b0: 65 73 74 20 61 6e 61 6c 79 7a 65 34 2e 74 65 73  est analyze4.tes
32c0: 74 20 61 6e 61 6c 79 7a 65 35 2e 74 65 73 74 20  t analyze5.test 
32d0: 61 6e 61 6c 79 7a 65 36 2e 74 65 73 74 0a 20 20  analyze6.test.  
32e0: 61 6e 61 6c 79 7a 65 37 2e 74 65 73 74 20 61 6e  analyze7.test an
32f0: 61 6c 79 7a 65 38 2e 74 65 73 74 20 61 6e 61 6c  alyze8.test anal
3300: 79 7a 65 39 2e 74 65 73 74 20 61 6e 61 6c 79 7a  yze9.test analyz
3310: 65 41 2e 74 65 73 74 0a 20 20 61 6e 61 6c 79 7a  eA.test.  analyz
3320: 65 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65 42 2e  e.test analyzeB.
3330: 74 65 73 74 20 6d 61 6c 6c 6f 63 41 2e 74 65 73  test mallocA.tes
3340: 74 0a 7d 20 0a 0a 0a 6c 61 70 70 65 6e 64 20 3a  t.} ...lappend :
3350: 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74 20 78  :testsuitelist x
3360: 78 78 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  xx.#------------
3370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
33a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20  -------------.# 
33b0: 44 65 66 69 6e 65 20 74 68 65 20 70 65 72 6d 75  Define the permu
33c0: 74 61 74 69 6f 6e 20 74 65 73 74 20 73 75 69 74  tation test suit
33d0: 65 73 3a 0a 23 0a 0a 23 20 52 75 6e 20 73 6f 6d  es:.#..# Run som
33e0: 65 20 74 65 73 74 73 20 75 73 69 6e 67 20 70 72  e tests using pr
33f0: 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67 65  e-allocated page
3400: 20 61 6e 64 20 73 63 72 61 74 63 68 20 62 6c 6f   and scratch blo
3410: 63 6b 73 2e 0a 23 0a 23 20 6d 6d 61 70 31 2e 74  cks..#.# mmap1.t
3420: 65 73 74 20 69 73 20 65 78 63 6c 75 64 65 64 20  est is excluded 
3430: 62 65 63 61 75 73 65 20 61 20 67 6f 6f 64 20 6e  because a good n
3440: 75 6d 62 65 72 20 6f 66 20 69 74 73 20 74 65 73  umber of its tes
3450: 74 73 20 64 65 70 65 6e 64 20 6f 6e 20 0a 23 20  ts depend on .# 
3460: 74 68 65 20 70 61 67 65 2d 63 61 63 68 65 20 62  the page-cache b
3470: 65 69 6e 67 20 6c 61 72 67 65 72 20 74 68 61 6e  eing larger than
3480: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 42   the database. B
3490: 75 74 20 74 68 69 73 20 70 65 72 6d 75 74 61 74  ut this permutat
34a0: 69 6f 6e 0a 23 20 63 61 75 73 65 73 20 74 68 65  ion.# causes the
34b0: 20 65 66 66 65 63 74 69 76 65 20 6c 69 6d 69 74   effective limit
34c0: 20 6f 6e 20 74 68 65 20 70 61 67 65 2d 63 61 63   on the page-cac
34d0: 68 65 20 74 6f 20 62 65 20 6a 75 73 74 20 32 34  he to be just 24
34e0: 20 70 61 67 65 73 2e 0a 23 0a 74 65 73 74 5f 73   pages..#.test_s
34f0: 75 69 74 65 20 22 6d 65 6d 73 75 62 73 79 73 31  uite "memsubsys1
3500: 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b  " -description {
3510: 0a 20 20 54 65 73 74 73 20 75 73 69 6e 67 20 70  .  Tests using p
3520: 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67  re-allocated pag
3530: 65 20 61 6e 64 20 73 63 72 61 74 63 68 20 62 6c  e and scratch bl
3540: 6f 63 6b 73 0a 7d 20 2d 66 69 6c 65 73 20 5b 0a  ocks.} -files [.
3550: 20 20 74 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c    test_set $::al
3560: 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63  lquicktests -exc
3570: 6c 75 64 65 20 69 6f 65 72 72 35 2e 74 65 73 74  lude ioerr5.test
3580: 20 6d 61 6c 6c 6f 63 35 2e 74 65 73 74 20 6d 6d   malloc5.test mm
3590: 61 70 31 2e 74 65 73 74 0a 5d 20 2d 69 6e 69 74  ap1.test.] -init
35a0: 69 61 6c 69 7a 65 20 7b 0a 20 20 63 61 74 63 68  ialize {.  catch
35b0: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71   {db close}.  sq
35c0: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
35d0: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
35e0: 70 61 67 65 63 61 63 68 65 20 34 30 39 36 20 32  pagecache 4096 2
35f0: 34 0a 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  4.  sqlite3_conf
3600: 69 67 5f 73 63 72 61 74 63 68 20 32 35 30 30 30  ig_scratch 25000
3610: 20 31 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69   1.  sqlite3_ini
3620: 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e  tialize.  autoin
3630: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
3640: 69 6f 6e 73 0a 7d 20 2d 73 68 75 74 64 6f 77 6e  ions.} -shutdown
3650: 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   {.  catch {db c
3660: 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f  lose}.  sqlite3_
3670: 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74  shutdown.  sqlit
3680: 65 33 5f 63 6f 6e 66 69 67 5f 70 61 67 65 63 61  e3_config_pageca
3690: 63 68 65 20 30 20 30 0a 20 20 73 71 6c 69 74 65  che 0 0.  sqlite
36a0: 33 5f 63 6f 6e 66 69 67 5f 73 63 72 61 74 63 68  3_config_scratch
36b0: 20 30 20 30 0a 20 20 73 71 6c 69 74 65 33 5f 69   0 0.  sqlite3_i
36c0: 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f  nitialize.  auto
36d0: 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e  install_test_fun
36e0: 63 74 69 6f 6e 73 0a 7d 0a 0a 23 20 52 75 6e 20  ctions.}..# Run 
36f0: 73 6f 6d 65 20 74 65 73 74 73 20 75 73 69 6e 67  some tests using
3700: 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70   pre-allocated p
3710: 61 67 65 20 61 6e 64 20 73 63 72 61 74 63 68 20  age and scratch 
3720: 62 6c 6f 63 6b 73 2e 20 54 68 69 73 20 74 69 6d  blocks. This tim
3730: 65 0a 23 20 74 68 65 20 61 6c 6c 6f 63 61 74 69  e.# the allocati
3740: 6f 6e 73 20 61 72 65 20 74 6f 6f 20 73 6d 61 6c  ons are too smal
3750: 6c 20 74 6f 20 75 73 65 20 69 6e 20 6d 6f 73 74  l to use in most
3760: 20 63 61 73 65 73 2e 0a 23 0a 23 20 42 6f 74 68   cases..#.# Both
3770: 20 69 6f 65 72 72 35 2e 74 65 73 74 20 61 6e 64   ioerr5.test and
3780: 20 6d 61 6c 6c 6f 63 35 2e 74 65 73 74 20 61 72   malloc5.test ar
3790: 65 20 65 78 63 6c 75 64 65 64 20 62 65 63 61 75  e excluded becau
37a0: 73 65 20 74 68 65 79 20 74 65 73 74 20 74 68 65  se they test the
37b0: 0a 23 20 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f  .# sqlite3_soft_
37c0: 68 65 61 70 5f 6c 69 6d 69 74 28 29 20 61 6e 64  heap_limit() and
37d0: 20 73 71 6c 69 74 65 33 5f 72 65 6c 65 61 73 65   sqlite3_release
37e0: 5f 6d 65 6d 6f 72 79 28 29 20 66 75 6e 63 74 69  _memory() functi
37f0: 6f 6e 61 6c 69 74 79 2e 0a 23 20 54 68 69 73 20  onality..# This 
3800: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 69 73  functionality is
3810: 20 64 69 73 61 62 6c 65 64 20 69 66 20 61 20 70   disabled if a p
3820: 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20 70 61 67  re-allocated pag
3830: 65 20 62 6c 6f 63 6b 20 69 73 20 70 72 6f 76 69  e block is provi
3840: 64 65 64 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74  ded..#.test_suit
3850: 65 20 22 6d 65 6d 73 75 62 73 79 73 32 22 20 2d  e "memsubsys2" -
3860: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
3870: 54 65 73 74 73 20 75 73 69 6e 67 20 73 6d 61 6c  Tests using smal
3880: 6c 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 64 20  l pre-allocated 
3890: 70 61 67 65 20 61 6e 64 20 73 63 72 61 74 63 68  page and scratch
38a0: 20 62 6c 6f 63 6b 73 0a 7d 20 2d 66 69 6c 65 73   blocks.} -files
38b0: 20 5b 0a 20 20 74 65 73 74 5f 73 65 74 20 24 3a   [.  test_set $:
38c0: 3a 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d  :allquicktests -
38d0: 65 78 63 6c 75 64 65 20 69 6f 65 72 72 35 2e 74  exclude ioerr5.t
38e0: 65 73 74 20 6d 61 6c 6c 6f 63 35 2e 74 65 73 74  est malloc5.test
38f0: 0a 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  .] -initialize {
3900: 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f  .  catch {db clo
3910: 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68  se}.  sqlite3_sh
3920: 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69 74 65 33  utdown.  sqlite3
3930: 5f 63 6f 6e 66 69 67 5f 70 61 67 65 63 61 63 68  _config_pagecach
3940: 65 20 35 31 32 20 35 0a 20 20 73 71 6c 69 74 65  e 512 5.  sqlite
3950: 33 5f 63 6f 6e 66 69 67 5f 73 63 72 61 74 63 68  3_config_scratch
3960: 20 31 30 30 30 20 31 0a 20 20 73 71 6c 69 74 65   1000 1.  sqlite
3970: 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61  3_initialize.  a
3980: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
3990: 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73 68 75  functions.} -shu
39a0: 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68 20  tdown {.  catch 
39b0: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71 6c  {db close}.  sql
39c0: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
39d0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 70  sqlite3_config_p
39e0: 61 67 65 63 61 63 68 65 20 30 20 30 0a 20 20 73  agecache 0 0.  s
39f0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 73 63  qlite3_config_sc
3a00: 72 61 74 63 68 20 30 20 30 0a 20 20 73 71 6c 69  ratch 0 0.  sqli
3a10: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
3a20: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
3a30: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a 23  t_functions.}..#
3a40: 20 52 75 6e 20 61 6c 6c 20 74 65 73 74 73 20 77   Run all tests w
3a50: 69 74 68 20 74 68 65 20 6c 6f 6f 6b 61 73 69 64  ith the lookasid
3a60: 65 20 61 6c 6c 6f 63 61 74 6f 72 20 64 69 73 61  e allocator disa
3a70: 62 6c 65 64 2e 0a 23 0a 74 65 73 74 5f 73 75 69  bled..#.test_sui
3a80: 74 65 20 22 6e 6f 6c 6f 6f 6b 61 73 69 64 65 22  te "nolookaside"
3a90: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
3aa0: 20 20 4f 4f 4d 20 74 65 73 74 73 20 77 69 74 68    OOM tests with
3ab0: 20 6c 6f 6f 6b 61 73 69 64 65 20 64 69 73 61 62   lookaside disab
3ac0: 6c 65 64 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a  led.} -initializ
3ad0: 65 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20  e {.  catch {db 
3ae0: 63 6c 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33  close}.  sqlite3
3af0: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 73 71 6c 69  _shutdown.  sqli
3b00: 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61  te3_config_looka
3b10: 73 69 64 65 20 30 20 30 0a 20 20 73 71 6c 69 74  side 0 0.  sqlit
3b20: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20  e3_initialize.  
3b30: 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74  autoinstall_test
3b40: 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 73 68  _functions.} -sh
3b50: 75 74 64 6f 77 6e 20 7b 0a 20 20 63 61 74 63 68  utdown {.  catch
3b60: 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 73 71   {db close}.  sq
3b70: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
3b80: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f   sqlite3_config_
3b90: 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30  lookaside 100 50
3ba0: 30 0a 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  0.  sqlite3_init
3bb0: 69 61 6c 69 7a 65 0a 20 20 61 75 74 6f 69 6e 73  ialize.  autoins
3bc0: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
3bd0: 6f 6e 73 0a 7d 20 2d 66 69 6c 65 73 20 24 3a 3a  ons.} -files $::
3be0: 61 6c 6c 71 75 69 63 6b 74 65 73 74 73 0a 0a 23  allquicktests..#
3bf0: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
3c00: 69 6e 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  in SQLITE_CONFIG
3c10: 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20 6d 6f  _SINGLETHREAD mo
3c20: 64 65 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65  de..#.test_suite
3c30: 20 22 73 69 6e 67 6c 65 74 68 72 65 61 64 22 20   "singlethread" 
3c40: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
3c50: 20 54 65 73 74 73 20 72 75 6e 20 69 6e 20 53 51   Tests run in SQ
3c60: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47  LITE_CONFIG_SING
3c70: 4c 45 54 48 52 45 41 44 20 6d 6f 64 65 0a 7d 20  LETHREAD mode.} 
3c80: 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20  -initialize {.  
3c90: 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d  catch {db close}
3ca0: 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  .  sqlite3_shutd
3cb0: 6f 77 6e 0a 20 20 63 61 74 63 68 20 7b 73 71 6c  own.  catch {sql
3cc0: 69 74 65 33 5f 63 6f 6e 66 69 67 20 73 69 6e 67  ite3_config sing
3cd0: 6c 65 74 68 72 65 61 64 7d 0a 20 20 73 71 6c 69  lethread}.  sqli
3ce0: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
3cf0: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
3d00: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 20 2d 66  t_functions.} -f
3d10: 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65 2e  iles {.  delete.
3d20: 74 65 73 74 20 20 20 64 65 6c 65 74 65 32 2e 74  test   delete2.t
3d30: 65 73 74 20 20 69 6e 73 65 72 74 2e 74 65 73 74  est  insert.test
3d40: 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20    rollback.test 
3d50: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20   select1.test.  
3d60: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 20 74 72  select2.test  tr
3d70: 61 6e 73 2e 74 65 73 74 20 20 20 20 75 70 64 61  ans.test    upda
3d80: 74 65 2e 74 65 73 74 20 20 76 61 63 75 75 6d 2e  te.test  vacuum.
3d90: 74 65 73 74 20 20 20 20 74 79 70 65 73 2e 74 65  test    types.te
3da0: 73 74 0a 20 20 74 79 70 65 73 32 2e 74 65 73 74  st.  types2.test
3db0: 20 20 20 74 79 70 65 73 33 2e 74 65 73 74 0a 7d     types3.test.}
3dc0: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 63   -shutdown {.  c
3dd0: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
3de0: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
3df0: 77 6e 0a 20 20 63 61 74 63 68 20 7b 73 71 6c 69  wn.  catch {sqli
3e00: 74 65 33 5f 63 6f 6e 66 69 67 20 73 65 72 69 61  te3_config seria
3e10: 6c 69 7a 65 64 7d 0a 20 20 73 71 6c 69 74 65 33  lized}.  sqlite3
3e20: 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 61 75  _initialize.  au
3e30: 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66  toinstall_test_f
3e40: 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a 74 65 73 74  unctions.}..test
3e50: 5f 73 75 69 74 65 20 22 6e 6f 6d 75 74 65 78 22  _suite "nomutex"
3e60: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
3e70: 20 20 54 65 73 74 73 20 72 75 6e 20 77 69 74 68    Tests run with
3e80: 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e   the SQLITE_OPEN
3e90: 5f 4d 55 4c 54 49 54 48 52 45 41 44 45 44 20 66  _MULTITHREADED f
3ea0: 6c 61 67 20 70 61 73 73 65 64 20 74 6f 20 73 71  lag passed to sq
3eb0: 6c 69 74 65 33 5f 6f 70 65 6e 28 29 2e 0a 7d 20  lite3_open()..} 
3ec0: 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a 20 20  -initialize {.  
3ed0: 72 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 20 73  rename sqlite3 s
3ee0: 71 6c 69 74 65 33 5f 6e 6f 6d 75 74 65 78 0a 20  qlite3_nomutex. 
3ef0: 20 70 72 6f 63 20 73 71 6c 69 74 65 33 20 7b 61   proc sqlite3 {a
3f00: 72 67 73 7d 20 7b 0a 20 20 20 20 69 66 20 7b 5b  rgs} {.    if {[
3f10: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 6c 69  string range [li
3f20: 6e 64 65 78 20 24 61 72 67 73 20 30 5d 20 30 20  ndex $args 0] 0 
3f30: 30 5d 20 6e 65 20 22 2d 22 7d 20 7b 0a 20 20 20  0] ne "-"} {.   
3f40: 20 20 20 6c 61 70 70 65 6e 64 20 61 72 67 73 20     lappend args 
3f50: 2d 66 75 6c 6c 6d 75 74 65 78 20 30 20 2d 6e 6f  -fullmutex 0 -no
3f60: 6d 75 74 65 78 20 31 0a 20 20 20 20 7d 0a 20 20  mutex 1.    }.  
3f70: 20 20 75 70 6c 65 76 65 6c 20 5b 63 6f 6e 63 61    uplevel [conca
3f80: 74 20 73 71 6c 69 74 65 33 5f 6e 6f 6d 75 74 65  t sqlite3_nomute
3f90: 78 20 24 61 72 67 73 5d 0a 20 20 7d 0a 7d 20 2d  x $args].  }.} -
3fa0: 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65  files {.  delete
3fb0: 2e 74 65 73 74 20 20 20 64 65 6c 65 74 65 32 2e  .test   delete2.
3fc0: 74 65 73 74 20 20 69 6e 73 65 72 74 2e 74 65 73  test  insert.tes
3fd0: 74 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74  t  rollback.test
3fe0: 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20    select1.test. 
3ff0: 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20 20 74   select2.test  t
4000: 72 61 6e 73 2e 74 65 73 74 20 20 20 20 75 70 64  rans.test    upd
4010: 61 74 65 2e 74 65 73 74 20 20 76 61 63 75 75 6d  ate.test  vacuum
4020: 2e 74 65 73 74 20 20 20 20 74 79 70 65 73 2e 74  .test    types.t
4030: 65 73 74 0a 20 20 74 79 70 65 73 32 2e 74 65 73  est.  types2.tes
4040: 74 20 20 20 74 79 70 65 73 33 2e 74 65 73 74 0a  t   types3.test.
4050: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20  } -shutdown {.  
4060: 72 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 20 7b  rename sqlite3 {
4070: 7d 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74  }.  rename sqlit
4080: 65 33 5f 6e 6f 6d 75 74 65 78 20 73 71 6c 69 74  e3_nomutex sqlit
4090: 65 33 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65  e3.}..# Run some
40a0: 20 74 65 73 74 73 20 69 6e 20 53 51 4c 49 54 45   tests in SQLITE
40b0: 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52  _CONFIG_MULTITHR
40c0: 45 41 44 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74  EAD mode..#.test
40d0: 5f 73 75 69 74 65 20 22 6d 75 6c 74 69 74 68 72  _suite "multithr
40e0: 65 61 64 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ead" -descriptio
40f0: 6e 20 7b 0a 20 20 54 65 73 74 73 20 72 75 6e 20  n {.  Tests run 
4100: 69 6e 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  in SQLITE_CONFIG
4110: 5f 4d 55 4c 54 49 54 48 52 45 41 44 20 6d 6f 64  _MULTITHREAD mod
4120: 65 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20  e.} -initialize 
4130: 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c  {.  catch {db cl
4140: 6f 73 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73  ose}.  sqlite3_s
4150: 68 75 74 64 6f 77 6e 0a 20 20 63 61 74 63 68 20  hutdown.  catch 
4160: 7b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 20  {sqlite3_config 
4170: 6d 75 6c 74 69 74 68 72 65 61 64 7d 0a 20 20 73  multithread}.  s
4180: 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
4190: 65 0a 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f  e.  autoinstall_
41a0: 74 65 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d  test_functions.}
41b0: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65   -files {.  dele
41c0: 74 65 2e 74 65 73 74 20 20 20 64 65 6c 65 74 65  te.test   delete
41d0: 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 2e 74  2.test  insert.t
41e0: 65 73 74 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65  est  rollback.te
41f0: 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74  st  select1.test
4200: 0a 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74 20  .  select2.test 
4210: 20 74 72 61 6e 73 2e 74 65 73 74 20 20 20 20 75   trans.test    u
4220: 70 64 61 74 65 2e 74 65 73 74 20 20 76 61 63 75  pdate.test  vacu
4230: 75 6d 2e 74 65 73 74 20 20 20 20 74 79 70 65 73  um.test    types
4240: 2e 74 65 73 74 0a 20 20 74 79 70 65 73 32 2e 74  .test.  types2.t
4250: 65 73 74 20 20 20 74 79 70 65 73 33 2e 74 65 73  est   types3.tes
4260: 74 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a  t.} -shutdown {.
4270: 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c 6f 73    catch {db clos
4280: 65 7d 0a 20 20 73 71 6c 69 74 65 33 5f 73 68 75  e}.  sqlite3_shu
4290: 74 64 6f 77 6e 0a 20 20 63 61 74 63 68 20 7b 73  tdown.  catch {s
42a0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 20 73 65  qlite3_config se
42b0: 72 69 61 6c 69 7a 65 64 7d 0a 20 20 73 71 6c 69  rialized}.  sqli
42c0: 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20  te3_initialize. 
42d0: 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73   autoinstall_tes
42e0: 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 7d 0a 0a 23  t_functions.}..#
42f0: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
4300: 69 6e 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46  in SQLITE_OPEN_F
4310: 55 4c 4c 4d 55 54 45 58 20 6d 6f 64 65 2e 0a 23  ULLMUTEX mode..#
4320: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 66 75 6c  .test_suite "ful
4330: 6c 6d 75 74 65 78 22 20 2d 64 65 73 63 72 69 70  lmutex" -descrip
4340: 74 69 6f 6e 20 7b 0a 20 20 54 65 73 74 73 20 72  tion {.  Tests r
4350: 75 6e 20 69 6e 20 53 51 4c 49 54 45 5f 4f 50 45  un in SQLITE_OPE
4360: 4e 5f 46 55 4c 4c 4d 55 54 45 58 20 6d 6f 64 65  N_FULLMUTEX mode
4370: 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  .} -initialize {
4380: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
4390: 33 20 73 71 6c 69 74 65 33 5f 66 75 6c 6c 6d 75  3 sqlite3_fullmu
43a0: 74 65 78 0a 20 20 70 72 6f 63 20 73 71 6c 69 74  tex.  proc sqlit
43b0: 65 33 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20  e3 {args} {.    
43c0: 69 66 20 7b 5b 73 74 72 69 6e 67 20 72 61 6e 67  if {[string rang
43d0: 65 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20  e [lindex $args 
43e0: 30 5d 20 30 20 30 5d 20 6e 65 20 22 2d 22 7d 20  0] 0 0] ne "-"} 
43f0: 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20  {.      lappend 
4400: 61 72 67 73 20 2d 6e 6f 6d 75 74 65 78 20 30 20  args -nomutex 0 
4410: 2d 66 75 6c 6c 6d 75 74 65 78 20 31 0a 20 20 20  -fullmutex 1.   
4420: 20 7d 0a 20 20 20 20 75 70 6c 65 76 65 6c 20 5b   }.    uplevel [
4430: 63 6f 6e 63 61 74 20 73 71 6c 69 74 65 33 5f 66  concat sqlite3_f
4440: 75 6c 6c 6d 75 74 65 78 20 24 61 72 67 73 5d 0a  ullmutex $args].
4450: 20 20 7d 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20    }.} -files {. 
4460: 20 64 65 6c 65 74 65 2e 74 65 73 74 20 20 20 64   delete.test   d
4470: 65 6c 65 74 65 32 2e 74 65 73 74 20 20 69 6e 73  elete2.test  ins
4480: 65 72 74 2e 74 65 73 74 20 20 72 6f 6c 6c 62 61  ert.test  rollba
4490: 63 6b 2e 74 65 73 74 20 20 73 65 6c 65 63 74 31  ck.test  select1
44a0: 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e  .test.  select2.
44b0: 74 65 73 74 20 20 74 72 61 6e 73 2e 74 65 73 74  test  trans.test
44c0: 20 20 20 20 75 70 64 61 74 65 2e 74 65 73 74 20      update.test 
44d0: 20 76 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20   vacuum.test    
44e0: 74 79 70 65 73 2e 74 65 73 74 0a 20 20 74 79 70  types.test.  typ
44f0: 65 73 32 2e 74 65 73 74 20 20 20 74 79 70 65 73  es2.test   types
4500: 33 2e 74 65 73 74 0a 7d 20 2d 73 68 75 74 64 6f  3.test.} -shutdo
4510: 77 6e 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71  wn {.  rename sq
4520: 6c 69 74 65 33 20 7b 7d 0a 20 20 72 65 6e 61 6d  lite3 {}.  renam
4530: 65 20 73 71 6c 69 74 65 33 5f 66 75 6c 6c 6d 75  e sqlite3_fullmu
4540: 74 65 78 20 73 71 6c 69 74 65 33 0a 7d 0a 0a 23  tex sqlite3.}..#
4550: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
4560: 75 73 69 6e 67 20 74 68 65 20 22 6f 6e 65 66 69  using the "onefi
4570: 6c 65 22 20 64 65 6d 6f 2e 0a 23 0a 74 65 73 74  le" demo..#.test
4580: 5f 73 75 69 74 65 20 22 6f 6e 65 66 69 6c 65 22  _suite "onefile"
4590: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
45a0: 20 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73    Run some tests
45b0: 20 75 73 69 6e 67 20 74 68 65 20 22 74 65 73 74   using the "test
45c0: 5f 6f 6e 65 66 69 6c 65 2e 63 22 20 64 65 6d 6f  _onefile.c" demo
45d0: 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b  .} -initialize {
45e0: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
45f0: 33 20 73 71 6c 69 74 65 33 5f 6f 6e 65 66 69 6c  3 sqlite3_onefil
4600: 65 0a 20 20 70 72 6f 63 20 73 71 6c 69 74 65 33  e.  proc sqlite3
4610: 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20 20 69 66   {args} {.    if
4620: 20 7b 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20   {[string range 
4630: 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d  [lindex $args 0]
4640: 20 30 20 30 5d 20 6e 65 20 22 2d 22 7d 20 7b 0a   0 0] ne "-"} {.
4650: 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 61 72        lappend ar
4660: 67 73 20 2d 76 66 73 20 66 73 0a 20 20 20 20 7d  gs -vfs fs.    }
4670: 0a 20 20 20 20 75 70 6c 65 76 65 6c 20 5b 63 6f  .    uplevel [co
4680: 6e 63 61 74 20 73 71 6c 69 74 65 33 5f 6f 6e 65  ncat sqlite3_one
4690: 66 69 6c 65 20 24 61 72 67 73 5d 0a 20 20 7d 0a  file $args].  }.
46a0: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 63 6f 6e  } -files {.  con
46b0: 66 6c 69 63 74 2e 74 65 73 74 20 20 69 6e 73 65  flict.test  inse
46c0: 72 74 2e 74 65 73 74 20 20 20 69 6e 73 65 72 74  rt.test   insert
46d0: 32 2e 74 65 73 74 20 20 69 6e 73 65 72 74 33 2e  2.test  insert3.
46e0: 74 65 73 74 0a 20 20 72 6f 6c 6c 62 61 63 6b 2e  test.  rollback.
46f0: 74 65 73 74 20 20 73 65 6c 65 63 74 31 2e 74 65  test  select1.te
4700: 73 74 20 20 73 65 6c 65 63 74 32 2e 74 65 73 74  st  select2.test
4710: 20 20 73 65 6c 65 63 74 33 2e 74 65 73 74 0a 7d    select3.test.}
4720: 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 72   -shutdown {.  r
4730: 65 6e 61 6d 65 20 73 71 6c 69 74 65 33 20 7b 7d  ename sqlite3 {}
4740: 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69 74 65  .  rename sqlite
4750: 33 5f 6f 6e 65 66 69 6c 65 20 73 71 6c 69 74 65  3_onefile sqlite
4760: 33 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20  3.}..# Run some 
4770: 74 65 73 74 73 20 75 73 69 6e 67 20 55 54 46 2d  tests using UTF-
4780: 31 36 20 64 61 74 61 62 61 73 65 73 2e 0a 23 0a  16 databases..#.
4790: 74 65 73 74 5f 73 75 69 74 65 20 22 75 74 66 31  test_suite "utf1
47a0: 36 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  6" -description 
47b0: 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20 75 73  {.  Run tests us
47c0: 69 6e 67 20 55 54 46 2d 31 36 20 64 61 74 61 62  ing UTF-16 datab
47d0: 61 73 65 73 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ases.} -presql {
47e0: 0a 20 20 70 72 61 67 6d 61 20 65 6e 63 6f 64 69  .  pragma encodi
47f0: 6e 67 20 3d 20 27 55 54 46 2d 31 36 27 0a 7d 20  ng = 'UTF-16'.} 
4800: 2d 66 69 6c 65 73 20 7b 0a 20 20 20 20 61 6c 74  -files {.    alt
4810: 65 72 2e 74 65 73 74 20 61 6c 74 65 72 33 2e 74  er.test alter3.t
4820: 65 73 74 0a 20 20 20 20 61 6e 61 6c 79 7a 65 2e  est.    analyze.
4830: 74 65 73 74 20 61 6e 61 6c 79 7a 65 33 2e 74 65  test analyze3.te
4840: 73 74 20 61 6e 61 6c 79 7a 65 34 2e 74 65 73 74  st analyze4.test
4850: 20 61 6e 61 6c 79 7a 65 35 2e 74 65 73 74 20 61   analyze5.test a
4860: 6e 61 6c 79 7a 65 36 2e 74 65 73 74 0a 20 20 20  nalyze6.test.   
4870: 20 61 6e 61 6c 79 7a 65 37 2e 74 65 73 74 20 61   analyze7.test a
4880: 6e 61 6c 79 7a 65 38 2e 74 65 73 74 20 61 6e 61  nalyze8.test ana
4890: 6c 79 7a 65 39 2e 74 65 73 74 20 61 6e 61 6c 79  lyze9.test analy
48a0: 7a 65 41 2e 74 65 73 74 20 61 6e 61 6c 79 7a 65  zeA.test analyze
48b0: 42 2e 74 65 73 74 0a 20 20 20 20 61 75 74 68 2e  B.test.    auth.
48c0: 74 65 73 74 20 62 69 6e 64 2e 74 65 73 74 20 62  test bind.test b
48d0: 6c 6f 62 2e 74 65 73 74 20 63 61 70 69 32 2e 74  lob.test capi2.t
48e0: 65 73 74 20 63 61 70 69 33 2e 74 65 73 74 20 63  est capi3.test c
48f0: 6f 6c 6c 61 74 65 31 2e 74 65 73 74 0a 20 20 20  ollate1.test.   
4900: 20 63 6f 6c 6c 61 74 65 32 2e 74 65 73 74 20 63   collate2.test c
4910: 6f 6c 6c 61 74 65 33 2e 74 65 73 74 20 63 6f 6c  ollate3.test col
4920: 6c 61 74 65 34 2e 74 65 73 74 20 63 6f 6c 6c 61  late4.test colla
4930: 74 65 35 2e 74 65 73 74 20 63 6f 6c 6c 61 74 65  te5.test collate
4940: 36 2e 74 65 73 74 0a 20 20 20 20 63 6f 6e 66 6c  6.test.    confl
4950: 69 63 74 2e 74 65 73 74 20 64 61 74 65 2e 74 65  ict.test date.te
4960: 73 74 20 64 65 6c 65 74 65 2e 74 65 73 74 20 65  st delete.test e
4970: 78 70 72 2e 74 65 73 74 20 66 6b 65 79 31 2e 74  xpr.test fkey1.t
4980: 65 73 74 20 66 75 6e 63 2e 74 65 73 74 0a 20 20  est func.test.  
4990: 20 20 68 6f 6f 6b 2e 74 65 73 74 20 69 6e 64 65    hook.test inde
49a0: 78 2e 74 65 73 74 20 69 6e 73 65 72 74 32 2e 74  x.test insert2.t
49b0: 65 73 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20  est insert.test 
49c0: 69 6e 74 65 72 72 75 70 74 2e 74 65 73 74 20 69  interrupt.test i
49d0: 6e 2e 74 65 73 74 0a 20 20 20 20 69 6e 74 70 6b  n.test.    intpk
49e0: 65 79 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65  ey.test ioerr.te
49f0: 73 74 20 6a 6f 69 6e 32 2e 74 65 73 74 20 6a 6f  st join2.test jo
4a00: 69 6e 2e 74 65 73 74 20 6c 61 73 74 69 6e 73 65  in.test lastinse
4a10: 72 74 2e 74 65 73 74 0a 20 20 20 20 6c 61 73 74  rt.test.    last
4a20: 73 74 6d 74 63 68 61 6e 67 65 73 2e 74 65 73 74  stmtchanges.test
4a30: 20 6c 69 6d 69 74 2e 74 65 73 74 20 6c 6f 63 6b   limit.test lock
4a40: 32 2e 74 65 73 74 20 6c 6f 63 6b 2e 74 65 73 74  2.test lock.test
4a50: 20 6d 61 69 6e 2e 74 65 73 74 20 0a 20 20 20 20   main.test .    
4a60: 6d 65 6d 64 62 2e 74 65 73 74 20 6d 69 6e 6d 61  memdb.test minma
4a70: 78 2e 74 65 73 74 20 6d 69 73 63 31 2e 74 65 73  x.test misc1.tes
4a80: 74 20 6d 69 73 63 32 2e 74 65 73 74 20 6d 69 73  t misc2.test mis
4a90: 63 33 2e 74 65 73 74 20 6e 6f 74 6e 75 6c 6c 2e  c3.test notnull.
4aa0: 74 65 73 74 0a 20 20 20 20 6e 75 6c 6c 2e 74 65  test.    null.te
4ab0: 73 74 20 70 72 6f 67 72 65 73 73 2e 74 65 73 74  st progress.test
4ac0: 20 71 75 6f 74 65 2e 74 65 73 74 20 72 6f 77 69   quote.test rowi
4ad0: 64 2e 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74  d.test select1.t
4ae0: 65 73 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74  est select2.test
4af0: 0a 20 20 20 20 73 65 6c 65 63 74 33 2e 74 65 73  .    select3.tes
4b00: 74 20 73 65 6c 65 63 74 34 2e 74 65 73 74 20 73  t select4.test s
4b10: 65 6c 65 63 74 35 2e 74 65 73 74 20 73 65 6c 65  elect5.test sele
4b20: 63 74 36 2e 74 65 73 74 20 73 6f 72 74 2e 74 65  ct6.test sort.te
4b30: 73 74 20 0a 20 20 20 20 73 75 62 73 65 6c 65 63  st .    subselec
4b40: 74 2e 74 65 73 74 20 74 61 62 6c 65 61 70 69 2e  t.test tableapi.
4b50: 74 65 73 74 20 74 61 62 6c 65 2e 74 65 73 74 20  test table.test 
4b60: 74 65 6d 70 74 61 62 6c 65 2e 74 65 73 74 0a 20  temptable.test. 
4b70: 20 20 20 74 72 61 63 65 2e 74 65 73 74 20 74 72     trace.test tr
4b80: 69 67 67 65 72 31 2e 74 65 73 74 20 74 72 69 67  igger1.test trig
4b90: 67 65 72 32 2e 74 65 73 74 20 74 72 69 67 67 65  ger2.test trigge
4ba0: 72 33 2e 74 65 73 74 0a 20 20 20 20 74 72 69 67  r3.test.    trig
4bb0: 67 65 72 34 2e 74 65 73 74 20 74 79 70 65 73 32  ger4.test types2
4bc0: 2e 74 65 73 74 20 74 79 70 65 73 2e 74 65 73 74  .test types.test
4bd0: 20 75 6e 69 71 75 65 2e 74 65 73 74 20 75 70 64   unique.test upd
4be0: 61 74 65 2e 74 65 73 74 0a 20 20 20 20 76 61 63  ate.test.    vac
4bf0: 75 75 6d 2e 74 65 73 74 20 76 69 65 77 2e 74 65  uum.test view.te
4c00: 73 74 20 77 68 65 72 65 2e 74 65 73 74 0a 7d 0a  st where.test.}.
4c10: 0a 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74  .# Run some test
4c20: 73 20 69 6e 20 65 78 63 6c 75 73 69 76 65 20 6c  s in exclusive l
4c30: 6f 63 6b 69 6e 67 20 6d 6f 64 65 2e 0a 23 0a 74  ocking mode..#.t
4c40: 65 73 74 5f 73 75 69 74 65 20 22 65 78 63 6c 75  est_suite "exclu
4c50: 73 69 76 65 22 20 2d 64 65 73 63 72 69 70 74 69  sive" -descripti
4c60: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73  on {.  Run tests
4c70: 20 69 6e 20 65 78 63 6c 75 73 69 76 65 20 6c 6f   in exclusive lo
4c80: 63 6b 69 6e 67 20 6d 6f 64 65 2e 0a 7d 20 2d 70  cking mode..} -p
4c90: 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61  resql {.  pragma
4ca0: 20 6c 6f 63 6b 69 6e 67 5f 6d 6f 64 65 20 3d 20   locking_mode = 
4cb0: 27 65 78 63 6c 75 73 69 76 65 27 0a 7d 20 2d 66  'exclusive'.} -f
4cc0: 69 6c 65 73 20 7b 0a 20 20 72 6f 6c 6c 62 61 63  iles {.  rollbac
4cd0: 6b 2e 74 65 73 74 20 73 65 6c 65 63 74 31 2e 74  k.test select1.t
4ce0: 65 73 74 20 73 65 6c 65 63 74 32 2e 74 65 73 74  est select2.test
4cf0: 20 0a 20 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20   .  malloc.test 
4d00: 69 6f 65 72 72 2e 74 65 73 74 0a 7d 20 0a 0a 23  ioerr.test.} ..#
4d10: 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73 20   Run some tests 
4d20: 69 6e 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63  in exclusive loc
4d30: 6b 69 6e 67 20 6d 6f 64 65 20 77 69 74 68 20 74  king mode with t
4d40: 72 75 6e 63 61 74 65 64 20 6a 6f 75 72 6e 61 6c  runcated journal
4d50: 73 2e 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20  s..#.test_suite 
4d60: 22 65 78 63 6c 75 73 69 76 65 2d 74 72 75 6e 63  "exclusive-trunc
4d70: 61 74 65 22 20 2d 64 65 73 63 72 69 70 74 69 6f  ate" -descriptio
4d80: 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73 20  n {.  Run tests 
4d90: 69 6e 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63  in exclusive loc
4da0: 6b 69 6e 67 20 6d 6f 64 65 20 61 6e 64 20 74 72  king mode and tr
4db0: 75 6e 63 61 74 65 20 6a 6f 75 72 6e 61 6c 20 6d  uncate journal m
4dc0: 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ode..} -presql {
4dd0: 0a 20 20 70 72 61 67 6d 61 20 6c 6f 63 6b 69 6e  .  pragma lockin
4de0: 67 5f 6d 6f 64 65 20 3d 20 27 65 78 63 6c 75 73  g_mode = 'exclus
4df0: 69 76 65 27 3b 0a 20 20 70 72 61 67 6d 61 20 6a  ive';.  pragma j
4e00: 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 54 52  ournal_mode = TR
4e10: 55 4e 43 41 54 45 3b 0a 7d 20 2d 66 69 6c 65 73  UNCATE;.} -files
4e20: 20 7b 0a 20 20 64 65 6c 65 74 65 2e 74 65 73 74   {.  delete.test
4e30: 20 64 65 6c 65 74 65 32 2e 74 65 73 74 20 69 6e   delete2.test in
4e40: 73 65 72 74 2e 74 65 73 74 20 72 6f 6c 6c 62 61  sert.test rollba
4e50: 63 6b 2e 74 65 73 74 20 73 65 6c 65 63 74 31 2e  ck.test select1.
4e60: 74 65 73 74 0a 20 20 73 65 6c 65 63 74 32 2e 74  test.  select2.t
4e70: 65 73 74 20 75 70 64 61 74 65 2e 74 65 73 74 20  est update.test 
4e80: 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69 6f 65 72  malloc.test ioer
4e90: 72 2e 74 65 73 74 0a 7d 20 0a 0a 23 20 52 75 6e  r.test.} ..# Run
4ea0: 20 73 6f 6d 65 20 74 65 73 74 73 20 69 6e 20 70   some tests in p
4eb0: 65 72 73 69 73 74 65 6e 74 20 6a 6f 75 72 6e 61  ersistent journa
4ec0: 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74 5f 73  l mode..#.test_s
4ed0: 75 69 74 65 20 22 70 65 72 73 69 73 74 65 6e 74  uite "persistent
4ee0: 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64 65 73 63 72  _journal" -descr
4ef0: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 74  iption {.  Run t
4f00: 65 73 74 73 20 69 6e 20 70 65 72 73 69 73 74 65  ests in persiste
4f10: 6e 74 2d 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e  nt-journal mode.
4f20: 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70  .} -presql {.  p
4f30: 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f 6d 6f  ragma journal_mo
4f40: 64 65 20 3d 20 70 65 72 73 69 73 74 0a 7d 20 2d  de = persist.} -
4f50: 66 69 6c 65 73 20 7b 0a 20 20 64 65 6c 65 74 65  files {.  delete
4f60: 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65  .test delete2.te
4f70: 73 74 20 69 6e 73 65 72 74 2e 74 65 73 74 20 72  st insert.test r
4f80: 6f 6c 6c 62 61 63 6b 2e 74 65 73 74 20 73 65 6c  ollback.test sel
4f90: 65 63 74 31 2e 74 65 73 74 0a 20 20 73 65 6c 65  ect1.test.  sele
4fa0: 63 74 32 2e 74 65 73 74 20 74 72 61 6e 73 2e 74  ct2.test trans.t
4fb0: 65 73 74 20 75 70 64 61 74 65 2e 74 65 73 74 20  est update.test 
4fc0: 76 61 63 75 75 6d 2e 74 65 73 74 20 0a 7d 0a 0a  vacuum.test .}..
4fd0: 23 20 52 75 6e 20 73 6f 6d 65 20 74 65 73 74 73  # Run some tests
4fe0: 20 69 6e 20 74 72 75 6e 63 61 74 69 6e 67 20 6a   in truncating j
4ff0: 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74  ournal mode..#.t
5000: 65 73 74 5f 73 75 69 74 65 20 22 74 72 75 6e 63  est_suite "trunc
5010: 61 74 65 5f 6a 6f 75 72 6e 61 6c 22 20 2d 64 65  ate_journal" -de
5020: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75  scription {.  Ru
5030: 6e 20 74 65 73 74 73 20 69 6e 20 70 65 72 73 69  n tests in persi
5040: 73 74 65 6e 74 2d 6a 6f 75 72 6e 61 6c 20 6d 6f  stent-journal mo
5050: 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a  de..} -presql {.
5060: 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c    pragma journal
5070: 5f 6d 6f 64 65 20 3d 20 74 72 75 6e 63 61 74 65  _mode = truncate
5080: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65  .} -files {.  de
5090: 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65  lete.test delete
50a0: 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65  2.test insert.te
50b0: 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74  st rollback.test
50c0: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20   select1.test.  
50d0: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 74 72 61  select2.test tra
50e0: 6e 73 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  ns.test update.t
50f0: 65 73 74 20 76 61 63 75 75 6d 2e 74 65 73 74 20  est vacuum.test 
5100: 0a 20 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20 69  .  malloc.test i
5110: 6f 65 72 72 2e 74 65 73 74 0a 7d 0a 0a 23 20 52  oerr.test.}..# R
5120: 75 6e 20 73 6f 6d 65 20 65 72 72 6f 72 20 74 65  un some error te
5130: 73 74 73 20 69 6e 20 70 65 72 73 69 73 74 65 6e  sts in persisten
5140: 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a  t journal mode..
5150: 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 70 65  #.test_suite "pe
5160: 72 73 69 73 74 65 6e 74 5f 6a 6f 75 72 6e 61 6c  rsistent_journal
5170: 5f 65 72 72 6f 72 22 20 2d 64 65 73 63 72 69 70  _error" -descrip
5180: 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 6d 61 6c  tion {.  Run mal
5190: 6c 6f 63 2e 74 65 73 74 20 61 6e 64 20 69 6f 65  loc.test and ioe
51a0: 72 72 2e 74 65 73 74 20 69 6e 20 70 65 72 73 69  rr.test in persi
51b0: 73 74 65 6e 74 2d 6a 6f 75 72 6e 61 6c 20 6d 6f  stent-journal mo
51c0: 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a  de..} -presql {.
51d0: 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c    pragma journal
51e0: 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69 73 74 0a  _mode = persist.
51f0: 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 6d 61 6c  } -files {.  mal
5200: 6c 6f 63 2e 74 65 73 74 20 69 6f 65 72 72 2e 74  loc.test ioerr.t
5210: 65 73 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d  est.}..# Run som
5220: 65 20 74 65 73 74 73 20 69 6e 20 6e 6f 20 6a 6f  e tests in no jo
5230: 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23 0a 74 65  urnal mode..#.te
5240: 73 74 5f 73 75 69 74 65 20 22 6e 6f 5f 6a 6f 75  st_suite "no_jou
5250: 72 6e 61 6c 22 20 2d 64 65 73 63 72 69 70 74 69  rnal" -descripti
5260: 6f 6e 20 7b 0a 20 20 52 75 6e 20 74 65 73 74 73  on {.  Run tests
5270: 20 69 6e 20 6e 6f 2d 6a 6f 75 72 6e 61 6c 20 6d   in no-journal m
5280: 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ode..} -presql {
5290: 0a 20 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61  .  pragma journa
52a0: 6c 5f 6d 6f 64 65 20 3d 20 70 65 72 73 69 73 74  l_mode = persist
52b0: 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20 64 65  .} -files {.  de
52c0: 6c 65 74 65 2e 74 65 73 74 20 64 65 6c 65 74 65  lete.test delete
52d0: 32 2e 74 65 73 74 20 69 6e 73 65 72 74 2e 74 65  2.test insert.te
52e0: 73 74 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73 74  st rollback.test
52f0: 20 73 65 6c 65 63 74 31 2e 74 65 73 74 0a 20 20   select1.test.  
5300: 73 65 6c 65 63 74 32 2e 74 65 73 74 20 74 72 61  select2.test tra
5310: 6e 73 2e 74 65 73 74 20 75 70 64 61 74 65 2e 74  ns.test update.t
5320: 65 73 74 20 76 61 63 75 75 6d 2e 74 65 73 74 20  est vacuum.test 
5330: 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65 20 65  .}..# Run some e
5340: 72 72 6f 72 20 74 65 73 74 73 20 69 6e 20 6e 6f  rror tests in no
5350: 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2e 0a 23   journal mode..#
5360: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 6e 6f 5f  .test_suite "no_
5370: 6a 6f 75 72 6e 61 6c 5f 65 72 72 6f 72 22 20 2d  journal_error" -
5380: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
5390: 52 75 6e 20 6d 61 6c 6c 6f 63 2e 74 65 73 74 20  Run malloc.test 
53a0: 61 6e 64 20 69 6f 65 72 72 2e 74 65 73 74 20 69  and ioerr.test i
53b0: 6e 20 6e 6f 2d 6a 6f 75 72 6e 61 6c 20 6d 6f 64  n no-journal mod
53c0: 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b 0a 20  e..} -presql {. 
53d0: 20 70 72 61 67 6d 61 20 6a 6f 75 72 6e 61 6c 5f   pragma journal_
53e0: 6d 6f 64 65 20 3d 20 70 65 72 73 69 73 74 0a 7d  mode = persist.}
53f0: 20 2d 66 69 6c 65 73 20 7b 0a 20 20 6d 61 6c 6c   -files {.  mall
5400: 6f 63 2e 74 65 73 74 20 69 6f 65 72 72 2e 74 65  oc.test ioerr.te
5410: 73 74 0a 7d 0a 0a 23 20 52 75 6e 20 73 6f 6d 65  st.}..# Run some
5420: 20 63 72 61 73 68 2d 74 65 73 74 73 20 69 6e 20   crash-tests in 
5430: 61 75 74 6f 76 61 63 75 75 6d 20 6d 6f 64 65 2e  autovacuum mode.
5440: 0a 23 0a 74 65 73 74 5f 73 75 69 74 65 20 22 61  .#.test_suite "a
5450: 75 74 6f 76 61 63 75 75 6d 5f 63 72 61 73 68 22  utovacuum_crash"
5460: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
5470: 20 20 52 75 6e 20 63 72 61 73 68 2e 74 65 73 74    Run crash.test
5480: 20 69 6e 20 61 75 74 6f 76 61 63 75 75 6d 20 6d   in autovacuum m
5490: 6f 64 65 2e 0a 7d 20 2d 70 72 65 73 71 6c 20 7b  ode..} -presql {
54a0: 0a 20 20 70 72 61 67 6d 61 20 61 75 74 6f 5f 76  .  pragma auto_v
54b0: 61 63 75 75 6d 20 3d 20 31 0a 7d 20 2d 66 69 6c  acuum = 1.} -fil
54c0: 65 73 20 63 72 61 73 68 2e 74 65 73 74 0a 0a 23  es crash.test..#
54d0: 20 52 75 6e 20 73 6f 6d 65 20 69 6f 65 72 72 2d   Run some ioerr-
54e0: 74 65 73 74 73 20 69 6e 20 61 75 74 6f 76 61 63  tests in autovac
54f0: 75 75 6d 20 6d 6f 64 65 2e 0a 23 0a 74 65 73 74  uum mode..#.test
5500: 5f 73 75 69 74 65 20 22 61 75 74 6f 76 61 63 75  _suite "autovacu
5510: 75 6d 5f 69 6f 65 72 72 22 20 2d 64 65 73 63 72  um_ioerr" -descr
5520: 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20 69  iption {.  Run i
5530: 6f 65 72 72 2e 74 65 73 74 20 69 6e 20 61 75 74  oerr.test in aut
5540: 6f 76 61 63 75 75 6d 20 6d 6f 64 65 2e 0a 7d 20  ovacuum mode..} 
5550: 2d 70 72 65 73 71 6c 20 7b 0a 20 20 70 72 61 67  -presql {.  prag
5560: 6d 61 20 61 75 74 6f 5f 76 61 63 75 75 6d 20 3d  ma auto_vacuum =
5570: 20 31 0a 7d 20 2d 66 69 6c 65 73 20 69 6f 65 72   1.} -files ioer
5580: 72 2e 74 65 73 74 0a 0a 23 20 52 75 6e 20 74 65  r.test..# Run te
5590: 73 74 73 20 77 69 74 68 20 61 6e 20 69 6e 2d 6d  sts with an in-m
55a0: 65 6d 6f 72 79 20 6a 6f 75 72 6e 61 6c 2e 0a 23  emory journal..#
55b0: 0a 74 65 73 74 5f 73 75 69 74 65 20 22 69 6e 6d  .test_suite "inm
55c0: 65 6d 6f 72 79 5f 6a 6f 75 72 6e 61 6c 22 20 2d  emory_journal" -
55d0: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
55e0: 52 75 6e 20 74 65 73 74 73 20 77 69 74 68 20 61  Run tests with a
55f0: 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 6a 6f 75 72  n in-memory jour
5600: 6e 61 6c 20 66 69 6c 65 2e 0a 7d 20 2d 70 72 65  nal file..} -pre
5610: 73 71 6c 20 7b 0a 20 20 70 72 61 67 6d 61 20 6a  sql {.  pragma j
5620: 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 27 6d  ournal_mode = 'm
5630: 65 6d 6f 72 79 27 0a 7d 20 2d 66 69 6c 65 73 20  emory'.} -files 
5640: 5b 74 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c  [test_set $::all
5650: 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c  quicktests -excl
5660: 75 64 65 20 7b 0a 20 20 23 20 45 78 63 6c 75 64  ude {.  # Exclud
5670: 65 20 61 6c 6c 20 74 65 73 74 73 20 74 68 61 74  e all tests that
5680: 20 73 69 6d 75 6c 61 74 65 20 49 4f 20 65 72 72   simulate IO err
5690: 6f 72 73 2e 0a 20 20 61 75 74 6f 76 61 63 75 75  ors..  autovacuu
56a0: 6d 5f 69 6f 65 72 72 32 2e 74 65 73 74 20 69 6e  m_ioerr2.test in
56b0: 63 72 76 61 63 75 75 6d 5f 69 6f 65 72 72 2e 74  crvacuum_ioerr.t
56c0: 65 73 74 20 69 6f 65 72 72 2e 74 65 73 74 0a 20  est ioerr.test. 
56d0: 20 69 6f 65 72 72 2e 74 65 73 74 20 69 6f 65 72   ioerr.test ioer
56e0: 72 32 2e 74 65 73 74 20 69 6f 65 72 72 33 2e 74  r2.test ioerr3.t
56f0: 65 73 74 20 69 6f 65 72 72 34 2e 74 65 73 74 20  est ioerr4.test 
5700: 69 6f 65 72 72 35 2e 74 65 73 74 0a 20 20 76 61  ioerr5.test.  va
5710: 63 75 75 6d 33 2e 74 65 73 74 20 69 6e 63 72 62  cuum3.test incrb
5720: 6c 6f 62 5f 65 72 72 2e 74 65 73 74 20 64 69 73  lob_err.test dis
5730: 6b 66 75 6c 6c 2e 74 65 73 74 20 62 61 63 6b 75  kfull.test backu
5740: 70 5f 69 6f 65 72 72 2e 74 65 73 74 0a 20 20 65  p_ioerr.test.  e
5750: 5f 66 74 73 33 2e 74 65 73 74 20 66 74 73 33 63  _fts3.test fts3c
5760: 6f 76 2e 74 65 73 74 20 66 74 73 33 6d 61 6c 6c  ov.test fts3mall
5770: 6f 63 2e 74 65 73 74 20 66 74 73 33 72 6e 64 2e  oc.test fts3rnd.
5780: 74 65 73 74 0a 20 20 66 74 73 33 73 6e 69 70 70  test.  fts3snipp
5790: 65 74 2e 74 65 73 74 20 6d 6d 61 70 66 61 75 6c  et.test mmapfaul
57a0: 74 2e 74 65 73 74 0a 0a 20 20 23 20 45 78 63 6c  t.test..  # Excl
57b0: 75 64 65 20 74 65 73 74 20 73 63 72 69 70 74 73  ude test scripts
57c0: 20 74 68 61 74 20 75 73 65 20 74 63 6c 20 49 4f   that use tcl IO
57d0: 20 74 6f 20 61 63 63 65 73 73 20 6a 6f 75 72 6e   to access journ
57e0: 61 6c 20 66 69 6c 65 73 20 6f 72 20 63 6f 75 6e  al files or coun
57f0: 74 0a 20 20 23 20 74 68 65 20 6e 75 6d 62 65 72  t.  # the number
5800: 20 6f 66 20 66 73 79 6e 63 28 29 20 63 61 6c 6c   of fsync() call
5810: 73 2e 0a 20 20 70 61 67 65 72 2e 74 65 73 74 20  s..  pager.test 
5820: 65 78 63 6c 75 73 69 76 65 2e 74 65 73 74 20 6a  exclusive.test j
5830: 72 6e 6c 6d 6f 64 65 2e 74 65 73 74 20 73 79 6e  rnlmode.test syn
5840: 63 2e 74 65 73 74 20 6d 69 73 63 31 2e 74 65 73  c.test misc1.tes
5850: 74 20 0a 20 20 6a 6f 75 72 6e 61 6c 31 2e 74 65  t .  journal1.te
5860: 73 74 20 63 6f 6e 66 6c 69 63 74 2e 74 65 73 74  st conflict.test
5870: 20 63 72 61 73 68 38 2e 74 65 73 74 20 74 6b 74   crash8.test tkt
5880: 33 34 35 37 2e 74 65 73 74 20 69 6f 2e 74 65 73  3457.test io.tes
5890: 74 0a 20 20 6a 6f 75 72 6e 61 6c 33 2e 74 65 73  t.  journal3.tes
58a0: 74 20 38 5f 33 5f 6e 61 6d 65 73 2e 74 65 73 74  t 8_3_names.test
58b0: 0a 0a 20 20 70 61 67 65 72 31 2e 74 65 73 74 20  ..  pager1.test 
58c0: 61 73 79 6e 63 34 2e 74 65 73 74 20 63 6f 72 72  async4.test corr
58d0: 75 70 74 2e 74 65 73 74 20 66 69 6c 65 66 6d 74  upt.test filefmt
58e0: 2e 74 65 73 74 20 70 61 67 65 72 32 2e 74 65 73  .test pager2.tes
58f0: 74 0a 20 20 63 6f 72 72 75 70 74 35 2e 74 65 73  t.  corrupt5.tes
5900: 74 20 63 6f 72 72 75 70 74 41 2e 74 65 73 74 20  t corruptA.test 
5910: 70 61 67 65 72 6f 70 74 2e 74 65 73 74 0a 0a 20  pageropt.test.. 
5920: 20 23 20 45 78 63 6c 75 64 65 20 73 74 6d 74 2e   # Exclude stmt.
5930: 74 65 73 74 2c 20 77 68 69 63 68 20 65 78 70 65  test, which expe
5940: 63 74 73 20 73 75 62 2d 6a 6f 75 72 6e 61 6c 73  cts sub-journals
5950: 20 74 6f 20 75 73 65 20 74 65 6d 70 6f 72 61 72   to use temporar
5960: 79 20 66 69 6c 65 73 2e 0a 20 20 73 74 6d 74 2e  y files..  stmt.
5970: 74 65 73 74 0a 0a 20 20 7a 65 72 6f 64 61 6d 61  test..  zerodama
5980: 67 65 2e 74 65 73 74 0a 0a 20 20 23 20 57 41 4c  ge.test..  # WAL
5990: 20 6d 6f 64 65 20 69 73 20 64 69 66 66 65 72 65   mode is differe
59a0: 6e 74 2e 0a 20 20 77 61 6c 2a 20 74 6b 74 2d 32  nt..  wal* tkt-2
59b0: 64 31 61 35 63 36 37 64 2e 74 65 73 74 20 62 61  d1a5c67d.test ba
59c0: 63 6b 63 6f 6d 70 61 74 2e 74 65 73 74 0a 7d 5d  ckcompat.test.}]
59d0: 0a 0a 69 66 63 61 70 61 62 6c 65 20 6d 65 6d 33  ..ifcapable mem3
59e0: 20 7b 0a 20 20 74 65 73 74 5f 73 75 69 74 65 20   {.  test_suite 
59f0: 22 6d 65 6d 73 79 73 33 22 20 2d 64 65 73 63 72  "memsys3" -descr
5a00: 69 70 74 69 6f 6e 20 7b 0a 20 20 20 20 52 75 6e  iption {.    Run
5a10: 20 74 65 73 74 73 20 75 73 69 6e 67 20 74 68 65   tests using the
5a20: 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 20 6d 65   allocator in me
5a30: 6d 33 2e 63 2e 0a 20 20 7d 20 2d 66 69 6c 65 73  m3.c..  } -files
5a40: 20 5b 74 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c   [test_set $::al
5a50: 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63  lquicktests -exc
5a60: 6c 75 64 65 20 7b 0a 20 20 20 20 61 75 74 6f 76  lude {.    autov
5a70: 61 63 75 75 6d 2e 74 65 73 74 20 20 20 20 20 20  acuum.test      
5a80: 20 20 20 20 20 64 65 6c 65 74 65 33 2e 74 65 73       delete3.tes
5a90: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d  t              m
5aa0: 61 6e 79 64 62 2e 74 65 73 74 0a 20 20 20 20 62  anydb.test.    b
5ab0: 69 67 72 6f 77 2e 74 65 73 74 20 20 20 20 20 20  igrow.test      
5ac0: 20 20 20 20 20 20 20 20 20 69 6e 63 72 62 6c 6f           incrblo
5ad0: 62 32 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  b2.test         
5ae0: 20 20 20 6d 65 6d 64 62 2e 74 65 73 74 0a 20 20     memdb.test.  
5af0: 20 20 62 69 74 76 65 63 2e 74 65 73 74 20 20 20    bitvec.test   
5b00: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
5b10: 78 32 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  x2.test         
5b20: 20 20 20 20 20 20 6d 65 6d 73 75 62 73 79 73 31        memsubsys1
5b30: 2e 74 65 73 74 0a 20 20 20 20 63 61 70 69 33 63  .test.    capi3c
5b40: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
5b50: 20 20 20 20 69 6f 65 72 72 2e 74 65 73 74 20 20      ioerr.test  
5b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65                me
5b70: 6d 73 75 62 73 79 73 32 2e 74 65 73 74 0a 20 20  msubsys2.test.  
5b80: 20 20 63 61 70 69 33 2e 74 65 73 74 20 20 20 20    capi3.test    
5b90: 20 20 20 20 20 20 20 20 20 20 20 20 6a 6f 69 6e              join
5ba0: 33 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20  3.test          
5bb0: 20 20 20 20 20 20 70 61 67 65 73 69 7a 65 2e 74        pagesize.t
5bc0: 65 73 74 0a 20 20 20 20 63 6f 6c 6c 61 74 65 35  est.    collate5
5bd0: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
5be0: 20 20 6c 69 6d 69 74 2e 74 65 73 74 20 20 20 20    limit.test    
5bf0: 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b              back
5c00: 75 70 5f 69 6f 65 72 72 2e 74 65 73 74 0a 20 20  up_ioerr.test.  
5c10: 20 20 62 61 63 6b 75 70 5f 6d 61 6c 6c 6f 63 2e    backup_malloc.
5c20: 74 65 73 74 0a 20 20 7d 5d 20 2d 69 6e 69 74 69  test.  }] -initi
5c30: 61 6c 69 7a 65 20 7b 0a 20 20 20 20 63 61 74 63  alize {.    catc
5c40: 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20  h {db close}.   
5c50: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 5f 61   sqlite3_reset_a
5c60: 75 74 6f 5f 65 78 74 65 6e 73 69 6f 6e 0a 20 20  uto_extension.  
5c70: 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f    sqlite3_shutdo
5c80: 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63  wn.    sqlite3_c
5c90: 6f 6e 66 69 67 5f 68 65 61 70 20 32 35 30 30 30  onfig_heap 25000
5ca0: 30 30 30 20 30 0a 20 20 20 20 73 71 6c 69 74 65  000 0.    sqlite
5cb0: 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69  3_config_lookasi
5cc0: 64 65 20 30 20 30 0a 20 20 20 20 69 66 63 61 70  de 0 0.    ifcap
5cd0: 61 62 6c 65 20 6d 65 6d 35 20 7b 0a 20 20 20 20  able mem5 {.    
5ce0: 20 20 23 20 49 66 20 62 6f 74 68 20 6d 65 6d 73    # If both mems
5cf0: 79 73 33 20 61 6e 64 20 6d 65 6d 73 79 73 35 20  ys3 and memsys5 
5d00: 61 72 65 20 65 6e 61 62 6c 65 64 20 69 6e 20 74  are enabled in t
5d10: 68 65 20 62 75 69 6c 64 2c 20 74 68 65 20 63 61  he build, the ca
5d20: 6c 6c 20 74 6f 0a 20 20 20 20 20 20 23 20 5b 73  ll to.      # [s
5d30: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65  qlite3_config_he
5d40: 61 70 5d 20 77 69 6c 6c 20 69 6e 69 74 69 61 6c  ap] will initial
5d50: 69 7a 65 20 74 68 65 20 73 79 73 74 65 6d 20 74  ize the system t
5d60: 6f 20 75 73 65 20 6d 65 6d 73 79 73 35 2e 0a 20  o use memsys5.. 
5d70: 20 20 20 20 20 23 20 54 68 65 20 66 6f 6c 6c 6f       # The follo
5d80: 77 69 6e 67 20 6f 76 65 72 72 69 64 65 73 20 74  wing overrides t
5d90: 68 69 73 20 70 72 65 66 65 72 65 6e 63 65 20 61  his preference a
5da0: 6e 64 20 69 6e 73 74 61 6c 6c 73 20 74 68 65 20  nd installs the 
5db0: 6d 65 6d 73 79 73 33 0a 20 20 20 20 20 20 23 20  memsys3.      # 
5dc0: 61 6c 6c 6f 63 61 74 6f 72 2e 0a 20 20 20 20 20  allocator..     
5dd0: 20 73 71 6c 69 74 65 33 5f 69 6e 73 74 61 6c 6c   sqlite3_install
5de0: 5f 6d 65 6d 73 79 73 33 0a 20 20 20 20 7d 0a 20  _memsys3.    }. 
5df0: 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f     install_mallo
5e00: 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20  c_faultsim 1 .  
5e10: 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61    sqlite3_initia
5e20: 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73  lize.    autoins
5e30: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
5e40: 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74 64 6f 77  ons.  } -shutdow
5e50: 6e 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64  n {.    catch {d
5e60: 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c  b close}.    sql
5e70: 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20  ite3_shutdown.  
5e80: 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67    sqlite3_config
5e90: 5f 68 65 61 70 20 30 20 30 0a 20 20 20 20 73 71  _heap 0 0.    sq
5ea0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f 6f  lite3_config_loo
5eb0: 6b 61 73 69 64 65 20 31 30 30 20 35 30 30 0a 20  kaside 100 500. 
5ec0: 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c 6f     install_mallo
5ed0: 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20 20  c_faultsim 1 .  
5ee0: 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61    sqlite3_initia
5ef0: 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e 73  lize.    autoins
5f00: 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74 69  tall_test_functi
5f10: 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a 69 66 63 61 70  ons.  }.}..ifcap
5f20: 61 62 6c 65 20 6d 65 6d 35 20 7b 0a 20 20 74 65  able mem5 {.  te
5f30: 73 74 5f 73 75 69 74 65 20 22 6d 65 6d 73 79 73  st_suite "memsys
5f40: 35 22 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20  5" -description 
5f50: 7b 0a 20 20 20 20 52 75 6e 20 74 65 73 74 73 20  {.    Run tests 
5f60: 75 73 69 6e 67 20 74 68 65 20 61 6c 6c 6f 63 61  using the alloca
5f70: 74 6f 72 20 69 6e 20 6d 65 6d 35 2e 63 2e 0a 20  tor in mem5.c.. 
5f80: 20 7d 20 2d 66 69 6c 65 73 20 5b 74 65 73 74 5f   } -files [test_
5f90: 73 65 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74  set $::allquickt
5fa0: 65 73 74 73 20 2d 65 78 63 6c 75 64 65 20 7b 0a  ests -exclude {.
5fb0: 20 20 20 20 61 75 74 6f 76 61 63 75 75 6d 2e 74      autovacuum.t
5fc0: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 64 65  est           de
5fd0: 6c 65 74 65 33 2e 74 65 73 74 20 20 20 20 20 20  lete3.test      
5fe0: 20 20 20 20 20 20 20 20 6d 61 6e 79 64 62 2e 74          manydb.t
5ff0: 65 73 74 0a 20 20 20 20 62 69 67 72 6f 77 2e 74  est.    bigrow.t
6000: 65 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20  est             
6010: 20 20 69 6e 63 72 62 6c 6f 62 32 2e 74 65 73 74    incrblob2.test
6020: 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6d 64              memd
6030: 62 2e 74 65 73 74 0a 20 20 20 20 62 69 74 76 65  b.test.    bitve
6040: 63 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20  c.test          
6050: 20 20 20 20 20 69 6e 64 65 78 32 2e 74 65 73 74       index2.test
6060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
6070: 65 6d 73 75 62 73 79 73 31 2e 74 65 73 74 0a 20  emsubsys1.test. 
6080: 20 20 20 63 61 70 69 33 63 2e 74 65 73 74 20 20     capi3c.test  
6090: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6f 65               ioe
60a0: 72 72 2e 74 65 73 74 20 20 20 20 20 20 20 20 20  rr.test         
60b0: 20 20 20 20 20 20 20 6d 65 6d 73 75 62 73 79 73         memsubsys
60c0: 32 2e 74 65 73 74 0a 20 20 20 20 63 61 70 69 33  2.test.    capi3
60d0: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
60e0: 20 20 20 20 20 6a 6f 69 6e 33 2e 74 65 73 74 20       join3.test 
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
6100: 61 67 65 73 69 7a 65 2e 74 65 73 74 0a 20 20 20  agesize.test.   
6110: 20 63 6f 6c 6c 61 74 65 35 2e 74 65 73 74 20 20   collate5.test  
6120: 20 20 20 20 20 20 20 20 20 20 20 6c 69 6d 69 74             limit
6130: 2e 74 65 73 74 20 20 20 20 20 20 20 20 20 20 20  .test           
6140: 20 20 20 20 20 7a 65 72 6f 62 6c 6f 62 2e 74 65       zeroblob.te
6150: 73 74 0a 20 20 7d 5d 20 2d 69 6e 69 74 69 61 6c  st.  }] -initial
6160: 69 7a 65 20 7b 0a 20 20 20 20 63 61 74 63 68 20  ize {.    catch 
6170: 7b 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73  {db close}.    s
6180: 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a  qlite3_shutdown.
6190: 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66      sqlite3_conf
61a0: 69 67 5f 68 65 61 70 20 32 35 30 30 30 30 30 30  ig_heap 25000000
61b0: 20 36 34 0a 20 20 20 20 73 71 6c 69 74 65 33 5f   64.    sqlite3_
61c0: 63 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65  config_lookaside
61d0: 20 30 20 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c   0 0.    install
61e0: 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d  _malloc_faultsim
61f0: 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f   1 .    sqlite3_
6200: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61  initialize.    a
6210: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
6220: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 20 2d 73  functions.  } -s
6230: 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63 61  hutdown {.    ca
6240: 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a 20  tch {db close}. 
6250: 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64     sqlite3_shutd
6260: 6f 77 6e 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  own.    sqlite3_
6270: 63 6f 6e 66 69 67 5f 68 65 61 70 20 30 20 30 0a  config_heap 0 0.
6280: 20 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66      sqlite3_conf
6290: 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 31 30 30  ig_lookaside 100
62a0: 20 35 30 30 0a 20 20 20 20 69 6e 73 74 61 6c 6c   500.    install
62b0: 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74 73 69 6d  _malloc_faultsim
62c0: 20 31 20 0a 20 20 20 20 73 71 6c 69 74 65 33 5f   1 .    sqlite3_
62d0: 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61  initialize.    a
62e0: 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f  utoinstall_test_
62f0: 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a 0a 20  functions.  }.. 
6300: 20 74 65 73 74 5f 73 75 69 74 65 20 22 6d 65 6d   test_suite "mem
6310: 73 79 73 35 2d 32 22 20 2d 64 65 73 63 72 69 70  sys5-2" -descrip
6320: 74 69 6f 6e 20 7b 0a 20 20 20 20 52 75 6e 20 74  tion {.    Run t
6330: 65 73 74 73 20 75 73 69 6e 67 20 74 68 65 20 61  ests using the a
6340: 6c 6c 6f 63 61 74 6f 72 20 69 6e 20 6d 65 6d 35  llocator in mem5
6350: 2e 63 20 69 6e 20 61 20 64 69 66 66 65 72 65 6e  .c in a differen
6360: 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  t configuration.
6370: 0a 20 20 7d 20 2d 66 69 6c 65 73 20 7b 0a 20 20  .  } -files {.  
6380: 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74 20 0a    select1.test .
6390: 20 20 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20    } -initialize 
63a0: 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 62 20  {.    catch {db 
63b0: 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74  close}.    sqlit
63c0: 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20  e3_shutdown.    
63d0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6d  sqlite3_config_m
63e0: 65 6d 73 74 61 74 75 73 20 30 0a 20 20 20 20 73  emstatus 0.    s
63f0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 68 65  qlite3_config_he
6400: 61 70 20 34 30 30 30 30 30 30 30 20 31 36 0a 20  ap 40000000 16. 
6410: 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69     sqlite3_confi
6420: 67 5f 6c 6f 6f 6b 61 73 69 64 65 20 30 20 30 0a  g_lookaside 0 0.
6430: 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c      install_mall
6440: 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20  oc_faultsim 1 . 
6450: 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69     sqlite3_initi
6460: 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e  alize.    autoin
6470: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
6480: 69 6f 6e 73 0a 20 20 7d 20 2d 73 68 75 74 64 6f  ions.  } -shutdo
6490: 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b  wn {.    catch {
64a0: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71  db close}.    sq
64b0: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
64c0: 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69     sqlite3_confi
64d0: 67 5f 68 65 61 70 20 30 20 30 0a 20 20 20 20 73  g_heap 0 0.    s
64e0: 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5f 6c 6f  qlite3_config_lo
64f0: 6f 6b 61 73 69 64 65 20 31 30 30 20 35 30 30 0a  okaside 100 500.
6500: 20 20 20 20 69 6e 73 74 61 6c 6c 5f 6d 61 6c 6c      install_mall
6510: 6f 63 5f 66 61 75 6c 74 73 69 6d 20 31 20 0a 20  oc_faultsim 1 . 
6520: 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69     sqlite3_initi
6530: 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e  alize.    autoin
6540: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
6550: 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a 69 66 63 61  ions.  }.}..ifca
6560: 70 61 62 6c 65 20 74 68 72 65 61 64 73 61 66 65  pable threadsafe
6570: 20 7b 0a 20 20 74 65 73 74 5f 73 75 69 74 65 20   {.  test_suite 
6580: 22 6e 6f 5f 6d 75 74 65 78 5f 74 72 79 22 20 2d  "no_mutex_try" -
6590: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
65a0: 20 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6d     The sqlite3_m
65b0: 75 74 65 78 5f 74 72 79 28 29 20 69 6e 74 65 72  utex_try() inter
65c0: 66 61 63 65 20 61 6c 77 61 79 73 20 66 61 69 6c  face always fail
65d0: 73 0a 20 20 7d 20 2d 66 69 6c 65 73 20 5b 0a 20  s.  } -files [. 
65e0: 20 20 20 74 65 73 74 5f 73 65 74 20 24 3a 3a 61     test_set $::a
65f0: 6c 6c 71 75 69 63 6b 74 65 73 74 73 20 2d 65 78  llquicktests -ex
6600: 63 6c 75 64 65 20 6d 75 74 65 78 31 2e 74 65 73  clude mutex1.tes
6610: 74 20 6d 75 74 65 78 32 2e 74 65 73 74 0a 20 20  t mutex2.test.  
6620: 5d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20 7b 0a  ] -initialize {.
6630: 20 20 20 20 63 61 74 63 68 20 7b 64 62 20 63 6c      catch {db cl
6640: 6f 73 65 7d 0a 20 20 20 20 73 71 6c 69 74 65 33  ose}.    sqlite3
6650: 5f 73 68 75 74 64 6f 77 6e 0a 20 20 20 20 69 6e  _shutdown.    in
6660: 73 74 61 6c 6c 5f 6d 75 74 65 78 5f 63 6f 75 6e  stall_mutex_coun
6670: 74 65 72 73 20 31 0a 20 20 20 20 73 65 74 20 3a  ters 1.    set :
6680: 3a 64 69 73 61 62 6c 65 5f 6d 75 74 65 78 5f 74  :disable_mutex_t
6690: 72 79 20 31 0a 20 20 20 20 73 71 6c 69 74 65 33  ry 1.    sqlite3
66a0: 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20 20 20  _initialize.    
66b0: 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74  autoinstall_test
66c0: 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d 20 2d  _functions.  } -
66d0: 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20 63  shutdown {.    c
66e0: 61 74 63 68 20 7b 64 62 20 63 6c 6f 73 65 7d 0a  atch {db close}.
66f0: 20 20 20 20 73 71 6c 69 74 65 33 5f 73 68 75 74      sqlite3_shut
6700: 64 6f 77 6e 0a 20 20 20 20 69 6e 73 74 61 6c 6c  down.    install
6710: 5f 6d 75 74 65 78 5f 63 6f 75 6e 74 65 72 73 20  _mutex_counters 
6720: 30 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 69 6e  0.    sqlite3_in
6730: 69 74 69 61 6c 69 7a 65 0a 20 20 20 20 61 75 74  itialize.    aut
6740: 6f 69 6e 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75  oinstall_test_fu
6750: 6e 63 74 69 6f 6e 73 0a 20 20 7d 0a 7d 0a 0a 23  nctions.  }.}..#
6760: 20 72 75 6e 5f 74 65 73 74 73 20 22 63 72 61 73   run_tests "cras
6770: 68 5f 73 61 66 65 5f 61 70 70 65 6e 64 22 20 2d  h_safe_append" -
6780: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 23 20  description {.# 
6790: 20 20 52 75 6e 20 63 72 61 73 68 2e 74 65 73 74    Run crash.test
67a0: 20 77 69 74 68 20 70 65 72 73 69 73 74 65 6e 74   with persistent
67b0: 20 6a 6f 75 72 6e 61 6c 73 20 6f 6e 20 61 20 53   journals on a S
67c0: 41 46 45 5f 41 50 50 45 4e 44 20 66 69 6c 65 2d  AFE_APPEND file-
67d0: 73 79 73 74 65 6d 2e 0a 23 20 7d 20 2d 69 6e 69  system..# } -ini
67e0: 74 69 61 6c 69 7a 65 20 7b 0a 23 20 20 20 72 65  tialize {.#   re
67f0: 6e 61 6d 65 20 63 72 61 73 68 73 71 6c 20 73 61  name crashsql sa
6800: 5f 63 72 61 73 68 73 71 6c 0a 23 20 20 20 70 72  _crashsql.#   pr
6810: 6f 63 20 63 72 61 73 68 73 71 6c 20 7b 61 72 67  oc crashsql {arg
6820: 73 7d 20 7b 0a 23 20 20 20 20 20 73 65 74 20 6f  s} {.#     set o
6830: 70 74 69 6f 6e 73 20 5b 6c 72 61 6e 67 65 20 24  ptions [lrange $
6840: 61 72 67 73 20 30 20 5b 65 78 70 72 20 7b 5b 6c  args 0 [expr {[l
6850: 6c 65 6e 67 74 68 20 24 61 72 67 73 5d 2d 32 7d  length $args]-2}
6860: 5d 5d 0a 23 20 20 20 20 20 6c 61 70 70 65 6e 64  ]].#     lappend
6870: 20 6f 70 74 69 6f 6e 73 20 2d 63 68 61 72 20 73   options -char s
6880: 61 66 65 5f 61 70 70 65 6e 64 0a 23 20 20 20 20  afe_append.#    
6890: 20 73 65 74 20 73 71 6c 20 5b 6c 69 6e 64 65 78   set sql [lindex
68a0: 20 24 61 72 67 73 20 65 6e 64 5d 0a 23 20 20 20   $args end].#   
68b0: 20 20 6c 61 70 70 65 6e 64 20 6f 70 74 69 6f 6e    lappend option
68c0: 73 20 22 0a 23 20 20 20 20 20 20 20 50 52 41 47  s ".#       PRAG
68d0: 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3d  MA journal_mode=
68e0: 70 65 72 73 69 73 74 65 6e 74 3b 0a 23 20 20 20  persistent;.#   
68f0: 20 20 20 20 24 73 71 6c 0a 23 20 20 20 20 20 22      $sql.#     "
6900: 0a 23 20 20 20 20 20 73 65 74 20 66 64 20 5b 6f  .#     set fd [o
6910: 70 65 6e 20 74 65 73 74 2e 64 62 2d 6a 6f 75 72  pen test.db-jour
6920: 6e 61 6c 20 77 5d 0a 23 20 20 20 20 20 70 75 74  nal w].#     put
6930: 73 20 24 66 64 20 5b 73 74 72 69 6e 67 20 72 65  s $fd [string re
6940: 70 65 61 74 20 31 32 33 34 35 36 37 38 39 30 20  peat 1234567890 
6950: 31 30 30 30 30 30 5d 0a 23 20 20 20 20 20 63 6c  100000].#     cl
6960: 6f 73 65 20 24 66 64 0a 23 20 20 20 20 20 65 76  ose $fd.#     ev
6970: 61 6c 20 73 61 5f 63 72 61 73 68 73 71 6c 20 24  al sa_crashsql $
6980: 6f 70 74 69 6f 6e 73 0a 23 20 20 20 7d 0a 23 20  options.#   }.# 
6990: 7d 20 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 23 20  } -shutdown {.# 
69a0: 20 20 72 65 6e 61 6d 65 20 63 72 61 73 68 73 71    rename crashsq
69b0: 6c 20 7b 7d 0a 23 20 20 20 72 65 6e 61 6d 65 20  l {}.#   rename 
69c0: 73 61 5f 63 72 61 73 68 73 71 6c 20 63 72 61 73  sa_crashsql cras
69d0: 68 73 71 6c 0a 23 20 7d 20 2d 66 69 6c 65 73 20  hsql.# } -files 
69e0: 63 72 61 73 68 2e 74 65 73 74 0a 0a 74 65 73 74  crash.test..test
69f0: 5f 73 75 69 74 65 20 22 73 61 66 65 5f 61 70 70  _suite "safe_app
6a00: 65 6e 64 22 20 2d 64 65 73 63 72 69 70 74 69 6f  end" -descriptio
6a10: 6e 20 7b 0a 20 20 52 75 6e 20 73 6f 6d 65 20 74  n {.  Run some t
6a20: 65 73 74 73 20 6f 6e 20 61 20 53 41 46 45 5f 41  ests on a SAFE_A
6a30: 50 50 45 4e 44 20 66 69 6c 65 2d 73 79 73 74 65  PPEND file-syste
6a40: 6d 2e 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  m..} -initialize
6a50: 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73 71 6c 69   {.  rename sqli
6a60: 74 65 33 20 73 71 6c 69 74 65 33 5f 73 61 66 65  te3 sqlite3_safe
6a70: 61 70 70 65 6e 64 0a 20 20 70 72 6f 63 20 73 71  append.  proc sq
6a80: 6c 69 74 65 33 20 7b 61 72 67 73 7d 20 7b 0a 20  lite3 {args} {. 
6a90: 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 72     if {[string r
6aa0: 61 6e 67 65 20 5b 6c 69 6e 64 65 78 20 24 61 72  ange [lindex $ar
6ab0: 67 73 20 30 5d 20 30 20 30 5d 20 6e 65 20 22 2d  gs 0] 0 0] ne "-
6ac0: 22 7d 20 7b 0a 20 20 20 20 20 20 6c 61 70 70 65  "} {.      lappe
6ad0: 6e 64 20 61 72 67 73 20 2d 76 66 73 20 64 65 76  nd args -vfs dev
6ae0: 73 79 6d 0a 20 20 20 20 7d 0a 20 20 20 20 75 70  sym.    }.    up
6af0: 6c 65 76 65 6c 20 5b 63 6f 6e 63 61 74 20 73 71  level [concat sq
6b00: 6c 69 74 65 33 5f 73 61 66 65 61 70 70 65 6e 64  lite3_safeappend
6b10: 20 24 61 72 67 73 5d 0a 20 20 7d 0a 20 20 73 71   $args].  }.  sq
6b20: 6c 69 74 65 33 5f 73 69 6d 75 6c 61 74 65 5f 64  lite3_simulate_d
6b30: 65 76 69 63 65 20 2d 63 68 61 72 20 73 61 66 65  evice -char safe
6b40: 5f 61 70 70 65 6e 64 0a 7d 20 2d 73 68 75 74 64  _append.} -shutd
6b50: 6f 77 6e 20 7b 0a 20 20 72 65 6e 61 6d 65 20 73  own {.  rename s
6b60: 71 6c 69 74 65 33 20 7b 7d 0a 20 20 72 65 6e 61  qlite3 {}.  rena
6b70: 6d 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  me sqlite3_shutd
6b80: 6f 77 6e 20 73 71 6c 69 74 65 33 0a 7d 20 2d 66  own sqlite3.} -f
6b90: 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65  iles [.  test_se
6ba0: 74 20 24 3a 3a 61 6c 6c 71 75 69 63 6b 74 65 73  t $::allquicktes
6bb0: 74 73 20 73 68 61 72 65 64 5f 65 72 72 2e 74 65  ts shared_err.te
6bc0: 73 74 20 2d 65 78 63 6c 75 64 65 20 61 73 79 6e  st -exclude asyn
6bd0: 63 33 2e 74 65 73 74 0a 5d 0a 0a 23 20 54 68 65  c3.test.]..# The
6be0: 20 73 65 74 20 6f 66 20 74 65 73 74 73 20 74 6f   set of tests to
6bf0: 20 72 75 6e 20 6f 6e 20 74 68 65 20 61 6c 74 65   run on the alte
6c00: 72 6e 61 74 69 76 65 2d 70 63 61 63 68 65 0a 73  rnative-pcache.s
6c10: 65 74 20 70 65 72 6d 2d 61 6c 74 2d 70 63 61 63  et perm-alt-pcac
6c20: 68 65 2d 74 65 73 74 73 65 74 20 7b 0a 20 20 61  he-testset {.  a
6c30: 73 79 6e 63 2e 74 65 73 74 0a 20 20 61 74 74 61  sync.test.  atta
6c40: 63 68 2e 74 65 73 74 0a 20 20 64 65 6c 65 74 65  ch.test.  delete
6c50: 2e 74 65 73 74 20 64 65 6c 65 74 65 32 2e 74 65  .test delete2.te
6c60: 73 74 0a 20 20 69 6e 64 65 78 2e 74 65 73 74 0a  st.  index.test.
6c70: 20 20 69 6e 73 65 72 74 2e 74 65 73 74 20 69 6e    insert.test in
6c80: 73 65 72 74 32 2e 74 65 73 74 0a 20 20 6a 6f 69  sert2.test.  joi
6c90: 6e 2e 74 65 73 74 20 6a 6f 69 6e 32 2e 74 65 73  n.test join2.tes
6ca0: 74 0a 20 20 72 6f 6c 6c 62 61 63 6b 2e 74 65 73  t.  rollback.tes
6cb0: 74 0a 20 20 73 65 6c 65 63 74 31 2e 74 65 73 74  t.  select1.test
6cc0: 20 73 65 6c 65 63 74 32 2e 74 65 73 74 0a 20 20   select2.test.  
6cd0: 74 72 61 6e 73 2e 74 65 73 74 0a 20 20 75 70 64  trans.test.  upd
6ce0: 61 74 65 2e 74 65 73 74 0a 7d 0a 0a 66 6f 72 65  ate.test.}..fore
6cf0: 61 63 68 20 64 69 73 63 61 72 64 5f 72 61 74 65  ach discard_rate
6d00: 20 7b 30 20 31 30 20 35 30 20 39 30 20 31 30 30   {0 10 50 90 100
6d10: 7d 20 7b 0a 20 20 74 65 73 74 5f 73 75 69 74 65  } {.  test_suite
6d20: 20 22 70 63 61 63 68 65 24 7b 64 69 73 63 61 72   "pcache${discar
6d30: 64 5f 72 61 74 65 7d 22 20 2d 64 65 73 63 72 69  d_rate}" -descri
6d40: 70 74 69 6f 6e 20 22 0a 20 20 20 20 41 6c 74 65  ption ".    Alte
6d50: 72 6e 61 74 69 76 65 20 70 63 61 63 68 65 20 69  rnative pcache i
6d60: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 69  mplementation wi
6d70: 74 68 20 24 7b 64 69 73 63 61 72 64 5f 72 61 74  th ${discard_rat
6d80: 65 7d 25 20 72 61 6e 64 6f 6d 20 64 69 73 63 61  e}% random disca
6d90: 72 64 0a 20 20 22 20 2d 69 6e 69 74 69 61 6c 69  rd.  " -initiali
6da0: 7a 65 20 22 0a 20 20 20 20 63 61 74 63 68 20 7b  ze ".    catch {
6db0: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71  db close}.    sq
6dc0: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
6dd0: 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69     sqlite3_confi
6de0: 67 5f 61 6c 74 5f 70 63 61 63 68 65 20 31 20 24  g_alt_pcache 1 $
6df0: 64 69 73 63 61 72 64 5f 72 61 74 65 20 31 0a 20  discard_rate 1. 
6e00: 20 20 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69     sqlite3_initi
6e10: 61 6c 69 7a 65 0a 20 20 20 20 61 75 74 6f 69 6e  alize.    autoin
6e20: 73 74 61 6c 6c 5f 74 65 73 74 5f 66 75 6e 63 74  stall_test_funct
6e30: 69 6f 6e 73 0a 20 20 22 20 2d 73 68 75 74 64 6f  ions.  " -shutdo
6e40: 77 6e 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b  wn {.    catch {
6e50: 64 62 20 63 6c 6f 73 65 7d 0a 20 20 20 20 73 71  db close}.    sq
6e60: 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 0a 20  lite3_shutdown. 
6e70: 20 20 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69     sqlite3_confi
6e80: 67 5f 61 6c 74 5f 70 63 61 63 68 65 20 30 20 30  g_alt_pcache 0 0
6e90: 20 30 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 63   0.    sqlite3_c
6ea0: 6f 6e 66 69 67 5f 6c 6f 6f 6b 61 73 69 64 65 20  onfig_lookaside 
6eb0: 31 30 30 20 35 30 30 0a 20 20 20 20 69 6e 73 74  100 500.    inst
6ec0: 61 6c 6c 5f 6d 61 6c 6c 6f 63 5f 66 61 75 6c 74  all_malloc_fault
6ed0: 73 69 6d 20 31 20 0a 20 20 20 20 73 71 6c 69 74  sim 1 .    sqlit
6ee0: 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 0a 20 20  e3_initialize.  
6ef0: 20 20 61 75 74 6f 69 6e 73 74 61 6c 6c 5f 74 65    autoinstall_te
6f00: 73 74 5f 66 75 6e 63 74 69 6f 6e 73 0a 20 20 7d  st_functions.  }
6f10: 20 2d 66 69 6c 65 73 20 24 7b 70 65 72 6d 2d 61   -files ${perm-a
6f20: 6c 74 2d 70 63 61 63 68 65 2d 74 65 73 74 73 65  lt-pcache-testse
6f30: 74 7d 0a 7d 0a 0a 74 65 73 74 5f 73 75 69 74 65  t}.}..test_suite
6f40: 20 22 6a 6f 75 72 6e 61 6c 74 65 73 74 22 20 2d   "journaltest" -
6f50: 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20  description {.  
6f60: 43 68 65 63 6b 20 74 68 61 74 20 70 61 67 65 73  Check that pages
6f70: 20 61 72 65 20 73 79 6e 63 65 64 20 62 65 66 6f   are synced befo
6f80: 72 65 20 62 65 69 6e 67 20 77 72 69 74 74 65 6e  re being written
6f90: 20 28 74 65 73 74 5f 6a 6f 75 72 6e 61 6c 2e 63   (test_journal.c
6fa0: 29 2e 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65  )..} -initialize
6fb0: 20 7b 0a 20 20 63 61 74 63 68 20 7b 64 62 20 63   {.  catch {db c
6fc0: 6c 6f 73 65 7d 0a 20 20 72 65 67 69 73 74 65 72  lose}.  register
6fd0: 5f 6a 74 5f 76 66 73 20 2d 64 65 66 61 75 6c 74  _jt_vfs -default
6fe0: 20 22 22 0a 7d 20 2d 73 68 75 74 64 6f 77 6e 20   "".} -shutdown 
6ff0: 7b 0a 20 20 75 6e 72 65 67 69 73 74 65 72 5f 6a  {.  unregister_j
7000: 74 5f 76 66 73 0a 7d 20 2d 66 69 6c 65 73 20 5b  t_vfs.} -files [
7010: 74 65 73 74 5f 73 65 74 20 24 3a 3a 61 6c 6c 71  test_set $::allq
7020: 75 69 63 6b 74 65 73 74 73 20 2d 65 78 63 6c 75  uicktests -exclu
7030: 64 65 20 7b 0a 20 20 77 61 6c 2a 20 69 6e 63 72  de {.  wal* incr
7040: 76 61 63 75 75 6d 2e 74 65 73 74 20 69 6f 65 72  vacuum.test ioer
7050: 72 2e 74 65 73 74 20 63 6f 72 72 75 70 74 34 2e  r.test corrupt4.
7060: 74 65 73 74 20 69 6f 2e 74 65 73 74 20 63 72 61  test io.test cra
7070: 73 68 38 2e 74 65 73 74 20 0a 20 20 61 73 79 6e  sh8.test .  asyn
7080: 63 34 2e 74 65 73 74 20 62 69 67 66 69 6c 65 2e  c4.test bigfile.
7090: 74 65 73 74 20 62 61 63 6b 63 6f 6d 70 61 74 2e  test backcompat.
70a0: 74 65 73 74 0a 7d 5d 0a 0a 69 66 20 7b 5b 69 6e  test.}]..if {[in
70b0: 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 72 65 67 69  fo commands regi
70c0: 73 74 65 72 5f 64 65 6d 6f 76 66 73 5d 20 21 3d  ster_demovfs] !=
70d0: 20 22 22 7d 20 7b 0a 20 20 74 65 73 74 5f 73 75   ""} {.  test_su
70e0: 69 74 65 20 22 64 65 6d 6f 76 66 73 22 20 2d 64  ite "demovfs" -d
70f0: 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 20  escription {.   
7100: 20 43 68 65 63 6b 20 74 68 61 74 20 74 68 65 20   Check that the 
7110: 64 65 6d 6f 76 66 73 20 28 63 6f 64 65 20 69 6e  demovfs (code in
7120: 20 74 65 73 74 5f 64 65 6d 6f 76 66 73 2e 63 29   test_demovfs.c)
7130: 20 6d 6f 72 65 20 6f 72 20 6c 65 73 73 20 77 6f   more or less wo
7140: 72 6b 73 2e 0a 20 20 7d 20 2d 69 6e 69 74 69 61  rks..  } -initia
7150: 6c 69 7a 65 20 7b 0a 20 20 20 20 72 65 67 69 73  lize {.    regis
7160: 74 65 72 5f 64 65 6d 6f 76 66 73 0a 20 20 7d 20  ter_demovfs.  } 
7170: 2d 73 68 75 74 64 6f 77 6e 20 7b 0a 20 20 20 20  -shutdown {.    
7180: 75 6e 72 65 67 69 73 74 65 72 5f 64 65 6d 6f 76  unregister_demov
7190: 66 73 0a 20 20 7d 20 2d 66 69 6c 65 73 20 7b 0a  fs.  } -files {.
71a0: 20 20 20 20 69 6e 73 65 72 74 2e 74 65 73 74 20      insert.test 
71b0: 20 20 69 6e 73 65 72 74 32 2e 74 65 73 74 20 20    insert2.test  
71c0: 69 6e 73 65 72 74 33 2e 74 65 73 74 20 72 6f 6c  insert3.test rol
71d0: 6c 62 61 63 6b 2e 74 65 73 74 20 0a 20 20 20 20  lback.test .    
71e0: 73 65 6c 65 63 74 31 2e 74 65 73 74 20 20 73 65  select1.test  se
71f0: 6c 65 63 74 32 2e 74 65 73 74 20 20 73 65 6c 65  lect2.test  sele
7200: 63 74 33 2e 74 65 73 74 0a 20 20 7d 0a 7d 0a 0a  ct3.test.  }.}..
7210: 74 65 73 74 5f 73 75 69 74 65 20 22 77 61 6c 22  test_suite "wal"
7220: 20 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a   -description {.
7230: 20 20 52 75 6e 20 74 65 73 74 73 20 77 69 74 68    Run tests with
7240: 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3d 57 41   journal_mode=WA
7250: 4c 0a 7d 20 2d 69 6e 69 74 69 61 6c 69 7a 65 20  L.} -initialize 
7260: 7b 0a 20 20 73 65 74 20 3a 3a 47 28 73 61 76 65  {.  set ::G(save
7270: 70 6f 69 6e 74 36 5f 69 74 65 72 61 74 69 6f 6e  point6_iteration
7280: 73 29 20 31 30 30 0a 7d 20 2d 73 68 75 74 64 6f  s) 100.} -shutdo
7290: 77 6e 20 7b 0a 20 20 75 6e 73 65 74 20 2d 6e 6f  wn {.  unset -no
72a0: 63 6f 6d 70 6c 61 69 6e 20 3a 3a 47 28 73 61 76  complain ::G(sav
72b0: 65 70 6f 69 6e 74 36 5f 69 74 65 72 61 74 69 6f  epoint6_iteratio
72c0: 6e 73 29 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  ns).} -files {. 
72d0: 20 73 61 76 65 70 6f 69 6e 74 2e 74 65 73 74 20   savepoint.test 
72e0: 20 20 20 20 73 61 76 65 70 6f 69 6e 74 32 2e 74      savepoint2.t
72f0: 65 73 74 20 20 20 20 20 73 61 76 65 70 6f 69 6e  est     savepoin
7300: 74 36 2e 74 65 73 74 0a 20 20 74 72 61 6e 73 2e  t6.test.  trans.
7310: 74 65 73 74 20 20 20 20 20 20 20 20 20 61 76 74  test         avt
7320: 72 61 6e 73 2e 74 65 73 74 0a 0a 20 20 66 74 73  rans.test..  fts
7330: 33 61 61 2e 74 65 73 74 20 20 66 74 73 33 61 62  3aa.test  fts3ab
7340: 2e 74 65 73 74 20 20 66 74 73 33 61 63 2e 74 65  .test  fts3ac.te
7350: 73 74 20 20 66 74 73 33 61 64 2e 74 65 73 74 0a  st  fts3ad.test.
7360: 20 20 66 74 73 33 61 65 2e 74 65 73 74 20 20 66    fts3ae.test  f
7370: 74 73 33 61 66 2e 74 65 73 74 20 20 66 74 73 33  ts3af.test  fts3
7380: 61 67 2e 74 65 73 74 20 20 66 74 73 33 61 68 2e  ag.test  fts3ah.
7390: 74 65 73 74 0a 20 20 66 74 73 33 61 69 2e 74 65  test.  fts3ai.te
73a0: 73 74 20 20 66 74 73 33 61 6a 2e 74 65 73 74 20  st  fts3aj.test 
73b0: 20 66 74 73 33 61 6b 2e 74 65 73 74 20 20 66 74   fts3ak.test  ft
73c0: 73 33 61 6c 2e 74 65 73 74 0a 20 20 66 74 73 33  s3al.test.  fts3
73d0: 61 6d 2e 74 65 73 74 20 20 66 74 73 33 61 6e 2e  am.test  fts3an.
73e0: 74 65 73 74 20 20 66 74 73 33 61 6f 2e 74 65 73  test  fts3ao.tes
73f0: 74 20 20 66 74 73 33 62 2e 74 65 73 74 0a 20 20  t  fts3b.test.  
7400: 66 74 73 33 63 2e 74 65 73 74 20 20 20 66 74 73  fts3c.test   fts
7410: 33 64 2e 74 65 73 74 20 20 20 66 74 73 33 65 2e  3d.test   fts3e.
7420: 74 65 73 74 20 20 20 66 74 73 33 71 75 65 72 79  test   fts3query
7430: 2e 74 65 73 74 20 0a 7d 0a 0a 74 65 73 74 5f 73  .test .}..test_s
7440: 75 69 74 65 20 22 72 74 72 65 65 22 20 2d 64 65  uite "rtree" -de
7450: 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20 20 41 6c  scription {.  Al
7460: 6c 20 52 2d 74 72 65 65 20 72 65 6c 61 74 65 64  l R-tree related
7470: 20 74 65 73 74 73 2e 20 50 72 6f 76 69 64 65 73   tests. Provides
7480: 20 63 6f 76 65 72 61 67 65 20 6f 66 20 73 6f 75   coverage of sou
7490: 72 63 65 20 66 69 6c 65 20 72 74 72 65 65 2e 63  rce file rtree.c
74a0: 2e 0a 7d 20 2d 66 69 6c 65 73 20 5b 67 6c 6f 62  ..} -files [glob
74b0: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 24 3a 3a   -nocomplain $::
74c0: 74 65 73 74 64 69 72 2f 2e 2e 2f 65 78 74 2f 72  testdir/../ext/r
74d0: 74 72 65 65 2f 2a 2e 74 65 73 74 5d 0a 0a 74 65  tree/*.test]..te
74e0: 73 74 5f 73 75 69 74 65 20 22 6e 6f 5f 6f 70 74  st_suite "no_opt
74f0: 69 6d 69 7a 61 74 69 6f 6e 22 20 2d 64 65 73 63  imization" -desc
7500: 72 69 70 74 69 6f 6e 20 7b 0a 20 20 52 75 6e 20  ription {.  Run 
7510: 74 65 73 74 20 73 63 72 69 70 74 73 20 77 69 74  test scripts wit
7520: 68 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20  h optimizations 
7530: 64 69 73 61 62 6c 65 64 20 75 73 69 6e 67 20 74  disabled using t
7540: 68 65 0a 20 20 73 71 6c 69 74 65 33 5f 74 65 73  he.  sqlite3_tes
7550: 74 5f 63 6f 6e 74 72 6f 6c 28 53 51 4c 49 54 45  t_control(SQLITE
7560: 5f 54 45 53 54 43 54 52 4c 5f 4f 50 54 49 4d 49  _TESTCTRL_OPTIMI
7570: 5a 41 54 49 4f 4e 53 29 20 69 6e 74 65 72 66 61  ZATIONS) interfa
7580: 63 65 2e 0a 7d 20 2d 66 69 6c 65 73 20 7b 0a 20  ce..} -files {. 
7590: 20 77 68 65 72 65 2e 74 65 73 74 20 77 68 65 72   where.test wher
75a0: 65 32 2e 74 65 73 74 20 77 68 65 72 65 33 2e 74  e2.test where3.t
75b0: 65 73 74 20 77 68 65 72 65 34 2e 74 65 73 74 20  est where4.test 
75c0: 77 68 65 72 65 35 2e 74 65 73 74 0a 20 20 77 68  where5.test.  wh
75d0: 65 72 65 36 2e 74 65 73 74 20 77 68 65 72 65 37  ere6.test where7
75e0: 2e 74 65 73 74 20 77 68 65 72 65 38 2e 74 65 73  .test where8.tes
75f0: 74 20 77 68 65 72 65 39 2e 74 65 73 74 0a 20 20  t where9.test.  
7600: 77 68 65 72 65 41 2e 74 65 73 74 20 77 68 65 72  whereA.test wher
7610: 65 42 2e 74 65 73 74 20 77 68 65 72 65 6c 69 6d  eB.test wherelim
7620: 69 74 2e 74 65 73 74 0a 20 20 73 65 6c 65 63 74  it.test.  select
7630: 31 2e 74 65 73 74 20 73 65 6c 65 63 74 32 2e 74  1.test select2.t
7640: 65 73 74 20 73 65 6c 65 63 74 33 2e 74 65 73 74  est select3.test
7650: 20 73 65 6c 65 63 74 34 2e 74 65 73 74 20 73 65   select4.test se
7660: 6c 65 63 74 35 2e 74 65 73 74 0a 20 20 73 65 6c  lect5.test.  sel
7670: 65 63 74 37 2e 74 65 73 74 20 73 65 6c 65 63 74  ect7.test select
7680: 38 2e 74 65 73 74 20 73 65 6c 65 63 74 41 2e 74  8.test selectA.t
7690: 65 73 74 20 73 65 6c 65 63 74 43 2e 74 65 73 74  est selectC.test
76a0: 0a 7d 20 2d 64 62 63 6f 6e 66 69 67 20 7b 0a 20  .} -dbconfig {. 
76b0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 5f 63 6f   optimization_co
76c0: 6e 74 72 6f 6c 20 24 3a 3a 64 62 68 61 6e 64 6c  ntrol $::dbhandl
76d0: 65 20 61 6c 6c 20 30 0a 7d 0a 0a 74 65 73 74 5f  e all 0.}..test_
76e0: 73 75 69 74 65 20 22 70 72 65 70 61 72 65 22 20  suite "prepare" 
76f0: 2d 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 0a 20  -description {. 
7700: 20 52 75 6e 20 74 65 73 74 73 20 77 69 74 68 20   Run tests with 
7710: 74 68 65 20 64 62 20 63 6f 6e 6e 65 63 74 69 6f  the db connectio
7720: 6e 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f  n using sqlite3_
7730: 70 72 65 70 61 72 65 28 29 20 69 6e 73 74 65 61  prepare() instea
7740: 64 20 6f 66 20 5f 76 32 28 29 2e 0a 7d 20 2d 64  d of _v2()..} -d
7750: 62 63 6f 6e 66 69 67 20 7b 0a 20 20 64 62 5f 75  bconfig {.  db_u
7760: 73 65 5f 6c 65 67 61 63 79 5f 70 72 65 70 61 72  se_legacy_prepar
7770: 65 20 24 3a 3a 64 62 68 61 6e 64 6c 65 20 31 0a  e $::dbhandle 1.
7780: 20 20 23 24 3a 3a 64 62 68 61 6e 64 6c 65 20 63    #$::dbhandle c
7790: 61 63 68 65 20 73 69 7a 65 20 30 0a 7d 20 2d 66  ache size 0.} -f
77a0: 69 6c 65 73 20 5b 0a 20 20 74 65 73 74 5f 73 65  iles [.  test_se
77b0: 74 20 24 61 6c 6c 71 75 69 63 6b 74 65 73 74 73  t $allquicktests
77c0: 20 2d 65 78 63 6c 75 64 65 20 2a 6d 61 6c 6c 6f   -exclude *mallo
77d0: 63 2a 20 2a 69 6f 65 72 72 2a 20 2a 66 61 75 6c  c* *ioerr* *faul
77e0: 74 2a 0a 5d 0a 0a 23 20 45 6e 64 20 6f 66 20 74  t*.]..# End of t
77f0: 65 73 74 73 0a 23 23 23 23 23 23 23 23 23 23 23  ests.###########
7800: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7810: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7820: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7830: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
7840: 23 23 0a 0a 23 20 72 75 6e 5f 74 65 73 74 73 20  ##..# run_tests 
7850: 4e 41 4d 45 20 4f 50 54 49 4f 4e 53 0a 23 0a 23  NAME OPTIONS.#.#
7860: 20 77 68 65 72 65 20 61 76 61 69 6c 61 62 6c 65   where available
7870: 20 6f 70 74 69 6f 6e 73 20 61 72 65 3a 20 20 0a   options are:  .
7880: 23 0a 23 20 20 20 20 20 20 20 2d 64 65 73 63 72  #.#       -descr
7890: 69 70 74 69 6f 6e 20 54 49 54 4c 45 0a 23 20 20  iption TITLE.#  
78a0: 20 20 20 20 20 2d 69 6e 69 74 69 61 6c 69 7a 65       -initialize
78b0: 20 20 53 43 52 49 50 54 0a 23 20 20 20 20 20 20    SCRIPT.#      
78c0: 20 2d 73 68 75 74 64 6f 77 6e 20 20 20 20 53 43   -shutdown    SC
78d0: 52 49 50 54 0a 23 20 20 20 20 20 20 20 2d 70 72  RIPT.#       -pr
78e0: 65 73 71 6c 20 20 20 20 20 20 53 51 4c 0a 23 20  esql      SQL.# 
78f0: 20 20 20 20 20 20 2d 66 69 6c 65 73 20 20 20 20        -files    
7900: 20 20 20 4c 49 53 54 2d 4f 46 2d 46 49 4c 45 53     LIST-OF-FILES
7910: 0a 23 20 20 20 20 20 20 20 2d 70 72 65 66 69 78  .#       -prefix
7920: 20 20 20 20 20 20 4e 41 4d 45 0a 23 0a 70 72 6f        NAME.#.pro
7930: 63 20 72 75 6e 5f 74 65 73 74 73 20 7b 6e 61 6d  c run_tests {nam
7940: 65 20 61 72 67 73 7d 20 7b 0a 20 20 61 72 72 61  e args} {.  arra
7950: 79 20 73 65 74 20 6f 70 74 69 6f 6e 73 20 24 61  y set options $a
7960: 72 67 73 0a 0a 20 20 73 65 74 20 3a 3a 47 28 70  rgs..  set ::G(p
7970: 65 72 6d 3a 6e 61 6d 65 29 20 20 20 20 20 20 20  erm:name)       
7980: 20 20 24 6e 61 6d 65 0a 20 20 73 65 74 20 3a 3a    $name.  set ::
7990: 47 28 70 65 72 6d 3a 70 72 65 66 69 78 29 20 20  G(perm:prefix)  
79a0: 20 20 20 20 20 24 6f 70 74 69 6f 6e 73 28 2d 70       $options(-p
79b0: 72 65 66 69 78 29 0a 20 20 73 65 74 20 3a 3a 47  refix).  set ::G
79c0: 28 70 65 72 6d 3a 70 72 65 73 71 6c 29 20 20 20  (perm:presql)   
79d0: 20 20 20 20 24 6f 70 74 69 6f 6e 73 28 2d 70 72      $options(-pr
79e0: 65 73 71 6c 29 0a 20 20 73 65 74 20 3a 3a 47 28  esql).  set ::G(
79f0: 69 73 71 75 69 63 6b 29 20 20 20 20 20 20 20 20  isquick)        
7a00: 20 20 20 31 0a 20 20 73 65 74 20 3a 3a 47 28 70     1.  set ::G(p
7a10: 65 72 6d 3a 64 62 63 6f 6e 66 69 67 29 20 20 20  erm:dbconfig)   
7a20: 20 20 24 6f 70 74 69 6f 6e 73 28 2d 64 62 63 6f    $options(-dbco
7a30: 6e 66 69 67 29 0a 0a 20 20 75 70 6c 65 76 65 6c  nfig)..  uplevel
7a40: 20 24 6f 70 74 69 6f 6e 73 28 2d 69 6e 69 74 69   $options(-initi
7a50: 61 6c 69 7a 65 29 0a 0a 20 20 66 6f 72 65 61 63  alize)..  foreac
7a60: 68 20 66 69 6c 65 20 5b 6c 73 6f 72 74 20 24 6f  h file [lsort $o
7a70: 70 74 69 6f 6e 73 28 2d 66 69 6c 65 73 29 5d 20  ptions(-files)] 
7a80: 7b 0a 20 20 20 20 69 66 20 7b 5b 66 69 6c 65 20  {.    if {[file 
7a90: 74 61 69 6c 20 24 66 69 6c 65 5d 20 3d 3d 20 24  tail $file] == $
7aa0: 66 69 6c 65 7d 20 7b 20 73 65 74 20 66 69 6c 65  file} { set file
7ab0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 3a 3a 74   [file join $::t
7ac0: 65 73 74 64 69 72 20 24 66 69 6c 65 5d 20 7d 0a  estdir $file] }.
7ad0: 20 20 20 20 73 6c 61 76 65 5f 74 65 73 74 5f 66      slave_test_f
7ae0: 69 6c 65 20 24 66 69 6c 65 0a 20 20 7d 0a 0a 20  ile $file.  }.. 
7af0: 20 75 70 6c 65 76 65 6c 20 24 6f 70 74 69 6f 6e   uplevel $option
7b00: 73 28 2d 73 68 75 74 64 6f 77 6e 29 0a 0a 20 20  s(-shutdown)..  
7b10: 75 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 6e  unset ::G(perm:n
7b20: 61 6d 65 29 0a 20 20 75 6e 73 65 74 20 3a 3a 47  ame).  unset ::G
7b30: 28 70 65 72 6d 3a 70 72 65 66 69 78 29 0a 20 20  (perm:prefix).  
7b40: 75 6e 73 65 74 20 3a 3a 47 28 70 65 72 6d 3a 70  unset ::G(perm:p
7b50: 72 65 73 71 6c 29 0a 20 20 75 6e 73 65 74 20 3a  resql).  unset :
7b60: 3a 47 28 70 65 72 6d 3a 64 62 63 6f 6e 66 69 67  :G(perm:dbconfig
7b70: 29 0a 7d 0a 0a 70 72 6f 63 20 72 75 6e 5f 74 65  ).}..proc run_te
7b80: 73 74 5f 73 75 69 74 65 20 7b 6e 61 6d 65 7d 20  st_suite {name} 
7b90: 7b 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78  {.  if {[info ex
7ba0: 69 73 74 73 20 3a 3a 74 65 73 74 73 70 65 63 28  ists ::testspec(
7bb0: 24 6e 61 6d 65 29 5d 3d 3d 30 7d 20 7b 0a 20 20  $name)]==0} {.  
7bc0: 20 20 65 72 72 6f 72 20 22 4e 6f 20 73 75 63 68    error "No such
7bd0: 20 74 65 73 74 20 73 75 69 74 65 3a 20 24 6e 61   test suite: $na
7be0: 6d 65 22 0a 20 20 7d 0a 20 20 75 70 6c 65 76 65  me".  }.  upleve
7bf0: 6c 20 72 75 6e 5f 74 65 73 74 73 20 24 6e 61 6d  l run_tests $nam
7c00: 65 20 24 3a 3a 74 65 73 74 73 70 65 63 28 24 6e  e $::testspec($n
7c10: 61 6d 65 29 0a 7d 0a 0a 70 72 6f 63 20 68 65 6c  ame).}..proc hel
7c20: 70 20 7b 7d 20 7b 0a 20 20 70 75 74 73 20 22 55  p {} {.  puts "U
7c30: 73 61 67 65 3a 20 24 3a 3a 61 72 67 76 30 20 54  sage: $::argv0 T
7c40: 45 53 54 53 55 49 54 45 20 3f 54 45 53 54 46 49  ESTSUITE ?TESTFI
7c50: 4c 45 3f 22 0a 20 20 70 75 74 73 20 22 22 0a 20  LE?".  puts "". 
7c60: 20 70 75 74 73 20 22 41 76 61 69 6c 61 62 6c 65   puts "Available
7c70: 20 74 65 73 74 2d 73 75 69 74 65 73 20 61 72 65   test-suites are
7c80: 3a 22 0a 20 20 66 6f 72 65 61 63 68 20 6b 20 24  :".  foreach k $
7c90: 3a 3a 74 65 73 74 73 75 69 74 65 6c 69 73 74 20  ::testsuitelist 
7ca0: 7b 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20  {.    if {[info 
7cb0: 65 78 69 73 74 73 20 3a 3a 74 65 73 74 73 70 65  exists ::testspe
7cc0: 63 28 24 6b 29 5d 3d 3d 30 7d 20 7b 0a 20 20 20  c($k)]==0} {.   
7cd0: 20 20 20 70 75 74 73 20 22 20 20 20 20 20 20 20     puts "       
7ce0: 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    --------------
7cf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7d00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 0a 20 20 20 20  ----------".    
7d10: 20 20 70 75 74 73 20 22 22 0a 20 20 20 20 7d 20    puts "".    } 
7d20: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 61 72 72  else {.      arr
7d30: 61 79 20 73 65 74 20 6f 20 24 3a 3a 74 65 73 74  ay set o $::test
7d40: 73 70 65 63 28 24 6b 29 0a 20 20 20 20 20 20 70  spec($k).      p
7d50: 75 74 73 20 22 54 65 73 74 20 73 75 69 74 65 3a  uts "Test suite:
7d60: 20 5c 22 24 6b 5c 22 22 0a 20 20 20 20 20 20 73   \"$k\"".      s
7d70: 65 74 20 64 20 5b 73 74 72 69 6e 67 20 74 72 69  et d [string tri
7d80: 6d 20 24 6f 28 2d 64 65 73 63 72 69 70 74 69 6f  m $o(-descriptio
7d90: 6e 29 5d 0a 20 20 20 20 20 20 73 65 74 20 64 20  n)].      set d 
7da0: 5b 72 65 67 73 75 62 20 7b 5c 6e 20 2a 7d 20 24  [regsub {\n *} $
7db0: 64 20 22 5c 6e 20 20 22 5d 0a 20 20 20 20 20 20  d "\n  "].      
7dc0: 70 75 74 73 20 22 20 20 24 64 22 0a 20 20 20 20  puts "  $d".    
7dd0: 20 20 70 75 74 73 20 22 22 0a 20 20 20 20 7d 0a    puts "".    }.
7de0: 20 20 7d 0a 20 20 65 78 69 74 20 2d 31 0a 7d 0a    }.  exit -1.}.
7df0: 0a 69 66 20 7b 5b 69 6e 66 6f 20 73 63 72 69 70  .if {[info scrip
7e00: 74 5d 20 3d 3d 20 24 61 72 67 76 30 7d 20 7b 0a  t] == $argv0} {.
7e10: 20 20 70 72 6f 63 20 6d 61 69 6e 20 7b 61 72 67    proc main {arg
7e20: 76 7d 20 7b 0a 20 20 20 20 69 66 20 7b 5b 6c 6c  v} {.    if {[ll
7e30: 65 6e 67 74 68 20 24 61 72 67 76 5d 3d 3d 30 7d  ength $argv]==0}
7e40: 20 7b 0a 20 20 20 20 20 20 68 65 6c 70 0a 20 20   {.      help.  
7e50: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
7e60: 20 73 65 74 20 73 75 69 74 65 20 5b 6c 69 6e 64   set suite [lind
7e70: 65 78 20 24 61 72 67 76 20 30 5d 0a 20 20 20 20  ex $argv 0].    
7e80: 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73    if {[info exis
7e90: 74 73 20 3a 3a 74 65 73 74 73 70 65 63 28 24 73  ts ::testspec($s
7ea0: 75 69 74 65 29 5d 3d 3d 30 7d 20 68 65 6c 70 0a  uite)]==0} help.
7eb0: 20 20 20 20 20 20 73 65 74 20 65 78 74 72 61 20        set extra 
7ec0: 22 22 0a 20 20 20 20 20 20 69 66 20 7b 5b 6c 6c  "".      if {[ll
7ed0: 65 6e 67 74 68 20 24 61 72 67 76 5d 3e 31 7d 20  ength $argv]>1} 
7ee0: 7b 20 73 65 74 20 65 78 74 72 61 20 5b 6c 69 73  { set extra [lis
7ef0: 74 20 2d 66 69 6c 65 73 20 5b 6c 72 61 6e 67 65  t -files [lrange
7f00: 20 24 61 72 67 76 20 31 20 65 6e 64 5d 5d 20 7d   $argv 1 end]] }
7f10: 0a 20 20 20 20 20 20 65 76 61 6c 20 72 75 6e 5f  .      eval run_
7f20: 74 65 73 74 73 20 24 73 75 69 74 65 20 24 3a 3a  tests $suite $::
7f30: 74 65 73 74 73 70 65 63 28 24 73 75 69 74 65 29  testspec($suite)
7f40: 20 24 65 78 74 72 61 0a 20 20 20 20 7d 0a 20 20   $extra.    }.  
7f50: 7d 0a 20 20 6d 61 69 6e 20 24 61 72 67 76 0a 20  }.  main $argv. 
7f60: 20 66 69 6e 69 73 68 5f 74 65 73 74 0a 7d 0a      finish_test.}.