Annotation of embedaddon/sqlite3/tool/shell3.test, revision 1.1.1.1

1.1       misho       1: # 2009 Dec 16
                      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: shell2.test,v 1.7 2009/07/17 16:54:48 shaneh Exp $
                     15: #
                     16: 
                     17: # Test plan:
                     18: #
                     19: #   shell3-1.*: Basic tests for running SQL statments from command line.
                     20: #   shell3-2.*: Basic tests for running SQL file from command line.
                     21: #
                     22: 
                     23: package require sqlite3
                     24: 
                     25: set CLI "./sqlite3"
                     26: 
                     27: proc do_test {name cmd expected} {
                     28:   puts -nonewline "$name ..."
                     29:   set res [uplevel $cmd]
                     30:   if {$res eq $expected} {
                     31:     puts Ok
                     32:   } else {
                     33:     puts Error
                     34:     puts "  Got: $res"
                     35:     puts "  Expected: $expected"
                     36:     exit
                     37:   }
                     38: }
                     39: 
                     40: proc execsql {sql} {
                     41:   uplevel [list db eval $sql]
                     42: }
                     43: 
                     44: proc catchsql {sql} {
                     45:   set rc [catch {uplevel [list db eval $sql]} msg]
                     46:   list $rc $msg
                     47: }
                     48: 
                     49: proc catchcmd {db {cmd ""}} {
                     50:   global CLI
                     51:   set out [open cmds.txt w]
                     52:   puts $out $cmd
                     53:   close $out
                     54:   set line "exec $CLI $db < cmds.txt"
                     55:   set rc [catch { eval $line } msg]
                     56:   list $rc $msg
                     57: }
                     58: 
                     59: file delete -force test.db test.db.journal
                     60: sqlite3 db test.db
                     61: 
                     62: 
                     63: #----------------------------------------------------------------------------
                     64: #   shell3-1.*: Basic tests for running SQL statments from command line.
                     65: #
                     66: 
                     67: # Run SQL statement from command line
                     68: do_test shell3-1.1 {
                     69:   file delete -force foo.db
                     70:   set rc [ catchcmd "foo.db \"CREATE TABLE t1(a);\"" ]
                     71:   set fexist [file exist foo.db]
                     72:   list $rc $fexist
                     73: } {{0 {}} 1}
                     74: do_test shell3-1.2 {
                     75:   catchcmd "foo.db" ".tables"
                     76: } {0 t1}
                     77: do_test shell3-1.3 {
                     78:   catchcmd "foo.db \"DROP TABLE t1;\""
                     79: } {0 {}}
                     80: do_test shell3-1.4 {
                     81:   catchcmd "foo.db" ".tables"
                     82: } {0 {}}
                     83: do_test shell3-1.5 {
                     84:   catchcmd "foo.db \"CREATE TABLE t1(a); DROP TABLE t1;\""
                     85: } {0 {}}
                     86: do_test shell3-1.6 {
                     87:   catchcmd "foo.db" ".tables"
                     88: } {0 {}}
                     89: do_test shell3-1.7 {
                     90:   catchcmd "foo.db \"CREATE TABLE\""
                     91: } {1 {Error: near "TABLE": syntax error}}
                     92: 
                     93: #----------------------------------------------------------------------------
                     94: #   shell3-2.*: Basic tests for running SQL file from command line.
                     95: #
                     96: 
                     97: # Run SQL file from command line
                     98: do_test shell3-2.1 {
                     99:   file delete -force foo.db
                    100:   set rc [ catchcmd "foo.db" "CREATE TABLE t1(a);" ]
                    101:   set fexist [file exist foo.db]
                    102:   list $rc $fexist
                    103: } {{0 {}} 1}
                    104: do_test shell3-2.2 {
                    105:   catchcmd "foo.db" ".tables"
                    106: } {0 t1}
                    107: do_test shell3-2.3 {
                    108:   catchcmd "foo.db" "DROP TABLE t1;"
                    109: } {0 {}}
                    110: do_test shell3-2.4 {
                    111:   catchcmd "foo.db" ".tables"
                    112: } {0 {}}
                    113: do_test shell3-2.5 {
                    114:   catchcmd "foo.db" "CREATE TABLE t1(a); DROP TABLE t1;"
                    115: } {0 {}}
                    116: do_test shell3-2.6 {
                    117:   catchcmd "foo.db" ".tables"
                    118: } {0 {}}
                    119: do_test shell3-2.7 {
                    120:   catchcmd "foo.db" "CREATE TABLE"
                    121: } {1 {Error: incomplete SQL: CREATE TABLE}}
                    122: 
                    123: 
                    124: puts "CLI tests completed successfully"

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>