Какое значение имеет статус ожидания в TAP?
Это вопрос для моего понимания больше, чем что-либо еще. я использую Test::More
выполнить несколько тестов через TAP::Harness
,
Когда тест выполняется, он возвращает код завершения и код ожидания.
Код выхода предназначен для возврата ненулевого значения в случае сбоя согласно Test::More
документация
Но что означает код ожидания? Похоже, что это кратно числу неудачных тестов (256 * n) для тестов, которые я выполняю.
Я предполагаю, что протокол пытается эмулировать отношения между родителями и дочерними процессами в стиле Unix, но я ничего не знаю о кодах ожидания.
1 ответ
Подробнее о структуре кодов ожидания смотрите в примечаниях к $?, Как вы уже догадались, код завершения Test::More умножается на 256, и обычно этим значением будет количество неудачных тестов.
Причина, по которой код ожидания полезен, состоит в том, что он позволяет вам видеть, когда ваш код из-под жгута выходит из-за сигнала:
use Test::More tests => 2;
ok 1,"first";
kill 15,$$;
ok 1,"second";
Получит состояние ожидания 15. От того, что вы делаете, зависит выход ваших скриптов от сигнала; У меня была система, которая должна была вызывать удаленный сервис, который был ненадежным и видел ошибки SIGPIPE, когда другой конец умер.