SQLite4
Hex Artifact Content
Not logged in

Artifact d0b92a17f7de477253cf76fe7844dac57b115ec7:


0000: 23 20 32 30 31 30 20 4a 75 6c 79 20 32 38 0a 23  # 2010 July 28.#
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 23 20 54 68 65 20 66 6f 63  ****.#.# The foc
0170: 75 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20  us of this file 
0180: 69 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 43  is testing the C
0190: 4c 49 20 73 68 65 6c 6c 20 74 6f 6f 6c 2e 0a 23  LI shell tool..#
01a0: 20 54 68 65 73 65 20 74 65 73 74 73 20 61 72 65   These tests are
01b0: 20 73 70 65 63 69 66 69 63 20 74 6f 20 74 68 65   specific to the
01c0: 20 2e 73 74 61 74 73 20 63 6f 6d 6d 61 6e 64 2e   .stats command.
01d0: 0a 23 0a 23 20 24 49 64 3a 20 73 68 65 6c 6c 34  .#.# $Id: shell4
01e0: 2e 74 65 73 74 2c 76 20 31 2e 37 20 32 30 30 39  .test,v 1.7 2009
01f0: 2f 30 37 2f 31 37 20 31 36 3a 35 34 3a 34 38 20  /07/17 16:54:48 
0200: 73 68 61 6e 65 68 20 45 78 70 20 24 0a 23 0a 0a  shaneh Exp $.#..
0210: 23 20 54 65 73 74 20 70 6c 61 6e 3a 0a 23 0a 23  # Test plan:.#.#
0220: 20 20 20 73 68 65 6c 6c 34 2d 31 2e 2a 3a 20 42     shell4-1.*: B
0230: 61 73 69 63 20 74 65 73 74 73 20 73 70 65 63 69  asic tests speci
0240: 66 69 63 20 74 6f 20 74 68 65 20 22 73 74 61 74  fic to the "stat
0250: 73 22 20 63 6f 6d 6d 61 6e 64 2e 0a 23 0a 73 65  s" command..#.se
0260: 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20  t testdir [file 
0270: 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a  dirname $argv0].
0280: 73 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f  source $testdir/
0290: 74 65 73 74 65 72 2e 74 63 6c 0a 69 66 20 7b 24  tester.tcl.if {$
02a0: 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61  tcl_platform(pla
02b0: 74 66 6f 72 6d 29 3d 3d 22 77 69 6e 64 6f 77 73  tform)=="windows
02c0: 22 7d 20 7b 0a 20 20 73 65 74 20 43 4c 49 20 22  "} {.  set CLI "
02d0: 73 71 6c 69 74 65 34 2e 65 78 65 22 0a 7d 20 65  sqlite4.exe".} e
02e0: 6c 73 65 20 7b 0a 20 20 73 65 74 20 43 4c 49 20  lse {.  set CLI 
02f0: 22 2e 2f 73 71 6c 69 74 65 34 22 0a 7d 0a 69 66  "./sqlite4".}.if
0300: 20 7b 21 5b 66 69 6c 65 20 65 78 65 63 75 74 61   {![file executa
0310: 62 6c 65 20 24 43 4c 49 5d 7d 20 7b 0a 20 20 66  ble $CLI]} {.  f
0320: 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74  inish_test.  ret
0330: 75 72 6e 0a 7d 0a 64 62 20 63 6c 6f 73 65 0a 66  urn.}.db close.f
0340: 6f 72 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e  orcedelete test.
0350: 64 62 20 74 65 73 74 2e 64 62 2d 6a 6f 75 72 6e  db test.db-journ
0360: 61 6c 20 74 65 73 74 2e 64 62 2d 77 61 6c 0a 73  al test.db-wal.s
0370: 71 6c 69 74 65 34 20 64 62 20 74 65 73 74 2e 64  qlite4 db test.d
0380: 62 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  b..#------------
0390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03d0: 0a 23 20 54 65 73 74 20 63 61 73 65 73 20 73 68  .# Test cases sh
03e0: 65 6c 6c 34 2d 31 2e 2a 3a 20 54 65 73 74 73 20  ell4-1.*: Tests 
03f0: 73 70 65 63 69 66 69 63 20 74 6f 20 74 68 65 20  specific to the 
0400: 22 73 74 61 74 73 22 20 63 6f 6d 6d 61 6e 64 2e  "stats" command.
0410: 0a 23 0a 0a 23 20 73 68 6f 75 6c 64 20 64 65 66  .#..# should def
0420: 61 75 6c 74 20 74 6f 20 6f 66 66 0a 64 6f 5f 74  ault to off.do_t
0430: 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 31 2e 31  est shell4-1.1.1
0440: 20 7b 0a 20 20 73 65 74 20 72 65 73 20 5b 63 61   {.  set res [ca
0450: 74 63 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22  tchcmd "test.db"
0460: 20 22 2e 73 68 6f 77 22 5d 0a 20 20 6c 69 73 74   ".show"].  list
0470: 20 5b 72 65 67 65 78 70 20 7b 73 74 61 74 73 3a   [regexp {stats:
0480: 20 6f 66 66 7d 20 24 72 65 73 5d 0a 7d 20 7b 31   off} $res].} {1
0490: 7d 0a 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c  }..do_test shell
04a0: 34 2d 31 2e 31 2e 32 20 7b 0a 20 20 73 65 74 20  4-1.1.2 {.  set 
04b0: 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20 22 74  res [catchcmd "t
04c0: 65 73 74 2e 64 62 22 20 22 2e 73 68 6f 77 22 5d  est.db" ".show"]
04d0: 0a 20 20 6c 69 73 74 20 5b 72 65 67 65 78 70 20  .  list [regexp 
04e0: 7b 73 74 61 74 73 3a 20 6f 6e 7d 20 24 72 65 73  {stats: on} $res
04f0: 5d 0a 7d 20 7b 30 7d 0a 0a 23 20 2d 73 74 61 74  ].} {0}..# -stat
0500: 73 20 73 68 6f 75 6c 64 20 74 75 72 6e 20 69 74  s should turn it
0510: 20 6f 6e 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c   on.do_test shel
0520: 6c 34 2d 31 2e 32 2e 31 20 7b 0a 20 20 73 65 74  l4-1.2.1 {.  set
0530: 20 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20 22   res [catchcmd "
0540: 2d 73 74 61 74 73 20 74 65 73 74 2e 64 62 22 20  -stats test.db" 
0550: 22 2e 73 68 6f 77 22 5d 0a 20 20 6c 69 73 74 20  ".show"].  list 
0560: 5b 72 65 67 65 78 70 20 7b 73 74 61 74 73 3a 20  [regexp {stats: 
0570: 6f 6e 7d 20 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a  on} $res].} {1}.
0580: 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d  .do_test shell4-
0590: 31 2e 32 2e 32 20 7b 0a 20 20 73 65 74 20 72 65  1.2.2 {.  set re
05a0: 73 20 5b 63 61 74 63 68 63 6d 64 20 22 2d 73 74  s [catchcmd "-st
05b0: 61 74 73 20 74 65 73 74 2e 64 62 22 20 22 2e 73  ats test.db" ".s
05c0: 68 6f 77 22 5d 0a 20 20 6c 69 73 74 20 5b 72 65  how"].  list [re
05d0: 67 65 78 70 20 7b 73 74 61 74 73 3a 20 6f 66 66  gexp {stats: off
05e0: 7d 20 24 72 65 73 5d 0a 7d 20 7b 30 7d 0a 0a 23  } $res].} {0}..#
05f0: 20 2e 73 74 61 74 73 20 4f 4e 7c 4f 46 46 20 20   .stats ON|OFF  
0600: 20 20 20 20 20 20 20 20 54 75 72 6e 20 73 74 61          Turn sta
0610: 74 73 20 6f 6e 20 6f 72 20 6f 66 66 0a 64 6f 5f  ts on or off.do_
0620: 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 33 2e  test shell4-1.3.
0630: 31 20 7b 0a 20 20 63 61 74 63 68 63 6d 64 20 22  1 {.  catchcmd "
0640: 74 65 73 74 2e 64 62 22 20 22 2e 73 74 61 74 73  test.db" ".stats
0650: 22 0a 7d 20 7b 31 20 7b 45 72 72 6f 72 3a 20 75  ".} {1 {Error: u
0660: 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 6f  nknown command o
0670: 72 20 69 6e 76 61 6c 69 64 20 61 72 67 75 6d 65  r invalid argume
0680: 6e 74 73 3a 20 20 22 73 74 61 74 73 22 2e 20 45  nts:  "stats". E
0690: 6e 74 65 72 20 22 2e 68 65 6c 70 22 20 66 6f 72  nter ".help" for
06a0: 20 68 65 6c 70 7d 7d 0a 64 6f 5f 74 65 73 74 20   help}}.do_test 
06b0: 73 68 65 6c 6c 34 2d 31 2e 33 2e 32 20 7b 0a 20  shell4-1.3.2 {. 
06c0: 20 63 61 74 63 68 63 6d 64 20 22 74 65 73 74 2e   catchcmd "test.
06d0: 64 62 22 20 22 2e 73 74 61 74 73 20 4f 4e 22 0a  db" ".stats ON".
06e0: 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65 73 74  } {0 {}}.do_test
06f0: 20 73 68 65 6c 6c 34 2d 31 2e 33 2e 33 20 7b 0a   shell4-1.3.3 {.
0700: 20 20 63 61 74 63 68 63 6d 64 20 22 74 65 73 74    catchcmd "test
0710: 2e 64 62 22 20 22 2e 73 74 61 74 73 20 4f 46 46  .db" ".stats OFF
0720: 22 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65  ".} {0 {}}.do_te
0730: 73 74 20 73 68 65 6c 6c 34 2d 31 2e 33 2e 34 20  st shell4-1.3.4 
0740: 7b 0a 20 20 23 20 74 6f 6f 20 6d 61 6e 79 20 61  {.  # too many a
0750: 72 67 75 6d 65 6e 74 73 0a 20 20 63 61 74 63 68  rguments.  catch
0760: 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20 22 2e  cmd "test.db" ".
0770: 73 74 61 74 73 20 4f 46 46 20 42 41 44 22 0a 7d  stats OFF BAD".}
0780: 20 7b 31 20 7b 45 72 72 6f 72 3a 20 75 6e 6b 6e   {1 {Error: unkn
0790: 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 6f 72 20 69  own command or i
07a0: 6e 76 61 6c 69 64 20 61 72 67 75 6d 65 6e 74 73  nvalid arguments
07b0: 3a 20 20 22 73 74 61 74 73 22 2e 20 45 6e 74 65  :  "stats". Ente
07c0: 72 20 22 2e 68 65 6c 70 22 20 66 6f 72 20 68 65  r ".help" for he
07d0: 6c 70 7d 7d 0a 0a 23 20 4e 42 2e 20 77 68 69 74  lp}}..# NB. whit
07e0: 65 73 70 61 63 65 20 69 73 20 69 6d 70 6f 72 74  espace is import
07f0: 61 6e 74 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c  ant.do_test shel
0800: 6c 34 2d 31 2e 34 2e 31 20 7b 0a 20 20 73 65 74  l4-1.4.1 {.  set
0810: 20 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20 22   res [catchcmd "
0820: 74 65 73 74 2e 64 62 22 20 7b 2e 73 68 6f 77 7d  test.db" {.show}
0830: 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67 65 78 70  ].  list [regexp
0840: 20 7b 73 74 61 74 73 3a 20 6f 66 66 7d 20 24 72   {stats: off} $r
0850: 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65  es].} {1}..do_te
0860: 73 74 20 73 68 65 6c 6c 34 2d 31 2e 34 2e 32 20  st shell4-1.4.2 
0870: 7b 0a 20 20 73 65 74 20 72 65 73 20 5b 63 61 74  {.  set res [cat
0880: 63 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20  chcmd "test.db" 
0890: 7b 2e 73 74 61 74 73 20 4f 4e 0a 2e 73 68 6f 77  {.stats ON..show
08a0: 0a 7d 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67 65  .}].  list [rege
08b0: 78 70 20 7b 73 74 61 74 73 3a 20 6f 6e 7d 20 24  xp {stats: on} $
08c0: 72 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74  res].} {1}..do_t
08d0: 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 34 2e 33  est shell4-1.4.3
08e0: 20 7b 0a 20 20 73 65 74 20 72 65 73 20 5b 63 61   {.  set res [ca
08f0: 74 63 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22  tchcmd "test.db"
0900: 20 7b 2e 73 74 61 74 73 20 4f 46 46 0a 2e 73 68   {.stats OFF..sh
0910: 6f 77 0a 7d 5d 0a 20 20 6c 69 73 74 20 5b 72 65  ow.}].  list [re
0920: 67 65 78 70 20 7b 73 74 61 74 73 3a 20 6f 66 66  gexp {stats: off
0930: 7d 20 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 23  } $res].} {1}..#
0940: 20 6d 61 6b 65 20 73 75 72 65 20 73 74 61 74 73   make sure stats
0950: 20 6e 6f 74 20 70 72 65 73 65 6e 74 20 77 68 65   not present whe
0960: 6e 20 6f 66 66 0a 64 6f 5f 74 65 73 74 20 73 68  n off.do_test sh
0970: 65 6c 6c 34 2d 31 2e 35 2e 31 20 7b 0a 20 20 73  ell4-1.5.1 {.  s
0980: 65 74 20 72 65 73 20 5b 63 61 74 63 68 63 6d 64  et res [catchcmd
0990: 20 22 74 65 73 74 2e 64 62 22 20 7b 53 45 4c 45   "test.db" {SELE
09a0: 43 54 20 31 3b 7d 5d 0a 20 20 6c 69 73 74 20 5b  CT 1;}].  list [
09b0: 72 65 67 65 78 70 20 7b 4d 65 6d 6f 72 79 20 55  regexp {Memory U
09c0: 73 65 64 7d 20 24 72 65 73 5d 20 5c 0a 20 20 20  sed} $res] \.   
09d0: 20 20 20 20 5b 72 65 67 65 78 70 20 7b 48 65 61      [regexp {Hea
09e0: 70 20 55 73 61 67 65 7d 20 24 72 65 73 5d 20 5c  p Usage} $res] \
09f0: 0a 20 20 20 20 20 20 20 5b 72 65 67 65 78 70 20  .       [regexp 
0a00: 7b 41 75 74 6f 69 6e 64 65 78 20 49 6e 73 65 72  {Autoindex Inser
0a10: 74 73 7d 20 24 72 65 73 5d 0a 7d 20 7b 30 20 30  ts} $res].} {0 0
0a20: 20 30 7d 0a 0a 23 20 6d 61 6b 65 20 73 75 72 65   0}..# make sure
0a30: 20 73 74 61 74 73 20 61 72 65 20 70 72 65 73 65   stats are prese
0a40: 6e 74 20 77 68 65 6e 20 6f 6e 0a 64 6f 5f 74 65  nt when on.do_te
0a50: 73 74 20 73 68 65 6c 6c 34 2d 31 2e 35 2e 32 20  st shell4-1.5.2 
0a60: 7b 0a 20 20 73 65 74 20 72 65 73 20 5b 63 61 74  {.  set res [cat
0a70: 63 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20  chcmd "test.db" 
0a80: 7b 2e 73 74 61 74 73 20 4f 4e 0a 53 45 4c 45 43  {.stats ON.SELEC
0a90: 54 20 31 3b 0a 7d 5d 0a 20 20 6c 69 73 74 20 5b  T 1;.}].  list [
0aa0: 72 65 67 65 78 70 20 7b 4d 65 6d 6f 72 79 20 55  regexp {Memory U
0ab0: 73 65 64 7d 20 24 72 65 73 5d 20 5c 0a 20 20 20  sed} $res] \.   
0ac0: 20 20 20 20 5b 72 65 67 65 78 70 20 7b 48 65 61      [regexp {Hea
0ad0: 70 20 55 73 61 67 65 7d 20 24 72 65 73 5d 20 5c  p Usage} $res] \
0ae0: 0a 20 20 20 20 20 20 20 5b 72 65 67 65 78 70 20  .       [regexp 
0af0: 7b 41 75 74 6f 69 6e 64 65 78 20 49 6e 73 65 72  {Autoindex Inser
0b00: 74 73 7d 20 24 72 65 73 5d 0a 7d 20 7b 31 20 31  ts} $res].} {1 1
0b10: 20 31 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74   1}..finish_test
0b20: 0a                                               .