cc: Added inline to Tile::IsReadyToDraw
[chromium-blink-merge.git] / third_party / sqlite / src / tool / shell1.test
blob7acb3b3ffd8e541c71e906f83f34283658f04294
1 # 2009 Nov 11
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
12 # The focus of this file is testing the CLI shell tool.
14 # $Id: shell1.test,v 1.7 2009/07/17 16:54:48 shaneh Exp $
17 # Test plan:
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.
24 package require sqlite3
26 set CLI "./sqlite3"
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   }
41 proc execsql {sql} {
42   uplevel [list db eval $sql]
45 proc catchsql {sql} {
46   set rc [catch {uplevel [list db eval $sql]} msg]
47   list $rc $msg
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
60 file delete -force test.db test.db.journal
61 sqlite3 db test.db
63 #----------------------------------------------------------------------------
64 # Test cases shell1-1.*: Basic command line option handling.
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}
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}
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}
110 # -echo                print commands before execution
111 do_test shell1-1.4.1 {
112   catchcmd "-echo test.db" "" 
113 } {0 {}}
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 {}}
123 # -bail                stop after hitting an error
124 do_test shell1-1.6.1 {
125   catchcmd "-bail test.db" "" 
126 } {0 {}}
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}
137 # -batch               force batch I/O
138 do_test shell1-1.8.1 {
139   catchcmd "-batch test.db" "" 
140 } {0 {}}
142 # -column              set output mode to 'column'
143 do_test shell1-1.9.1 {
144   catchcmd "-column test.db" "" 
145 } {0 {}}
147 # -csv                 set output mode to 'csv'
148 do_test shell1-1.10.1 {
149   catchcmd "-csv test.db" "" 
150 } {0 {}}
152 # -html                set output mode to HTML
153 do_test shell1-1.11.1 {
154   catchcmd "-html test.db" "" 
155 } {0 {}}
157 # -line                set output mode to 'line'
158 do_test shell1-1.12.1 {
159   catchcmd "-line test.db" "" 
160 } {0 {}}
162 # -list                set output mode to 'list'
163 do_test shell1-1.13.1 {
164   catchcmd "-list test.db" "" 
165 } {0 {}}
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}
181 # -stats               print memory stats before each finalize
182 do_test shell1-1.14b.1 {
183   catchcmd "-stats test.db" "" 
184 } {0 {}}
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}
200 # -version             show SQLite version
201 do_test shell1-1.16.1 {
202   catchcmd "-version test.db" "" 
203 } {0 3.7.6.3}
205 #----------------------------------------------------------------------------
206 # Test cases shell1-2.*: Basic "dot" command token parsing.
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 help}}
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}}
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}}
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 {}}
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 {}}
275 #----------------------------------------------------------------------------
276 # Test cases shell1-3.*: Basic test that "dot" command can be called.
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}}
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 help}}
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 help}}
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" for help}}
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 help}}
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 help}}
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 help}}
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 help}}
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}}
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}}
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}}
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}
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}}
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}}
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 help}}
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}}
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}}
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" for 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" for help}}
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}}
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}}
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}}
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 help}}
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 help}}
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 help}}
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}}
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}}
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" for 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" for help}}
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 help}}
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 help}}
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 help}}
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}}
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}}
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 help}}
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 {}}
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 help}}
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 help}}
714 puts "CLI tests completed successfully"