/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to doc/developers/testing.txt

  • Committer: John Arbash Meinel
  • Date: 2010-01-05 04:30:07 UTC
  • mfrom: (4932 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4934.
  • Revision ID: john@arbash-meinel.com-20100105043007-ehgbldqd3q0gtyws
Merge bzr.dev, resolve conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
173
173
 
174
174
Per-implementation tests are tests that are defined once and then run
175
175
against multiple implementations of an interface.  For example,
176
 
``test_transport_implementations.py`` defines tests that all Transport
177
 
implementations (local filesystem, HTTP, and so on) must pass.
178
 
 
179
 
They are found in ``bzrlib/tests/*_implementations/test_*.py``,
180
 
``bzrlib/tests/per_*/*.py``, and
181
 
``bzrlib/tests/test_*_implementations.py``.
 
176
``per_transport.py`` defines tests that all Transport implementations
 
177
(local filesystem, HTTP, and so on) must pass. They are found in
 
178
``bzrlib/tests/per_*/*.py``, and ``bzrlib/tests/per_*.py``.
182
179
 
183
180
These are really a sub-category of unit tests, but an important one.
184
181
 
 
182
Along the same lines are tests for extension modules. We generally have
 
183
both a pure-python and a compiled implementation for each module. As such,
 
184
we want to run the same tests against both implementations. These can
 
185
generally be found in ``bzrlib/tests/*__*.py`` since extension modules are
 
186
usually prefixed with an underscore. Since there are only two
 
187
implementations, we have a helper function
 
188
``bzrlib.tests.permute_for_extension``, which can simplify the
 
189
``load_tests`` implementation.
 
190
 
185
191
 
186
192
Doctests
187
193
~~~~~~~~
198
204
 
199
205
 
200
206
Shell-like tests
201
 
~~~~~~~~~~~~~~~~
 
207
----------------
202
208
 
203
209
``bzrlib/tests/script.py`` allows users to write tests in a syntax very close to a shell session,
204
210
using a restricted and limited set of commands that should be enough to mimic
287
293
 
288
294
  $ cat file
289
295
 
 
296
The actual use of ScriptRunner within a TestCase looks something like
 
297
this::
 
298
 
 
299
        def test_unshelve_keep(self):
 
300
                # some setup here
 
301
                sr = ScriptRunner()
 
302
                sr.run_script(self, '''
 
303
        $ bzr add file
 
304
        $ bzr shelve --all -m Foo
 
305
        $ bzr shelve --list
 
306
        1: Foo
 
307
        $ bzr unshelve --keep
 
308
        $ bzr shelve --list
 
309
        1: Foo
 
310
        $ cat file
 
311
        contents of file
 
312
        ''')
 
313
 
290
314
 
291
315
 
292
316
.. Effort tests