blob: 33686c3943d1d262121496eb59e1e3d2f94c6b93 [file] [log] [blame]
shaneha05e0c42009-11-06 03:22:54 +00001# 2009 Nov 11
2#
3# The author disclaims copyright to this source code. In place of
4# a legal notice, here is a blessing:
5#
6# May you do good and not evil.
7# May you find forgiveness for yourself and forgive others.
8# May you share freely, never taking more than you give.
9#
10#***********************************************************************
11#
12# The focus of this file is testing the CLI shell tool.
13#
14# $Id: shell1.test,v 1.7 2009/07/17 16:54:48 shaneh Exp $
15#
16
17# Test plan:
18#
shanehe2aa9d72009-11-06 17:20:17 +000019# shell-1.*: Basic "dot" command token parsing.
20# shell-2.*: Basic test that "dot" command can be called.
shaneha05e0c42009-11-06 03:22:54 +000021#
22
23package require sqlite3
24
25proc do_test {name cmd expected} {
26 puts -nonewline "$name ..."
27 set res [uplevel $cmd]
28 if {$res eq $expected} {
29 puts Ok
30 } else {
31 puts Error
32 puts " Got: $res"
33 puts " Expected: $expected"
shanehe2aa9d72009-11-06 17:20:17 +000034 exit
shaneha05e0c42009-11-06 03:22:54 +000035 }
36}
37
38proc execsql {sql} {
39 uplevel [list db eval $sql]
40}
41
42proc catchsql {sql} {
43 set rc [catch {uplevel [list db eval $sql]} msg]
44 list $rc $msg
45}
46
47proc catchcmd {cmd} {
48 set out [open cmds.txt w]
49 puts $out $cmd
50 close $out
shanehe2aa9d72009-11-06 17:20:17 +000051 set rc [catch { exec ./sqlite test.db < cmds.txt } msg]
shaneha05e0c42009-11-06 03:22:54 +000052 list $rc $msg
53}
54
55file delete -force test.db test.db.journal
56sqlite3 db test.db
57
shanehe2aa9d72009-11-06 17:20:17 +000058
shaneha05e0c42009-11-06 03:22:54 +000059#----------------------------------------------------------------------------
shanehe2aa9d72009-11-06 17:20:17 +000060# Test cases shell-1.* Basic "dot" command token parsing.
61#
62
63# check first token handling
64do_test shell-1.1.1 {
65 catchcmd ".foo"
66} {1 {Error: unknown command or invalid arguments: "foo". Enter ".help" for help}}
67do_test shell-1.1.2 {
68 catchcmd ".\"foo OFF\""
69} {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for help}}
70do_test shell-1.1.3 {
71 catchcmd ".\'foo OFF\'"
72} {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for help}}
73
74# unbalanced quotes
75do_test shell-1.2.1 {
76 catchcmd ".\"foo OFF"
77} {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for help}}
78do_test shell-1.2.2 {
79 catchcmd ".\'foo OFF"
80} {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for help}}
81do_test shell-1.2.3 {
82 catchcmd ".explain \"OFF"
83} {0 {}}
84do_test shell-1.2.4 {
85 catchcmd ".explain \'OFF"
86} {0 {}}
87do_test shell-1.2.5 {
88 catchcmd ".mode \"insert FOO"
89} {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
90do_test shell-1.2.6 {
91 catchcmd ".mode \'insert FOO"
92} {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
93
94# check multiple tokens, and quoted tokens
95do_test shell-1.3.1 {
96 catchcmd ".explain 1"
97} {0 {}}
98do_test shell-1.3.2 {
99 catchcmd ".explain on"
100} {0 {}}
101do_test shell-1.3.3 {
102 catchcmd ".explain \"1 2 3\""
103} {0 {}}
104do_test shell-1.3.4 {
105 catchcmd ".explain \"OFF\""
106} {0 {}}
107do_test shell-1.3.5 {
108 catchcmd ".\'explain\' \'OFF\'"
109} {0 {}}
110do_test shell-1.3.6 {
111 catchcmd ".explain \'OFF\'"
112} {0 {}}
113do_test shell-1.3.7 {
114 catchcmd ".\'explain\' \'OFF\'"
115} {0 {}}
116
117# check quoted args are unquoted
118do_test shell-1.4.1 {
119 catchcmd ".mode FOO"
120} {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
121do_test shell-1.4.2 {
122 catchcmd ".mode csv"
123} {0 {}}
124do_test shell-1.4.2 {
125 catchcmd ".mode \"csv\""
126} {0 {}}
127
128
129#----------------------------------------------------------------------------
130# Test cases shell-2.* Basic test that "dot" command can be called.
shaneha05e0c42009-11-06 03:22:54 +0000131#
132
133# .backup ?DB? FILE Backup DB (default "main") to FILE
shanehe2aa9d72009-11-06 17:20:17 +0000134do_test shell-2.1.1 {
135 catchcmd ".backup"
136} {1 {Error: unknown command or invalid arguments: "backup". Enter ".help" for help}}
137do_test shell-2.1.2 {
138 # catchcmd ".backup FOO"
139 #TBD!!! this asserts currently
shaneha05e0c42009-11-06 03:22:54 +0000140} {}
shanehe2aa9d72009-11-06 17:20:17 +0000141do_test shell-2.1.3 {
142 catchcmd ".backup FOO BAR"
143} {1 {Error: unknown database FOO}}
144do_test shell-2.1.4 {
145 # too many arguments
146 catchcmd ".backup FOO BAR BAD"
147} {1 {Error: unknown command or invalid arguments: "backup". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000148
149# .bail ON|OFF Stop after hitting an error. Default OFF
shanehe2aa9d72009-11-06 17:20:17 +0000150do_test shell-2.2.1 {
shaneha05e0c42009-11-06 03:22:54 +0000151 catchcmd ".bail"
152} {1 {Error: unknown command or invalid arguments: "bail". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000153do_test shell-2.2.2 {
shaneha05e0c42009-11-06 03:22:54 +0000154 catchcmd ".bail ON"
155} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000156do_test shell-2.2.3 {
shaneha05e0c42009-11-06 03:22:54 +0000157 catchcmd ".bail OFF"
158} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000159do_test shell-2.2.4 {
160 # too many arguments
161 catchcmd ".bail OFF BAD"
162} {1 {Error: unknown command or invalid arguments: "bail". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000163
164# .databases List names and files of attached databases
shanehe2aa9d72009-11-06 17:20:17 +0000165do_test shell-2.3.1 {
shaneha05e0c42009-11-06 03:22:54 +0000166 set res [catchcmd ".databases"]
167 regexp {0.*main.*test\.db} $res
168} {1}
shanehe2aa9d72009-11-06 17:20:17 +0000169do_test shell-2.3.2 {
170 # too many arguments
171 catchcmd ".databases BAD"
172} {1 {Error: unknown command or invalid arguments: "databases". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000173
174# .dump ?TABLE? ... Dump the database in an SQL text format
175# If TABLE specified, only dump tables matching
176# LIKE pattern TABLE.
shanehe2aa9d72009-11-06 17:20:17 +0000177do_test shell-2.4.1 {
shaneha05e0c42009-11-06 03:22:54 +0000178 set res [catchcmd ".dump"]
179 list [regexp {BEGIN TRANSACTION;} $res] \
180 [regexp {COMMIT;} $res]
181} {1 1}
shanehe2aa9d72009-11-06 17:20:17 +0000182do_test shell-2.4.2 {
shaneha05e0c42009-11-06 03:22:54 +0000183 set res [catchcmd ".dump FOO"]
184 list [regexp {BEGIN TRANSACTION;} $res] \
185 [regexp {COMMIT;} $res]
186} {1 1}
shanehe2aa9d72009-11-06 17:20:17 +0000187do_test shell-2.4.3 {
188 # too many arguments
189 catchcmd ".dump FOO BAD"
190} {1 {Error: unknown command or invalid arguments: "dump". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000191
192# .echo ON|OFF Turn command echo on or off
shanehe2aa9d72009-11-06 17:20:17 +0000193do_test shell-2.5.1 {
shaneha05e0c42009-11-06 03:22:54 +0000194 catchcmd ".echo"
195} {1 {Error: unknown command or invalid arguments: "echo". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000196do_test shell-2.5.2 {
shaneha05e0c42009-11-06 03:22:54 +0000197 catchcmd ".echo ON"
198} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000199do_test shell-2.5.3 {
shaneha05e0c42009-11-06 03:22:54 +0000200 catchcmd ".echo OFF"
201} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000202do_test shell-2.5.4 {
203 # too many arguments
204 catchcmd ".echo OFF BAD"
205} {1 {Error: unknown command or invalid arguments: "echo". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000206
207# .exit Exit this program
shanehe2aa9d72009-11-06 17:20:17 +0000208do_test shell-2.6.1 {
shaneha05e0c42009-11-06 03:22:54 +0000209 catchcmd ".exit"
210} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000211do_test shell-2.6.2 {
212 # too many arguments
213 catchcmd ".exit BAD"
214} {1 {Error: unknown command or invalid arguments: "exit". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000215
216# .explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
shanehe2aa9d72009-11-06 17:20:17 +0000217do_test shell-2.7.1 {
218 catchcmd ".explain"
219 # explain is the exception to the booleans. without an option, it turns it on.
220} {0 {}}
221do_test shell-2.7.2 {
shaneha05e0c42009-11-06 03:22:54 +0000222 catchcmd ".explain ON"
223} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000224do_test shell-2.7.3 {
shaneha05e0c42009-11-06 03:22:54 +0000225 catchcmd ".explain OFF"
226} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000227do_test shell-2.7.4 {
228 # too many arguments
229 catchcmd ".explain OFF BAD"
230} {1 {Error: unknown command or invalid arguments: "explain". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000231
232# .genfkey ?OPTIONS? Options are:
233# --no-drop: Do not drop old fkey triggers.
234# --ignore-errors: Ignore tables with fkey errors
235# --exec: Execute generated SQL immediately
236# See file tool/genfkey.README in the source
237# distribution for further information.
shanehe2aa9d72009-11-06 17:20:17 +0000238do_test shell-2.8.1 {
239 catchcmd ".genfkey"
240} {0 {}}
241do_test shell-2.8.2 {
242 catchcmd ".genfkey FOO"
243} {1 {unknown option: FOO}}
shaneha05e0c42009-11-06 03:22:54 +0000244
245# .header(s) ON|OFF Turn display of headers on or off
shanehe2aa9d72009-11-06 17:20:17 +0000246do_test shell-2.9.1 {
shaneha05e0c42009-11-06 03:22:54 +0000247 catchcmd ".header"
248} {1 {Error: unknown command or invalid arguments: "header". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000249do_test shell-2.9.2 {
shaneha05e0c42009-11-06 03:22:54 +0000250 catchcmd ".header ON"
251} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000252do_test shell-2.9.3 {
shaneha05e0c42009-11-06 03:22:54 +0000253 catchcmd ".header OFF"
254} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000255do_test shell-2.9.4 {
256 # too many arguments
257 catchcmd ".header OFF BAD"
258} {1 {Error: unknown command or invalid arguments: "header". Enter ".help" for help}}
259
260do_test shell-2.9.5 {
shaneha05e0c42009-11-06 03:22:54 +0000261 catchcmd ".headers"
262} {1 {Error: unknown command or invalid arguments: "headers". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000263do_test shell-2.9.6 {
shaneha05e0c42009-11-06 03:22:54 +0000264 catchcmd ".headers ON"
265} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000266do_test shell-2.9.7 {
shaneha05e0c42009-11-06 03:22:54 +0000267 catchcmd ".headers OFF"
268} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000269do_test shell-2.9.8 {
270 # too many arguments
271 catchcmd ".headers OFF BAD"
272} {1 {Error: unknown command or invalid arguments: "headers". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000273
274# .help Show this message
shanehe2aa9d72009-11-06 17:20:17 +0000275do_test shell-2.10.1 {
shaneha05e0c42009-11-06 03:22:54 +0000276 set res [catchcmd ".help"]
277 # look for a few of the possible help commands
278 list [regexp {.help} $res] \
279 [regexp {.quit} $res] \
280 [regexp {.show} $res]
281} {1 1 1}
shanehe2aa9d72009-11-06 17:20:17 +0000282do_test shell-2.10.2 {
283 # we allow .help to take extra args (it is help after all)
284 set res [catchcmd ".help BAD"]
285 # look for a few of the possible help commands
286 list [regexp {.help} $res] \
287 [regexp {.quit} $res] \
288 [regexp {.show} $res]
289} {1 1 1}
shaneha05e0c42009-11-06 03:22:54 +0000290
291# .import FILE TABLE Import data from FILE into TABLE
shanehe2aa9d72009-11-06 17:20:17 +0000292do_test shell-2.11.1 {
shaneha05e0c42009-11-06 03:22:54 +0000293 catchcmd ".import"
294} {1 {Error: unknown command or invalid arguments: "import". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000295do_test shell-2.11.2 {
shaneha05e0c42009-11-06 03:22:54 +0000296 catchcmd ".import FOO"
297} {1 {Error: unknown command or invalid arguments: "import". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000298do_test shell-2.11.2 {
shaneha05e0c42009-11-06 03:22:54 +0000299 catchcmd ".import FOO BAR"
300} {1 {Error: no such table: BAR}}
shanehe2aa9d72009-11-06 17:20:17 +0000301do_test shell-2.11.3 {
302 # too many arguments
303 catchcmd ".import FOO BAR BAD"
304} {1 {Error: unknown command or invalid arguments: "import". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000305
306# .indices ?TABLE? Show names of all indices
307# If TABLE specified, only show indices for tables
308# matching LIKE pattern TABLE.
shanehe2aa9d72009-11-06 17:20:17 +0000309do_test shell-2.12.1 {
shaneha05e0c42009-11-06 03:22:54 +0000310 catchcmd ".indices"
311} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000312do_test shell-2.12.2 {
shaneha05e0c42009-11-06 03:22:54 +0000313 catchcmd ".indices FOO"
314} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000315do_test shell-2.12.3 {
316 # too many arguments
317 catchcmd ".indices FOO BAD"
318} {1 {Error: unknown command or invalid arguments: "indices". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000319
320# .mode MODE ?TABLE? Set output mode where MODE is one of:
321# csv Comma-separated values
322# column Left-aligned columns. (See .width)
323# html HTML <table> code
324# insert SQL insert statements for TABLE
325# line One value per line
326# list Values delimited by .separator string
327# tabs Tab-separated values
328# tcl TCL list elements
shanehe2aa9d72009-11-06 17:20:17 +0000329do_test shell-2.13.1 {
shaneha05e0c42009-11-06 03:22:54 +0000330 catchcmd ".mode"
331} {1 {Error: unknown command or invalid arguments: "mode". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000332do_test shell-2.13.2 {
shaneha05e0c42009-11-06 03:22:54 +0000333 catchcmd ".mode FOO"
334} {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
shanehe2aa9d72009-11-06 17:20:17 +0000335do_test shell-2.13.3 {
shaneha05e0c42009-11-06 03:22:54 +0000336 catchcmd ".mode csv"
337} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000338do_test shell-2.13.4 {
shaneha05e0c42009-11-06 03:22:54 +0000339 catchcmd ".mode column"
340} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000341do_test shell-2.13.5 {
shaneha05e0c42009-11-06 03:22:54 +0000342 catchcmd ".mode html"
343} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000344do_test shell-2.13.6 {
shaneha05e0c42009-11-06 03:22:54 +0000345 catchcmd ".mode insert"
346} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000347do_test shell-2.13.7 {
shaneha05e0c42009-11-06 03:22:54 +0000348 catchcmd ".mode line"
349} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000350do_test shell-2.13.8 {
shaneha05e0c42009-11-06 03:22:54 +0000351 catchcmd ".mode list"
352} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000353do_test shell-2.13.9 {
shaneha05e0c42009-11-06 03:22:54 +0000354 catchcmd ".mode tabs"
355} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000356do_test shell-2.13.10 {
shaneha05e0c42009-11-06 03:22:54 +0000357 catchcmd ".mode tcl"
358} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000359do_test shell-2.13.11 {
360 # too many arguments
361 catchcmd ".mode tcl BAD"
362} {1 {Error: invalid arguments: "BAD". Enter ".help" for help}}
363
364# don't allow partial mode type matches
365do_test shell-2.13.12 {
366 catchcmd ".mode l"
367} {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
368do_test shell-2.13.13 {
369 catchcmd ".mode li"
370} {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
371do_test shell-2.13.14 {
372 catchcmd ".mode lin"
373} {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
shaneha05e0c42009-11-06 03:22:54 +0000374
375# .nullvalue STRING Print STRING in place of NULL values
shanehe2aa9d72009-11-06 17:20:17 +0000376do_test shell-2.14.1 {
shaneha05e0c42009-11-06 03:22:54 +0000377 catchcmd ".nullvalue"
378} {1 {Error: unknown command or invalid arguments: "nullvalue". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000379do_test shell-2.14.2 {
shaneha05e0c42009-11-06 03:22:54 +0000380 catchcmd ".nullvalue FOO"
381} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000382do_test shell-2.14.3 {
383 # too many arguments
384 catchcmd ".nullvalue FOO BAD"
385} {1 {Error: unknown command or invalid arguments: "nullvalue". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000386
387# .output FILENAME Send output to FILENAME
shanehe2aa9d72009-11-06 17:20:17 +0000388do_test shell-2.15.1 {
shaneha05e0c42009-11-06 03:22:54 +0000389 catchcmd ".output"
390} {1 {Error: unknown command or invalid arguments: "output". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000391do_test shell-2.15.2 {
shaneha05e0c42009-11-06 03:22:54 +0000392 catchcmd ".output FOO"
393} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000394do_test shell-2.15.3 {
395 # too many arguments
396 catchcmd ".output FOO BAD"
397} {1 {Error: unknown command or invalid arguments: "output". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000398
399# .output stdout Send output to the screen
shanehe2aa9d72009-11-06 17:20:17 +0000400do_test shell-2.16.1 {
shaneha05e0c42009-11-06 03:22:54 +0000401 catchcmd ".output stdout"
402} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000403do_test shell-2.16.2 {
404 # too many arguments
405 catchcmd ".output stdout BAD"
406} {1 {Error: unknown command or invalid arguments: "output". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000407
408# .prompt MAIN CONTINUE Replace the standard prompts
shanehe2aa9d72009-11-06 17:20:17 +0000409do_test shell-2.17.1 {
shaneha05e0c42009-11-06 03:22:54 +0000410 catchcmd ".prompt"
411} {1 {Error: unknown command or invalid arguments: "prompt". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000412do_test shell-2.17.2 {
shaneha05e0c42009-11-06 03:22:54 +0000413 catchcmd ".prompt FOO"
414} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000415do_test shell-2.17.3 {
shaneha05e0c42009-11-06 03:22:54 +0000416 catchcmd ".prompt FOO BAR"
417} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000418do_test shell-2.17.4 {
419 # too many arguments
420 catchcmd ".prompt FOO BAR BAD"
421} {1 {Error: unknown command or invalid arguments: "prompt". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000422
423# .quit Exit this program
shanehe2aa9d72009-11-06 17:20:17 +0000424do_test shell-2.18.1 {
shaneha05e0c42009-11-06 03:22:54 +0000425 catchcmd ".quit"
426} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000427do_test shell-2.18.2 {
428 # too many arguments
429 catchcmd ".quit BAD"
430} {1 {Error: unknown command or invalid arguments: "quit". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000431
432# .read FILENAME Execute SQL in FILENAME
shanehe2aa9d72009-11-06 17:20:17 +0000433do_test shell-2.19.1 {
shaneha05e0c42009-11-06 03:22:54 +0000434 catchcmd ".read"
435} {1 {Error: unknown command or invalid arguments: "read". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000436do_test shell-2.19.2 {
shaneha05e0c42009-11-06 03:22:54 +0000437 file delete -force FOO
438 catchcmd ".read FOO"
439} {1 {Error: cannot open "FOO"}}
shanehe2aa9d72009-11-06 17:20:17 +0000440do_test shell-2.19.3 {
441 # too many arguments
442 catchcmd ".read FOO BAD"
443} {1 {Error: unknown command or invalid arguments: "read". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000444
445# .restore ?DB? FILE Restore content of DB (default "main") from FILE
shanehe2aa9d72009-11-06 17:20:17 +0000446do_test shell-2.20.1 {
shaneha05e0c42009-11-06 03:22:54 +0000447 catchcmd ".restore"
448} {1 {Error: unknown command or invalid arguments: "restore". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000449do_test shell-2.20.2 {
shaneha05e0c42009-11-06 03:22:54 +0000450 # catchcmd ".restore FOO"
451 #TBD!!! this asserts currently
452} {}
shanehe2aa9d72009-11-06 17:20:17 +0000453do_test shell-2.20.3 {
454 catchcmd ".restore FOO BAR"
455} {1 {Error: unknown database FOO}}
456do_test shell-2.20.4 {
457 # too many arguments
458 catchcmd ".restore FOO BAR BAD"
459} {1 {Error: unknown command or invalid arguments: "restore". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000460
461# .schema ?TABLE? Show the CREATE statements
462# If TABLE specified, only show tables matching
463# LIKE pattern TABLE.
shanehe2aa9d72009-11-06 17:20:17 +0000464do_test shell-2.21.1 {
shaneha05e0c42009-11-06 03:22:54 +0000465 catchcmd ".schema"
466} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000467do_test shell-2.21.2 {
shaneha05e0c42009-11-06 03:22:54 +0000468 catchcmd ".schema FOO"
469} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000470do_test shell-2.21.3 {
471 # too many arguments
472 catchcmd ".schema FOO BAD"
473} {1 {Error: unknown command or invalid arguments: "schema". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000474
475# .separator STRING Change separator used by output mode and .import
shanehe2aa9d72009-11-06 17:20:17 +0000476do_test shell-2.22.1 {
shaneha05e0c42009-11-06 03:22:54 +0000477 catchcmd ".separator"
478} {1 {Error: unknown command or invalid arguments: "separator". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000479do_test shell-2.22.2 {
shaneha05e0c42009-11-06 03:22:54 +0000480 catchcmd ".separator FOO"
481} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000482do_test shell-2.22.3 {
483 # too many arguments
484 catchcmd ".separator FOO BAD"
485} {1 {Error: unknown command or invalid arguments: "separator". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000486
487# .show Show the current values for various settings
shanehe2aa9d72009-11-06 17:20:17 +0000488do_test shell-2.23.1 {
shaneha05e0c42009-11-06 03:22:54 +0000489 set res [catchcmd ".show"]
490 list [regexp {echo:} $res] \
491 [regexp {explain:} $res] \
492 [regexp {headers:} $res] \
493 [regexp {mode:} $res] \
494 [regexp {nullvalue:} $res] \
495 [regexp {output:} $res] \
496 [regexp {separator:} $res] \
497 [regexp {width:} $res]
498} {1 1 1 1 1 1 1 1}
shanehe2aa9d72009-11-06 17:20:17 +0000499do_test shell-2.23.2 {
500 # too many arguments
501 catchcmd ".show BAD"
502} {1 {Error: unknown command or invalid arguments: "show". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000503
504# .tables ?TABLE? List names of tables
505# If TABLE specified, only list tables matching
506# LIKE pattern TABLE.
shanehe2aa9d72009-11-06 17:20:17 +0000507do_test shell-2.24.1 {
shaneha05e0c42009-11-06 03:22:54 +0000508 catchcmd ".tables"
509} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000510do_test shell-2.24.2 {
shaneha05e0c42009-11-06 03:22:54 +0000511 catchcmd ".tables FOO"
512} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000513do_test shell-2.24.3 {
514 # too many arguments
515 catchcmd ".tables FOO BAD"
516} {1 {Error: unknown command or invalid arguments: "tables". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000517
518# .timeout MS Try opening locked tables for MS milliseconds
shanehe2aa9d72009-11-06 17:20:17 +0000519do_test shell-2.25.1 {
shaneha05e0c42009-11-06 03:22:54 +0000520 catchcmd ".timeout"
521} {1 {Error: unknown command or invalid arguments: "timeout". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000522do_test shell-2.25.2 {
shaneha05e0c42009-11-06 03:22:54 +0000523 catchcmd ".timeout zzz"
shanehe2aa9d72009-11-06 17:20:17 +0000524 # this should be treated the same as a '0' timeout
shaneha05e0c42009-11-06 03:22:54 +0000525} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000526do_test shell-2.25.3 {
shaneha05e0c42009-11-06 03:22:54 +0000527 catchcmd ".timeout 1"
528} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000529do_test shell-2.25.4 {
530 # too many arguments
531 catchcmd ".timeout 1 BAD"
532} {1 {Error: unknown command or invalid arguments: "timeout". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000533
534# .width NUM NUM ... Set column widths for "column" mode
shanehe2aa9d72009-11-06 17:20:17 +0000535do_test shell-2.26.1 {
shaneha05e0c42009-11-06 03:22:54 +0000536 catchcmd ".width"
shanehe2aa9d72009-11-06 17:20:17 +0000537} {1 {Error: unknown command or invalid arguments: "width". Enter ".help" for help}}
538do_test shell-2.26.2 {
shaneha05e0c42009-11-06 03:22:54 +0000539 catchcmd ".width xxx"
shanehe2aa9d72009-11-06 17:20:17 +0000540 # this should be treated the same as a '0' width for col 1
shaneha05e0c42009-11-06 03:22:54 +0000541} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000542do_test shell-2.26.3 {
shaneha05e0c42009-11-06 03:22:54 +0000543 catchcmd ".width xxx yyy"
shanehe2aa9d72009-11-06 17:20:17 +0000544 # this should be treated the same as a '0' width for col 1 and 2
shaneha05e0c42009-11-06 03:22:54 +0000545} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000546do_test shell-2.26.4 {
shaneha05e0c42009-11-06 03:22:54 +0000547 catchcmd ".width 1 1"
shanehe2aa9d72009-11-06 17:20:17 +0000548 # this should be treated the same as a '1' width for col 1 and 2
shaneha05e0c42009-11-06 03:22:54 +0000549} {0 {}}
550
551# .timer ON|OFF Turn the CPU timer measurement on or off
shanehe2aa9d72009-11-06 17:20:17 +0000552do_test shell-2.27.1 {
shaneha05e0c42009-11-06 03:22:54 +0000553 catchcmd ".timer"
554} {1 {Error: unknown command or invalid arguments: "timer". Enter ".help" for help}}
shanehe2aa9d72009-11-06 17:20:17 +0000555do_test shell-2.27.2 {
shaneha05e0c42009-11-06 03:22:54 +0000556 catchcmd ".timer ON"
557} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000558do_test shell-2.27.3 {
shaneha05e0c42009-11-06 03:22:54 +0000559 catchcmd ".timer OFF"
560} {0 {}}
shanehe2aa9d72009-11-06 17:20:17 +0000561do_test shell-2.27.4 {
562 # too many arguments
563 catchcmd ".timer OFF BAD"
564} {1 {Error: unknown command or invalid arguments: "timer". Enter ".help" for help}}
shaneha05e0c42009-11-06 03:22:54 +0000565
566#