/ Hex Artifact Content
Login

Artifact 1c6aef11daaa2d6830acaba3ac9cbec93fbc1c3d5530743a637f39b3987d08ce:


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 32 30 31 35 2d 30 33 2d 31 39 3a  .#.# 2015-03-19:
01e0: 20 20 41 64 64 65 64 20 74 65 73 74 73 20 66 6f    Added tests fo
01f0: 72 20 2e 74 72 61 63 65 0a 0a 23 20 54 65 73 74  r .trace..# Test
0200: 20 70 6c 61 6e 3a 0a 23 0a 23 20 20 20 73 68 65   plan:.#.#   she
0210: 6c 6c 34 2d 31 2e 2a 3a 20 42 61 73 69 63 20 74  ll4-1.*: Basic t
0220: 65 73 74 73 20 73 70 65 63 69 66 69 63 20 74 6f  ests specific to
0230: 20 74 68 65 20 22 73 74 61 74 73 22 20 63 6f 6d   the "stats" com
0240: 6d 61 6e 64 2e 0a 23 20 20 20 73 68 65 6c 6c 34  mand..#   shell4
0250: 2d 32 2e 2a 3a 20 42 61 73 69 63 20 74 65 73 74  -2.*: Basic test
0260: 73 20 66 6f 72 20 22 2e 74 72 61 63 65 22 0a 23  s for ".trace".#
0270: 20 20 20 73 68 65 6c 6c 34 2d 33 2e 2a 3a 20 54     shell4-3.*: T
0280: 68 65 20 22 2e 72 65 61 64 22 20 63 6f 6d 6d 61  he ".read" comma
0290: 6e 64 20 74 61 6b 65 73 20 74 68 65 20 73 68 65  nd takes the she
02a0: 6c 6c 20 6f 75 74 20 6f 66 20 69 6e 74 65 72 61  ll out of intera
02b0: 63 74 69 76 65 20 6d 6f 64 65 0a 23 0a 73 65 74  ctive mode.#.set
02c0: 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64   testdir [file d
02d0: 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73  irname $argv0].s
02e0: 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f 74  ource $testdir/t
02f0: 65 73 74 65 72 2e 74 63 6c 0a 73 65 74 20 43 4c  ester.tcl.set CL
0300: 49 20 5b 74 65 73 74 5f 66 69 6e 64 5f 63 6c 69  I [test_find_cli
0310: 5d 0a 64 62 20 63 6c 6f 73 65 0a 66 6f 72 63 65  ].db close.force
0320: 64 65 6c 65 74 65 20 74 65 73 74 2e 64 62 20 74  delete test.db t
0330: 65 73 74 2e 64 62 2d 6a 6f 75 72 6e 61 6c 20 74  est.db-journal t
0340: 65 73 74 2e 64 62 2d 77 61 6c 0a 73 71 6c 69 74  est.db-wal.sqlit
0350: 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a 0a 23  e3 db test.db..#
0360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
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 0a 23 20 54  ------------.# T
03b0: 65 73 74 20 63 61 73 65 73 20 73 68 65 6c 6c 34  est cases shell4
03c0: 2d 31 2e 2a 3a 20 54 65 73 74 73 20 73 70 65 63  -1.*: Tests spec
03d0: 69 66 69 63 20 74 6f 20 74 68 65 20 22 73 74 61  ific to the "sta
03e0: 74 73 22 20 63 6f 6d 6d 61 6e 64 2e 0a 23 0a 0a  ts" command..#..
03f0: 23 20 73 68 6f 75 6c 64 20 64 65 66 61 75 6c 74  # should default
0400: 20 74 6f 20 6f 66 66 0a 64 6f 5f 74 65 73 74 20   to off.do_test 
0410: 73 68 65 6c 6c 34 2d 31 2e 31 2e 31 20 7b 0a 20  shell4-1.1.1 {. 
0420: 20 73 65 74 20 72 65 73 20 5b 63 61 74 63 68 63   set res [catchc
0430: 6d 64 20 22 74 65 73 74 2e 64 62 22 20 22 2e 73  md "test.db" ".s
0440: 68 6f 77 22 5d 0a 20 20 6c 69 73 74 20 5b 72 65  how"].  list [re
0450: 67 65 78 70 20 7b 73 74 61 74 73 3a 20 6f 66 66  gexp {stats: off
0460: 7d 20 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 64  } $res].} {1}..d
0470: 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e  o_test shell4-1.
0480: 31 2e 32 20 7b 0a 20 20 73 65 74 20 72 65 73 20  1.2 {.  set res 
0490: 5b 63 61 74 63 68 63 6d 64 20 22 74 65 73 74 2e  [catchcmd "test.
04a0: 64 62 22 20 22 2e 73 68 6f 77 22 5d 0a 20 20 6c  db" ".show"].  l
04b0: 69 73 74 20 5b 72 65 67 65 78 70 20 7b 73 74 61  ist [regexp {sta
04c0: 74 73 3a 20 6f 6e 7d 20 24 72 65 73 5d 0a 7d 20  ts: on} $res].} 
04d0: 7b 30 7d 0a 0a 23 20 2d 73 74 61 74 73 20 73 68  {0}..# -stats sh
04e0: 6f 75 6c 64 20 74 75 72 6e 20 69 74 20 6f 6e 0a  ould turn it on.
04f0: 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 31  do_test shell4-1
0500: 2e 32 2e 31 20 7b 0a 20 20 73 65 74 20 72 65 73  .2.1 {.  set res
0510: 20 5b 63 61 74 63 68 63 6d 64 20 22 2d 73 74 61   [catchcmd "-sta
0520: 74 73 20 74 65 73 74 2e 64 62 22 20 22 2e 73 68  ts test.db" ".sh
0530: 6f 77 22 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67  ow"].  list [reg
0540: 65 78 70 20 7b 73 74 61 74 73 3a 20 6f 6e 7d 20  exp {stats: on} 
0550: 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f  $res].} {1}..do_
0560: 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 32 2e  test shell4-1.2.
0570: 32 20 7b 0a 20 20 73 65 74 20 72 65 73 20 5b 63  2 {.  set res [c
0580: 61 74 63 68 63 6d 64 20 22 2d 73 74 61 74 73 20  atchcmd "-stats 
0590: 74 65 73 74 2e 64 62 22 20 22 2e 73 68 6f 77 22  test.db" ".show"
05a0: 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67 65 78 70  ].  list [regexp
05b0: 20 7b 73 74 61 74 73 3a 20 6f 66 66 7d 20 24 72   {stats: off} $r
05c0: 65 73 5d 0a 7d 20 7b 30 7d 0a 0a 23 20 2e 73 74  es].} {0}..# .st
05d0: 61 74 73 20 4f 4e 7c 4f 46 46 20 20 20 20 20 20  ats ON|OFF      
05e0: 20 20 20 20 54 75 72 6e 20 73 74 61 74 73 20 6f      Turn stats o
05f0: 6e 20 6f 72 20 6f 66 66 0a 23 64 6f 5f 74 65 73  n or off.#do_tes
0600: 74 20 73 68 65 6c 6c 34 2d 31 2e 33 2e 31 20 7b  t shell4-1.3.1 {
0610: 0a 23 20 20 63 61 74 63 68 63 6d 64 20 22 74 65  .#  catchcmd "te
0620: 73 74 2e 64 62 22 20 22 2e 73 74 61 74 73 22 0a  st.db" ".stats".
0630: 23 7d 20 7b 31 20 7b 55 73 61 67 65 3a 20 2e 73  #} {1 {Usage: .s
0640: 74 61 74 73 20 6f 6e 7c 6f 66 66 7d 7d 0a 64 6f  tats on|off}}.do
0650: 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 33  _test shell4-1.3
0660: 2e 32 20 7b 0a 20 20 63 61 74 63 68 63 6d 64 20  .2 {.  catchcmd 
0670: 22 74 65 73 74 2e 64 62 22 20 22 2e 73 74 61 74  "test.db" ".stat
0680: 73 20 4f 4e 22 0a 7d 20 7b 30 20 7b 7d 7d 0a 64  s ON".} {0 {}}.d
0690: 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e  o_test shell4-1.
06a0: 33 2e 33 20 7b 0a 20 20 63 61 74 63 68 63 6d 64  3.3 {.  catchcmd
06b0: 20 22 74 65 73 74 2e 64 62 22 20 22 2e 73 74 61   "test.db" ".sta
06c0: 74 73 20 4f 46 46 22 0a 7d 20 7b 30 20 7b 7d 7d  ts OFF".} {0 {}}
06d0: 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d  .do_test shell4-
06e0: 31 2e 33 2e 34 20 7b 0a 20 20 23 20 74 6f 6f 20  1.3.4 {.  # too 
06f0: 6d 61 6e 79 20 61 72 67 75 6d 65 6e 74 73 0a 20  many arguments. 
0700: 20 63 61 74 63 68 63 6d 64 20 22 74 65 73 74 2e   catchcmd "test.
0710: 64 62 22 20 22 2e 73 74 61 74 73 20 4f 46 46 20  db" ".stats OFF 
0720: 42 41 44 22 0a 7d 20 7b 31 20 7b 55 73 61 67 65  BAD".} {1 {Usage
0730: 3a 20 2e 73 74 61 74 73 20 3f 6f 6e 7c 6f 66 66  : .stats ?on|off
0740: 3f 7d 7d 0a 0a 23 20 4e 42 2e 20 77 68 69 74 65  ?}}..# NB. white
0750: 73 70 61 63 65 20 69 73 20 69 6d 70 6f 72 74 61  space is importa
0760: 6e 74 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c  nt.do_test shell
0770: 34 2d 31 2e 34 2e 31 20 7b 0a 20 20 73 65 74 20  4-1.4.1 {.  set 
0780: 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20 22 74  res [catchcmd "t
0790: 65 73 74 2e 64 62 22 20 7b 2e 73 68 6f 77 7d 5d  est.db" {.show}]
07a0: 0a 20 20 6c 69 73 74 20 5b 72 65 67 65 78 70 20  .  list [regexp 
07b0: 7b 73 74 61 74 73 3a 20 6f 66 66 7d 20 24 72 65  {stats: off} $re
07c0: 73 5d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65 73  s].} {1}..do_tes
07d0: 74 20 73 68 65 6c 6c 34 2d 31 2e 34 2e 32 20 7b  t shell4-1.4.2 {
07e0: 0a 20 20 73 65 74 20 72 65 73 20 5b 63 61 74 63  .  set res [catc
07f0: 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20 7b  hcmd "test.db" {
0800: 2e 73 74 61 74 73 20 4f 4e 0a 2e 73 68 6f 77 0a  .stats ON..show.
0810: 7d 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67 65 78  }].  list [regex
0820: 70 20 7b 73 74 61 74 73 3a 20 6f 6e 7d 20 24 72  p {stats: on} $r
0830: 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65  es].} {1}..do_te
0840: 73 74 20 73 68 65 6c 6c 34 2d 31 2e 34 2e 33 20  st shell4-1.4.3 
0850: 7b 0a 20 20 73 65 74 20 72 65 73 20 5b 63 61 74  {.  set res [cat
0860: 63 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20  chcmd "test.db" 
0870: 7b 2e 73 74 61 74 73 20 4f 46 46 0a 2e 73 68 6f  {.stats OFF..sho
0880: 77 0a 7d 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67  w.}].  list [reg
0890: 65 78 70 20 7b 73 74 61 74 73 3a 20 6f 66 66 7d  exp {stats: off}
08a0: 20 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 23 20   $res].} {1}..# 
08b0: 6d 61 6b 65 20 73 75 72 65 20 73 74 61 74 73 20  make sure stats 
08c0: 6e 6f 74 20 70 72 65 73 65 6e 74 20 77 68 65 6e  not present when
08d0: 20 6f 66 66 0a 64 6f 5f 74 65 73 74 20 73 68 65   off.do_test she
08e0: 6c 6c 34 2d 31 2e 35 2e 31 20 7b 0a 20 20 73 65  ll4-1.5.1 {.  se
08f0: 74 20 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20  t res [catchcmd 
0900: 22 74 65 73 74 2e 64 62 22 20 7b 53 45 4c 45 43  "test.db" {SELEC
0910: 54 20 31 3b 7d 5d 0a 20 20 6c 69 73 74 20 5b 72  T 1;}].  list [r
0920: 65 67 65 78 70 20 7b 4d 65 6d 6f 72 79 20 55 73  egexp {Memory Us
0930: 65 64 7d 20 24 72 65 73 5d 20 5c 0a 20 20 20 20  ed} $res] \.    
0940: 20 20 20 5b 72 65 67 65 78 70 20 7b 48 65 61 70     [regexp {Heap
0950: 20 55 73 61 67 65 7d 20 24 72 65 73 5d 20 5c 0a   Usage} $res] \.
0960: 20 20 20 20 20 20 20 5b 72 65 67 65 78 70 20 7b         [regexp {
0970: 41 75 74 6f 69 6e 64 65 78 20 49 6e 73 65 72 74  Autoindex Insert
0980: 73 7d 20 24 72 65 73 5d 0a 7d 20 7b 30 20 30 20  s} $res].} {0 0 
0990: 30 7d 0a 0a 23 20 6d 61 6b 65 20 73 75 72 65 20  0}..# make sure 
09a0: 73 74 61 74 73 20 61 72 65 20 70 72 65 73 65 6e  stats are presen
09b0: 74 20 77 68 65 6e 20 6f 6e 0a 64 6f 5f 74 65 73  t when on.do_tes
09c0: 74 20 73 68 65 6c 6c 34 2d 31 2e 35 2e 32 20 7b  t shell4-1.5.2 {
09d0: 0a 20 20 73 65 74 20 72 65 73 20 5b 63 61 74 63  .  set res [catc
09e0: 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20 7b  hcmd "test.db" {
09f0: 2e 73 74 61 74 73 20 4f 4e 0a 53 45 4c 45 43 54  .stats ON.SELECT
0a00: 20 31 3b 0a 7d 5d 0a 20 20 6c 69 73 74 20 5b 72   1;.}].  list [r
0a10: 65 67 65 78 70 20 7b 4d 65 6d 6f 72 79 20 55 73  egexp {Memory Us
0a20: 65 64 7d 20 24 72 65 73 5d 20 5c 0a 20 20 20 20  ed} $res] \.    
0a30: 20 20 20 5b 72 65 67 65 78 70 20 7b 48 65 61 70     [regexp {Heap
0a40: 20 55 73 61 67 65 7d 20 24 72 65 73 5d 20 5c 0a   Usage} $res] \.
0a50: 20 20 20 20 20 20 20 5b 72 65 67 65 78 70 20 7b         [regexp {
0a60: 41 75 74 6f 69 6e 64 65 78 20 49 6e 73 65 72 74  Autoindex Insert
0a70: 73 7d 20 24 72 65 73 5d 0a 7d 20 7b 31 20 31 20  s} $res].} {1 1 
0a80: 31 7d 0a 0a 69 66 63 61 70 61 62 6c 65 20 74 72  1}..ifcapable tr
0a90: 61 63 65 20 7b 0a 64 6f 5f 74 65 73 74 20 73 68  ace {.do_test sh
0aa0: 65 6c 6c 34 2d 32 2e 31 20 7b 0a 20 20 63 61 74  ell4-2.1 {.  cat
0ab0: 63 68 63 6d 64 20 22 3a 6d 65 6d 6f 72 79 3a 22  chcmd ":memory:"
0ac0: 20 22 43 52 45 41 54 45 20 54 41 42 4c 45 20 74   "CREATE TABLE t
0ad0: 31 28 78 29 3b 5c 6e 2e 74 72 61 63 65 20 2d 2d  1(x);\n.trace --
0ae0: 75 6e 6b 6e 6f 77 6e 22 0a 7d 20 7b 31 20 7b 55  unknown".} {1 {U
0af0: 6e 6b 6e 6f 77 6e 20 6f 70 74 69 6f 6e 20 22 2d  nknown option "-
0b00: 2d 75 6e 6b 6e 6f 77 6e 22 20 6f 6e 20 22 2e 74  -unknown" on ".t
0b10: 72 61 63 65 22 7d 7d 0a 64 6f 5f 74 65 73 74 20  race"}}.do_test 
0b20: 73 68 65 6c 6c 34 2d 32 2e 32 20 7b 0a 20 20 63  shell4-2.2 {.  c
0b30: 61 74 63 68 63 6d 64 20 22 3a 6d 65 6d 6f 72 79  atchcmd ":memory
0b40: 3a 22 20 22 43 52 45 41 54 45 20 54 41 42 4c 45  :" "CREATE TABLE
0b50: 20 74 31 28 78 29 3b 5c 6e 2e 74 72 61 63 65 20   t1(x);\n.trace 
0b60: 6f 66 66 5c 6e 2e 74 72 61 63 65 20 6f 66 66 5c  off\n.trace off\
0b70: 6e 22 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74  n".} {0 {}}.do_t
0b80: 65 73 74 20 73 68 65 6c 6c 34 2d 32 2e 33 20 7b  est shell4-2.3 {
0b90: 0a 20 20 63 61 74 63 68 63 6d 64 20 22 3a 6d 65  .  catchcmd ":me
0ba0: 6d 6f 72 79 3a 22 20 22 2e 74 72 61 63 65 20 73  mory:" ".trace s
0bb0: 74 64 6f 75 74 5c 6e 2e 64 75 6d 70 5c 6e 2e 74  tdout\n.dump\n.t
0bc0: 72 61 63 65 20 6f 66 66 5c 6e 22 0a 7d 20 7b 2f  race off\n".} {/
0bd0: 5e 30 20 7b 50 52 41 47 4d 41 2e 2a 7d 24 2f 7d  ^0 {PRAGMA.*}$/}
0be0: 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d  .do_test shell4-
0bf0: 32 2e 34 20 7b 0a 20 20 63 61 74 63 68 63 6d 64  2.4 {.  catchcmd
0c00: 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 22 2e 74 72   ":memory:" ".tr
0c10: 61 63 65 20 73 74 64 6f 75 74 5c 6e 43 52 45 41  ace stdout\nCREA
0c20: 54 45 20 54 41 42 4c 45 20 74 31 28 78 29 3b 53  TE TABLE t1(x);S
0c30: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b  ELECT * FROM t1;
0c40: 22 0a 7d 20 7b 30 20 7b 43 52 45 41 54 45 20 54  ".} {0 {CREATE T
0c50: 41 42 4c 45 20 74 31 28 78 29 3b 0a 53 45 4c 45  ABLE t1(x);.SELE
0c60: 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b 7d 7d 0a  CT * FROM t1;}}.
0c70: 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 32  do_test shell4-2
0c80: 2e 35 20 7b 0a 20 20 63 61 74 63 68 63 6d 64 20  .5 {.  catchcmd 
0c90: 22 3a 6d 65 6d 6f 72 79 3a 22 20 22 43 52 45 41  ":memory:" "CREA
0ca0: 54 45 20 54 41 42 4c 45 20 74 31 28 78 29 3b 5c  TE TABLE t1(x);\
0cb0: 6e 2e 74 72 61 63 65 20 73 74 64 6f 75 74 5c 6e  n.trace stdout\n
0cc0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
0cd0: 3b 22 0a 7d 20 7b 30 20 7b 53 45 4c 45 43 54 20  ;".} {0 {SELECT 
0ce0: 2a 20 46 52 4f 4d 20 74 31 3b 7d 7d 0a 7d 0a 0a  * FROM t1;}}.}..
0cf0: 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 33  do_test shell4-3
0d00: 2e 31 20 7b 0a 20 20 73 65 74 20 66 64 20 5b 6f  .1 {.  set fd [o
0d10: 70 65 6e 20 74 31 2e 74 78 74 20 77 62 5d 0a 20  pen t1.txt wb]. 
0d20: 20 70 75 74 73 20 24 66 64 20 22 53 45 4c 45 43   puts $fd "SELEC
0d30: 54 20 27 73 71 75 69 72 72 65 6c 27 3b 22 0a 20  T 'squirrel';". 
0d40: 20 63 6c 6f 73 65 20 24 66 64 0a 20 20 65 78 65   close $fd.  exe
0d50: 63 20 24 3a 3a 43 4c 49 20 3a 6d 65 6d 6f 72 79  c $::CLI :memory
0d60: 3a 20 2d 2d 69 6e 74 65 72 61 63 74 69 76 65 20  : --interactive 
0d70: 22 2e 72 65 61 64 20 74 31 2e 74 78 74 22 0a 7d  ".read t1.txt".}
0d80: 20 7b 73 71 75 69 72 72 65 6c 7d 0a 64 6f 5f 74   {squirrel}.do_t
0d90: 65 73 74 20 73 68 65 6c 6c 34 2d 33 2e 32 20 7b  est shell4-3.2 {
0da0: 0a 20 20 73 65 74 20 66 64 20 5b 6f 70 65 6e 20  .  set fd [open 
0db0: 74 31 2e 74 78 74 20 77 62 5d 0a 20 20 70 75 74  t1.txt wb].  put
0dc0: 73 20 24 66 64 20 22 53 45 4c 45 43 54 20 27 70  s $fd "SELECT 'p
0dd0: 6f 75 6e 64 3a 20 5c 33 30 32 5c 32 34 33 27 3b  ound: \302\243';
0de0: 22 0a 20 20 63 6c 6f 73 65 20 24 66 64 0a 20 20  ".  close $fd.  
0df0: 65 78 65 63 20 24 3a 3a 43 4c 49 20 3a 6d 65 6d  exec $::CLI :mem
0e00: 6f 72 79 3a 20 2d 2d 69 6e 74 65 72 61 63 74 69  ory: --interacti
0e10: 76 65 20 22 2e 72 65 61 64 20 74 31 2e 74 78 74  ve ".read t1.txt
0e20: 22 0a 7d 20 7b 70 6f 75 6e 64 3a 20 c2 a3 7d 0a  ".} {pound: ..}.
0e30: 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a           .finish_test.