テストスクリプトの実行にはexpectを使用します。テストは、終了コードを介して成功/失敗を返します。ただし、同等の終了コードが返されることを期待してください。期待値が適切な終了ステータスを返すようにするにはどうすればよいですか?
私のテストは、psql(postgresqlコマンドプロセッサ)で実行されるSQLスクリプトです。 psqlではデータベースパスワードをコマンドラインパラメータとして指定できないため、スクリプトを期待そうします。
したがって、私の期待スクリプトは次のようになります。
spawn $SPAWN_CMD
expect {
-re "Enter password for new role:" {
send "$PWPROMPT\n"
exp_continue
} -re "Enter it again:" {
send "$PWPROMPT\n"
exp_continue
} -re "Password(.*)" {
send "$PASSWORD\n"
exp_continue
} -re "Password(.*):" {
send "$PASSWORD\n"
exp_continue
} eof
}
ループの最後ですでにeof
を待っています。結果は、wait
とcatch
を使用するだけです。
spawn true
expect eof
catch wait result
exit [lindex $result 3]
0で終了します。
spawn false
expect eof
catch wait result
exit [lindex $result 3]
1で終了します。