Rev 3427: merge selftest --starting-with option in http://bazaar.launchpad.net/%7Evila/bzr/bzr.integration
Vincent Ladeuil
v.ladeuil+lp at free.fr
Mon May 12 11:17:06 BST 2008
At http://bazaar.launchpad.net/%7Evila/bzr/bzr.integration
------------------------------------------------------------
revno: 3427
revision-id: v.ladeuil+lp at free.fr-20080512101636-89gxs9d736z4y5po
parent: pqm at pqm.ubuntu.com-20080512065003-xojgu070hdyk5m39
parent: v.ladeuil+lp at free.fr-20080509064617-pgpuhoy5wbcfda2i
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: trunk
timestamp: Mon 2008-05-12 12:16:36 +0200
message:
merge selftest --starting-with option
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
------------------------------------------------------------
revno: 3302.11.7
revision-id: v.ladeuil+lp at free.fr-20080509064617-pgpuhoy5wbcfda2i
parent: v.ladeuil+lp at free.fr-20080506202159-36euxn0hhckl1eqx
parent: pqm at pqm.ubuntu.com-20080508230313-knn3ibom6wt27w5k
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest-starts-with
timestamp: Fri 2008-05-09 08:46:17 +0200
message:
merge bzr.dev, fixing simple conflicts
added:
doc/developers/releasing.txt releasing.txt-20080502015919-fnrcav8fwy8ccibu-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/_dirstate_helpers_py.py _dirstate_helpers_py-20070710145033-90nz6cqglsk150jy-1
bzrlib/_patiencediff_py.py cdvdifflib.py-20051106064558-f8f8097fbf0db4e4
bzrlib/add.py add.py-20050323030017-3a77d63feda58e33
bzrlib/annotate.py annotate.py-20050922133147-7c60541d2614f022
bzrlib/atomicfile.py atomicfile.py-20050509044450-dbd24e6c564f7c66
bzrlib/benchmarks/bench_bundle.py bench_bundle.py-20060719055338-o1c6ieybbwt6c3zv-1
bzrlib/benchmarks/tree_creator/kernel_like.py kernel_like.py-20060815024128-b16a7pn542u6b13k-1
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/bundle_data.py read_changeset.py-20050619171944-c0d95aa685537640
bzrlib/bundle/serializer/v08.py v06.py-20051119041339-ee43f97270b01823
bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/commands.py bzr.py-20050309040720-d10f4714595cf8c3
bzrlib/commit.py commit.py-20050511101309-79ec1a0168e0e825
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/counted_lock.py counted_lock.py-20070502135927-7dk86io3ok7ctx6k-1
bzrlib/debug.py debug.py-20061102062349-vdhrw9qdpck8cl35-1
bzrlib/delta.py delta.py-20050729221636-54cf14ef94783d0a
bzrlib/deprecated_graph.py graph.py-20050905070950-b47dce53236c5e48
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/dirstate.py dirstate.py-20060728012006-d6mvoihjb3je9peu-1
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/hashcache.py hashcache.py-20050706091756-fe3a8cc1143ff24f
bzrlib/help.py help.py-20050505025907-4dd7a6d63912f894
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
bzrlib/hooks.py hooks.py-20070325015548-ix4np2q0kd8452au-1
bzrlib/index.py index.py-20070712131115-lolkarso50vjr64s-1
bzrlib/info.py info.py-20050323235939-6bbfe7d9700b0b9b
bzrlib/intset.py intset.py-20050717175247-81cd658f9aaa2731
bzrlib/inventory.py inventory.py-20050309040759-6648b84ca2005b37
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/lazy_import.py lazy_import.py-20060910203832-f77c54gf3n232za0-1
bzrlib/lazy_regex.py lazy_regex.py-20061009091222-fyettq6z5qomdl9e-1
bzrlib/lock.py lock.py-20050527050856-ec090bb51bc03349
bzrlib/lockable_files.py control_files.py-20051111201905-bb88546e799d669f
bzrlib/lockdir.py lockdir.py-20060220222025-98258adf27fbdda3
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/lru_cache.py lru_cache.py-20070119165515-tlw203kuwh0id5gv-1
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/merge3.py merge3.py-20050704130834-bf0597094828a2e1
bzrlib/merge_directive.py merge_directive.py-20070228184838-ja62280spt1g7f4x-1
bzrlib/missing.py missing.py-20050812153334-097f7097e2a8bcd1
bzrlib/multiparent.py __init__.py-20070410133617-n1jdhcc1n1mibarp-1
bzrlib/mutabletree.py mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
bzrlib/option.py option.py-20051014052914-661fb36e76e7362f
bzrlib/osutils.py osutils.py-20050309040759-eeaff12fbf77ac86
bzrlib/patches.py patches.py-20050727183609-378c1cc5972ce908
bzrlib/plugins/launchpad/lp_registration.py lp_registration.py-20060315190948-daa617eafe3a8d48
bzrlib/plugins/launchpad/test_register.py test_register.py-20060315182712-40f5dda945c829a8
bzrlib/progress.py progress.py-20050610070202-df9faaab791964c0
bzrlib/reconcile.py reweave_inventory.py-20051108164726-1e5e0934febac06e
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repofmt/pack_repo.py pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
bzrlib/repofmt/weaverepo.py presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/revision.py revision.py-20050309040759-e77802c08f3999d5
bzrlib/revisionspec.py revisionspec.py-20050907152633-17567659fd5c0ddb
bzrlib/revisiontree.py revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
bzrlib/rio.py rio.py-20051128032247-770b120b34dfff60
bzrlib/smart/branch.py branch.py-20061124031907-mzh3pla28r83r97f-1
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/smart/protocol.py protocol.py-20061108035435-ot0lstk2590yqhzr-1
bzrlib/smart/repository.py repository.py-20061128022038-vr5wy5bubyb8xttk-1
bzrlib/smart/request.py request.py-20061108095550-gunadhxmzkdjfeek-1
bzrlib/smart/server.py server.py-20061110062051-chzu10y32vx8gvur-1
bzrlib/status.py status.py-20050505062338-431bfa63ec9b19e6
bzrlib/store/__init__.py store.py-20050309040759-164dc5173d6406c2
bzrlib/store/revision/knit.py knit.py-20060303020652-de5fa299e941a3c7
bzrlib/store/revision/text.py text.py-20060303020652-e49155f0da4d14ab
bzrlib/store/versioned/__init__.py weavestore.py-20050907094258-88262e0434babab9
bzrlib/symbol_versioning.py symbol_versioning.py-20060105104851-9ecf8af605d15a80
bzrlib/testament.py testament.py-20051011100429-6d319a18183b13c8
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
bzrlib/tests/blackbox/test_hooks.py test_hooks.py-20080308163236-xljgf9j41hik1x21-1
bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
bzrlib/tests/blackbox/test_status.py teststatus.py-20050712014354-508855eb9f29f7dc
bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/branch_implementations/test_commit.py test_commit.py-20070206022134-117z1i5b644p63r0-1
bzrlib/tests/branch_implementations/test_hooks.py test_hooks.py-20070129154855-blhpwxmvjs07waei-1
bzrlib/tests/branch_implementations/test_pull.py test_pull.py-20060410103942-83c35b26657414fc
bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
bzrlib/tests/branch_implementations/test_uncommit.py test_uncommit.py-20070205180410-ge7058d9138mvq3x-1
bzrlib/tests/ftp_server.py ftpserver.py-20071019102346-61jbvdkrr70igauv-1
bzrlib/tests/http_server.py httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
bzrlib/tests/http_utils.py HTTPTestUtil.py-20050914180604-247d3aafb7a43343
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/repository_implementations/test_revision.py testrevprops.py-20051013073044-92bc3c68302ce1bf
bzrlib/tests/stub_sftp.py stub_sftp.py-20051027032739-0e7ef4f7bab0e174
bzrlib/tests/test_ancestry.py test_ancestry.py-20050913023709-69768e94848312c6
bzrlib/tests/test_bundle.py test.py-20050630184834-092aa401ab9f039c
bzrlib/tests/test_bzrdir.py test_bzrdir.py-20060131065654-deba40eef51cf220
bzrlib/tests/test_commit.py test_commit.py-20050914060732-279f057f8c295434
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
bzrlib/tests/test_conflicts.py test_conflicts.py-20051006031059-e2dad9bbeaa5891f
bzrlib/tests/test_dirstate.py test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
bzrlib/tests/test_errors.py test_errors.py-20060210110251-41aba2deddf936a8
bzrlib/tests/test_fetch.py testfetch.py-20050825090644-f73e07e7dfb1765a
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_hooks.py test_hooks.py-20070628030849-89rtsbe5dmer5npz-1
bzrlib/tests/test_lockable_files.py test_lockable_files.py-20051225183927-365c7fd99591caf1
bzrlib/tests/test_merge_core.py test_merge_core.py-20050824132511-eb99b23a0eec641b
bzrlib/tests/test_merge_directive.py test_merge_directive-20070228184838-ja62280spt1g7f4x-2
bzrlib/tests/test_missing.py test_missing.py-20051212000028-694fa4f658a81f48
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
bzrlib/tests/test_patches.py test_patches.py-20051231203844-f4974d20f6aea09c
bzrlib/tests/test_permissions.py test_permissions.py-20051215004520-ccf475789c80e80c
bzrlib/tests/test_plugins.py plugins.py-20050622075746-32002b55e5e943e9
bzrlib/tests/test_registry.py test_lazy_factory.py-20060809213415-2gfvqadtvdn0phtg-2
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_revision.py testrevision.py-20050804210559-46f5e1eb67b01289
bzrlib/tests/test_revisiontree.py test_revisiontree.py-20060615095324-aij44ndxbv1h4c9f-1
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
bzrlib/tests/test_source.py test_source.py-20051207061333-a58dea6abecc030d
bzrlib/tests/test_status.py test_status.py-20060516190614-fbf6432e4a6e8aa5
bzrlib/tests/test_strace.py test_strace.py-20070323001526-6zquhhw8leb9m6j8-2
bzrlib/tests/test_subsume.py test_subsume.py-20060927040024-tsvh4pchajoayymg-1
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/tests/test_upgrade.py test_upgrade.py-20051004040251-555fe1d2bae1bc71
bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
bzrlib/tests/test_workingtree.py testworkingtree.py-20051004024258-b88d0fe8f101d468
bzrlib/tests/transport_util.py transportutil.py-20070525113600-5v2igk89s8fensom-1
bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
bzrlib/tests/treeshape.py treeshape.py-20051004094628-312a98f0194306a8
bzrlib/tests/workingtree_implementations/test_add_reference.py test_add_reference.p-20061211024451-yo9i1691dgbv1eyn-1
bzrlib/tests/workingtree_implementations/test_basis_inventory.py test_basis_inventory.py-20051218151655-3650468941091309
bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
bzrlib/tests/workingtree_implementations/test_parents.py test_set_parents.py-20060807231740-yicmnlci1mj8smu1-1
bzrlib/tests/workingtree_implementations/test_set_root_id.py test_set_root_id.py-20061004073850-0r1c7qikmnkb8m9k-1
bzrlib/tests/workingtree_implementations/test_walkdirs.py test_walkdirs.py-20060731045042-ch366w6dve2m7ro9-1
bzrlib/textinv.py textinv.py-20050411024435-e3898231b7d1897b26c38878
bzrlib/textui.py textui.py-20050309040759-5d0cebe09c528e7d
bzrlib/timestamp.py timestamp.py-20070306142322-ttbb9oulf3jotljd-1
bzrlib/trace.py trace.py-20050309040759-c8ed824bdcd4748a
bzrlib/transactions.py transactions.py-20051007010900-f1313d53cf58e223
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/transport/__init__.py transport.py-20050711165921-4978aa7ce1285ad5
bzrlib/transport/chroot.py chroot.py-20061011104729-0us9mgm97z378vnt-1
bzrlib/transport/decorator.py decorator.py-20060402223305-e913a0f25319ab42
bzrlib/transport/ftp.py ftp.py-20051116161804-58dc9506548c2a53
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
bzrlib/transport/http/wsgi.py wsgi.py-20061005091552-rz8pva0olkxv0sd8-2
bzrlib/transport/local.py local_transport.py-20050711165921-9b1f142bfe480c24
bzrlib/transport/memory.py memory.py-20051016101338-cd008dbdf69f04fc
bzrlib/transport/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
bzrlib/transport/sftp.py sftp.py-20051019050329-ab48ce71b7e32dfe
bzrlib/transport/ssh.py ssh.py-20060824042150-0s9787kng6zv1nwq-1
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
bzrlib/treebuilder.py treebuilder.py-20060907214856-4omn6hf1u7fvrart-1
bzrlib/tuned_gzip.py tuned_gzip.py-20060407014720-5aadc518e928e8d2
bzrlib/urlutils.py urlutils.py-20060502195429-e8a161ecf8fac004
bzrlib/version_info_formats/__init__.py generate_version_info.py-20051228204928-8358edabcddcd97e
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
bzrlib/weave.py knit.py-20050627021749-759c29984154256b
bzrlib/weavefile.py weavefile.py-20050629135233-2ffe0200f103f6c2
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
bzrlib/workingtree_4.py workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
bzrlib/xml4.py xml4.py-20050916091259-db5ab55e7e6ca324
bzrlib/xml5.py xml5.py-20080328030717-t9guwinq8hom0ar3-1
bzrlib/xml8.py xml5.py-20050907032657-aac8f960815b66b1
doc/default.css default.css-20060622101119-tgwtdci8z769bjb9-1
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
doc/developers/index.txt index.txt-20070508041241-qznziunkg0nffhiw-1
doc/developers/network-protocol.txt networkprotocol.txt-20070903044232-woustorrjbmg5zol-1
doc/en/user-guide/hooks.txt hooks.txt-20070829200551-7nr6e5a1io6x78uf-1
------------------------------------------------------------
revno: 3302.11.6
revision-id: v.ladeuil+lp at free.fr-20080506202159-36euxn0hhckl1eqx
parent: v.ladeuil+lp at free.fr-20080430214120-fa7nx8d4m0ui8gdw
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest-starts-with
timestamp: Tue 2008-05-06 22:21:59 +0200
message:
Fixed as per Martin and John reviews. Also fix a bug.
* bzrlib/tests/test_selftest.py:
(TestFilteredByNameStartTestLoader): Add a test for
* bzrlib/tests/__init__.py:
(test_suite.interesting_module): The module may contains tests
that starts with the specified string even if the module name
doesn't.
* doc/developers/HACKING.txt:
We have doubled the number of tests in one year 8-)
Add some explanations about --load-list and --starting-with.
* bzrlib/builtins.py:
(cmd_selftest): Add '-s' for --starting-with.
modified:
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
------------------------------------------------------------
revno: 3302.11.5
revision-id: v.ladeuil+lp at free.fr-20080430214120-fa7nx8d4m0ui8gdw
parent: v.ladeuil+lp at free.fr-20080430213235-tgn24ahe6dwwyy7j
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest-starts-with
timestamp: Wed 2008-04-30 23:41:20 +0200
message:
Fixed as per John's review. Also added a NEWS entry.
* bzrlib/tests/blackbox/test_selftest.py:
(TestSelftestStartingWith.test_starting_with): Harden the test by
checking that the test id is really listed.
* bzrlib/tests/__init__.py:
(test_suite): Define interesting_module more precisely. Give a
better explanation for not reporting unkwon tests when both
keep_only and starting_with are used together.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
------------------------------------------------------------
revno: 3302.11.4
revision-id: v.ladeuil+lp at free.fr-20080430213235-tgn24ahe6dwwyy7j
parent: v.ladeuil+lp at free.fr-20080428092027-9aqt6qjvtuvxf5uu
parent: v.ladeuil+lp at free.fr-20080430200939-onep1tu7d1t2y0ld
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest-starts-with
timestamp: Wed 2008-04-30 23:32:35 +0200
message:
merge bzr.dev
added:
bzrlib/tests/branch_implementations/test_check.py test_check.py-20080429151303-1sbfclxhddpz0tnj-1
bzrlib/tests/branch_implementations/test_reconcile.py test_reconcile.py-20080429161555-qlmccuyeyt6pvho7-1
bzrlib/tests/interrepository_implementations/test_fetch.py test_fetch.py-20080425213627-j60cjh782ufm83ry-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/bundle_data.py read_changeset.py-20050619171944-c0d95aa685537640
bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/reconcile.py reweave_inventory.py-20051108164726-1e5e0934febac06e
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/revisiontree.py revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
bzrlib/smart/server.py server.py-20061110062051-chzu10y32vx8gvur-1
bzrlib/tests/blackbox/test_reconcile.py test_fix.py-20060223013051-9a188e15a5ee9451
bzrlib/tests/branch_implementations/__init__.py __init__.py-20060123013057-b12a52c3f361daf4
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/interrepository_implementations/__init__.py __init__.py-20060220054744-baf49a1f88f17b1a
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
bzrlib/tests/test_bundle.py test.py-20050630184834-092aa401ab9f039c
bzrlib/tests/test_fetch.py testfetch.py-20050825090644-f73e07e7dfb1765a
bzrlib/tests/test_reconcile.py test_reconcile.py-20060225054842-50aa618584a86f26
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
bzrlib/tests/tree_implementations/test_test_trees.py test_tree_trees.py-20060720091921-3nwi5h21lf06vf5p-1
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
bzrlib/workingtree_4.py workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
------------------------------------------------------------
revno: 3302.11.3
revision-id: v.ladeuil+lp at free.fr-20080428092027-9aqt6qjvtuvxf5uu
parent: v.ladeuil+lp at free.fr-20080423204751-ck6m619a30ivap0x
parent: v.ladeuil+lp at free.fr-20080428085745-bxrf007hjbqfwup5
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest-starts-with
timestamp: Mon 2008-04-28 11:20:27 +0200
message:
merge bzr.dev and review fixes
modified:
Makefile Makefile-20050805140406-d96e3498bb61c5bb
NEWS NEWS-20050323055033-4e00b5db738777ff
bzr bzr.py-20050313053754-5485f144c7006fa6
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/doc/__init__.py __init__.py-20051224020731-eb3eb3ef5b4570df
bzrlib/doc/api/__init__.py __init__.py-20051224020744-7b87d590843855bc
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/fetch.py fetch.py-20050818234941-26fea6105696365d
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/reconfigure.py reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/revisionspec.py revisionspec.py-20050907152633-17567659fd5c0ddb
bzrlib/smart/repository.py repository.py-20061128022038-vr5wy5bubyb8xttk-1
bzrlib/store/revision/knit.py knit.py-20060303020652-de5fa299e941a3c7
bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
bzrlib/tests/branch_implementations/__init__.py __init__.py-20060123013057-b12a52c3f361daf4
bzrlib/tests/bzrdir_implementations/__init__.py __init__.py-20060131065642-34c39b54f42dd048
bzrlib/tests/commands/__init__.py __init__.py-20070520095518-ecfl8531fxgjeycj-1
bzrlib/tests/interrepository_implementations/__init__.py __init__.py-20060220054744-baf49a1f88f17b1a
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
bzrlib/tests/interversionedfile_implementations/__init__.py __init__.py-20060302012326-981af525594d02ed
bzrlib/tests/inventory_implementations/__init__.py __init__.py-20070821044532-olbadbokgv3qv1yd-1
bzrlib/tests/per_lock/__init__.py __init__.py-20070314201444-u92yjsqrkh2m3qcb-1
bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/revisionstore_implementations/__init__.py __init__.py-20060303020702-976c4186a0f99edb
bzrlib/tests/test_knit.py test_knit.py-20051212171302-95d4c00dd5f11f2b
bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_store.py teststore.py-20050826022702-f6caadb647395769
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
bzrlib/transport/ftp.py ftp.py-20051116161804-58dc9506548c2a53
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
doc/en/user-guide/controlling_registration.txt controlling_registra-20071121073725-0corxykv5irjal00-3
doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
------------------------------------------------------------
revno: 3302.11.2
revision-id: v.ladeuil+lp at free.fr-20080423204751-ck6m619a30ivap0x
parent: v.ladeuil+lp at free.fr-20080423184452-h9p6zkkm8yjfb8pw
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest-starts-with
timestamp: Wed 2008-04-23 22:47:51 +0200
message:
selftest now accepts --starting-ith <id> to load and execute only a module|class|test* reduced suite.
* bzrlib/tests/blackbox/test_selftest.py:
(TestSelftestWithIdList.test_load_unknown): Test option.
* bzrlib/tests/__init__.py:
(selftest): Add starting_with parameter.
(test_suite): Add starting_with parameter. Filter the test suite
for test ids starting with a given name.
* bzrlib/builtins.py:
(cmd_selftest): Add --statring-with option.
modified:
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
------------------------------------------------------------
revno: 3302.11.1
revision-id: v.ladeuil+lp at free.fr-20080423184452-h9p6zkkm8yjfb8pw
parent: v.ladeuil+lp at free.fr-20080423135033-nhnu9u2re6m1c2xw
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest-starts-with
timestamp: Wed 2008-04-23 20:44:52 +0200
message:
Create a new selftest filter allowing loading only one module/class/test.
* bzrlib/tests/test_selftest.py:
(TestSelftestFiltering.test_condition_id_startswith): Test condition.
(TestSelftestFiltering): Test filter.
(TestFilteredByModuleTestLoader.test_exclude_tests): Test loader.
* bzrlib/tests/__init__.py:
(condition_id_startswith): New condition to filter tests.
(filter_suite_by_id_startswith): New filter.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
-------------- next part --------------
=== modified file 'NEWS'
--- a/NEWS 2008-05-12 03:04:40 +0000
+++ b/NEWS 2008-05-12 10:16:36 +0000
@@ -153,6 +153,11 @@
* Parameterised test ids are preserved correctly to aid diagnosis of test
failures. (Robert Collins, Andrew Bennetts)
+ * selftest now accepts --starting-with <id> to load only the tests whose id
+ starts with the one specified. This greatly speeds up running the test
+ suite on a limited set of tests and can be used to run the tests for a
+ single module, a single class or even a single test. (Vincent Ladeuil)
+
* The test suite modules have been modified to define load_tests() instead
of test_suite(). That speeds up selective loading (via --load-list)
significantly and provides many examples on how to migrate (grep for
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py 2008-05-08 04:33:38 +0000
+++ b/bzrlib/builtins.py 2008-05-09 06:46:17 +0000
@@ -2638,6 +2638,9 @@
help='Load a test id list from a text file.'),
ListOption('debugflag', type=str, short_name='E',
help='Turn on a selftest debug flag.'),
+ Option('starting-with', type=str, argname='TESTID',
+ short_name='s',
+ help='Load only the tests starting with TESTID.'),
]
encoding_type = 'replace'
@@ -2646,7 +2649,7 @@
lsprof_timed=None, cache_dir=None,
first=False, list_only=False,
randomize=None, exclude=None, strict=False,
- load_list=None, debugflag=None):
+ load_list=None, debugflag=None, starting_with=None):
import bzrlib.ui
from bzrlib.tests import selftest
import bzrlib.benchmarks as benchmarks
@@ -2690,6 +2693,7 @@
strict=strict,
load_list=load_list,
debug_flags=debugflag,
+ starting_with=starting_with,
)
finally:
if benchfile is not None:
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2008-05-12 03:04:40 +0000
+++ b/bzrlib/tests/__init__.py 2008-05-12 10:16:36 +0000
@@ -2268,6 +2268,18 @@
return condition
+def condition_id_startswith(start):
+ """Create a condition filter verifying that test's id starts with a string.
+
+ :param start: A string.
+ :return: A callable that returns True if the test's id starts with the
+ given string.
+ """
+ def condition(test):
+ return test.id().startswith(start)
+ return condition
+
+
def exclude_tests_by_condition(suite, condition):
"""Create a test suite which excludes some tests from suite.
@@ -2324,6 +2336,18 @@
return result_suite
+def filter_suite_by_id_startswith(suite, start):
+ """Create a test suite by filtering another one.
+
+ :param suite: The source suite.
+ :param start: A string the test id must start with.
+ :returns: the newly created suite
+ """
+ condition = condition_id_startswith(start)
+ result_suite = filter_suite_by_condition(suite, condition)
+ return result_suite
+
+
def exclude_tests_by_re(suite, pattern):
"""Create a test suite which excludes some tests from suite.
@@ -2469,6 +2493,7 @@
strict=False,
load_list=None,
debug_flags=None,
+ starting_with=None,
):
"""Run the whole test suite under the enhanced runner"""
# XXX: Very ugly way to do this...
@@ -2492,7 +2517,7 @@
else:
keep_only = load_test_id_list(load_list)
if test_suite_factory is None:
- suite = test_suite(keep_only)
+ suite = test_suite(keep_only, starting_with)
else:
suite = test_suite_factory()
return run_suite(suite, 'testbzr', verbose=verbose, pattern=pattern,
@@ -2612,11 +2637,14 @@
return self.tests.has_key(test_id)
-def test_suite(keep_only=None):
+def test_suite(keep_only=None, starting_with=None):
"""Build and return TestSuite for the whole of bzrlib.
:param keep_only: A list of test ids limiting the suite returned.
+ :param starting_with: An id limiting the suite returned to the tests
+ starting with it.
+
This function can be replaced if you need to change the default test
suite on a global basis, but it is not encouraged.
"""
@@ -2771,11 +2799,30 @@
loader = TestUtil.TestLoader()
- if keep_only is None:
- loader = TestUtil.TestLoader()
- else:
+ if starting_with is not None:
+ # We take precedence over keep_only because *at loading time* using
+ # both options means we will load less tests for the same final result.
+ def interesting_module(name):
+ return (
+ # Either the module name starts with the specified string
+ name.startswith(starting_with)
+ # or it may contain tests starting with the specified string
+ or starting_with.startswith(name)
+ )
+ loader = TestUtil.FilteredByModuleTestLoader(interesting_module)
+
+ elif keep_only is not None:
id_filter = TestIdList(keep_only)
loader = TestUtil.FilteredByModuleTestLoader(id_filter.refers_to)
+ def interesting_module(name):
+ return id_filter.refers_to(name)
+
+ else:
+ loader = TestUtil.TestLoader()
+ def interesting_module(name):
+ # No filtering, all modules are interesting
+ return True
+
suite = loader.suiteClass()
# modules building their suite with loadTestsFromModuleNames
@@ -2798,7 +2845,7 @@
]
for mod in modules_to_doctest:
- if not (keep_only is None or id_filter.refers_to(mod)):
+ if not interesting_module(mod):
# No tests to keep here, move along
continue
try:
@@ -2810,9 +2857,8 @@
default_encoding = sys.getdefaultencoding()
for name, plugin in bzrlib.plugin.plugins().items():
- if keep_only is not None:
- if not id_filter.refers_to(plugin.module.__name__):
- continue
+ if not interesting_module(plugin.module.__name__):
+ continue
plugin_suite = plugin.test_suite()
# We used to catch ImportError here and turn it into just a warning,
# but really if you don't have --no-plugins this should be a failure.
@@ -2828,14 +2874,25 @@
reload(sys)
sys.setdefaultencoding(default_encoding)
+ if starting_with is not None:
+ suite = filter_suite_by_id_startswith(suite, starting_with)
+
if keep_only is not None:
# Now that the referred modules have loaded their tests, keep only the
# requested ones.
suite = filter_suite_by_id_list(suite, id_filter)
# Do some sanity checks on the id_list filtering
not_found, duplicates = suite_matches_id_list(suite, keep_only)
- for id in not_found:
- bzrlib.trace.warning('"%s" not found in the test suite', id)
+ if starting_with is not None:
+ # The tester has used both keep_only and starting_with, so he is
+ # already aware that some tests are excluded from the list, there
+ # is no need to tell him which.
+ pass
+ else:
+ # Some tests mentioned in the list are not in the test suite. The
+ # list may be out of date, report to the tester.
+ for id in not_found:
+ bzrlib.trace.warning('"%s" not found in the test suite', id)
for id in duplicates:
bzrlib.trace.warning('"%s" is used as an id by several tests', id)
=== modified file 'bzrlib/tests/blackbox/test_selftest.py'
--- a/bzrlib/tests/blackbox/test_selftest.py 2008-05-02 07:31:24 +0000
+++ b/bzrlib/tests/blackbox/test_selftest.py 2008-05-09 06:46:17 +0000
@@ -568,3 +568,13 @@
def test_load_unknown(self):
out, err = self.run_bzr('selftest --load-list I_do_not_exist ',
retcode=3)
+
+
+class TestSelftestStartingWith(TestCase):
+
+ def test_starting_with(self):
+ out, err = self.run_bzr(
+ ['selftest', '--starting-with', self.id(), '--list'])
+ self.assertContainsRe(out, "Listed 1 test in")
+ self.assertContainsRe(out, self.id())
+
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2008-05-12 03:04:40 +0000
+++ b/bzrlib/tests/test_selftest.py 2008-05-12 10:16:36 +0000
@@ -1749,6 +1749,16 @@
re_filtered = filter_suite_by_re(self.suite, my_pattern)
self.assertEqual(_test_ids(re_filtered), _test_ids(filtered_suite))
+ def test_condition_id_startswith(self):
+ klass = 'bzrlib.tests.test_selftest.TestSelftestFiltering.'
+ start = klass + 'test_condition_id_starts'
+ test_names = [klass + 'test_condition_id_startswith']
+ filtered_suite = filter_suite_by_condition(
+ self.suite, tests.condition_id_startswith(start))
+ my_pattern = 'TestSelftestFiltering.*test_condition_id_startswith'
+ re_filtered = filter_suite_by_re(self.suite, my_pattern)
+ self.assertEqual(_test_ids(re_filtered), _test_ids(filtered_suite))
+
def test_condition_isinstance(self):
filtered_suite = filter_suite_by_condition(self.suite,
condition_isinstance(self.__class__))
@@ -1804,6 +1814,19 @@
['bzrlib.tests.test_selftest.'
'TestSelftestFiltering.test_filter_suite_by_id_list'])
+ def test_filter_suite_by_id_startswith(self):
+ # By design this test may fail if another test is added whose name also
+ # begins with the start value used.
+ klass = 'bzrlib.tests.test_selftest.TestSelftestFiltering.'
+ start = klass + 'test_filter_suite_by_id_starts'
+ test_list = [klass + 'test_filter_suite_by_id_startswith']
+ filtered_suite = tests.filter_suite_by_id_startswith(self.suite, start)
+ filtered_names = _test_ids(filtered_suite)
+ self.assertEqual(
+ filtered_names,
+ ['bzrlib.tests.test_selftest.'
+ 'TestSelftestFiltering.test_filter_suite_by_id_startswith'])
+
def test_preserve_input(self):
# NB: Surely this is something in the stdlib to do this?
self.assertTrue(self.suite is preserve_input(self.suite))
@@ -2084,3 +2107,33 @@
suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
self.assertEquals([], _test_ids(suite))
+
+
+class TestFilteredByNameStartTestLoader(tests.TestCase):
+
+ def _create_loader(self, name_start):
+ def needs_module(name):
+ return name.startswith(name_start) or name_start.startswith(name)
+ loader = TestUtil.FilteredByModuleTestLoader(needs_module)
+ return loader
+
+ def test_load_tests(self):
+ test_list = ['bzrlib.tests.test_sampler.DemoTest.test_nothing']
+ loader = self._create_loader('bzrlib.tests.test_samp')
+
+ suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
+ self.assertEquals(test_list, _test_ids(suite))
+
+ def test_load_tests_inside_module(self):
+ test_list = ['bzrlib.tests.test_sampler.DemoTest.test_nothing']
+ loader = self._create_loader('bzrlib.tests.test_sampler.Demo')
+
+ suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
+ self.assertEquals(test_list, _test_ids(suite))
+
+ def test_exclude_tests(self):
+ test_list = ['bogus']
+ loader = self._create_loader('bogus')
+
+ suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
+ self.assertEquals([], _test_ids(suite))
=== modified file 'doc/developers/HACKING.txt'
--- a/doc/developers/HACKING.txt 2008-05-08 04:33:38 +0000
+++ b/doc/developers/HACKING.txt 2008-05-09 06:46:17 +0000
@@ -250,7 +250,7 @@
down the track do not break new features or bug fixes that you are
contributing today.
-As of May 2007, Bazaar ships with a test suite containing over 6000 tests
+As of May 2008, Bazaar ships with a test suite containing over 12000 tests
and growing. We are proud of it and want to remain so. As community
members, we all benefit from it. Would you trust version control on
your project to a product *without* a test suite like Bazaar has?
@@ -283,6 +283,28 @@
This option can be combined with other selftest options (like -x) and
filter patterns to understand their effect.
+Once you understand how to create a list of tests, you can use the --load-list
+option to run only a restricted set of tests that you kept in a file, one test
+id by line. Keep in mind that this will never be sufficient to validate your
+modifications, you still need to run the full test suite for that, but using it
+can help in some cases (like running only the failed tests for some time)::
+
+ ./bzr selftest -- load-list my_failing_tests
+
+This option can also be combined with other selftest options, including
+patterns. It has some drawbacks though, the list can become out of date pretty
+quick when doing Test Driven Development.
+
+To address this concern, there is another way to run a restricted set of tests:
+the --starting-with option will run only the tests whose name starts with the
+specified string. It will also avoid loading the other tests and as a
+consequence starts running your tests quicker::
+
+ ./bzr selftest --starting-with bzrlib.blackbox
+
+This option can be combined with all the other selftest options including
+--load-list. The later is rarely used but allows to run a subset of a list of
+failing tests for example.
Test suite debug flags
----------------------
More information about the bazaar-commits
mailing list