Re: Тесты: проверка expected_tests в деструкторе

Sergey Kandaurov pluknet на nginx.com
Вт Сен 17 13:52:56 UTC 2024


> On 11 Sep 2024, at 17:08, Оксана Деева <o.deeva на wbsrv.ru> wrote:
> 
> Здравствуйте,
>  Столкнулась с такой проблемой: если в тесте plan() стоит после run() и nginx по какой-то причине не может стартовать, то деструктор нормально не отрабатывает - он запускается, но expected_tests везде по нулям и из-за этого мы не проверяем логи на ошибки/алерты (https://github.com/nginx/nginx-tests/blob/master/lib/Test/Nginx.pm#L67 и https://github.com/nginx/nginx-tests/blob/master/lib/Test/Nginx.pm#L85).
> При этом, если просто в тесте переместить вызов plan() в начало, то все нормально отрабатывает, до всех проверок мы доходим - expected_tests не равен нулю, даже если nginx не смог стартануть (и это ожидаемое поведение).

> Вопрос: зачем нужна проверка на expected_tests? Если был skip_all, то до деструктора и этой проверки мы вообще не доходим, если все тесты заскипались, то expected_tests не будет нулем. Больше никаких сценариев придумать не могу, и хотела бы убрать эту проверку, но интересно было бы услышать мнение автора.

IIRC, исходно проверка была добавлена для skip_all, который стоит
после run(), как, например, в upstream_ip_hash.t:

$t->run();
plan(skip_all => ..);
$t->plan(N);

Иначе, при безусловном запуске, тест выполнится с нулевым планом
и математика не сойдётся.

-- 
Sergey Kandaurov



Подробная информация о списке рассылки nginx-ru