mirror of
https://github.com/tursodatabase/libsql.git
synced 2024-12-16 21:51:14 +00:00
68 lines
1.8 KiB
Tcl
68 lines
1.8 KiB
Tcl
# Run this script using
|
|
#
|
|
# sqlite3_checker --test $thisscript $testscripts
|
|
#
|
|
# The $testscripts argument is optional. If omitted, all *.test files
|
|
# in the same directory as $thisscript are run.
|
|
#
|
|
set NTEST 0
|
|
set NERR 0
|
|
|
|
|
|
# Invoke the do_test procedure to run a single test
|
|
#
|
|
# The $expected parameter is the expected result. The result is the return
|
|
# value from the last TCL command in $cmd.
|
|
#
|
|
# Normally, $expected must match exactly. But if $expected is of the form
|
|
# "/regexp/" then regular expression matching is used. If $expected is
|
|
# "~/regexp/" then the regular expression must NOT match. If $expected is
|
|
# of the form "#/value-list/" then each term in value-list must be numeric
|
|
# and must approximately match the corresponding numeric term in $result.
|
|
# Values must match within 10%. Or if the $expected term is A..B then the
|
|
# $result term must be in between A and B.
|
|
#
|
|
proc do_test {name cmd expected} {
|
|
if {[info exists ::testprefix]} {
|
|
set name "$::testprefix$name"
|
|
}
|
|
|
|
incr ::NTEST
|
|
puts -nonewline $name...
|
|
flush stdout
|
|
|
|
if {[catch {uplevel #0 "$cmd;\n"} result]} {
|
|
puts -nonewline $name...
|
|
puts "\nError: $result"
|
|
incr ::NERR
|
|
} else {
|
|
set ok [expr {[string compare $result $expected]==0}]
|
|
if {!$ok} {
|
|
puts "\n! $name expected: \[$expected\]\n! $name got: \[$result\]"
|
|
incr ::NERR
|
|
} else {
|
|
puts " Ok"
|
|
}
|
|
}
|
|
flush stdout
|
|
}
|
|
|
|
#
|
|
# do_execsql_test TESTNAME SQL RES
|
|
#
|
|
proc do_execsql_test {testname sql {result {}}} {
|
|
uplevel [list do_test $testname [list db eval $sql] [list {*}$result]]
|
|
}
|
|
|
|
if {[llength $argv]==0} {
|
|
set dir [file dirname $argv0]
|
|
set argv [glob -nocomplain $dir/*.test]
|
|
}
|
|
foreach testfile $argv {
|
|
file delete -force test.db
|
|
sqlite3 db test.db
|
|
source $testfile
|
|
catch {db close}
|
|
}
|
|
puts "$NERR errors out of $NTEST tests"
|