Skip to content

Instantly share code, notes, and snippets.

What would you like to do?


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:


For testing as a contributor, you can run:

perl Makefile.PL
make test

It is also be possible to run the tests directly without building:

prove -lvr t xt


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

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.

Continuous Integration

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 entry 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment