Thank you for considering contributing to this distribution. This file contains instructions that will help you work with the source code.
If you have any issues or questions, you can reach out to the other developers in a number of ways:
- IRC : #moose on irc.perl.org
- RT (web) : Moo on rt.cpan.org
- RT (email) : Moo at rt.cpan.org
For testing as a contributor, you can run:
perl Makefile.PL
make
make test
It is also be possible to run the tests directly without building:
prove -lvr t xt
or
perl -Ilib t/moo-accessors.t
To run the full test suite, developer prereqs should be installed. This can be done using cpanm:
cpanm --installdeps --with-recommends --with-develop .
Pull requests to for this distribution can be submitted on GitHub. Additional help with submitting pull requests can be found on GitHub Help.
Patches can also be sent as RT tickets via the web interface or through email.
All code pushed to a branch or submitted as a pull request will automatically be tested on Travis-CI across all versions of perl supported by Moo.
The results of the test runs for pull requests can be viewed at here.
Moo tries to maintain very high test coverage (100% statement and branch coverage). Ideally, pull requests should include new tests to prove the new feature or bug fix. However, submitting a pull request or patch without tests would still be better than not submitting a valuable change at all.
Coverage metrics from Travis-CI runs can be viewed here.
The distribution is managed with Distar. It uses a standard ExtUtils::MakeMaker workflow, but with extra sanity checks for releasing. Most contributors do not need to be concerned with this, but if desired, extra testing can be performed with:
make releasetest
The normal release process would be:
make bump # bump version. alternatively, bumpminor or bumpmajor.
make nextrelease # add version heading to Changes file
make release # test and release
This process can be tested using the FAKE_RELEASE
option:
make release FAKE_RELEASE=1
Note that a fake release will still create a git commit, tag, and a release tarball. But it will not upload or push anything.