Проблема:
Управление внешним состоянием в тестовом файле уменьшает возможный параллелизм вашего набора тестов.
То, что я тестирую, точно манипулирует внешним состоянием (а затем сбрасывает его).
Я все еще хотел бы работать параллельно большую часть времени. Тогда я просто хотел бы пропустить тесты, которые будут манипулировать внешним состоянием, что может привести к ошибкам других.
Таким образом, я бы обошел эту проблему, обнаружив условие параллелизма, а затем пропустил тест, который будет манипулировать внешним состоянием, тем самым вызывая сбой других. Это выполнимо? Как?
Обратите внимание, что простого анализа переменной окружения HARNESS_OPTIONS
из вашего сценария недостаточно для обнаружения условия: например, prove -j3
не установит его.
Обновление
Хотя существует множество способов сообщить вашему тестовому скрипту, что он запускается в параллельном жгуте (см. Ответ Брайана ниже), не существует единственного стандартного способа сделать это, о котором я думал может быть (но не правильно сформулировал это в моем вопросе).
Я думал о чем-то вроде, хм, ну, я читал это в вашей (отлично!) Эффективном программировании на Perl Книга, Брайан, что-то вроде тесты сопровождающего , не уверен в термин сейчас, который вы обычно запускаете, только если вы являетесь сопровождающим модуля, а не во время установки на компьютер пользователя. Похоже, вы помните, что для этого было принято соглашение об использовании некоторой переменной environement.