Annotation of embedaddon/sqlite3/tool/shell1.test, revision 1.1
1.1 ! misho 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: set x [catchcmd "-version test.db" ""]
! 203: regexp {0 \{3.\d.\d+ 20\d\d-[01]\d-\d\d \d\d:\d\d:\d\d [0-9a-f]+\}} $x
! 204: } 1
! 205:
! 206: #----------------------------------------------------------------------------
! 207: # Test cases shell1-2.*: Basic "dot" command token parsing.
! 208: #
! 209:
! 210: # check first token handling
! 211: do_test shell1-2.1.1 {
! 212: catchcmd "test.db" ".foo"
! 213: } {1 {Error: unknown command or invalid arguments: "foo". Enter ".help" for help}}
! 214: do_test shell1-2.1.2 {
! 215: catchcmd "test.db" ".\"foo OFF\""
! 216: } {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for help}}
! 217: do_test shell1-2.1.3 {
! 218: catchcmd "test.db" ".\'foo OFF\'"
! 219: } {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for help}}
! 220:
! 221: # unbalanced quotes
! 222: do_test shell1-2.2.1 {
! 223: catchcmd "test.db" ".\"foo OFF"
! 224: } {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for help}}
! 225: do_test shell1-2.2.2 {
! 226: catchcmd "test.db" ".\'foo OFF"
! 227: } {1 {Error: unknown command or invalid arguments: "foo OFF". Enter ".help" for help}}
! 228: do_test shell1-2.2.3 {
! 229: catchcmd "test.db" ".explain \"OFF"
! 230: } {0 {}}
! 231: do_test shell1-2.2.4 {
! 232: catchcmd "test.db" ".explain \'OFF"
! 233: } {0 {}}
! 234: do_test shell1-2.2.5 {
! 235: catchcmd "test.db" ".mode \"insert FOO"
! 236: } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
! 237: do_test shell1-2.2.6 {
! 238: catchcmd "test.db" ".mode \'insert FOO"
! 239: } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
! 240:
! 241: # check multiple tokens, and quoted tokens
! 242: do_test shell1-2.3.1 {
! 243: catchcmd "test.db" ".explain 1"
! 244: } {0 {}}
! 245: do_test shell1-2.3.2 {
! 246: catchcmd "test.db" ".explain on"
! 247: } {0 {}}
! 248: do_test shell1-2.3.3 {
! 249: catchcmd "test.db" ".explain \"1 2 3\""
! 250: } {0 {}}
! 251: do_test shell1-2.3.4 {
! 252: catchcmd "test.db" ".explain \"OFF\""
! 253: } {0 {}}
! 254: do_test shell1-2.3.5 {
! 255: catchcmd "test.db" ".\'explain\' \'OFF\'"
! 256: } {0 {}}
! 257: do_test shell1-2.3.6 {
! 258: catchcmd "test.db" ".explain \'OFF\'"
! 259: } {0 {}}
! 260: do_test shell1-2.3.7 {
! 261: catchcmd "test.db" ".\'explain\' \'OFF\'"
! 262: } {0 {}}
! 263:
! 264: # check quoted args are unquoted
! 265: do_test shell1-2.4.1 {
! 266: catchcmd "test.db" ".mode FOO"
! 267: } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
! 268: do_test shell1-2.4.2 {
! 269: catchcmd "test.db" ".mode csv"
! 270: } {0 {}}
! 271: do_test shell1-2.4.2 {
! 272: catchcmd "test.db" ".mode \"csv\""
! 273: } {0 {}}
! 274:
! 275:
! 276: #----------------------------------------------------------------------------
! 277: # Test cases shell1-3.*: Basic test that "dot" command can be called.
! 278: #
! 279:
! 280: # .backup ?DB? FILE Backup DB (default "main") to FILE
! 281: do_test shell1-3.1.1 {
! 282: catchcmd "test.db" ".backup"
! 283: } {1 {Error: unknown command or invalid arguments: "backup". Enter ".help" for help}}
! 284: do_test shell1-3.1.2 {
! 285: catchcmd "test.db" ".backup FOO"
! 286: } {0 {}}
! 287: do_test shell1-3.1.3 {
! 288: catchcmd "test.db" ".backup FOO BAR"
! 289: } {1 {Error: unknown database FOO}}
! 290: do_test shell1-3.1.4 {
! 291: # too many arguments
! 292: catchcmd "test.db" ".backup FOO BAR BAD"
! 293: } {1 {Error: unknown command or invalid arguments: "backup". Enter ".help" for help}}
! 294:
! 295: # .bail ON|OFF Stop after hitting an error. Default OFF
! 296: do_test shell1-3.2.1 {
! 297: catchcmd "test.db" ".bail"
! 298: } {1 {Error: unknown command or invalid arguments: "bail". Enter ".help" for help}}
! 299: do_test shell1-3.2.2 {
! 300: catchcmd "test.db" ".bail ON"
! 301: } {0 {}}
! 302: do_test shell1-3.2.3 {
! 303: catchcmd "test.db" ".bail OFF"
! 304: } {0 {}}
! 305: do_test shell1-3.2.4 {
! 306: # too many arguments
! 307: catchcmd "test.db" ".bail OFF BAD"
! 308: } {1 {Error: unknown command or invalid arguments: "bail". Enter ".help" for help}}
! 309:
! 310: # .databases List names and files of attached databases
! 311: do_test shell1-3.3.1 {
! 312: set res [catchcmd "test.db" ".databases"]
! 313: regexp {0.*main.*test\.db} $res
! 314: } {1}
! 315: do_test shell1-3.3.2 {
! 316: # too many arguments
! 317: catchcmd "test.db" ".databases BAD"
! 318: } {1 {Error: unknown command or invalid arguments: "databases". Enter ".help" for help}}
! 319:
! 320: # .dump ?TABLE? ... Dump the database in an SQL text format
! 321: # If TABLE specified, only dump tables matching
! 322: # LIKE pattern TABLE.
! 323: do_test shell1-3.4.1 {
! 324: set res [catchcmd "test.db" ".dump"]
! 325: list [regexp {BEGIN TRANSACTION;} $res] \
! 326: [regexp {COMMIT;} $res]
! 327: } {1 1}
! 328: do_test shell1-3.4.2 {
! 329: set res [catchcmd "test.db" ".dump FOO"]
! 330: list [regexp {BEGIN TRANSACTION;} $res] \
! 331: [regexp {COMMIT;} $res]
! 332: } {1 1}
! 333: do_test shell1-3.4.3 {
! 334: # too many arguments
! 335: catchcmd "test.db" ".dump FOO BAD"
! 336: } {1 {Error: unknown command or invalid arguments: "dump". Enter ".help" for help}}
! 337:
! 338: # .echo ON|OFF Turn command echo on or off
! 339: do_test shell1-3.5.1 {
! 340: catchcmd "test.db" ".echo"
! 341: } {1 {Error: unknown command or invalid arguments: "echo". Enter ".help" for help}}
! 342: do_test shell1-3.5.2 {
! 343: catchcmd "test.db" ".echo ON"
! 344: } {0 {}}
! 345: do_test shell1-3.5.3 {
! 346: catchcmd "test.db" ".echo OFF"
! 347: } {0 {}}
! 348: do_test shell1-3.5.4 {
! 349: # too many arguments
! 350: catchcmd "test.db" ".echo OFF BAD"
! 351: } {1 {Error: unknown command or invalid arguments: "echo". Enter ".help" for help}}
! 352:
! 353: # .exit Exit this program
! 354: do_test shell1-3.6.1 {
! 355: catchcmd "test.db" ".exit"
! 356: } {0 {}}
! 357: do_test shell1-3.6.2 {
! 358: # too many arguments
! 359: catchcmd "test.db" ".exit BAD"
! 360: } {1 {Error: unknown command or invalid arguments: "exit". Enter ".help" for help}}
! 361:
! 362: # .explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
! 363: do_test shell1-3.7.1 {
! 364: catchcmd "test.db" ".explain"
! 365: # explain is the exception to the booleans. without an option, it turns it on.
! 366: } {0 {}}
! 367: do_test shell1-3.7.2 {
! 368: catchcmd "test.db" ".explain ON"
! 369: } {0 {}}
! 370: do_test shell1-3.7.3 {
! 371: catchcmd "test.db" ".explain OFF"
! 372: } {0 {}}
! 373: do_test shell1-3.7.4 {
! 374: # too many arguments
! 375: catchcmd "test.db" ".explain OFF BAD"
! 376: } {1 {Error: unknown command or invalid arguments: "explain". Enter ".help" for help}}
! 377:
! 378:
! 379: # .header(s) ON|OFF Turn display of headers on or off
! 380: do_test shell1-3.9.1 {
! 381: catchcmd "test.db" ".header"
! 382: } {1 {Error: unknown command or invalid arguments: "header". Enter ".help" for help}}
! 383: do_test shell1-3.9.2 {
! 384: catchcmd "test.db" ".header ON"
! 385: } {0 {}}
! 386: do_test shell1-3.9.3 {
! 387: catchcmd "test.db" ".header OFF"
! 388: } {0 {}}
! 389: do_test shell1-3.9.4 {
! 390: # too many arguments
! 391: catchcmd "test.db" ".header OFF BAD"
! 392: } {1 {Error: unknown command or invalid arguments: "header". Enter ".help" for help}}
! 393:
! 394: do_test shell1-3.9.5 {
! 395: catchcmd "test.db" ".headers"
! 396: } {1 {Error: unknown command or invalid arguments: "headers". Enter ".help" for help}}
! 397: do_test shell1-3.9.6 {
! 398: catchcmd "test.db" ".headers ON"
! 399: } {0 {}}
! 400: do_test shell1-3.9.7 {
! 401: catchcmd "test.db" ".headers OFF"
! 402: } {0 {}}
! 403: do_test shell1-3.9.8 {
! 404: # too many arguments
! 405: catchcmd "test.db" ".headers OFF BAD"
! 406: } {1 {Error: unknown command or invalid arguments: "headers". Enter ".help" for help}}
! 407:
! 408: # .help Show this message
! 409: do_test shell1-3.10.1 {
! 410: set res [catchcmd "test.db" ".help"]
! 411: # look for a few of the possible help commands
! 412: list [regexp {.help} $res] \
! 413: [regexp {.quit} $res] \
! 414: [regexp {.show} $res]
! 415: } {1 1 1}
! 416: do_test shell1-3.10.2 {
! 417: # we allow .help to take extra args (it is help after all)
! 418: set res [catchcmd "test.db" ".help BAD"]
! 419: # look for a few of the possible help commands
! 420: list [regexp {.help} $res] \
! 421: [regexp {.quit} $res] \
! 422: [regexp {.show} $res]
! 423: } {1 1 1}
! 424:
! 425: # .import FILE TABLE Import data from FILE into TABLE
! 426: do_test shell1-3.11.1 {
! 427: catchcmd "test.db" ".import"
! 428: } {1 {Error: unknown command or invalid arguments: "import". Enter ".help" for help}}
! 429: do_test shell1-3.11.2 {
! 430: catchcmd "test.db" ".import FOO"
! 431: } {1 {Error: unknown command or invalid arguments: "import". Enter ".help" for help}}
! 432: do_test shell1-3.11.2 {
! 433: catchcmd "test.db" ".import FOO BAR"
! 434: } {1 {Error: no such table: BAR}}
! 435: do_test shell1-3.11.3 {
! 436: # too many arguments
! 437: catchcmd "test.db" ".import FOO BAR BAD"
! 438: } {1 {Error: unknown command or invalid arguments: "import". Enter ".help" for help}}
! 439:
! 440: # .indices ?TABLE? Show names of all indices
! 441: # If TABLE specified, only show indices for tables
! 442: # matching LIKE pattern TABLE.
! 443: do_test shell1-3.12.1 {
! 444: catchcmd "test.db" ".indices"
! 445: } {0 {}}
! 446: do_test shell1-3.12.2 {
! 447: catchcmd "test.db" ".indices FOO"
! 448: } {0 {}}
! 449: do_test shell1-3.12.3 {
! 450: # too many arguments
! 451: catchcmd "test.db" ".indices FOO BAD"
! 452: } {1 {Error: unknown command or invalid arguments: "indices". Enter ".help" for help}}
! 453:
! 454: # .mode MODE ?TABLE? Set output mode where MODE is one of:
! 455: # csv Comma-separated values
! 456: # column Left-aligned columns. (See .width)
! 457: # html HTML <table> code
! 458: # insert SQL insert statements for TABLE
! 459: # line One value per line
! 460: # list Values delimited by .separator string
! 461: # tabs Tab-separated values
! 462: # tcl TCL list elements
! 463: do_test shell1-3.13.1 {
! 464: catchcmd "test.db" ".mode"
! 465: } {1 {Error: unknown command or invalid arguments: "mode". Enter ".help" for help}}
! 466: do_test shell1-3.13.2 {
! 467: catchcmd "test.db" ".mode FOO"
! 468: } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
! 469: do_test shell1-3.13.3 {
! 470: catchcmd "test.db" ".mode csv"
! 471: } {0 {}}
! 472: do_test shell1-3.13.4 {
! 473: catchcmd "test.db" ".mode column"
! 474: } {0 {}}
! 475: do_test shell1-3.13.5 {
! 476: catchcmd "test.db" ".mode html"
! 477: } {0 {}}
! 478: do_test shell1-3.13.6 {
! 479: catchcmd "test.db" ".mode insert"
! 480: } {0 {}}
! 481: do_test shell1-3.13.7 {
! 482: catchcmd "test.db" ".mode line"
! 483: } {0 {}}
! 484: do_test shell1-3.13.8 {
! 485: catchcmd "test.db" ".mode list"
! 486: } {0 {}}
! 487: do_test shell1-3.13.9 {
! 488: catchcmd "test.db" ".mode tabs"
! 489: } {0 {}}
! 490: do_test shell1-3.13.10 {
! 491: catchcmd "test.db" ".mode tcl"
! 492: } {0 {}}
! 493: do_test shell1-3.13.11 {
! 494: # too many arguments
! 495: catchcmd "test.db" ".mode tcl BAD"
! 496: } {1 {Error: invalid arguments: "BAD". Enter ".help" for help}}
! 497:
! 498: # don't allow partial mode type matches
! 499: do_test shell1-3.13.12 {
! 500: catchcmd "test.db" ".mode l"
! 501: } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
! 502: do_test shell1-3.13.13 {
! 503: catchcmd "test.db" ".mode li"
! 504: } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
! 505: do_test shell1-3.13.14 {
! 506: catchcmd "test.db" ".mode lin"
! 507: } {1 {Error: mode should be one of: column csv html insert line list tabs tcl}}
! 508:
! 509: # .nullvalue STRING Print STRING in place of NULL values
! 510: do_test shell1-3.14.1 {
! 511: catchcmd "test.db" ".nullvalue"
! 512: } {1 {Error: unknown command or invalid arguments: "nullvalue". Enter ".help" for help}}
! 513: do_test shell1-3.14.2 {
! 514: catchcmd "test.db" ".nullvalue FOO"
! 515: } {0 {}}
! 516: do_test shell1-3.14.3 {
! 517: # too many arguments
! 518: catchcmd "test.db" ".nullvalue FOO BAD"
! 519: } {1 {Error: unknown command or invalid arguments: "nullvalue". Enter ".help" for help}}
! 520:
! 521: # .output FILENAME Send output to FILENAME
! 522: do_test shell1-3.15.1 {
! 523: catchcmd "test.db" ".output"
! 524: } {1 {Error: unknown command or invalid arguments: "output". Enter ".help" for help}}
! 525: do_test shell1-3.15.2 {
! 526: catchcmd "test.db" ".output FOO"
! 527: } {0 {}}
! 528: do_test shell1-3.15.3 {
! 529: # too many arguments
! 530: catchcmd "test.db" ".output FOO BAD"
! 531: } {1 {Error: unknown command or invalid arguments: "output". Enter ".help" for help}}
! 532:
! 533: # .output stdout Send output to the screen
! 534: do_test shell1-3.16.1 {
! 535: catchcmd "test.db" ".output stdout"
! 536: } {0 {}}
! 537: do_test shell1-3.16.2 {
! 538: # too many arguments
! 539: catchcmd "test.db" ".output stdout BAD"
! 540: } {1 {Error: unknown command or invalid arguments: "output". Enter ".help" for help}}
! 541:
! 542: # .prompt MAIN CONTINUE Replace the standard prompts
! 543: do_test shell1-3.17.1 {
! 544: catchcmd "test.db" ".prompt"
! 545: } {1 {Error: unknown command or invalid arguments: "prompt". Enter ".help" for help}}
! 546: do_test shell1-3.17.2 {
! 547: catchcmd "test.db" ".prompt FOO"
! 548: } {0 {}}
! 549: do_test shell1-3.17.3 {
! 550: catchcmd "test.db" ".prompt FOO BAR"
! 551: } {0 {}}
! 552: do_test shell1-3.17.4 {
! 553: # too many arguments
! 554: catchcmd "test.db" ".prompt FOO BAR BAD"
! 555: } {1 {Error: unknown command or invalid arguments: "prompt". Enter ".help" for help}}
! 556:
! 557: # .quit Exit this program
! 558: do_test shell1-3.18.1 {
! 559: catchcmd "test.db" ".quit"
! 560: } {0 {}}
! 561: do_test shell1-3.18.2 {
! 562: # too many arguments
! 563: catchcmd "test.db" ".quit BAD"
! 564: } {1 {Error: unknown command or invalid arguments: "quit". Enter ".help" for help}}
! 565:
! 566: # .read FILENAME Execute SQL in FILENAME
! 567: do_test shell1-3.19.1 {
! 568: catchcmd "test.db" ".read"
! 569: } {1 {Error: unknown command or invalid arguments: "read". Enter ".help" for help}}
! 570: do_test shell1-3.19.2 {
! 571: file delete -force FOO
! 572: catchcmd "test.db" ".read FOO"
! 573: } {1 {Error: cannot open "FOO"}}
! 574: do_test shell1-3.19.3 {
! 575: # too many arguments
! 576: catchcmd "test.db" ".read FOO BAD"
! 577: } {1 {Error: unknown command or invalid arguments: "read". Enter ".help" for help}}
! 578:
! 579: # .restore ?DB? FILE Restore content of DB (default "main") from FILE
! 580: do_test shell1-3.20.1 {
! 581: catchcmd "test.db" ".restore"
! 582: } {1 {Error: unknown command or invalid arguments: "restore". Enter ".help" for help}}
! 583: do_test shell1-3.20.2 {
! 584: catchcmd "test.db" ".restore FOO"
! 585: } {0 {}}
! 586: do_test shell1-3.20.3 {
! 587: catchcmd "test.db" ".restore FOO BAR"
! 588: } {1 {Error: unknown database FOO}}
! 589: do_test shell1-3.20.4 {
! 590: # too many arguments
! 591: catchcmd "test.db" ".restore FOO BAR BAD"
! 592: } {1 {Error: unknown command or invalid arguments: "restore". Enter ".help" for help}}
! 593:
! 594: # .schema ?TABLE? Show the CREATE statements
! 595: # If TABLE specified, only show tables matching
! 596: # LIKE pattern TABLE.
! 597: do_test shell1-3.21.1 {
! 598: catchcmd "test.db" ".schema"
! 599: } {0 {}}
! 600: do_test shell1-3.21.2 {
! 601: catchcmd "test.db" ".schema FOO"
! 602: } {0 {}}
! 603: do_test shell1-3.21.3 {
! 604: # too many arguments
! 605: catchcmd "test.db" ".schema FOO BAD"
! 606: } {1 {Error: unknown command or invalid arguments: "schema". Enter ".help" for help}}
! 607:
! 608: # .separator STRING Change separator used by output mode and .import
! 609: do_test shell1-3.22.1 {
! 610: catchcmd "test.db" ".separator"
! 611: } {1 {Error: unknown command or invalid arguments: "separator". Enter ".help" for help}}
! 612: do_test shell1-3.22.2 {
! 613: catchcmd "test.db" ".separator FOO"
! 614: } {0 {}}
! 615: do_test shell1-3.22.3 {
! 616: # too many arguments
! 617: catchcmd "test.db" ".separator FOO BAD"
! 618: } {1 {Error: unknown command or invalid arguments: "separator". Enter ".help" for help}}
! 619:
! 620: # .show Show the current values for various settings
! 621: do_test shell1-3.23.1 {
! 622: set res [catchcmd "test.db" ".show"]
! 623: list [regexp {echo:} $res] \
! 624: [regexp {explain:} $res] \
! 625: [regexp {headers:} $res] \
! 626: [regexp {mode:} $res] \
! 627: [regexp {nullvalue:} $res] \
! 628: [regexp {output:} $res] \
! 629: [regexp {separator:} $res] \
! 630: [regexp {stats:} $res] \
! 631: [regexp {width:} $res]
! 632: } {1 1 1 1 1 1 1 1 1}
! 633: do_test shell1-3.23.2 {
! 634: # too many arguments
! 635: catchcmd "test.db" ".show BAD"
! 636: } {1 {Error: unknown command or invalid arguments: "show". Enter ".help" for help}}
! 637:
! 638: # .stats ON|OFF Turn stats on or off
! 639: do_test shell1-3.23b.1 {
! 640: catchcmd "test.db" ".stats"
! 641: } {1 {Error: unknown command or invalid arguments: "stats". Enter ".help" for help}}
! 642: do_test shell1-3.23b.2 {
! 643: catchcmd "test.db" ".stats ON"
! 644: } {0 {}}
! 645: do_test shell1-3.23b.3 {
! 646: catchcmd "test.db" ".stats OFF"
! 647: } {0 {}}
! 648: do_test shell1-3.23b.4 {
! 649: # too many arguments
! 650: catchcmd "test.db" ".stats OFF BAD"
! 651: } {1 {Error: unknown command or invalid arguments: "stats". Enter ".help" for help}}
! 652:
! 653: # .tables ?TABLE? List names of tables
! 654: # If TABLE specified, only list tables matching
! 655: # LIKE pattern TABLE.
! 656: do_test shell1-3.24.1 {
! 657: catchcmd "test.db" ".tables"
! 658: } {0 {}}
! 659: do_test shell1-3.24.2 {
! 660: catchcmd "test.db" ".tables FOO"
! 661: } {0 {}}
! 662: do_test shell1-3.24.3 {
! 663: # too many arguments
! 664: catchcmd "test.db" ".tables FOO BAD"
! 665: } {1 {Error: unknown command or invalid arguments: "tables". Enter ".help" for help}}
! 666:
! 667: # .timeout MS Try opening locked tables for MS milliseconds
! 668: do_test shell1-3.25.1 {
! 669: catchcmd "test.db" ".timeout"
! 670: } {1 {Error: unknown command or invalid arguments: "timeout". Enter ".help" for help}}
! 671: do_test shell1-3.25.2 {
! 672: catchcmd "test.db" ".timeout zzz"
! 673: # this should be treated the same as a '0' timeout
! 674: } {0 {}}
! 675: do_test shell1-3.25.3 {
! 676: catchcmd "test.db" ".timeout 1"
! 677: } {0 {}}
! 678: do_test shell1-3.25.4 {
! 679: # too many arguments
! 680: catchcmd "test.db" ".timeout 1 BAD"
! 681: } {1 {Error: unknown command or invalid arguments: "timeout". Enter ".help" for help}}
! 682:
! 683: # .width NUM NUM ... Set column widths for "column" mode
! 684: do_test shell1-3.26.1 {
! 685: catchcmd "test.db" ".width"
! 686: } {1 {Error: unknown command or invalid arguments: "width". Enter ".help" for help}}
! 687: do_test shell1-3.26.2 {
! 688: catchcmd "test.db" ".width xxx"
! 689: # this should be treated the same as a '0' width for col 1
! 690: } {0 {}}
! 691: do_test shell1-3.26.3 {
! 692: catchcmd "test.db" ".width xxx yyy"
! 693: # this should be treated the same as a '0' width for col 1 and 2
! 694: } {0 {}}
! 695: do_test shell1-3.26.4 {
! 696: catchcmd "test.db" ".width 1 1"
! 697: # this should be treated the same as a '1' width for col 1 and 2
! 698: } {0 {}}
! 699:
! 700: # .timer ON|OFF Turn the CPU timer measurement on or off
! 701: do_test shell1-3.27.1 {
! 702: catchcmd "test.db" ".timer"
! 703: } {1 {Error: unknown command or invalid arguments: "timer". Enter ".help" for help}}
! 704: do_test shell1-3.27.2 {
! 705: catchcmd "test.db" ".timer ON"
! 706: } {0 {}}
! 707: do_test shell1-3.27.3 {
! 708: catchcmd "test.db" ".timer OFF"
! 709: } {0 {}}
! 710: do_test shell1-3.27.4 {
! 711: # too many arguments
! 712: catchcmd "test.db" ".timer OFF BAD"
! 713: } {1 {Error: unknown command or invalid arguments: "timer". Enter ".help" for help}}
! 714:
! 715: do_test shell1-3-28.1 {
! 716: catchcmd test.db \
! 717: ".log stdout\nSELECT coalesce(sqlite_log(123,'hello'),'456');"
! 718: } "0 {(123) hello\n456}"
! 719:
! 720: puts "CLI tests completed successfully"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>