~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/testing.txt

Show diffs side-by-side

added added

removed removed

Lines of Context:
144
144
-------------
145
145
 
146
146
Bazaar can optionally produce output in the machine-readable subunit_
147
 
format, so that test output can be post-processed by various tools.
 
147
format, so that test output can be post-processed by various tools. To
 
148
generate a subunit test stream::
 
149
 
 
150
 $ ./bzr selftest --subunit
 
151
 
 
152
Processing such a stream can be done using a variety of tools including:
 
153
 
 
154
* The builtin ``subunit2pyunit``, ``subunit-filter``, ``subunit-ls``,
 
155
  ``subunit2junitxml`` from the subunit project.
 
156
 
 
157
* tribunal_, a GUI for showing test results.
 
158
 
 
159
* testrepository_, a tool for gathering and managing test runs.
148
160
 
149
161
.. _subunit: https://launchpad.net/subunit/
150
 
 
151
 
 
 
162
.. _tribunal: https://launchpad.net/tribunal/
 
163
 
 
164
 
 
165
Using testrepository
 
166
--------------------
 
167
 
 
168
Bazaar ships with a config file for testrepository_. This can be very
 
169
useful for keeping track of failing tests and doing general workflow
 
170
support. To run tests using testrepository::
 
171
 
 
172
  $ testr run
 
173
 
 
174
To run only failing tests::
 
175
 
 
176
  $ testr run --failing
 
177
 
 
178
To run only some tests, without plugins::
 
179
 
 
180
  $ test run test_selftest -- --no-plugins
 
181
 
 
182
See the testrepository documentation for more details.
 
183
 
 
184
.. _testrepository: https://launchpad.net/testrepository
152
185
 
153
186
Writing Tests
154
187
=============
422
455
  unless there is a good reason
423
456
 
424
457
 
 
458
Testing locking behaviour
 
459
-------------------------
 
460
 
 
461
You may want to write tests that particular objects are or aren't locked
 
462
during particular operations: see for example `bug 498409`__.  
 
463
 
 
464
 __ https://launchpad.net/bugs/498409
 
465
 
 
466
The `TestCase` base class registers hooks that record lock actions into 
 
467
``._lock_actions`` in this format::
 
468
 
 
469
  [
 
470
    ('acquired', LockResult(file:///tmp/testbzr-J2pcy2.tmp/.bzr/branch-lockc4au55ppz8wdym11z1aq)),
 
471
    ('released', LockResult(file:///tmp/testbzr-J2pcy2.tmp/.bzr/branch-lockc4au55ppz8wdym11z1aq)),
 
472
    ('acquired', LockResult(file:///tmp/testbzr-J2pcy2.tmp/.bzr/repository/lockyxb3rn4sw1oyx1jzkt45)),
 
473
    ('released', LockResult(file:///tmp/testbzr-J2pcy2.tmp/.bzr/repository/lockyxb3rn4sw1oyx1jzkt45)),
 
474
    ('acquired', LockResult(file:///tmp/testbzr-J2pcy2.tmp/.bzr/branch/lockh8c6t28rcjdkgxtndbje)),
 
475
    ('released', LockResult(file:///tmp/testbzr-J2pcy2.tmp/.bzr/branch/lockh8c6t28rcjdkgxtndbje)),
 
476
    ...
 
477
 
 
478
Alternatively you can register your own hooks to make custom assertions:
 
479
see `TestCase._check_locks` for an example.
 
480
 
425
481
Skipping tests
426
482
--------------
427
483
 
543
599
 - UnicodeFilenameFeature
544
600
 - FTPServerFeature
545
601
 - CaseInsensitiveFilesystemFeature.
 
602
 - chown_feature: The test can rely on OS being POSIX and python
 
603
   supporting os.chown.
 
604
 - posix_permissions_feature: The test can use POSIX-style
 
605
   user/group/other permission bits.
546
606
 
547
607
 
548
608
Defining a new feature that tests can require