Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1003)

Side by Side Diff: third_party/coverage-3.6/doc/contributing.rst

Issue 14988009: First cut of testing infrastructure for recipes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: nitfixen Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/coverage-3.6/doc/config.rst ('k') | third_party/coverage-3.6/doc/excluding.rst » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 .. _contributing:
2
3 ===========================
4 Contributing to coverage.py
5 ===========================
6
7 :history: 20121112T154100, brand new docs.
8
9 .. highlight:: console
10
11 I welcome contributions to coverage.py. Over the years, dozens of people have
12 provided patches of various sizes to add features or fix bugs. This page
13 should have all the information you need to make a contribution.
14
15 One source of history or ideas are the `bug reports`_ against coverage.py.
16 There you can find ideas for requested features, or the remains of rejected
17 ideas.
18
19 .. _bug reports: https://bitbucket.org/ned/coveragepy/issues?status=new&status=o pen
20
21
22 Before you begin
23 ----------------
24
25 If you have an idea for coverage.py, run it by me before you begin writing
26 code. This way, I can get you going in the right direction, or point you to
27 previous work in the area. Things are not always as straightforward as they
28 seem, and having the benefit of lessons learned by those before you can save
29 you frustration.
30
31
32 Getting the code
33 ----------------
34
35 The coverage.py code is hosted on a `Mercurial`_ repository at
36 https://bitbucket.org/ned/coveragepy. To get a working environment, follow
37 these steps:
38
39 #. (Optional, but recommended) Create a virtualenv to work in, and activate
40 it.
41
42 #. Clone the repo::
43
44 $ hg clone https://bitbucket.org/ned/coveragepy
45
46 #. Install the requirements::
47
48 $ pip install -r requirements.txt
49
50 #. Install a number of versions of Python. Coverage.py supports a wide range
51 of Python versions. The more you can test with, the more easily your code
52 can be used as-is. If you only have one version, that's OK too, but may
53 mean more work integrating your contribution.
54
55
56 Running the tests
57 -----------------
58
59 The tests are written as standard unittest-style tests, and are run with
60 `tox`_::
61
62 $ tox
63 GLOB sdist-make: /home/ned/coverage/setup.py
64 py25 sdist-reinst: /home/ned/coverage/tox/dist/coverage-3.6b1.zip
65 py25 runtests: commands[0]
66 py25 runtests: commands[1]
67 py25 runtests: commands[2]
68 py25 runtests: commands[3]
69 py25 runtests: commands[4]
70 === Python 2.5.5 with Python tracer (/home/ned/coverage/tox/py25/bin/python) ===
71 ............................................................................ ...............(etc)
72 ----------------------------------------------------------------------
73 Ran 360 tests in 10.836s
74
75 OK
76 py25 runtests: commands[5]
77 py25 runtests: commands[6]
78 === Python 2.5.5 with C tracer (/home/ned/coverage/tox/py25/bin/python) ===
79 ............................................................................ ...............(etc)
80 ----------------------------------------------------------------------
81 Ran 360 tests in 10.044s
82
83 OK
84 py26 sdist-reinst: /home/ned/coverage/trunk/.tox/dist/coverage-3.6b1.zip
85 py26 runtests: commands[0]
86 py26 runtests: commands[1]
87 py26 runtests: commands[2]
88 py26 runtests: commands[3]
89 py26 runtests: commands[4]
90 === CPython 2.6.6 with Python tracer (/home/ned/coverage/tox/py26/bin/python ) ===
91 ............................................................................ ...............(etc)
92 ----------------------------------------------------------------------
93 Ran 364 tests in 12.572s
94
95 OK
96 py26 runtests: commands[5]
97 py26 runtests: commands[6]
98 === CPython 2.6.6 with C tracer (/home/ned/coverage/tox/py26/bin/python) ===
99 ............................................................................ ...............(etc)
100 ----------------------------------------------------------------------
101 Ran 364 tests in 11.458s
102
103 OK
104 (and so on...)
105
106 Tox runs the complete test suite twice for each version of Python you have
107 installed. The first run uses the Python implementation of the trace
108 function, the second uses the C implementation.
109
110 To limit tox to just a few versions of Python, use the ``-e`` switch::
111
112 $ tox -e py27,py33
113
114 To run just a few tests, you can use nose test selector syntax::
115
116 $ tox test.test_misc:SetupPyTest.test_metadata
117
118 This looks in `test/test_misc.py` to find the `SetupPyTest` class, and runs the
119 `test_metadata` test method.
120
121 Of course, run all the tests on every version of Python you have, before
122 submitting a change.
123
124
125 Lint, etc
126 ---------
127
128 I try to keep the coverage.py as clean as possible. I use pylint to alert me
129 to possible problems::
130
131 $ make lint
132 pylint --rcfile=.pylintrc coverage setup.py test
133 python -m tabnanny coverage setup.py test
134 python igor.py check_eol
135
136 The source is pylint-clean, even if it's because there are pragmas quieting
137 some warnings. Please try to keep it that way, but don't let pylint warnings
138 keep you from sending patches. I can clean them up.
139
140
141 Coverage testing coverage.py
142 ----------------------------
143
144 Coverage.py can measure itself, but it's complicated. The process has been
145 packaged up to make it easier::
146
147 $ COVERAGE_COVERAGE=yes tox
148 $ python igor.py combine_html
149
150 Then look at htmlcov/index.html. Note that due to the recursive nature of
151 coverage.py measuring itself, there are some parts of the code that will never
152 appear as covered, even though they are executed.
153
154
155 Contributing
156 ------------
157
158 When you are ready to contribute a change, any way you can get it to me is
159 probably fine. A pull request on Bitbucket is great, but a simple diff or
160 patch is great too.
161
162
163 .. _Mercurial: http://mercurial.selenic.com/
164 .. _tox: http://tox.testrun.org/
OLDNEW
« no previous file with comments | « third_party/coverage-3.6/doc/config.rst ('k') | third_party/coverage-3.6/doc/excluding.rst » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698