Perl -d и выпуск modulino - PullRequest
       24

Perl -d и выпуск modulino

8 голосов
/ 20 февраля 2012

У меня есть несколько сценариев, которые я начал модульное тестирование, используя идею "modulino". Я столкнулся с проблемой в том, что когда скрипт вызывается с "perl -d", скрипт не запускается, так как caller () возвращает истинное значение.

У меня основная часть скрипта обернута в main (), а некоторые подпрограммы медленно вытаскиваются из main () в их собственные подпрограммы.

В верхней части скрипта у меня есть:

main(@ARGS) unless caller();

При вызове в .t tests он работает так, как я хочу, а не запускает main (), поэтому я могу протестировать подпрограммы. Когда я вызываю скрипт из CLI, он прекрасно работает, вызывая main ().

Проблема возникает, когда я звоню из CLI с:

perl -d myscript.pl

На этом этапе вызывающая сторона возвращает допустимое значение (а не undef), и main не вызывается.

Буду очень признателен за предложения о том, как подойти к этому.

1 Ответ

9 голосов
/ 20 февраля 2012

Ситуация с переключателем -d аналогична тестированию - ваш код выполняется чем-то другим, в данном случае отладчиком.

Вы можете либо запустить main самостоятельно, вызвав его в отладчике вручную, либо вы должны определить, является ли caller отладчиком. Что-то вроде:

main(@ARGS) if !caller() || (caller)[0] eq 'DB';
...