Index: tools/telemetry/third_party/coverage/doc/contributing.rst |
diff --git a/tools/telemetry/third_party/coverage/doc/contributing.rst b/tools/telemetry/third_party/coverage/doc/contributing.rst |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dc50202c7b50b4a49bc9e8d8352ab07a299f124f |
--- /dev/null |
+++ b/tools/telemetry/third_party/coverage/doc/contributing.rst |
@@ -0,0 +1,172 @@ |
+.. Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 |
+.. For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt |
+ |
+.. _contributing: |
+ |
+=========================== |
+Contributing to coverage.py |
+=========================== |
+ |
+.. :history: 20121112T154100, brand new docs. |
+ |
+.. highlight:: console |
+ |
+I welcome contributions to coverage.py. Over the years, dozens of people have |
+provided patches of various sizes to add features or fix bugs. This page |
+should have all the information you need to make a contribution. |
+ |
+One source of history or ideas are the `bug reports`_ against coverage.py. |
+There you can find ideas for requested features, or the remains of rejected |
+ideas. |
+ |
+.. _bug reports: https://bitbucket.org/ned/coveragepy/issues?status=new&status=open |
+ |
+ |
+Before you begin |
+---------------- |
+ |
+If you have an idea for coverage.py, run it by me before you begin writing |
+code. This way, I can get you going in the right direction, or point you to |
+previous work in the area. Things are not always as straightforward as they |
+seem, and having the benefit of lessons learned by those before you can save |
+you frustration. |
+ |
+ |
+Getting the code |
+---------------- |
+ |
+The coverage.py code is hosted on a `Mercurial`_ repository at |
+https://bitbucket.org/ned/coveragepy. To get a working environment, follow |
+these steps: |
+ |
+#. (Optional, but recommended) Create a virtualenv to work in, and activate |
+ it. |
+ |
+#. Clone the repo:: |
+ |
+ $ hg clone https://bitbucket.org/ned/coveragepy |
+ $ cd coveragepy |
+ |
+#. Install the requirements:: |
+ |
+ $ pip install -r requirements/dev.pip |
+ |
+#. Install a number of versions of Python. Coverage.py supports a wide range |
+ of Python versions. The more you can test with, the more easily your code |
+ can be used as-is. If you only have one version, that's OK too, but may |
+ mean more work integrating your contribution. |
+ |
+ |
+Running the tests |
+----------------- |
+ |
+The tests are written as standard unittest-style tests, and are run with |
+`tox`_:: |
+ |
+ $ tox |
+ py27 create: /Users/ned/coverage/trunk/.tox/py27 |
+ py27 installdeps: nose==1.3.7, mock==1.3.0, PyContracts==1.7.6, gevent==1.0.2, eventlet==0.17.4, greenlet==0.4.7 |
+ py27 develop-inst: /Users/ned/coverage/trunk |
+ py27 installed: -f /Users/ned/Downloads/local_pypi,-e hg+ssh://hg@bitbucket.org/ned/coveragepy@22fe9a2b7796f6498aa013c860c268ac21651226#egg=coverage-dev,decorator==4.0.2,eventlet==0.17.4,funcsigs==0.4,gevent==1.0.2,greenlet==0.4.7,mock==1.3.0,nose==1.3.7,pbr==1.6.0,PyContracts==1.7.6,pyparsing==2.0.3,six==1.9.0,wheel==0.24.0 |
+ py27 runtests: PYTHONHASHSEED='1294330776' |
+ py27 runtests: commands[0] | python setup.py --quiet clean develop |
+ py27 runtests: commands[1] | python igor.py zip_mods install_egg remove_extension |
+ py27 runtests: commands[2] | python igor.py test_with_tracer py |
+ === CPython 2.7.10 with Python tracer (.tox/py27/bin/python) === |
+ ............................................................................(etc) |
+ ---------------------------------------------------------------------- |
+ Ran 592 tests in 65.524s |
+ |
+ OK (SKIP=20) |
+ py27 runtests: commands[3] | python setup.py --quiet build_ext --inplace |
+ py27 runtests: commands[4] | python igor.py test_with_tracer c |
+ === CPython 2.7.10 with C tracer (.tox/py27/bin/python) === |
+ ............................................................................(etc) |
+ ---------------------------------------------------------------------- |
+ Ran 592 tests in 69.635s |
+ |
+ OK (SKIP=4) |
+ py33 create: /Users/ned/coverage/trunk/.tox/py33 |
+ py33 installdeps: nose==1.3.7, mock==1.3.0, PyContracts==1.7.6, greenlet==0.4.7 |
+ py33 develop-inst: /Users/ned/coverage/trunk |
+ py33 installed: -f /Users/ned/Downloads/local_pypi,-e hg+ssh://hg@bitbucket.org/ned/coveragepy@22fe9a2b7796f6498aa013c860c268ac21651226#egg=coverage-dev,decorator==4.0.2,greenlet==0.4.7,mock==1.3.0,nose==1.3.7,pbr==1.6.0,PyContracts==1.7.6,pyparsing==2.0.3,six==1.9.0,wheel==0.24.0 |
+ py33 runtests: PYTHONHASHSEED='1294330776' |
+ py33 runtests: commands[0] | python setup.py --quiet clean develop |
+ py33 runtests: commands[1] | python igor.py zip_mods install_egg remove_extension |
+ py33 runtests: commands[2] | python igor.py test_with_tracer py |
+ === CPython 3.3.6 with Python tracer (.tox/py33/bin/python) === |
+ ............................................S...............................(etc) |
+ ---------------------------------------------------------------------- |
+ Ran 592 tests in 73.007s |
+ |
+ OK (SKIP=22) |
+ py33 runtests: commands[3] | python setup.py --quiet build_ext --inplace |
+ py33 runtests: commands[4] | python igor.py test_with_tracer c |
+ === CPython 3.3.6 with C tracer (.tox/py33/bin/python) === |
+ ............................................S...............................(etc) |
+ ---------------------------------------------------------------------- |
+ Ran 592 tests in 72.071s |
+ |
+ OK (SKIP=5) |
+ (and so on...) |
+ |
+Tox runs the complete test suite twice for each version of Python you have |
+installed. The first run uses the Python implementation of the trace function, |
+the second uses the C implementation. |
+ |
+To limit tox to just a few versions of Python, use the ``-e`` switch:: |
+ |
+ $ tox -e py27,py33 |
+ |
+To run just a few tests, you can use nose test selector syntax:: |
+ |
+ $ tox tests.test_misc:SetupPyTest.test_metadata |
+ |
+This looks in `tests/test_misc.py` to find the `SetupPyTest` class, and runs |
+the `test_metadata` test method. |
+ |
+Of course, run all the tests on every version of Python you have, before |
+submitting a change. |
+ |
+ |
+Lint, etc |
+--------- |
+ |
+I try to keep the coverage.py as clean as possible. I use pylint to alert me |
+to possible problems:: |
+ |
+ $ make lint |
+ pylint coverage setup.py tests |
+ python -m tabnanny coverage setup.py tests |
+ python igor.py check_eol |
+ |
+The source is pylint-clean, even if it's because there are pragmas quieting |
+some warnings. Please try to keep it that way, but don't let pylint warnings |
+keep you from sending patches. I can clean them up. |
+ |
+Lines should be kept to a 100-character maximum length. |
+ |
+ |
+Coverage testing coverage.py |
+---------------------------- |
+ |
+Coverage.py can measure itself, but it's complicated. The process has been |
+packaged up to make it easier:: |
+ |
+ $ make metacov metahtml |
+ |
+Then look at htmlcov/index.html. Note that due to the recursive nature of |
+coverage.py measuring itself, there are some parts of the code that will never |
+appear as covered, even though they are executed. |
+ |
+ |
+Contributing |
+------------ |
+ |
+When you are ready to contribute a change, any way you can get it to me is |
+probably fine. A pull request on Bitbucket is great, but a simple diff or |
+patch is great too. |
+ |
+ |
+.. _Mercurial: http://mercurial.selenic.com/ |
+.. _tox: http://tox.testrun.org/ |