diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d634ee797..f77368087 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,7 +7,25 @@ still need proper phrasing - if you'd like to help - be sure to make a PR. Please know that we do appreciate all contributions - bug reports as well as Pull Requests. -## PR Merge Criteria +## Setting up a development environment and running tests + +After you've cloned the repository, + +1. Set up a Python virtualenv (the methods vary depending on tooling and operating system) + and activate it. +2. Install Babel in editable mode with development dependencies: `pip install -e .[dev]` +3. Run `make import-cldr` to import the CLDR database. + This will download the CLDR database and convert it to a format that Babel can use. +4. Run `make test` to run the tests. You can also run e.g. `pytest --cov babel .` to + run the tests with coverage reporting enabled. + +You can also use [Tox][tox] to run the tests in separate virtualenvs +for all supported Python versions; a `tox.ini` configuration (which is what the CI process +uses) is included in the repository. + +## On pull requests + +### PR Merge Criteria For a PR to be merged, the following statements must hold true: @@ -19,14 +37,16 @@ For a PR to be merged, the following statements must hold true: To begin contributing have a look at the open [easy issues](https://github.com/python-babel/babel/issues?q=is%3Aopen+is%3Aissue+label%3Adifficulty%2Flow) which could be fixed. -## Correcting PRs +### Correcting PRs Rebasing PRs is preferred over merging master into the source branches again and again cluttering our history. If a reviewer has suggestions, the commit shall be amended so the history is not cluttered by "fixup commits". -## Writing Good Commits +### Writing Good Commits Please see https://api.coala.io/en/latest/Developers/Writing_Good_Commits.html for guidelines on how to write good commits and proper commit messages. + +[tox]: https://tox.wiki/en/latest/ diff --git a/Makefile b/Makefile index 114f0c753..05f4d8434 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,7 @@ test: import-cldr python ${PYTHON_TEST_FLAGS} -m pytest ${PYTEST_FLAGS} -test-env: - virtualenv test-env - test-env/bin/pip install pytest - test-env/bin/pip install --editable . - -clean-test-env: - rm -rf test-env - -standalone-test: import-cldr test-env - test-env/bin/pytest tests ${PYTEST_FLAGS} - -clean: clean-cldr clean-pyc clean-test-env +clean: clean-cldr clean-pyc import-cldr: python scripts/download_import_cldr.py @@ -28,7 +17,7 @@ clean-pyc: develop: pip install --editable . -tox-test: import-cldr +tox-test: tox -.PHONY: test develop tox-test clean-pyc clean-cldr import-cldr clean clean-test-env standalone-test +.PHONY: test develop tox-test clean-pyc clean-cldr import-cldr clean standalone-test diff --git a/setup.py b/setup.py index dbc6c60c1..e168f0937 100755 --- a/setup.py +++ b/setup.py @@ -67,6 +67,13 @@ def run(self): # Python 3.9 and later include zoneinfo which replaces pytz 'pytz>=2015.7; python_version<"3.9"', ], + extras_require={ + 'dev': [ + 'pytest>=6.0', + 'pytest-cov', + 'freezegun~=1.0', + ], + }, cmdclass={'import_cldr': import_cldr}, zip_safe=False, # Note when adding extractors: builtin extractors we also want to diff --git a/tox.ini b/tox.ini index 1156fecc6..11cca0c6e 100644 --- a/tox.ini +++ b/tox.ini @@ -5,10 +5,9 @@ envlist = py{37,38}-pytz [testenv] +extras = + dev deps = - pytest>=6.0 - pytest-cov - freezegun==0.3.12 backports.zoneinfo;python_version<"3.9" tzdata;sys_platform == 'win32' pytz: pytz