ClickHouse/tests/queries/0_stateless/02417_repeat_input_commands.expect
Azat Khuzhin a3b3e2dcc1 Fix timeout for expect tests by fixing expect_after timeout
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>
2023-02-23 15:02:19 +01:00

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