MakeMaker: make test vs make dist

Допустим, я создал каталог с помощью module-starter и с тех пор написал несколько дополнительных модулей и тестов.

Затем make test запустит все тесты в t/ для всех модулей в lib/, однако make dist упакует в tar.gz только файлы, упомянутые в MANIFEST.

Итак, я недавно обжегся, запустив make test && make dist и все еще получая сломанный пакет.

Мой вопрос: я что-то упустил, или это можно сообщить как незначительную ошибку в MakeMaker? (На что, похоже, полагается Makefile.PL).


person Dallaylaen    schedule 18.03.2011    source источник
comment
Я пропускаю ошибку? Вы имеете в виду, что вам не нужно обновлять свой манифест? Как он автоматически узнает, что вы хотите добавить?   -  person Brian Roach    schedule 18.03.2011
comment
Я бы не возражал против того, чтобы было наоборот: пропускать файлы НЕ в манифесте при тестировании. Это трудно не заметить, и никакой магии не требуется.   -  person Dallaylaen    schedule 18.03.2011
comment
Вам следует рассмотреть возможность использования Dist::Zilla. Одним из стандартных подключаемых модулей является TestRelease, который распаковывает архив и запускает с его помощью тесты, чтобы убедиться, что выпускаемый вами дистрибутив действительно проходит тесты.   -  person cjm    schedule 19.03.2011


Ответы (2)


Вы можете использовать make disttest, который создаст каталог дистрибутива из МАНИФЕСТА (эквивалентно make distdir) и запустит в нем make test. Это гарантирует, что вы работаете с теми же файлами, которые будут отправлены.

Я также перестраиваю свой MANIFEST как часть создания релиза, который требует обновления вашего MANIFEST.SKIP.

В общем, мой основной сценарий выпуска:

perl Makefile.PL
make manifest
make disttest
make dist
person Schwern    schedule 19.03.2011
comment
make disttest действительно так, как я хотел бы, чтобы make test работало, спасибо. - person Dallaylaen; 09.04.2011

Запустите make distcheck перед выпуском пакета. Это предупредит вас обо всем, что может отсутствовать в вашем MANIFEST.

Некоторые модули генерируют файлы в процессе сборки (в том числе в lib/), поэтому отсутствие файлов в MANIFEST не обязательно должно приводить к сбою make dist.

person mob    schedule 18.03.2011