Artifact
d0b92a17f7de477253cf76fe7844dac57b115ec7:
- File
test/shell4.test
— part of check-in
[918553d16e]
at
2013-01-18 20:28:19
on branch trunk
— Bring the command-line shell up-to-date with recent changes in SQLite3.
Add test cases for the command-line shell.
(user:
drh
size: 2849)
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 .