mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-17 03:42:48 +00:00
a3b3e2dcc1
By default expect matches patterns against output from the current process, however if you don't have stdin attached (like the case for CI), you will not have anything to check against, hence "timeout" simply does not work. Likely expect has $any_spawn_id (another option is to put expect_after after spawn). v2: use $any_spawn_id Refs: https://github.com/ClickHouse/ClickHouse/pull/43819 Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
83 lines
1.7 KiB
Plaintext
Executable File
83 lines
1.7 KiB
Plaintext
Executable File
#!/usr/bin/expect -f
|
|
|
|
set basedir [file dirname $argv0]
|
|
set basename [file tail $argv0]
|
|
exp_internal -f $env(CLICKHOUSE_TMP)/$basename.debuglog 0
|
|
set history_file $env(CLICKHOUSE_TMP)/$basename.history
|
|
|
|
log_user 0
|
|
set timeout 60
|
|
match_max 100000
|
|
|
|
expect_after {
|
|
# Do not ignore eof from expect
|
|
-i $any_spawn_id eof { exp_continue }
|
|
# A default timeout action is to do nothing, change it to fail
|
|
-i $any_spawn_id timeout { exit 1 }
|
|
}
|
|
|
|
spawn bash -c "source $basedir/../shell_config.sh ; \$CLICKHOUSE_CLIENT_BINARY \$CLICKHOUSE_CLIENT_OPT --disable_suggestion --history_file=$history_file"
|
|
expect ":) "
|
|
|
|
# -----------------------------------------
|
|
# test . and / commands prior to the first query
|
|
|
|
send -- ".\r"
|
|
expect "Empty query"
|
|
expect ":) "
|
|
|
|
send -- "/\r"
|
|
expect "Empty query"
|
|
expect ":) "
|
|
|
|
# -----------------------------------------
|
|
# test . and / commands after first query
|
|
|
|
send -- "SELECT 123\r"
|
|
expect "│ 123 │"
|
|
expect "1 row in set."
|
|
expect ":) "
|
|
|
|
send -- ".\r"
|
|
expect "│ 123 │"
|
|
expect "1 row in set."
|
|
expect ":) "
|
|
|
|
# test input of . more than once in a row
|
|
send -- ".\r"
|
|
expect "│ 123 │"
|
|
expect "1 row in set."
|
|
expect ":) "
|
|
|
|
send -- "/\r"
|
|
expect "│ 123 │"
|
|
expect "1 row in set."
|
|
expect ":) "
|
|
|
|
# test input of / more than once in a row
|
|
send -- "/\r"
|
|
expect "│ 123 │"
|
|
expect "1 row in set."
|
|
expect ":) "
|
|
|
|
# -----------------------------------------
|
|
# test . and / commands after another query
|
|
|
|
send -- "SELECT 321\r"
|
|
expect "│ 321 │"
|
|
expect "1 row in set."
|
|
expect ":) "
|
|
|
|
send -- ".\r"
|
|
expect "│ 321 │"
|
|
expect "1 row in set."
|
|
expect ":) "
|
|
|
|
send -- "/\r"
|
|
expect "│ 321 │"
|
|
expect "1 row in set."
|
|
expect ":) "
|
|
|
|
send -- "quit\r"
|
|
expect eof
|