OLD | NEW |
| (Empty) |
1 # 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 # | |
19 # shell1-1.*: Basic command line option handling. | |
20 # shell1-2.*: Basic "dot" command token parsing. | |
21 # shell1-3.*: Basic test that "dot" command can be called. | |
22 # | |
23 | |
24 package require sqlite3 | |
25 | |
26 set CLI "./sqlite3" | |
27 | |
28 proc do_test {name cmd expected} { | |
29 puts -nonewline "$name ..." | |
30 set res [uplevel $cmd] | |
31 if {$res eq $expected} { | |
32 puts Ok | |
33 } else { | |
34 puts Error | |
35 puts " Got: $res" | |
36 puts " Expected: $expected" | |
37 exit | |
38 } | |
39 } | |
40 | |
41 proc execsql {sql} { | |
42 uplevel [list db eval $sql] | |
43 } | |
44 | |
45 proc catchsql {sql} { | |
46 set rc [catch {uplevel [list db eval $sql]} msg] | |
47 list $rc $msg | |
48 } | |
49 | |
50 proc catchcmd {db {cmd ""}} { | |
51 global CLI | |
52 set out [open cmds.txt w] | |
53 puts $out $cmd | |
54 close $out | |
55 set line "exec $CLI $db < cmds.txt" | |
56 set rc [catch { eval $line } msg] | |
57 list $rc $msg | |
58 } | |
59 | |
60 file delete -force test.db test.db.journal | |
61 sqlite3 db test.db | |
62 | |
63 #---------------------------------------------------------------------------- | |
64 # Test cases shell1-1.*: Basic command line option handling. | |
65 # | |
66 | |
67 # invalid option | |
68 do_test shell1-1.1.1 { | |
69 set res [catchcmd "-bad test.db" ""] | |
70 set rc [lindex $res 0] | |
71 list $rc \ | |
72 [regexp {Error: unknown option: -bad} $res] | |
73 } {1 1} | |
74 # error on extra options | |
75 do_test shell1-1.1.2 { | |
76 set res [catchcmd "-bad test.db \"select 3\" \"select 4\"" ""] | |
77 set rc [lindex $res 0] | |
78 list $rc \ | |
79 [regexp {Error: too many options: "select 4"} $res] | |
80 } {1 1} | |
81 # error on extra options | |
82 do_test shell1-1.1.3 { | |
83 set res [catchcmd "-bad FOO test.db BAD" ".quit"] | |
84 set rc [lindex $res 0] | |
85 list $rc \ | |
86 [regexp {Error: too many options: "BAD"} $res] | |
87 } {1 1} | |
88 | |
89 # -help | |
90 do_test shell1-1.2.1 { | |
91 set res [catchcmd "-help test.db" ""] | |
92 set rc [lindex $res 0] | |
93 list $rc \ | |
94 [regexp {Usage} $res] \ | |
95 [regexp {\-init} $res] \ | |
96 [regexp {\-version} $res] | |
97 } {1 1 1 1} | |
98 | |
99 # -init filename read/process named file | |
100 do_test shell1-1.3.1 { | |
101 catchcmd "-init FOO test.db" "" | |
102 } {0 {}} | |
103 do_test shell1-1.3.2 { | |
104 set res [catchcmd "-init FOO test.db .quit BAD" ""] | |
105 set rc [lindex $res 0] | |
106 list $rc \ | |
107 [regexp {Error: too many options: "BAD"} $res] | |
108 } {1 1} | |
109 | |
110 # -echo print commands before execution | |
111 do_test shell1-1.4.1 { | |
112 catchcmd "-echo test.db" "" | |
113 } {0 {}} | |
114 | |
115 # -[no]header turn headers on or off | |
116 do_test shell1-1.5.1 { | |
117 catchcmd "-header test.db" "" | |
118 } {0 {}} | |
119 do_test shell1-1.5.2 { | |
120 catchcmd "-noheader test.db" "" | |
121 } {0 {}} | |
122 | |
123 # -bail stop after hitting an error | |
124 do_test shell1-1.6.1 { | |
125 catchcmd "-bail test.db" "" | |
126 } {0 {}} | |
127 | |
128 # -interactive force interactive I/O | |
129 do_test shell1-1.7.1 { | |
130 set res [catchcmd "-interactive test.db" ".quit"] | |
131 set rc [lindex $res 0] | |
132 list $rc \ | |
133 [regexp {SQLite version} $res] \ | |
134 [regexp {Enter SQL statements} $res] | |
135 } {0 1 1} | |
136 | |
137 # -batch force batch I/O | |
138 do_test shell1-1.8.1 { | |
139 catchcmd "-batch test.db" "" | |
140 } {0 {}} | |
141 | |
142 # -column set output mode to 'column' | |
143 do_test shell1-1.9.1 { | |
144 catchcmd "-column test.db" "" | |
145 } {0 {}} | |
146 | |
147 # -csv set output mode to 'csv' | |
148 do_test shell1-1.10.1 { | |
149 catchcmd "-csv test.db" "" | |
150 } {0 {}} | |
151 | |
152 # -html set output mode to HTML | |
153 do_test shell1-1.11.1 { | |
154 catchcmd "-html test.db" "" | |
155 } {0 {}} | |
156 | |
157 # -line set output mode to 'line' | |
158 do_test shell1-1.12.1 { | |
159 catchcmd "-line test.db" "" | |
160 } {0 {}} | |
161 | |
162 # -list set output mode to 'list' | |
163 do_test shell1-1.13.1 { | |
164 catchcmd "-list test.db" "" | |
165 } {0 {}} | |
166 | |
167 # -separator 'x' set output field separator (|) | |
168 do_test shell1-1.14.1 { | |
169 catchcmd "-separator 'x' test.db" "" | |
170 } {0 {}} | |
171 do_test shell1-1.14.2 { | |
172 catchcmd "-separator x test.db" "" | |
173 } {0 {}} | |
174 do_test shell1-1.14.3 { | |
175 set res [catchcmd "-separator" ""] | |
176 set rc [lindex $res 0] | |
177 list $rc \ | |
178 [regexp {Error: missing argument for option: -separator} $res] | |
179 } {1 1} | |
180 | |
181 # -stats print memory stats before each finalize | |
182 do_test shell1-1.14b.1 { | |
183 catchcmd "-stats test.db" "" | |
184 } {0 {}} | |
185 | |
186 # -nullvalue 'text' set text string for NULL values | |
187 do_test shell1-1.15.1 { | |
188 catchcmd "-nullvalue 'x' test.db" "" | |
189 } {0 {}} | |
190 do_test shell1-1.15.2 { | |
191 catchcmd "-nullvalue x test.db" "" | |
192 } {0 {}} | |
193 do_test shell1-1.15.3 { | |
194 set res [catchcmd "-nullvalue" ""] | |
195 set rc [lindex $res 0] | |
196 list $rc \ | |
197 [regexp {Error: missing argument for option: -nullvalue} $res] | |
198 } {1 1} | |
199 | |
200 # -version show SQLite version | |
201 do_test shell1-1.16.1 { | |
202 catchcmd "-version test.db" "" | |
203 } {0 3.7.6.3} | |
204 | |
205 #---------------------------------------------------------------------------- | |
206 # Test cases shell1-2.*: Basic "dot" command token parsing. | |
207 # | |
208 | |
209 # check first token handling | |
210 do_test shell1-2.1.1 { | |
211 catchcmd "test.db" ".foo" | |
212 } {1 {Error: unknown command or invalid arguments: "foo". Enter ".help" for hel
p}} | |
213 do_test shell1-2.1.2 { | |
214 catchcmd "test.db" ".\"foo OFF\"" | |
215 } {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for
help}} | |
216 do_test shell1-2.1.3 { | |
217 catchcmd "test.db" ".\'foo OFF\'" | |
218 } {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for
help}} | |
219 | |
220 # unbalanced quotes | |
221 do_test shell1-2.2.1 { | |
222 catchcmd "test.db" ".\"foo OFF" | |
223 } {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for
help}} | |
224 do_test shell1-2.2.2 { | |
225 catchcmd "test.db" ".\'foo OFF" | |
226 } {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for
help}} | |
227 do_test shell1-2.2.3 { | |
228 catchcmd "test.db" ".explain \"OFF" | |
229 } {0 {}} | |
230 do_test shell1-2.2.4 { | |
231 catchcmd "test.db" ".explain \'OFF" | |
232 } {0 {}} | |
233 do_test shell1-2.2.5 { | |
234 catchcmd "test.db" ".mode \"insert FOO" | |
235 } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}} | |
236 do_test shell1-2.2.6 { | |
237 catchcmd "test.db" ".mode \'insert FOO" | |
238 } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}} | |
239 | |
240 # check multiple tokens, and quoted tokens | |
241 do_test shell1-2.3.1 { | |
242 catchcmd "test.db" ".explain 1" | |
243 } {0 {}} | |
244 do_test shell1-2.3.2 { | |
245 catchcmd "test.db" ".explain on" | |
246 } {0 {}} | |
247 do_test shell1-2.3.3 { | |
248 catchcmd "test.db" ".explain \"1 2 3\"" | |
249 } {0 {}} | |
250 do_test shell1-2.3.4 { | |
251 catchcmd "test.db" ".explain \"OFF\"" | |
252 } {0 {}} | |
253 do_test shell1-2.3.5 { | |
254 catchcmd "test.db" ".\'explain\' \'OFF\'" | |
255 } {0 {}} | |
256 do_test shell1-2.3.6 { | |
257 catchcmd "test.db" ".explain \'OFF\'" | |
258 } {0 {}} | |
259 do_test shell1-2.3.7 { | |
260 catchcmd "test.db" ".\'explain\' \'OFF\'" | |
261 } {0 {}} | |
262 | |
263 # check quoted args are unquoted | |
264 do_test shell1-2.4.1 { | |
265 catchcmd "test.db" ".mode FOO" | |
266 } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}} | |
267 do_test shell1-2.4.2 { | |
268 catchcmd "test.db" ".mode csv" | |
269 } {0 {}} | |
270 do_test shell1-2.4.2 { | |
271 catchcmd "test.db" ".mode \"csv\"" | |
272 } {0 {}} | |
273 | |
274 | |
275 #---------------------------------------------------------------------------- | |
276 # Test cases shell1-3.*: Basic test that "dot" command can be called. | |
277 # | |
278 | |
279 # .backup ?DB? FILE Backup DB (default "main") to FILE | |
280 do_test shell1-3.1.1 { | |
281 catchcmd "test.db" ".backup" | |
282 } {1 {Error: unknown command or invalid arguments: "backup". Enter ".help" for
help}} | |
283 do_test shell1-3.1.2 { | |
284 catchcmd "test.db" ".backup FOO" | |
285 } {0 {}} | |
286 do_test shell1-3.1.3 { | |
287 catchcmd "test.db" ".backup FOO BAR" | |
288 } {1 {Error: unknown database FOO}} | |
289 do_test shell1-3.1.4 { | |
290 # too many arguments | |
291 catchcmd "test.db" ".backup FOO BAR BAD" | |
292 } {1 {Error: unknown command or invalid arguments: "backup". Enter ".help" for
help}} | |
293 | |
294 # .bail ON|OFF Stop after hitting an error. Default OFF | |
295 do_test shell1-3.2.1 { | |
296 catchcmd "test.db" ".bail" | |
297 } {1 {Error: unknown command or invalid arguments: "bail". Enter ".help" for he
lp}} | |
298 do_test shell1-3.2.2 { | |
299 catchcmd "test.db" ".bail ON" | |
300 } {0 {}} | |
301 do_test shell1-3.2.3 { | |
302 catchcmd "test.db" ".bail OFF" | |
303 } {0 {}} | |
304 do_test shell1-3.2.4 { | |
305 # too many arguments | |
306 catchcmd "test.db" ".bail OFF BAD" | |
307 } {1 {Error: unknown command or invalid arguments: "bail". Enter ".help" for he
lp}} | |
308 | |
309 # .databases List names and files of attached databases | |
310 do_test shell1-3.3.1 { | |
311 set res [catchcmd "test.db" ".databases"] | |
312 regexp {0.*main.*test\.db} $res | |
313 } {1} | |
314 do_test shell1-3.3.2 { | |
315 # too many arguments | |
316 catchcmd "test.db" ".databases BAD" | |
317 } {1 {Error: unknown command or invalid arguments: "databases". Enter ".help" f
or help}} | |
318 | |
319 # .dump ?TABLE? ... Dump the database in an SQL text format | |
320 # If TABLE specified, only dump tables matching | |
321 # LIKE pattern TABLE. | |
322 do_test shell1-3.4.1 { | |
323 set res [catchcmd "test.db" ".dump"] | |
324 list [regexp {BEGIN TRANSACTION;} $res] \ | |
325 [regexp {COMMIT;} $res] | |
326 } {1 1} | |
327 do_test shell1-3.4.2 { | |
328 set res [catchcmd "test.db" ".dump FOO"] | |
329 list [regexp {BEGIN TRANSACTION;} $res] \ | |
330 [regexp {COMMIT;} $res] | |
331 } {1 1} | |
332 do_test shell1-3.4.3 { | |
333 # too many arguments | |
334 catchcmd "test.db" ".dump FOO BAD" | |
335 } {1 {Error: unknown command or invalid arguments: "dump". Enter ".help" for he
lp}} | |
336 | |
337 # .echo ON|OFF Turn command echo on or off | |
338 do_test shell1-3.5.1 { | |
339 catchcmd "test.db" ".echo" | |
340 } {1 {Error: unknown command or invalid arguments: "echo". Enter ".help" for he
lp}} | |
341 do_test shell1-3.5.2 { | |
342 catchcmd "test.db" ".echo ON" | |
343 } {0 {}} | |
344 do_test shell1-3.5.3 { | |
345 catchcmd "test.db" ".echo OFF" | |
346 } {0 {}} | |
347 do_test shell1-3.5.4 { | |
348 # too many arguments | |
349 catchcmd "test.db" ".echo OFF BAD" | |
350 } {1 {Error: unknown command or invalid arguments: "echo". Enter ".help" for he
lp}} | |
351 | |
352 # .exit Exit this program | |
353 do_test shell1-3.6.1 { | |
354 catchcmd "test.db" ".exit" | |
355 } {0 {}} | |
356 do_test shell1-3.6.2 { | |
357 # too many arguments | |
358 catchcmd "test.db" ".exit BAD" | |
359 } {1 {Error: unknown command or invalid arguments: "exit". Enter ".help" for he
lp}} | |
360 | |
361 # .explain ON|OFF Turn output mode suitable for EXPLAIN on or off. | |
362 do_test shell1-3.7.1 { | |
363 catchcmd "test.db" ".explain" | |
364 # explain is the exception to the booleans. without an option, it turns it on
. | |
365 } {0 {}} | |
366 do_test shell1-3.7.2 { | |
367 catchcmd "test.db" ".explain ON" | |
368 } {0 {}} | |
369 do_test shell1-3.7.3 { | |
370 catchcmd "test.db" ".explain OFF" | |
371 } {0 {}} | |
372 do_test shell1-3.7.4 { | |
373 # too many arguments | |
374 catchcmd "test.db" ".explain OFF BAD" | |
375 } {1 {Error: unknown command or invalid arguments: "explain". Enter ".help" for
help}} | |
376 | |
377 | |
378 # .header(s) ON|OFF Turn display of headers on or off | |
379 do_test shell1-3.9.1 { | |
380 catchcmd "test.db" ".header" | |
381 } {1 {Error: unknown command or invalid arguments: "header". Enter ".help" for
help}} | |
382 do_test shell1-3.9.2 { | |
383 catchcmd "test.db" ".header ON" | |
384 } {0 {}} | |
385 do_test shell1-3.9.3 { | |
386 catchcmd "test.db" ".header OFF" | |
387 } {0 {}} | |
388 do_test shell1-3.9.4 { | |
389 # too many arguments | |
390 catchcmd "test.db" ".header OFF BAD" | |
391 } {1 {Error: unknown command or invalid arguments: "header". Enter ".help" for
help}} | |
392 | |
393 do_test shell1-3.9.5 { | |
394 catchcmd "test.db" ".headers" | |
395 } {1 {Error: unknown command or invalid arguments: "headers". Enter ".help" for
help}} | |
396 do_test shell1-3.9.6 { | |
397 catchcmd "test.db" ".headers ON" | |
398 } {0 {}} | |
399 do_test shell1-3.9.7 { | |
400 catchcmd "test.db" ".headers OFF" | |
401 } {0 {}} | |
402 do_test shell1-3.9.8 { | |
403 # too many arguments | |
404 catchcmd "test.db" ".headers OFF BAD" | |
405 } {1 {Error: unknown command or invalid arguments: "headers". Enter ".help" for
help}} | |
406 | |
407 # .help Show this message | |
408 do_test shell1-3.10.1 { | |
409 set res [catchcmd "test.db" ".help"] | |
410 # look for a few of the possible help commands | |
411 list [regexp {.help} $res] \ | |
412 [regexp {.quit} $res] \ | |
413 [regexp {.show} $res] | |
414 } {1 1 1} | |
415 do_test shell1-3.10.2 { | |
416 # we allow .help to take extra args (it is help after all) | |
417 set res [catchcmd "test.db" ".help BAD"] | |
418 # look for a few of the possible help commands | |
419 list [regexp {.help} $res] \ | |
420 [regexp {.quit} $res] \ | |
421 [regexp {.show} $res] | |
422 } {1 1 1} | |
423 | |
424 # .import FILE TABLE Import data from FILE into TABLE | |
425 do_test shell1-3.11.1 { | |
426 catchcmd "test.db" ".import" | |
427 } {1 {Error: unknown command or invalid arguments: "import". Enter ".help" for
help}} | |
428 do_test shell1-3.11.2 { | |
429 catchcmd "test.db" ".import FOO" | |
430 } {1 {Error: unknown command or invalid arguments: "import". Enter ".help" for
help}} | |
431 do_test shell1-3.11.2 { | |
432 catchcmd "test.db" ".import FOO BAR" | |
433 } {1 {Error: no such table: BAR}} | |
434 do_test shell1-3.11.3 { | |
435 # too many arguments | |
436 catchcmd "test.db" ".import FOO BAR BAD" | |
437 } {1 {Error: unknown command or invalid arguments: "import". Enter ".help" for
help}} | |
438 | |
439 # .indices ?TABLE? Show names of all indices | |
440 # If TABLE specified, only show indices for tables | |
441 # matching LIKE pattern TABLE. | |
442 do_test shell1-3.12.1 { | |
443 catchcmd "test.db" ".indices" | |
444 } {0 {}} | |
445 do_test shell1-3.12.2 { | |
446 catchcmd "test.db" ".indices FOO" | |
447 } {0 {}} | |
448 do_test shell1-3.12.3 { | |
449 # too many arguments | |
450 catchcmd "test.db" ".indices FOO BAD" | |
451 } {1 {Error: unknown command or invalid arguments: "indices". Enter ".help" for
help}} | |
452 | |
453 # .mode MODE ?TABLE? Set output mode where MODE is one of: | |
454 # csv Comma-separated values | |
455 # column Left-aligned columns. (See .width) | |
456 # html HTML <table> code | |
457 # insert SQL insert statements for TABLE | |
458 # line One value per line | |
459 # list Values delimited by .separator string | |
460 # tabs Tab-separated values | |
461 # tcl TCL list elements | |
462 do_test shell1-3.13.1 { | |
463 catchcmd "test.db" ".mode" | |
464 } {1 {Error: unknown command or invalid arguments: "mode". Enter ".help" for he
lp}} | |
465 do_test shell1-3.13.2 { | |
466 catchcmd "test.db" ".mode FOO" | |
467 } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}} | |
468 do_test shell1-3.13.3 { | |
469 catchcmd "test.db" ".mode csv" | |
470 } {0 {}} | |
471 do_test shell1-3.13.4 { | |
472 catchcmd "test.db" ".mode column" | |
473 } {0 {}} | |
474 do_test shell1-3.13.5 { | |
475 catchcmd "test.db" ".mode html" | |
476 } {0 {}} | |
477 do_test shell1-3.13.6 { | |
478 catchcmd "test.db" ".mode insert" | |
479 } {0 {}} | |
480 do_test shell1-3.13.7 { | |
481 catchcmd "test.db" ".mode line" | |
482 } {0 {}} | |
483 do_test shell1-3.13.8 { | |
484 catchcmd "test.db" ".mode list" | |
485 } {0 {}} | |
486 do_test shell1-3.13.9 { | |
487 catchcmd "test.db" ".mode tabs" | |
488 } {0 {}} | |
489 do_test shell1-3.13.10 { | |
490 catchcmd "test.db" ".mode tcl" | |
491 } {0 {}} | |
492 do_test shell1-3.13.11 { | |
493 # too many arguments | |
494 catchcmd "test.db" ".mode tcl BAD" | |
495 } {1 {Error: invalid arguments: "BAD". Enter ".help" for help}} | |
496 | |
497 # don't allow partial mode type matches | |
498 do_test shell1-3.13.12 { | |
499 catchcmd "test.db" ".mode l" | |
500 } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}} | |
501 do_test shell1-3.13.13 { | |
502 catchcmd "test.db" ".mode li" | |
503 } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}} | |
504 do_test shell1-3.13.14 { | |
505 catchcmd "test.db" ".mode lin" | |
506 } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}} | |
507 | |
508 # .nullvalue STRING Print STRING in place of NULL values | |
509 do_test shell1-3.14.1 { | |
510 catchcmd "test.db" ".nullvalue" | |
511 } {1 {Error: unknown command or invalid arguments: "nullvalue". Enter ".help" f
or help}} | |
512 do_test shell1-3.14.2 { | |
513 catchcmd "test.db" ".nullvalue FOO" | |
514 } {0 {}} | |
515 do_test shell1-3.14.3 { | |
516 # too many arguments | |
517 catchcmd "test.db" ".nullvalue FOO BAD" | |
518 } {1 {Error: unknown command or invalid arguments: "nullvalue". Enter ".help" f
or help}} | |
519 | |
520 # .output FILENAME Send output to FILENAME | |
521 do_test shell1-3.15.1 { | |
522 catchcmd "test.db" ".output" | |
523 } {1 {Error: unknown command or invalid arguments: "output". Enter ".help" for
help}} | |
524 do_test shell1-3.15.2 { | |
525 catchcmd "test.db" ".output FOO" | |
526 } {0 {}} | |
527 do_test shell1-3.15.3 { | |
528 # too many arguments | |
529 catchcmd "test.db" ".output FOO BAD" | |
530 } {1 {Error: unknown command or invalid arguments: "output". Enter ".help" for
help}} | |
531 | |
532 # .output stdout Send output to the screen | |
533 do_test shell1-3.16.1 { | |
534 catchcmd "test.db" ".output stdout" | |
535 } {0 {}} | |
536 do_test shell1-3.16.2 { | |
537 # too many arguments | |
538 catchcmd "test.db" ".output stdout BAD" | |
539 } {1 {Error: unknown command or invalid arguments: "output". Enter ".help" for
help}} | |
540 | |
541 # .prompt MAIN CONTINUE Replace the standard prompts | |
542 do_test shell1-3.17.1 { | |
543 catchcmd "test.db" ".prompt" | |
544 } {1 {Error: unknown command or invalid arguments: "prompt". Enter ".help" for
help}} | |
545 do_test shell1-3.17.2 { | |
546 catchcmd "test.db" ".prompt FOO" | |
547 } {0 {}} | |
548 do_test shell1-3.17.3 { | |
549 catchcmd "test.db" ".prompt FOO BAR" | |
550 } {0 {}} | |
551 do_test shell1-3.17.4 { | |
552 # too many arguments | |
553 catchcmd "test.db" ".prompt FOO BAR BAD" | |
554 } {1 {Error: unknown command or invalid arguments: "prompt". Enter ".help" for
help}} | |
555 | |
556 # .quit Exit this program | |
557 do_test shell1-3.18.1 { | |
558 catchcmd "test.db" ".quit" | |
559 } {0 {}} | |
560 do_test shell1-3.18.2 { | |
561 # too many arguments | |
562 catchcmd "test.db" ".quit BAD" | |
563 } {1 {Error: unknown command or invalid arguments: "quit". Enter ".help" for he
lp}} | |
564 | |
565 # .read FILENAME Execute SQL in FILENAME | |
566 do_test shell1-3.19.1 { | |
567 catchcmd "test.db" ".read" | |
568 } {1 {Error: unknown command or invalid arguments: "read". Enter ".help" for he
lp}} | |
569 do_test shell1-3.19.2 { | |
570 file delete -force FOO | |
571 catchcmd "test.db" ".read FOO" | |
572 } {1 {Error: cannot open "FOO"}} | |
573 do_test shell1-3.19.3 { | |
574 # too many arguments | |
575 catchcmd "test.db" ".read FOO BAD" | |
576 } {1 {Error: unknown command or invalid arguments: "read". Enter ".help" for he
lp}} | |
577 | |
578 # .restore ?DB? FILE Restore content of DB (default "main") from FILE | |
579 do_test shell1-3.20.1 { | |
580 catchcmd "test.db" ".restore" | |
581 } {1 {Error: unknown command or invalid arguments: "restore". Enter ".help" for
help}} | |
582 do_test shell1-3.20.2 { | |
583 catchcmd "test.db" ".restore FOO" | |
584 } {0 {}} | |
585 do_test shell1-3.20.3 { | |
586 catchcmd "test.db" ".restore FOO BAR" | |
587 } {1 {Error: unknown database FOO}} | |
588 do_test shell1-3.20.4 { | |
589 # too many arguments | |
590 catchcmd "test.db" ".restore FOO BAR BAD" | |
591 } {1 {Error: unknown command or invalid arguments: "restore". Enter ".help" for
help}} | |
592 | |
593 # .schema ?TABLE? Show the CREATE statements | |
594 # If TABLE specified, only show tables matching | |
595 # LIKE pattern TABLE. | |
596 do_test shell1-3.21.1 { | |
597 catchcmd "test.db" ".schema" | |
598 } {0 {}} | |
599 do_test shell1-3.21.2 { | |
600 catchcmd "test.db" ".schema FOO" | |
601 } {0 {}} | |
602 do_test shell1-3.21.3 { | |
603 # too many arguments | |
604 catchcmd "test.db" ".schema FOO BAD" | |
605 } {1 {Error: unknown command or invalid arguments: "schema". Enter ".help" for
help}} | |
606 | |
607 # .separator STRING Change separator used by output mode and .import | |
608 do_test shell1-3.22.1 { | |
609 catchcmd "test.db" ".separator" | |
610 } {1 {Error: unknown command or invalid arguments: "separator". Enter ".help" f
or help}} | |
611 do_test shell1-3.22.2 { | |
612 catchcmd "test.db" ".separator FOO" | |
613 } {0 {}} | |
614 do_test shell1-3.22.3 { | |
615 # too many arguments | |
616 catchcmd "test.db" ".separator FOO BAD" | |
617 } {1 {Error: unknown command or invalid arguments: "separator". Enter ".help" f
or help}} | |
618 | |
619 # .show Show the current values for various settings | |
620 do_test shell1-3.23.1 { | |
621 set res [catchcmd "test.db" ".show"] | |
622 list [regexp {echo:} $res] \ | |
623 [regexp {explain:} $res] \ | |
624 [regexp {headers:} $res] \ | |
625 [regexp {mode:} $res] \ | |
626 [regexp {nullvalue:} $res] \ | |
627 [regexp {output:} $res] \ | |
628 [regexp {separator:} $res] \ | |
629 [regexp {stats:} $res] \ | |
630 [regexp {width:} $res] | |
631 } {1 1 1 1 1 1 1 1 1} | |
632 do_test shell1-3.23.2 { | |
633 # too many arguments | |
634 catchcmd "test.db" ".show BAD" | |
635 } {1 {Error: unknown command or invalid arguments: "show". Enter ".help" for he
lp}} | |
636 | |
637 # .stats ON|OFF Turn stats on or off | |
638 do_test shell1-3.23b.1 { | |
639 catchcmd "test.db" ".stats" | |
640 } {1 {Error: unknown command or invalid arguments: "stats". Enter ".help" for h
elp}} | |
641 do_test shell1-3.23b.2 { | |
642 catchcmd "test.db" ".stats ON" | |
643 } {0 {}} | |
644 do_test shell1-3.23b.3 { | |
645 catchcmd "test.db" ".stats OFF" | |
646 } {0 {}} | |
647 do_test shell1-3.23b.4 { | |
648 # too many arguments | |
649 catchcmd "test.db" ".stats OFF BAD" | |
650 } {1 {Error: unknown command or invalid arguments: "stats". Enter ".help" for h
elp}} | |
651 | |
652 # .tables ?TABLE? List names of tables | |
653 # If TABLE specified, only list tables matching | |
654 # LIKE pattern TABLE. | |
655 do_test shell1-3.24.1 { | |
656 catchcmd "test.db" ".tables" | |
657 } {0 {}} | |
658 do_test shell1-3.24.2 { | |
659 catchcmd "test.db" ".tables FOO" | |
660 } {0 {}} | |
661 do_test shell1-3.24.3 { | |
662 # too many arguments | |
663 catchcmd "test.db" ".tables FOO BAD" | |
664 } {1 {Error: unknown command or invalid arguments: "tables". Enter ".help" for
help}} | |
665 | |
666 # .timeout MS Try opening locked tables for MS milliseconds | |
667 do_test shell1-3.25.1 { | |
668 catchcmd "test.db" ".timeout" | |
669 } {1 {Error: unknown command or invalid arguments: "timeout". Enter ".help" for
help}} | |
670 do_test shell1-3.25.2 { | |
671 catchcmd "test.db" ".timeout zzz" | |
672 # this should be treated the same as a '0' timeout | |
673 } {0 {}} | |
674 do_test shell1-3.25.3 { | |
675 catchcmd "test.db" ".timeout 1" | |
676 } {0 {}} | |
677 do_test shell1-3.25.4 { | |
678 # too many arguments | |
679 catchcmd "test.db" ".timeout 1 BAD" | |
680 } {1 {Error: unknown command or invalid arguments: "timeout". Enter ".help" for
help}} | |
681 | |
682 # .width NUM NUM ... Set column widths for "column" mode | |
683 do_test shell1-3.26.1 { | |
684 catchcmd "test.db" ".width" | |
685 } {1 {Error: unknown command or invalid arguments: "width". Enter ".help" for h
elp}} | |
686 do_test shell1-3.26.2 { | |
687 catchcmd "test.db" ".width xxx" | |
688 # this should be treated the same as a '0' width for col 1 | |
689 } {0 {}} | |
690 do_test shell1-3.26.3 { | |
691 catchcmd "test.db" ".width xxx yyy" | |
692 # this should be treated the same as a '0' width for col 1 and 2 | |
693 } {0 {}} | |
694 do_test shell1-3.26.4 { | |
695 catchcmd "test.db" ".width 1 1" | |
696 # this should be treated the same as a '1' width for col 1 and 2 | |
697 } {0 {}} | |
698 | |
699 # .timer ON|OFF Turn the CPU timer measurement on or off | |
700 do_test shell1-3.27.1 { | |
701 catchcmd "test.db" ".timer" | |
702 } {1 {Error: unknown command or invalid arguments: "timer". Enter ".help" for h
elp}} | |
703 do_test shell1-3.27.2 { | |
704 catchcmd "test.db" ".timer ON" | |
705 } {0 {}} | |
706 do_test shell1-3.27.3 { | |
707 catchcmd "test.db" ".timer OFF" | |
708 } {0 {}} | |
709 do_test shell1-3.27.4 { | |
710 # too many arguments | |
711 catchcmd "test.db" ".timer OFF BAD" | |
712 } {1 {Error: unknown command or invalid arguments: "timer". Enter ".help" for h
elp}} | |
713 | |
714 puts "CLI tests completed successfully" | |
OLD | NEW |