Какое значение имеет статус ожидания в 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, когда другой конец умер.

Другие вопросы по тегам