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.
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``.
183
180
These are really a sub-category of unit tests, but an important one.
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.