mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-18 17:14:20 +01:00
Add Ansi Colors to tcl test runner
This commit is contained in:
@@ -2,6 +2,14 @@ set sqlite_exec [expr {[info exists env(SQLITE_EXEC)] ? $env(SQLITE_EXEC) : "sql
|
||||
set test_dbs [list "testing/testing.db" "testing/testing_norowidalias.db"]
|
||||
set test_small_dbs [list "testing/testing_small.db" ]
|
||||
|
||||
proc error_put {sql} {
|
||||
puts [format "\033\[1;31mTest FAILED:\033\[0m %s" $sql ]
|
||||
}
|
||||
|
||||
proc test_put {msg db test_name} {
|
||||
puts [format "\033\[1;34m(%s)\033\[0m %s $msg: \033\[1;32m%s\033\[0m" $db [string repeat " " [expr {40 - [string length $db]}]] $test_name]
|
||||
}
|
||||
|
||||
proc evaluate_sql {sqlite_exec db_name sql} {
|
||||
set command [list $sqlite_exec $db_name $sql]
|
||||
set output [exec {*}$command]
|
||||
@@ -11,7 +19,7 @@ proc evaluate_sql {sqlite_exec db_name sql} {
|
||||
proc run_test {sqlite_exec db_name sql expected_output} {
|
||||
set actual_output [evaluate_sql $sqlite_exec $db_name $sql]
|
||||
if {$actual_output ne $expected_output} {
|
||||
puts "Test FAILED: '$sql'"
|
||||
error_put $sql
|
||||
puts "returned '$actual_output'"
|
||||
puts "expected '$expected_output'"
|
||||
exit 1
|
||||
@@ -20,7 +28,7 @@ proc run_test {sqlite_exec db_name sql expected_output} {
|
||||
|
||||
proc do_execsql_test {test_name sql_statements expected_outputs} {
|
||||
foreach db $::test_dbs {
|
||||
puts [format "(%s) %s Running test: %s" $db [string repeat " " [expr {40 - [string length $db]}]] $test_name]
|
||||
test_put "Running test" $db $test_name
|
||||
set combined_sql [string trim $sql_statements]
|
||||
set combined_expected_output [join $expected_outputs "\n"]
|
||||
run_test $::sqlite_exec $db $combined_sql $combined_expected_output
|
||||
@@ -29,7 +37,7 @@ proc do_execsql_test {test_name sql_statements expected_outputs} {
|
||||
|
||||
proc do_execsql_test_small {test_name sql_statements expected_outputs} {
|
||||
foreach db $::test_small_dbs {
|
||||
puts [format "(%s) %s Running test: %s" $db [string repeat " " [expr {40 - [string length $db]}]] $test_name]
|
||||
test_put "Running test" $db $test_name
|
||||
set combined_sql [string trim $sql_statements]
|
||||
set combined_expected_output [join $expected_outputs "\n"]
|
||||
run_test $::sqlite_exec $db $combined_sql $combined_expected_output
|
||||
@@ -39,13 +47,13 @@ proc do_execsql_test_small {test_name sql_statements expected_outputs} {
|
||||
|
||||
proc do_execsql_test_regex {test_name sql_statements expected_regex} {
|
||||
foreach db $::test_dbs {
|
||||
puts [format "(%s) %s Running test: %s" $db [string repeat " " [expr {40 - [string length $db]}]] $test_name]
|
||||
test_put "Running test" $db $test_name
|
||||
set combined_sql [string trim $sql_statements]
|
||||
set actual_output [evaluate_sql $::sqlite_exec $db $combined_sql]
|
||||
|
||||
# Validate the actual output against the regular expression
|
||||
if {![regexp $expected_regex $actual_output]} {
|
||||
puts "Test FAILED: '$sql_statements'"
|
||||
error_put $sql_statements
|
||||
puts "returned '$actual_output'"
|
||||
puts "expected to match regex '$expected_regex'"
|
||||
exit 1
|
||||
@@ -55,7 +63,7 @@ proc do_execsql_test_regex {test_name sql_statements expected_regex} {
|
||||
|
||||
|
||||
proc do_execsql_test_on_specific_db {db_name test_name sql_statements expected_outputs} {
|
||||
puts [format "(%s) %s Running test: %s" $db_name [string repeat " " [expr {40 - [string length $db_name]}]] $test_name]
|
||||
test_put "Running test" $db_name $test_name
|
||||
set combined_sql [string trim $sql_statements]
|
||||
set combined_expected_output [join $expected_outputs "\n"]
|
||||
run_test $::sqlite_exec $db_name $combined_sql $combined_expected_output
|
||||
@@ -69,14 +77,14 @@ proc within_tolerance {actual expected tolerance} {
|
||||
# FIXME: When Limbo's floating point presentation matches to SQLite, this could/should be removed
|
||||
proc do_execsql_test_tolerance {test_name sql_statements expected_outputs tolerance} {
|
||||
foreach db $::test_dbs {
|
||||
puts [format "(%s) %s Running test: %s" $db [string repeat " " [expr {40 - [string length $db]}]] $test_name]
|
||||
test_put "Running test" $db $test_name
|
||||
set combined_sql [string trim $sql_statements]
|
||||
set actual_output [evaluate_sql $::sqlite_exec $db $combined_sql]
|
||||
set actual_values [split $actual_output "\n"]
|
||||
set expected_values [split $expected_outputs "\n"]
|
||||
|
||||
if {[llength $actual_values] != [llength $expected_values]} {
|
||||
puts "Test FAILED: '$sql_statements'"
|
||||
error_put $sql_statements
|
||||
puts "returned '$actual_output'"
|
||||
puts "expected '$expected_outputs'"
|
||||
exit 1
|
||||
@@ -89,7 +97,7 @@ proc do_execsql_test_tolerance {test_name sql_statements expected_outputs tolera
|
||||
if {![within_tolerance $actual $expected $tolerance]} {
|
||||
set lower_bound [expr {$expected - $tolerance}]
|
||||
set upper_bound [expr {$expected + $tolerance}]
|
||||
puts "Test FAILED: '$sql_statements'"
|
||||
error_put $sql_statements
|
||||
puts "returned '$actual'"
|
||||
puts "expected a value within the range \[$lower_bound, $upper_bound\]"
|
||||
exit 1
|
||||
@@ -108,12 +116,12 @@ proc run_test_expecting_any_error {sqlite_exec db_name sql} {
|
||||
# Check if the output contains error indicators (×, error, syntax error, etc.)
|
||||
if {[regexp {(error|ERROR|Error|×|syntax error|failed)} $result]} {
|
||||
# Error found in output - test passed
|
||||
puts "Test PASSED: Got expected error"
|
||||
puts "\033\[1;32mTest PASSED:\033\[0m Got expected error"
|
||||
return 1
|
||||
}
|
||||
|
||||
# No error indicators in output
|
||||
puts "Test FAILED: '$sql'"
|
||||
error_put $sql
|
||||
puts "Expected an error but command output didn't indicate any error: '$result'"
|
||||
exit 1
|
||||
}
|
||||
@@ -128,7 +136,7 @@ proc run_test_expecting_error {sqlite_exec db_name sql expected_error_pattern} {
|
||||
|
||||
# Check if the output contains error indicators first
|
||||
if {![regexp {(error|ERROR|Error|×|syntax error|failed)} $result]} {
|
||||
puts "Test FAILED: '$sql'"
|
||||
error_put $sql
|
||||
puts "Expected an error matching '$expected_error_pattern'"
|
||||
puts "But command output didn't indicate any error: '$result'"
|
||||
exit 1
|
||||
@@ -136,7 +144,7 @@ proc run_test_expecting_error {sqlite_exec db_name sql expected_error_pattern} {
|
||||
|
||||
# Now check if the error message matches the expected pattern
|
||||
if {![regexp $expected_error_pattern $result]} {
|
||||
puts "Test FAILED: '$sql'"
|
||||
error_put $sql
|
||||
puts "Error occurred but didn't match expected pattern."
|
||||
puts "Output was: '$result'"
|
||||
puts "Expected pattern: '$expected_error_pattern'"
|
||||
@@ -157,7 +165,7 @@ proc run_test_expecting_error_content {sqlite_exec db_name sql expected_error_te
|
||||
|
||||
# Check if the output contains error indicators first
|
||||
if {![regexp {(error|ERROR|Error|×|syntax error|failed)} $result]} {
|
||||
puts "Test FAILED: '$sql'"
|
||||
error_put $sql
|
||||
puts "Expected an error with text: '$expected_error_text'"
|
||||
puts "But command output didn't indicate any error: '$result'"
|
||||
exit 1
|
||||
@@ -174,7 +182,7 @@ proc run_test_expecting_error_content {sqlite_exec db_name sql expected_error_te
|
||||
|
||||
# Check if the normalized strings contain the same text
|
||||
if {[string first $normalized_expected $normalized_actual] == -1} {
|
||||
puts "Test FAILED: '$sql'"
|
||||
error_put $sql
|
||||
puts "Error occurred but content didn't match."
|
||||
puts "Output was: '$result'"
|
||||
puts "Expected text: '$expected_error_text'"
|
||||
@@ -187,7 +195,7 @@ proc run_test_expecting_error_content {sqlite_exec db_name sql expected_error_te
|
||||
|
||||
proc do_execsql_test_error {test_name sql_statements expected_error_pattern} {
|
||||
foreach db $::test_dbs {
|
||||
puts [format "(%s) %s Running error test: %s" $db [string repeat " " [expr {40 - [string length $db]}]] $test_name]
|
||||
test_put "Running error test" $db $test_name
|
||||
set combined_sql [string trim $sql_statements]
|
||||
run_test_expecting_error $::sqlite_exec $db $combined_sql $expected_error_pattern
|
||||
}
|
||||
@@ -195,7 +203,7 @@ proc do_execsql_test_error {test_name sql_statements expected_error_pattern} {
|
||||
|
||||
proc do_execsql_test_error_content {test_name sql_statements expected_error_text} {
|
||||
foreach db $::test_dbs {
|
||||
puts [format "(%s) %s Running error content test: %s" $db [string repeat " " [expr {40 - [string length $db]}]] $test_name]
|
||||
test_put "Running error content test" $db $test_name
|
||||
set combined_sql [string trim $sql_statements]
|
||||
run_test_expecting_error_content $::sqlite_exec $db $combined_sql $expected_error_text
|
||||
}
|
||||
@@ -203,14 +211,14 @@ proc do_execsql_test_error_content {test_name sql_statements expected_error_text
|
||||
|
||||
proc do_execsql_test_any_error {test_name sql_statements} {
|
||||
foreach db $::test_dbs {
|
||||
puts [format "(%s) %s Running any-error test: %s" $db [string repeat " " [expr {40 - [string length $db]}]] $test_name]
|
||||
test_put "Running any-error test" $db $test_name
|
||||
set combined_sql [string trim $sql_statements]
|
||||
run_test_expecting_any_error $::sqlite_exec $db $combined_sql
|
||||
}
|
||||
}
|
||||
|
||||
proc do_execsql_test_in_memory_any_error {test_name sql_statements} {
|
||||
puts [format "(in-memory) %s Running any-error test: %s" [string repeat " " 31] $test_name]
|
||||
test_put "Running any-error test" in-memory $test_name
|
||||
|
||||
# Use ":memory:" special filename for in-memory database
|
||||
set db_name ":memory:"
|
||||
|
||||
Reference in New Issue
Block a user