summaryrefslogtreecommitdiff
path: root/CONTRIBUTING.rst
diff options
context:
space:
mode:
Diffstat (limited to 'CONTRIBUTING.rst')
-rw-r--r--CONTRIBUTING.rst98
1 files changed, 69 insertions, 29 deletions
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 42c9f645b..79be79fa6 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -34,13 +34,13 @@ If you are reporting a bug, please include:
* Your operating system name and version.
* Any details about your local setup that might be helpful in troubleshooting,
- specifically Python interpreter version,
- installed libraries and pytest version.
+ specifically the Python interpreter version, installed libraries, and pytest
+ version.
* Detailed steps to reproduce the bug.
-If you can write a demonstration test that currently fails but should pass (xfail),
-that is a very useful commit to make as well, even if you can't find how
-to fix the bug yet.
+If you can write a demonstration test that currently fails but should pass
+(xfail), that is a very useful commit to make as well, even if you cannot
+fix the bug itself.
.. _fixbugs:
@@ -49,7 +49,7 @@ Fix bugs
--------
Look through the GitHub issues for bugs. Here is a filter you can use:
-https://github.com/pytest-dev/pytest/labels/bug
+https://github.com/pytest-dev/pytest/labels/type%3A%20bug
:ref:`Talk <contact>` to developers to find out how you can fix specific bugs.
@@ -79,6 +79,16 @@ Pytest could always use more documentation. What exactly is needed?
You can also edit documentation files directly in the GitHub web interface,
without using a local copy. This can be convenient for small fixes.
+.. note::
+ Build the documentation locally with the following command:
+
+ .. code:: bash
+
+ $ tox -e docs
+
+ The built documentation should be available in the ``doc/en/_build/``.
+
+ Where 'en' refers to the documentation language.
.. _submitplugin:
@@ -110,7 +120,7 @@ the following:
- PyPI presence with a ``setup.py`` that contains a license, ``pytest-``
prefixed name, version number, authors, short and long description.
-- a ``tox.ini`` for running tests using `tox <http://tox.testrun.org>`_.
+- a ``tox.ini`` for running tests using `tox <https://tox.readthedocs.io>`_.
- a ``README.txt`` describing how to use the plugin and on which
platforms it runs.
@@ -148,19 +158,41 @@ As stated, the objective is to share maintenance and avoid "plugin-abandon".
.. _`pull requests`:
.. _pull-requests:
-Preparing Pull Requests on GitHub
----------------------------------
+Preparing Pull Requests
+-----------------------
-.. note::
- What is a "pull request"? It informs project's core developers about the
- changes you want to review and merge. Pull requests are stored on
- `GitHub servers <https://github.com/pytest-dev/pytest/pulls>`_.
- Once you send a pull request, we can discuss its potential modifications and
- even add more commits to it later on.
+Short version
+~~~~~~~~~~~~~
+
+#. Fork the repository;
+#. Target ``master`` for bugfixes and doc changes;
+#. Target ``features`` for new features or functionality changes.
+#. Follow **PEP-8**. There's a ``tox`` command to help fixing it: ``tox -e fix-lint``.
+#. Tests are run using ``tox``::
+
+ tox -e linting,py27,py36
+
+ The test environments above are usually enough to cover most cases locally.
-There's an excellent tutorial on how Pull Requests work in the
-`GitHub Help Center <https://help.github.com/articles/using-pull-requests/>`_,
-but here is a simple overview:
+#. Write a ``changelog`` entry: ``changelog/2574.bugfix``, use issue id number
+ and one of ``bugfix``, ``removal``, ``feature``, ``vendor``, ``doc`` or
+ ``trivial`` for the issue type.
+#. Unless your change is a trivial or a documentation fix (e.g., a typo or reword of a small section) please
+ add yourself to the ``AUTHORS`` file, in alphabetical order;
+
+
+Long version
+~~~~~~~~~~~~
+
+What is a "pull request"? It informs the project's core developers about the
+changes you want to review and merge. Pull requests are stored on
+`GitHub servers <https://github.com/pytest-dev/pytest/pulls>`_.
+Once you send a pull request, we can discuss its potential modifications and
+even add more commits to it later on. There's an excellent tutorial on how Pull
+Requests work in the
+`GitHub Help Center <https://help.github.com/articles/using-pull-requests/>`_.
+
+Here is a simple overview, with pytest-specific bits:
#. Fork the
`pytest GitHub repository <https://github.com/pytest-dev/pytest>`__. It's
@@ -196,35 +228,43 @@ but here is a simple overview:
#. Run all the tests
- You need to have Python 2.7 and 3.5 available in your system. Now
+ You need to have Python 2.7 and 3.6 available in your system. Now
running tests is as simple as issuing this command::
- $ tox -e linting,py27,py35
+ $ tox -e linting,py27,py36
- This command will run tests via the "tox" tool against Python 2.7 and 3.5
+ This command will run tests via the "tox" tool against Python 2.7 and 3.6
and also perform "lint" coding-style checks.
-#. You can now edit your local working copy.
+#. You can now edit your local working copy. Please follow PEP-8.
You can now make the changes you want and run the tests again as necessary.
- To run tests on Python 2.7 and pass options to pytest (e.g. enter pdb on
- failure) to pytest you can do::
+ If you have too much linting errors, try running::
+
+ $ tox -e fix-lint
+
+ To fix pep8 related errors.
+
+ You can pass different options to ``tox``. For example, to run tests on Python 2.7 and pass options to pytest
+ (e.g. enter pdb on failure) to pytest you can do::
$ tox -e py27 -- --pdb
- Or to only run tests in a particular test module on Python 3.5::
+ Or to only run tests in a particular test module on Python 3.6::
- $ tox -e py35 -- testing/test_config.py
+ $ tox -e py36 -- testing/test_config.py
#. Commit and push once your tests pass and you are happy with your change(s)::
$ git commit -a -m "<commit message>"
$ git push -u
- Make sure you add a message to ``CHANGELOG.rst`` and add yourself to
- ``AUTHORS``. If you are unsure about either of these steps, submit your
- pull request and we'll help you fix it up.
+#. Create a new changelog entry in ``changelog``. The file should be named ``<issueid>.<type>``,
+ where *issueid* is the number of the issue related to the change and *type* is one of
+ ``bugfix``, ``removal``, ``feature``, ``vendor``, ``doc`` or ``trivial``.
+
+#. Add yourself to ``AUTHORS`` file if not there yet, in alphabetical order.
#. Finally, submit a pull request through the GitHub website using this data::