2015-02-27 18:54:17 +08:00
|
|
|
============================
|
|
|
|
Contribution getting started
|
|
|
|
============================
|
2014-01-22 18:37:02 +08:00
|
|
|
|
|
|
|
Contributions are highly welcomed and appreciated. Every little help counts,
|
|
|
|
so do not hesitate!
|
|
|
|
|
2015-02-27 18:54:17 +08:00
|
|
|
.. contents:: Contribution links
|
|
|
|
:depth: 2
|
2014-01-23 17:51:45 +08:00
|
|
|
|
2015-02-27 18:54:17 +08:00
|
|
|
|
|
|
|
.. _submitplugin:
|
|
|
|
|
|
|
|
Submit a plugin, co-develop pytest
|
|
|
|
----------------------------------
|
|
|
|
|
|
|
|
Pytest development of the core, some plugins and support code happens
|
|
|
|
in repositories living under:
|
|
|
|
|
|
|
|
- `the pytest-dev bitbucket team <https://bitbucket.org/pytest-dev>`_
|
|
|
|
|
|
|
|
- `the pytest-dev github organisation <https://github.com/pytest-dev>`_
|
|
|
|
|
|
|
|
All pytest-dev team members have write access to all contained
|
|
|
|
repositories. pytest core and plugins are generally developed
|
|
|
|
using `pull requests`_ to respective repositories.
|
|
|
|
|
|
|
|
You can submit your plugin by subscribing to the `pytest-dev mail list
|
|
|
|
<https://mail.python.org/mailman/listinfo/pytest-dev>`_ and writing a
|
|
|
|
mail pointing to your existing pytest plugin repository which must have
|
|
|
|
the following:
|
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
- PyPI presence with a ``setup.py`` that contains a license, ``pytest-``
|
|
|
|
prefixed, version number, authors, short and long description.
|
2015-02-27 18:54:17 +08:00
|
|
|
|
|
|
|
- a ``tox.ini`` for running tests using `tox <http://tox.testrun.org>`_.
|
|
|
|
|
|
|
|
- a ``README.txt`` describing how to use the plugin and on which
|
|
|
|
platforms it runs.
|
|
|
|
|
2015-03-19 19:53:32 +08:00
|
|
|
- a ``LICENSE.txt`` file or equivalent containing the licensing
|
|
|
|
information, with matching info in ``setup.py``.
|
|
|
|
|
2015-02-27 18:54:17 +08:00
|
|
|
- an issue tracker unless you rather want to use the core ``pytest``
|
|
|
|
issue tracker.
|
|
|
|
|
|
|
|
If no contributor strongly objects and two agree, the repo will be
|
|
|
|
transferred to the ``pytest-dev`` organisation and you'll become a
|
2015-03-03 03:48:09 +08:00
|
|
|
member of the ``pytest-dev`` team, with commit rights to all projects.
|
2015-02-27 18:54:17 +08:00
|
|
|
We recommend that each plugin has at least three people who have the
|
|
|
|
right to release to pypi.
|
|
|
|
|
|
|
|
|
|
|
|
.. _reportbugs:
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2014-01-23 18:38:05 +08:00
|
|
|
Report bugs
|
|
|
|
-----------
|
|
|
|
|
2015-02-27 19:27:40 +08:00
|
|
|
Report bugs for pytest at https://bitbucket.org/pytest-dev/pytest/issues
|
2014-01-23 18:38:05 +08:00
|
|
|
|
|
|
|
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,
|
2014-01-23 18:42:20 +08:00
|
|
|
installed libraries and pytest version.
|
2014-01-23 18:38:05 +08:00
|
|
|
* Detailed steps to reproduce the bug.
|
|
|
|
|
2015-02-27 18:54:17 +08:00
|
|
|
.. _submitfeedback:
|
|
|
|
|
2014-01-22 18:37:02 +08:00
|
|
|
Submit feedback for developers
|
|
|
|
------------------------------
|
|
|
|
|
2014-01-23 18:42:20 +08:00
|
|
|
Do you like pytest? Share some love on Twitter or in your blog posts!
|
2014-01-22 18:37:02 +08:00
|
|
|
|
|
|
|
We'd also like to hear about your propositions and suggestions. Feel free to
|
2015-02-27 19:27:40 +08:00
|
|
|
`submit them as issues <https://bitbucket.org/pytest-dev/pytest/issues>`__ and:
|
2014-01-22 18:37:02 +08:00
|
|
|
|
|
|
|
* Set the "kind" to "enhancement" or "proposal" so that we can quickly find
|
|
|
|
about them.
|
|
|
|
* Explain in detail how they should work.
|
|
|
|
* Keep the scope as narrow as possible. This will make it easier to implement.
|
2014-01-23 17:21:06 +08:00
|
|
|
* If you have required skills and/or knowledge, we are very happy for
|
2014-01-25 02:21:21 +08:00
|
|
|
:ref:`pull requests <pull-requests>`.
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-02-27 18:54:17 +08:00
|
|
|
.. _fixbugs:
|
2014-01-22 18:37:02 +08:00
|
|
|
|
|
|
|
Fix bugs
|
|
|
|
--------
|
|
|
|
|
|
|
|
Look through the BitBucket issues for bugs. Here is sample filter you can use:
|
2015-02-27 19:27:40 +08:00
|
|
|
https://bitbucket.org/pytest-dev/pytest/issues?status=new&status=open&kind=bug
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2014-01-22 19:19:33 +08:00
|
|
|
:ref:`Talk <contact>` to developers to find out how you can fix specific bugs.
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-02-27 18:54:17 +08:00
|
|
|
.. _writeplugins:
|
|
|
|
|
2014-01-22 18:37:02 +08:00
|
|
|
Implement features
|
|
|
|
------------------
|
|
|
|
|
|
|
|
Look through the BitBucket issues for enhancements. Here is sample filter you
|
|
|
|
can use:
|
2015-02-27 19:27:40 +08:00
|
|
|
https://bitbucket.org/pytest-dev/pytest/issues?status=new&status=open&kind=enhancement
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2014-01-22 19:19:33 +08:00
|
|
|
:ref:`Talk <contact>` to developers to find out how you can implement specific
|
2014-01-22 18:37:02 +08:00
|
|
|
features.
|
|
|
|
|
|
|
|
Write documentation
|
|
|
|
-------------------
|
|
|
|
|
2014-01-23 18:42:20 +08:00
|
|
|
pytest could always use more documentation. What exactly is needed?
|
2014-01-22 18:37:02 +08:00
|
|
|
|
|
|
|
* More complementary documentation. Have you perhaps found something unclear?
|
|
|
|
* Documentation translations. We currently have English and Japanese versions.
|
|
|
|
* Docstrings. There's never too much of them.
|
|
|
|
* Blog posts, articles and such -- they're all very appreciated.
|
|
|
|
|
2015-02-27 18:54:17 +08:00
|
|
|
.. _`pull requests`:
|
2015-02-27 23:42:03 +08:00
|
|
|
.. _pull-requests:
|
2014-01-25 02:21:21 +08:00
|
|
|
|
2014-01-23 18:38:05 +08:00
|
|
|
Preparing Pull Requests on Bitbucket
|
2015-02-27 23:42:03 +08:00
|
|
|
------------------------------------
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2014-01-25 02:21:21 +08:00
|
|
|
.. 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
|
2015-02-27 19:27:40 +08:00
|
|
|
`BitBucket servers <https://bitbucket.org/pytest-dev/pytest/pull-requests>`__.
|
2014-01-25 02:21:21 +08:00
|
|
|
Once you send pull request, we can discuss it's potential modifications and
|
|
|
|
even add more commits to it later on.
|
|
|
|
|
2014-01-23 18:42:20 +08:00
|
|
|
The primary development platform for pytest is BitBucket. You can find all
|
2014-01-25 02:37:44 +08:00
|
|
|
the issues there and submit your pull requests.
|
2014-01-22 19:19:33 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
#. Fork the
|
2015-02-27 19:27:40 +08:00
|
|
|
`pytest BitBucket repository <https://bitbucket.org/pytest-dev/pytest>`__. It's
|
2014-01-25 02:37:44 +08:00
|
|
|
fine to use ``pytest`` as your fork repository name because it will live
|
|
|
|
under your user.
|
2014-01-23 18:38:05 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
#. Create a development environment
|
|
|
|
(will implicitly use http://www.virtualenv.org/en/latest/)::
|
2014-01-22 19:19:33 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
$ make develop
|
|
|
|
$ source .env/bin/activate
|
2014-01-22 19:19:33 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
#. Clone your fork locally using `Mercurial <http://mercurial.selenic.com/>`_
|
2014-01-25 02:37:44 +08:00
|
|
|
(``hg``) and create a branch::
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2014-01-23 18:38:05 +08:00
|
|
|
$ hg clone ssh://hg@bitbucket.org/YOUR_BITBUCKET_USERNAME/pytest
|
|
|
|
$ cd pytest
|
2015-03-27 16:27:31 +08:00
|
|
|
$ hg up pytest-2.7 # if you want to fix a bug for the pytest-2.7 series
|
|
|
|
$ hg up default # if you want to add a feature bound for the next minor release
|
|
|
|
$ hg branch your-branch-name # your feature/bugfix branch
|
2014-01-25 02:37:44 +08:00
|
|
|
|
|
|
|
If you need some help with Mercurial, follow this quick start
|
|
|
|
guide: http://mercurial.selenic.com/wiki/QuickStart
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
#. Create a development environment
|
|
|
|
(will implicitly use http://www.virtualenv.org/en/latest/)::
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
$ make develop
|
|
|
|
$ source .env/bin/activate
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
#. You can now edit your local working copy.
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
You need to have Python 2.7 and 3.4 available in your system. Now
|
|
|
|
running tests is as simple as issuing this command::
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
$ python runtox.py -e py27,py34,flakes
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
This command will run tests via the "tox" tool against Python 2.7 and 3.4
|
|
|
|
and also perform "flakes" coding-style checks. ``runtox.py`` is
|
|
|
|
a thin wrapper around ``tox`` which installs from a development package
|
|
|
|
index where newer (not yet released to pypi) versions of dependencies
|
|
|
|
(especially ``py``) might be present.
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
To run tests on py27 and pass options (e.g. enter pdb on failure)
|
|
|
|
to pytest you can do::
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2014-01-23 20:21:00 +08:00
|
|
|
$ python runtox.py -e py27 -- --pdb
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
or to only run tests in a particular test module on py34::
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
$ python runtox.py -e py34 -- testing/test_config.py
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
#. Commit and push once your tests pass and you are happy with your change(s)::
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2014-01-23 18:38:05 +08:00
|
|
|
$ hg commit -m"<commit message>"
|
2014-01-23 07:52:49 +08:00
|
|
|
$ hg push -b .
|
2014-01-22 18:37:02 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
#. Finally, submit a pull request through the BitBucket website:
|
2014-01-25 03:01:04 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
.. image:: img/pullrequest.png
|
|
|
|
:width: 700px
|
|
|
|
:align: center
|
2014-01-25 03:01:04 +08:00
|
|
|
|
2015-03-03 03:48:09 +08:00
|
|
|
::
|
2014-01-23 17:51:45 +08:00
|
|
|
|
2014-01-25 02:37:44 +08:00
|
|
|
source: YOUR_BITBUCKET_USERNAME/pytest
|
|
|
|
branch: your-branch-name
|
2014-01-23 17:51:45 +08:00
|
|
|
|
2015-02-27 19:27:40 +08:00
|
|
|
target: pytest-dev/pytest
|
2015-03-27 16:27:31 +08:00
|
|
|
branch: default # if it's a feature
|
|
|
|
branch: pytest-VERSION # if it's a bugfix
|
|
|
|
|
2014-01-22 19:19:33 +08:00
|
|
|
|
2014-01-23 20:19:49 +08:00
|
|
|
.. _contribution-using-git:
|
2014-01-25 03:01:04 +08:00
|
|
|
|
2015-02-27 18:54:17 +08:00
|
|
|
Using git with bitbucket/hg
|
2014-01-23 20:19:49 +08:00
|
|
|
-------------------------------
|
2014-01-22 19:19:33 +08:00
|
|
|
|
2014-01-25 02:37:44 +08:00
|
|
|
There used to be the pytest GitHub mirror. It was removed in favor of the
|
|
|
|
Mercurial one, to remove confusion of people not knowing where it's better to
|
|
|
|
put their issues and pull requests. Also it wasn't easily possible to automate
|
|
|
|
the mirroring process.
|
|
|
|
|
2015-02-27 20:38:45 +08:00
|
|
|
In general we recommend to work with the same version control system of the
|
|
|
|
original repository. If you insist on using git with bitbucket/hg you
|
|
|
|
may try `gitifyhg <https://github.com/buchuki/gitifyhg>`_ but are on your
|
|
|
|
own and need to submit pull requests through the respective platform,
|
|
|
|
nevertheless.
|