Как вернуть порожденный код завершения процесса в сценарии Expect? - PullRequest
22 голосов
/ 21 июля 2010

Я использую ожидаемый для запуска тестовых сценариев.Тесты возвращают успех / неудачу через код выхода.Но ожидайте возврата эквивалентного кода выхода.Как получить ожидаемый возврат правильного состояния выхода?

Мои тесты представляют собой сценарии sql, запускаемые с psql (процессор команд postgresql).Поскольку 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
}

1 Ответ

30 голосов
/ 21 июля 2010

Вы уже ждете 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.

...