~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/testing.txt

(gz) Fix test failure on alpha by correcting format string for
 gc_chk_sha1_record (Martin [gz])

Show diffs side-by-side

added added

removed removed

Lines of Context:
339
339
 
340
340
  __ http://docs.python.org/lib/module-doctest.html
341
341
 
342
 
There is an `assertDoctestExampleMatches` method in
343
 
`bzrlib.tests.TestCase` that allows you to match against doctest-style
344
 
string templates (including ``...`` to skip sections) from regular Python
345
 
tests.
346
 
 
347
342
 
348
343
Shell-like tests
349
344
----------------
516
511
regress.
517
512
 
518
513
This is done by running the command in a subprocess with
519
 
``PYTHON_VERBOSE=1``.  Starting a whole Python interpreter is pretty slow,
520
 
so we don't want exhaustive testing here, but just enough to guard against
521
 
distinct fixed problems.
 
514
``--profile-imports``.  Starting a whole Python interpreter is pretty
 
515
slow, so we don't want exhaustive testing here, but just enough to guard
 
516
against distinct fixed problems.
522
517
 
523
518
Assertions about precisely what is loaded tend to be brittle so we instead
524
519
make assertions that particular things aren't loaded.
745
740
        _test_needs_features = [features.apport]
746
741
 
747
742
 
748
 
Testing translations
749
 
-----------------------
750
 
 
751
 
Translations are disabled by default in tests.  If you want to test
752
 
that code is translated you can use the ``ZzzTranslations`` class from
753
 
``test_i18n``::
754
 
 
755
 
    self.overrideAttr(i18n, '_translations', ZzzTranslations())
756
 
 
757
 
And check the output strings look like ``u"zz\xe5{{output}}"``.
758
 
 
759
 
To test the gettext setup and usage you override i18n.installed back
760
 
to self.i18nInstalled and _translations to None, see
761
 
test_i18n.TestInstall.
762
 
 
763
 
 
764
743
Testing deprecated code
765
744
-----------------------
766
745
 
1034
1013
 
1035
1014
    self.overrideAttr(osutils, '_cached_user_encoding', 'latin-1')
1036
1015
 
1037
 
This should be used with discretion; sometimes it's better to make the
1038
 
underlying code more testable so that you don't need to rely on monkey
1039
 
patching.
1040
 
 
1041
 
 
1042
 
Observing calls to a function
1043
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1044
 
 
1045
 
Sometimes it's useful to observe how a function is called, typically when
1046
 
calling it has side effects but the side effects are not easy to observe
1047
 
from a test case.  For instance the function may be expensive and we want
1048
 
to assert it is not called too many times, or it has effects on the
1049
 
machine that are safe to run during a test but not easy to measure.  In
1050
 
these cases, you can use `recordCalls` which will monkey-patch in a
1051
 
wrapper that records when the function is called.
1052
 
 
1053
 
 
1054
1016
Temporarily changing environment variables
1055
1017
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1056
1018
 
1105
1067
 
1106
1068
    tc qdisc add dev lo root handle 1: prio
1107
1069
    tc qdisc add dev lo parent 1:3 handle 30: netem delay 500ms 
1108
 
    tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip dport 4155 0xffff flowid 1:3 
1109
 
    tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip sport 4155 0xffff flowid 1:3 
 
1070
    tc qdisc add dev lo parent 30:1 handle 40: prio
 
1071
    tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip dport 4155 0xffff flowid 1:3 handle 800::800
 
1072
    tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip sport 4155 0xffff flowid 1:3 handle 800::801
1110
1073
 
1111
1074
and to remove this::
1112
1075