Contributing
Welcome to the contribution guide for Yasumi. Contributions are encouraged and welcome, and are accepted via pull requests on GitHub. When contributing to Yasumi, there are a few guidelines to keep in mind.
Which branch?
- Please submit all pull requests for new features to the 'develop' branch.
- Please submit pull requests for bug fixes and typos to the earliest branch the issue can be found in.
Guidelines
- PSR-12 Coding Standard Please use the following command after you have completed your work:
This will check/correct all the code for the PSR-12 Coding Standard using the wonderful php-cs-fixer.
-
Add unit tests! - Your Pull Request won't be accepted if it does not have tests:
- Ensure your new Holiday Provider contains all the necessary unit tests.
- Next to the file
{REGIONNAME}BaseTestCase.php
, a file called{REGIONNAME}Test.php
needs to be present. This file needs to include region/country level tests and requires assertion of all expected holidays. - All the unit tests and the implementation Holiday Provider require to have the correct locale, timezone and region/country name.
- As almost all the tests use automatic iterations, so make sure the year for which the test is executed is a valid year. Some holidays only are established from a certain year and having the test year number lower than the minimum establishment year (amongst all holidays) can result in false errors.
-
Ensure that the current tests pass, and if you've added something new, add the tests where relevant.
-
Document any change - Make sure the
CHANGELOG.md
and any other relevant documentation reflect the changes. -
One pull request per feature - If you want to contribute more than one thing, send multiple pull requests.
-
Send coherent history - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please squash them before submitting.
-
You may also need to rebase to avoid merge conflicts.
-
Remember that Yasumi follows SemVer. If you are changing the behaviour, or the public API, you may need to update the docs.