Я занимаюсь разработкой набора скриптов и модулей Perl, которые затем устанавливаются на разных машинах и системах нашей компании.
Некоторые средства зависят от конкретного модуля, который может быть установлен или не установлен на разных машинах. Я использовал 'eval', чтобы определить, доступен ли этот модуль.
Я только что получил сообщение об ошибке, которое сводилось к тому, что пользователь не установил модуль на своей машине успешно (но не понял, что не сделал): но ошибка в моем коде заключалась в В этом случае я не передавал условие ошибки на верхний уровень, поэтому оно терялось, и скрипт просто молча не выполнял часть своей функции.
Чтобы исследовать его, я отключил конкретный модуль на моей машине, и легко нашел и исправил проблему. Но единственным способом, которым я мог придумать, чтобы отключить его, если не считать его удаления, было переименование файла (что я, конечно, должен был сделать через sudo).
Сейчас я выполняю все свои тесты с недоступным этим модулем, и он вызвал несколько других мест, где я не справляюсь с ситуацией должным образом.
Но сейчас я хочу написать несколько тестов для этого условия: но как я могу сделать этот модуль временно недоступным во время автоматического теста? Я действительно не хочу, чтобы мои тесты с использованием sudo перемещали модули в сторону (возможно, я одновременно выполняю другие действия на машине).
Кто-нибудь знает, как я могу сказать Perl: «Не находите этот модуль там, где я пытаюсь« использовать »или« требовать »его для целей тестирования»?
Я использую Perl 5.10.0 (в Fedora 12) и использую Test :: More и TAP :: Harness. Некоторые из наших установок работают на Perl 5.8, поэтому я готов использовать функции 5.10 при тестировании, но не в самом коде.