Rev 3335: More aggressive test loader for selftest --load-list in http://code.launchpad.net/%7Ev-ladeuil/bzr/bzr.integration
Vincent Ladeuil
v.ladeuil+lp at free.fr
Fri Apr 4 11:44:57 BST 2008
At http://code.launchpad.net/%7Ev-ladeuil/bzr/bzr.integration
------------------------------------------------------------
revno: 3335
revision-id: v.ladeuil+lp at free.fr-20080404104423-ugwfbqj7i7pry897
parent: pqm at pqm.ubuntu.com-20080404055943-evqxhz3x63dz9wbt
parent: v.ladeuil+lp at free.fr-20080402134513-xfj7652jfsxg6hwh
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: trunk
timestamp: Fri 2008-04-04 12:44:23 +0200
message:
More aggressive test loader for selftest --load-list
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/plugin.py plugin.py-20050622060424-829b654519533d69
bzrlib/tests/TestUtil.py TestUtil.py-20050824080200-5f70140a2d938694
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_plugins.py plugins.py-20050622075746-32002b55e5e943e9
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
------------------------------------------------------------
revno: 3302.8.21
revision-id: v.ladeuil+lp at free.fr-20080402134513-xfj7652jfsxg6hwh
parent: v.ladeuil+lp at free.fr-20080401094234-ied49b94be3tiwlq
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Wed 2008-04-02 15:45:13 +0200
message:
Fixed as per Robert's review.
* bzrlib/tests/test_plugins.py:
(TestPlugins.test_no_load_plugin_tests_gives_None_for_load_plugin_tests,
TestPlugins.test_load_plugin_tests_gives_load_plugin_tests_result):
Updated.
* bzrlib/tests/__init__.py:
(test_suite): Use load_plugin_tests for plugins.
* bzrlib/plugin.py:
(PlugIn.load_plugin_tests): Renamed from load_tests to avoid
confusion disambiguate with the load_tests function defined in
test modules and plugin modules.
modified:
bzrlib/plugin.py plugin.py-20050622060424-829b654519533d69
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_plugins.py plugins.py-20050622075746-32002b55e5e943e9
------------------------------------------------------------
revno: 3302.8.20
revision-id: v.ladeuil+lp at free.fr-20080401094234-ied49b94be3tiwlq
parent: v.ladeuil+lp at free.fr-20080401093717-u3oywqologcr1s7d
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Tue 2008-04-01 11:42:34 +0200
message:
Add NEWS entry.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3302.8.19
revision-id: v.ladeuil+lp at free.fr-20080401093717-u3oywqologcr1s7d
parent: v.ladeuil+lp at free.fr-20080401083930-6jak7atgwu3q00yr
parent: pqm at pqm.ubuntu.com-20080401091848-6y4f104r061ad8bk
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Tue 2008-04-01 11:37:17 +0200
message:
merge bzr.dev
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/mail_client.py mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/smart/branch.py branch.py-20061124031907-mzh3pla28r83r97f-1
bzrlib/smart/bzrdir.py bzrdir.py-20061122024551-ol0l0o0oofsu9b3t-1
bzrlib/smart/client.py client.py-20061116014825-2k6ada6xgulslami-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/smart/vfs.py vfs.py-20061108095550-gunadhxmzkdjfeek-2
bzrlib/tests/test_errors.py test_errors.py-20060210110251-41aba2deddf936a8
bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/tests/test_wsgi.py test_wsgi.py-20061005091552-rz8pva0olkxv0sd8-1
bzrlib/transport/__init__.py transport.py-20050711165921-4978aa7ce1285ad5
bzrlib/transport/chroot.py chroot.py-20061011104729-0us9mgm97z378vnt-1
bzrlib/transport/ftp.py ftp.py-20051116161804-58dc9506548c2a53
bzrlib/transport/http/wsgi.py wsgi.py-20061005091552-rz8pva0olkxv0sd8-2
bzrlib/transport/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
------------------------------------------------------------
revno: 3302.8.18
revision-id: v.ladeuil+lp at free.fr-20080401083930-6jak7atgwu3q00yr
parent: v.ladeuil+lp at free.fr-20080331171715-ovu1ubxwv10nvxit
parent: v.ladeuil+lp at free.fr-20080331172008-o31h3ai3qb8vwjx4
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Tue 2008-04-01 10:39:30 +0200
message:
merge down-thread
------------------------------------------------------------
revno: 3302.8.17
revision-id: v.ladeuil+lp at free.fr-20080331171715-ovu1ubxwv10nvxit
parent: v.ladeuil+lp at free.fr-20080331161703-0ueczeko01f5bf2v
parent: v.ladeuil+lp at free.fr-20080331171123-d1aihpfvqnx6u8mp
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Mon 2008-03-31 19:17:15 +0200
message:
merge bzr.dev
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzr bzr.py-20050313053754-5485f144c7006fa6
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
------------------------------------------------------------
revno: 3302.8.16
revision-id: v.ladeuil+lp at free.fr-20080331161703-0ueczeko01f5bf2v
parent: v.ladeuil+lp at free.fr-20080330202852-doh9ipbxw6zewnc7
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Mon 2008-03-31 18:17:03 +0200
message:
Add an optional loader parameter needed when deploying the test
loader for parametrized inventory_implementations and
repository_implementations tests.
* bzrlib/tests/__init__.py:
(multiply_tests_from_modules): Add an optional loader parameter.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
------------------------------------------------------------
revno: 3302.8.15
revision-id: v.ladeuil+lp at free.fr-20080330202852-doh9ipbxw6zewnc7
parent: v.ladeuil+lp at free.fr-20080326214440-hvwb7zsfp827m3lq
parent: v.ladeuil+lp at free.fr-20080330202829-5ups6isujc9z5p8i
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Sun 2008-03-30 22:28:52 +0200
message:
merge bzr.dev
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
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/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/smart/repository.py repository.py-20061128022038-vr5wy5bubyb8xttk-1
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_serve.py test_serve.py-20060913064329-8t2pvmsikl4s3xhl-1
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/interversionedfile_implementations/test_join.py test_join.py-20060302012326-9b5e9b0f0a03fedc
bzrlib/tests/repository_implementations/test_reconcile.py test_reconcile.py-20060223022332-572ef70a3288e369
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_fetch.py testfetch.py-20050825090644-f73e07e7dfb1765a
bzrlib/tests/test_knit.py test_knit.py-20051212171302-95d4c00dd5f11f2b
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
bzrlib/transport/__init__.py transport.py-20050711165921-4978aa7ce1285ad5
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
doc/developers/repository.txt repository.txt-20070709152006-xkhlek456eclha4u-1
doc/en/user-guide/annotating_changes.txt annotating_changes.t-20071122141511-0knao2lklsdsvb1q-1
doc/en/user-guide/bazaar_workflows.txt bazaar_workflows.txt-20071114035000-q36a9h57ps06uvnl-1
doc/en/user-guide/installing_bazaar.txt installing_bazaar.tx-20071114035000-q36a9h57ps06uvnl-4
doc/en/user-guide/introducing_bazaar.txt introducing_bazaar.t-20071114035000-q36a9h57ps06uvnl-5
doc/en/user-guide/partner_intro.txt partner_workflow.txt-20071122141511-0knao2lklsdsvb1q-4
doc/en/user-guide/undoing_mistakes.txt undoing_mistakes.txt-20071121092300-8fyacngt1w98e5mp-1
------------------------------------------------------------
revno: 3302.8.14
revision-id: v.ladeuil+lp at free.fr-20080326214440-hvwb7zsfp827m3lq
parent: v.ladeuil+lp at free.fr-20080326213706-ekg9wg715ynpq16n
parent: v.ladeuil+lp at free.fr-20080326214357-q0b9195s9qqfc2pw
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Wed 2008-03-26 22:44:40 +0100
message:
merge bzr.dev
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/_knit_load_data_c.pyx knit_c.pyx-20070509143944-u42gy8w387a10m0j-1
bzrlib/_knit_load_data_py.py _knit_load_data_py.p-20070629000948-9a0nh4s118bi5y8n-1
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/__init__.py changeset.py-20050513021216-b02ab57fb9738913
bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
bzrlib/debug.py debug.py-20061102062349-vdhrw9qdpck8cl35-1
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/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/multiparent.py __init__.py-20070410133617-n1jdhcc1n1mibarp-1
bzrlib/reconcile.py reweave_inventory.py-20051108164726-1e5e0934febac06e
bzrlib/repofmt/knitrepo.py knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
bzrlib/repofmt/weaverepo.py presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/symbol_versioning.py symbol_versioning.py-20060105104851-9ecf8af605d15a80
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_pull.py test_pull.py-20051201144907-64959364f629947f
bzrlib/tests/interversionedfile_implementations/test_join.py test_join.py-20060302012326-9b5e9b0f0a03fedc
bzrlib/tests/repository_implementations/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
bzrlib/tests/repository_implementations/test_iter_reverse_revision_history.py test_iter_reverse_re-20070217015036-spu7j5ggch7pbpyd-1
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_bundle.py test.py-20050630184834-092aa401ab9f039c
bzrlib/tests/test_knit.py test_knit.py-20051212171302-95d4c00dd5f11f2b
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
bzrlib/tests/test_read_bundle.py test_read_bundle.py-20060615211421-ud8cwr1ulgd914zf-1
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
bzrlib/weave.py knit.py-20050627021749-759c29984154256b
------------------------------------------------------------
revno: 3302.8.13
revision-id: v.ladeuil+lp at free.fr-20080326213706-ekg9wg715ynpq16n
parent: v.ladeuil+lp at free.fr-20080326121905-8smldtdh74skxa1i
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Wed 2008-03-26 22:37:06 +0100
message:
DocTests can now be filtered at module level too.
* bzrlib/tests/__init__.py:
(MODULES_TO_DOCTEST): Moved to test_suite().
(test_suite): DocTestSuite is perfectly happy with a module name.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
------------------------------------------------------------
revno: 3302.8.12
revision-id: v.ladeuil+lp at free.fr-20080326121905-8smldtdh74skxa1i
parent: v.ladeuil+lp at free.fr-20080326112940-leugmcpkbzox54c1
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Wed 2008-03-26 13:19:05 +0100
message:
Simplify tests.test_suite.
* bzrlib/tests/__init__.py:
(test_suite): Simplified by creating a
TestFilteredByModuleTestLoader if needed, using the appropriate
loader for every category of tests and filtering once at the
end. Punt for DocTests to keep the commit short.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
------------------------------------------------------------
revno: 3302.8.11
revision-id: v.ladeuil+lp at free.fr-20080326112940-leugmcpkbzox54c1
parent: v.ladeuil+lp at free.fr-20080326090634-1yv15m2m2e08uezt
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Wed 2008-03-26 12:29:40 +0100
message:
Simplify plugin.load_tests.
* bzrlib/tests/test_plugins.py:
(TestPlugins.test_no_load_tests_gives_None_for_load_tests)
(TestPlugins.test_load_tests_gives_load_tests_result): Make the
tests a bit more real.
modified:
bzrlib/plugin.py plugin.py-20050622060424-829b654519533d69
bzrlib/tests/test_plugins.py plugins.py-20050622075746-32002b55e5e943e9
------------------------------------------------------------
revno: 3302.8.10
revision-id: v.ladeuil+lp at free.fr-20080326090634-1yv15m2m2e08uezt
parent: v.ladeuil+lp at free.fr-20080326084201-5nk05zka1xnoua90
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Wed 2008-03-26 10:06:34 +0100
message:
Prepare bzrlib.plugin to use the new test loader.
* bzrlib/tests/test_plugins.py:
(TestPlugins.test_no_load_tests_gives_None_for_load_tests): Smoke
tests for plugin.load_tests().
* bzrlib/plugin.py:
(PlugIn.load_tests): Add the ability to use load_tests() instead
of test_suite().
modified:
bzrlib/plugin.py plugin.py-20050622060424-829b654519533d69
bzrlib/tests/test_plugins.py plugins.py-20050622075746-32002b55e5e943e9
------------------------------------------------------------
revno: 3302.8.9
revision-id: v.ladeuil+lp at free.fr-20080326084201-5nk05zka1xnoua90
parent: v.ladeuil+lp at free.fr-20080326084115-uw91u4rgwg40zkri
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Wed 2008-03-26 09:42:01 +0100
message:
Fix wrong conflict resolution. loom-newbie error.
* bzrlib/tests/__init__.py:
(test_suite): Fix wrong conflict resolution.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
------------------------------------------------------------
revno: 3302.8.8
revision-id: v.ladeuil+lp at free.fr-20080326084115-uw91u4rgwg40zkri
parent: v.ladeuil+lp at free.fr-20080324220405-vov4nc8l72gez4zx
parent: v.ladeuil+lp at free.fr-20080326081001-akh733lcdhiep83b
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Wed 2008-03-26 09:41:15 +0100
message:
Fix typos
modified:
bzrlib/tests/TestUtil.py TestUtil.py-20050824080200-5f70140a2d938694
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
------------------------------------------------------------
revno: 3302.8.7
revision-id: v.ladeuil+lp at free.fr-20080324220405-vov4nc8l72gez4zx
parent: v.ladeuil+lp at free.fr-20080324191554-gkdmoqva25niz2iz
parent: v.ladeuil+lp at free.fr-20080324220159-1d3l3niap11l5bhi
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Mon 2008-03-24 23:04:05 +0100
message:
Remove cruft
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
------------------------------------------------------------
revno: 3302.8.6
revision-id: v.ladeuil+lp at free.fr-20080324191554-gkdmoqva25niz2iz
parent: v.ladeuil+lp at free.fr-20080324184517-poyn4rh728ycmf5a
parent: v.ladeuil+lp at free.fr-20080324191512-mcx6mmm1cfcz38fa
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Mon 2008-03-24 20:15:54 +0100
message:
Help identify duplicates IDs in test suite
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
------------------------------------------------------------
revno: 3302.8.5
revision-id: v.ladeuil+lp at free.fr-20080324184517-poyn4rh728ycmf5a
parent: v.ladeuil+lp at free.fr-20080324183945-ghjjej8evq317az0
parent: v.ladeuil+lp at free.fr-20080324184438-9f3qbvf83jo1pqdm
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Mon 2008-03-24 19:45:17 +0100
message:
merge down thread
modified:
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
------------------------------------------------------------
revno: 3302.8.4
revision-id: v.ladeuil+lp at free.fr-20080324183945-ghjjej8evq317az0
parent: v.ladeuil+lp at free.fr-20080324183216-65qxsdvvjud16rpc
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Mon 2008-03-24 19:39:45 +0100
message:
Cosmetic changes.
* bzrlib/tests/test_selftest.py:
(TestFilteredByModuleTestLoader._create_loader): Fix useless
broken line.
* bzrlib/tests/__init__.py:
(condition_id_in_list): Fix comment.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
------------------------------------------------------------
revno: 3302.8.3
revision-id: v.ladeuil+lp at free.fr-20080324183216-65qxsdvvjud16rpc
parent: v.ladeuil+lp at free.fr-20080324181758-pzlqy05mg3ktdivu
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Mon 2008-03-24 19:32:16 +0100
message:
Use better names for TestIdList methods.
* bzrlib/tests/test_selftest.py:
Update tests.
* bzrlib/tests/__init__.py:
(TestIdList.is_module_name_used): Renamed to refers_to.
(TestIdList.test_in): Renamed to includes.
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
------------------------------------------------------------
revno: 3302.8.2
revision-id: v.ladeuil+lp at free.fr-20080324181758-pzlqy05mg3ktdivu
parent: v.ladeuil+lp at free.fr-20080324181430-91hpx1x34cfexygw
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Mon 2008-03-24 19:17:58 +0100
message:
New test loader reducing modules imports and tests loaded.
* bzrlib/tests/test_selftest.py:
(TestFilteredByModuleTestLoader): Tests for a loader that don't
import unneeded modules.
* bzrlib/tests/TestUtil.py:
(FilteredByModuleTestLoader): Specialized loader importing and
loading tests for a reduced set of modules.
modified:
bzrlib/tests/TestUtil.py TestUtil.py-20050824080200-5f70140a2d938694
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
------------------------------------------------------------
revno: 3302.8.1
revision-id: v.ladeuil+lp at free.fr-20080324181430-91hpx1x34cfexygw
parent: v.ladeuil+lp at free.fr-20080324174247-ngn30tddzl2x3hyr
parent: v.ladeuil+lp at free.fr-20080324181042-15cfp1w770nf3pgb
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: filter-by-module-test-loader
timestamp: Mon 2008-03-24 19:14:30 +0100
message:
merge down-thread
modified:
bzrlib/tests/TestUtil.py TestUtil.py-20050824080200-5f70140a2d938694
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
-------------- next part --------------
=== modified file 'NEWS'
--- a/NEWS 2008-04-04 04:05:39 +0000
+++ b/NEWS 2008-04-04 10:44:23 +0000
@@ -148,6 +148,13 @@
failing test. Be aware that using this feature is likely to cause
spurious test failures if used with the full suite. (Andrew Bennetts)
+ * selftest --load-list now uses a new more agressive test loader that will
+ avoid loading unneeded modules and building their tests. Plugins can use
+ this new loader by defining a load_tests function instead of a test_suite
+ function. (a forthcoming patch will provide many examples on how to
+ implement this).
+ (Vincent Ladeuil)
+
* selftest --load-list now does some sanity checks regarding duplicate test
IDs and tests present in the list but not found in the actual test suite.
(Vincent Ladeuil)
=== modified file 'bzrlib/plugin.py'
--- a/bzrlib/plugin.py 2008-03-17 13:10:32 +0000
+++ b/bzrlib/plugin.py 2008-04-02 13:45:13 +0000
@@ -407,13 +407,25 @@
else:
return None
+ def load_plugin_tests(self, loader):
+ """Return the adapted plugin's test suite.
+
+ :param loader: The custom loader that should be used to load additional
+ tests.
+
+ """
+ if getattr(self.module, 'load_tests', None) is not None:
+ return loader.loadTestsFromModule(self.module)
+ else:
+ return None
+
def version_info(self):
"""Return the plugin's version_tuple or None if unknown."""
version_info = getattr(self.module, 'version_info', None)
if version_info is not None and len(version_info) == 3:
version_info = tuple(version_info) + ('final', 0)
return version_info
-
+
def _get__version__(self):
version_info = self.version_info()
if version_info is None:
=== modified file 'bzrlib/tests/TestUtil.py'
--- a/bzrlib/tests/TestUtil.py 2008-03-26 08:10:01 +0000
+++ b/bzrlib/tests/TestUtil.py 2008-03-26 08:41:15 +0000
@@ -141,6 +141,26 @@
self.test_func_names[test_case_class] = test_fn_names
return test_fn_names
+
+class FilteredByModuleTestLoader(TestLoader):
+ """A test loader that import only the needed modules."""
+
+ def __init__(self, needs_module):
+ """Constructor.
+
+ :param needs_module: a callable taking a module name as a
+ parameter returing True if the module should be loaded.
+ """
+ TestLoader.__init__(self)
+ self.needs_module = needs_module
+
+ def loadTestsFromModuleName(self, name):
+ if self.needs_module(name):
+ return TestLoader.loadTestsFromModuleName(self, name)
+ else:
+ return self.suiteClass()
+
+
def _load_module_by_name(mod_name):
parts = mod_name.split('.')
module = __import__(mod_name)
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2008-04-03 00:18:39 +0000
+++ b/bzrlib/tests/__init__.py 2008-04-04 10:44:23 +0000
@@ -109,22 +109,6 @@
default_transport = LocalURLServer
-MODULES_TO_DOCTEST = [
- bzrlib,
- bzrlib.timestamp,
- bzrlib.errors,
- bzrlib.export,
- bzrlib.inventory,
- bzrlib.iterablefile,
- bzrlib.lockdir,
- bzrlib.merge3,
- bzrlib.option,
- bzrlib.store,
- bzrlib.version_info_formats.format_custom,
- # quoted to avoid module-loading circularity
- 'bzrlib.tests',
- ]
-
def packages_to_test():
"""Return a list of packages to test.
@@ -2283,11 +2267,11 @@
def condition_id_in_list(id_list):
"""Create a condition filter which verify that test's id in a list.
- :param name: A TestIdList object.
+ :param id_list: A TestIdList object.
:return: A callable that returns True if the test's id appears in the list.
"""
def condition(test):
- return id_list.test_in(test.id())
+ return id_list.includes(test.id())
return condition
@@ -2659,11 +2643,11 @@
modules[mod_name] = True
self.modules = modules
- def is_module_name_used(self, module_name):
+ def refers_to(self, module_name):
"""Is there tests for the module or one of its sub modules."""
return self.modules.has_key(module_name)
- def test_in(self, test_id):
+ def includes(self, test_id):
return self.tests.has_key(test_id)
@@ -2810,68 +2794,68 @@
'bzrlib.tests.test_transport_implementations',
'bzrlib.tests.test_read_bundle',
]
- suite = TestUtil.TestSuite()
loader = TestUtil.TestLoader()
- if keep_only is not None:
+ if keep_only is None:
+ loader = TestUtil.TestLoader()
+ else:
id_filter = TestIdList(keep_only)
+ loader = TestUtil.FilteredByModuleTestLoader(id_filter.refers_to)
+ suite = loader.suiteClass()
# modules building their suite with loadTestsFromModuleNames
- if keep_only is None:
- suite.addTest(loader.loadTestsFromModuleNames(testmod_names))
- else:
- for mod in [m for m in testmod_names
- if id_filter.is_module_name_used(m)]:
- mod_suite = loader.loadTestsFromModuleNames([mod])
- mod_suite = filter_suite_by_id_list(mod_suite, id_filter)
- suite.addTest(mod_suite)
+ suite.addTest(loader.loadTestsFromModuleNames(testmod_names))
# modules adapted for transport implementations
from bzrlib.tests.test_transport_implementations import TransportTestProviderAdapter
adapter = TransportTestProviderAdapter()
- if keep_only is None:
- adapt_modules(test_transport_implementations, adapter, loader, suite)
- else:
- for mod in [m for m in test_transport_implementations
- if id_filter.is_module_name_used(m)]:
- mod_suite = TestUtil.TestSuite()
- adapt_modules([mod], adapter, loader, mod_suite)
- mod_suite = filter_suite_by_id_list(mod_suite, id_filter)
- suite.addTest(mod_suite)
+ adapt_modules(test_transport_implementations, adapter, loader, suite)
# modules defining their own test_suite()
for package in [p for p in packages_to_test()
if (keep_only is None
- or id_filter.is_module_name_used(p.__name__))]:
+ or id_filter.refers_to(p.__name__))]:
pack_suite = package.test_suite()
- if keep_only is not None:
- pack_suite = filter_suite_by_id_list(pack_suite, id_filter)
suite.addTest(pack_suite)
- for mod in MODULES_TO_DOCTEST:
+ modules_to_doctest = [
+ 'bzrlib',
+ 'bzrlib.errors',
+ 'bzrlib.export',
+ 'bzrlib.inventory',
+ 'bzrlib.iterablefile',
+ 'bzrlib.lockdir',
+ 'bzrlib.merge3',
+ 'bzrlib.option',
+ 'bzrlib.store',
+ 'bzrlib.tests',
+ 'bzrlib.timestamp',
+ 'bzrlib.version_info_formats.format_custom',
+ ]
+
+ for mod in modules_to_doctest:
+ if not (keep_only is None or id_filter.refers_to(mod)):
+ # No tests to keep here, move along
+ continue
try:
doc_suite = doctest.DocTestSuite(mod)
except ValueError, e:
print '**failed to get doctest for: %s\n%s' % (mod, e)
raise
- if keep_only is not None:
- # DocTests may use ids which doesn't contain the module name
- doc_suite = filter_suite_by_id_list(doc_suite, id_filter)
suite.addTest(doc_suite)
default_encoding = sys.getdefaultencoding()
for name, plugin in bzrlib.plugin.plugins().items():
if keep_only is not None:
- if not id_filter.is_module_name_used(plugin.module.__name__):
+ if not id_filter.refers_to(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.
# mbp 20080213 - see http://bugs.launchpad.net/bugs/189771
+ if plugin_suite is None:
+ plugin_suite = plugin.load_plugin_tests(loader)
if plugin_suite is not None:
- if keep_only is not None:
- plugin_suite = filter_suite_by_id_list(plugin_suite,
- id_filter)
suite.addTest(plugin_suite)
if default_encoding != sys.getdefaultencoding():
bzrlib.trace.warning(
@@ -2881,6 +2865,9 @@
sys.setdefaultencoding(default_encoding)
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:
=== modified file 'bzrlib/tests/test_plugins.py'
--- a/bzrlib/tests/test_plugins.py 2008-03-17 13:10:32 +0000
+++ b/bzrlib/tests/test_plugins.py 2008-04-02 13:45:13 +0000
@@ -32,7 +32,11 @@
import bzrlib.commands
import bzrlib.help
from bzrlib.symbol_versioning import one_three
-from bzrlib.tests import TestCase, TestCaseInTempDir
+from bzrlib.tests import (
+ TestCase,
+ TestCaseInTempDir,
+ TestUtil,
+ )
from bzrlib.osutils import pathjoin, abspath, normpath
@@ -282,6 +286,21 @@
plugin = bzrlib.plugin.plugins()['plugin']
self.assertEqual('foo', plugin.test_suite())
+ def test_no_load_plugin_tests_gives_None_for_load_plugin_tests(self):
+ self.setup_plugin()
+ loader = TestUtil.TestLoader()
+ plugin = bzrlib.plugin.plugins()['plugin']
+ self.assertEqual(None, plugin.load_plugin_tests(loader))
+
+ def test_load_plugin_tests_gives_load_plugin_tests_result(self):
+ source = """
+def load_tests(standard_tests, module, loader):
+ return 'foo'"""
+ self.setup_plugin(source)
+ loader = TestUtil.TestLoader()
+ plugin = bzrlib.plugin.plugins()['plugin']
+ self.assertEqual('foo', plugin.load_plugin_tests(loader))
+
def test_no_version_info(self):
self.setup_plugin()
plugin = bzrlib.plugin.plugins()['plugin']
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2008-03-26 21:43:57 +0000
+++ b/bzrlib/tests/test_selftest.py 2008-03-26 21:44:40 +0000
@@ -1964,23 +1964,23 @@
'mod1.submod1',
'mod1.submod2.cl1.meth1', 'mod1.submod2.cl2.meth2',
])
- self.assertTrue(id_list.is_module_name_used('mod1'))
- self.assertTrue(id_list.is_module_name_used('mod1.submod1'))
- self.assertTrue(id_list.is_module_name_used('mod1.submod2'))
- self.assertTrue(id_list.test_in('mod1.cl1.meth1'))
- self.assertTrue(id_list.test_in('mod1.submod1'))
- self.assertTrue(id_list.test_in('mod1.func1'))
+ self.assertTrue(id_list.refers_to('mod1'))
+ self.assertTrue(id_list.refers_to('mod1.submod1'))
+ self.assertTrue(id_list.refers_to('mod1.submod2'))
+ self.assertTrue(id_list.includes('mod1.cl1.meth1'))
+ self.assertTrue(id_list.includes('mod1.submod1'))
+ self.assertTrue(id_list.includes('mod1.func1'))
def test_bad_chars_in_params(self):
id_list = self._create_id_list(['mod1.cl1.meth1(xx.yy)'])
- self.assertTrue(id_list.is_module_name_used('mod1'))
- self.assertTrue(id_list.test_in('mod1.cl1.meth1(xx.yy)'))
+ self.assertTrue(id_list.refers_to('mod1'))
+ self.assertTrue(id_list.includes('mod1.cl1.meth1(xx.yy)'))
def test_module_used(self):
id_list = self._create_id_list(['mod.class.meth'])
- self.assertTrue(id_list.is_module_name_used('mod'))
- self.assertTrue(id_list.is_module_name_used('mod.class'))
- self.assertTrue(id_list.is_module_name_used('mod.class.meth'))
+ self.assertTrue(id_list.refers_to('mod'))
+ self.assertTrue(id_list.refers_to('mod.class'))
+ self.assertTrue(id_list.refers_to('mod.class.meth'))
def test_test_suite(self):
# This test is slow, so we do a single test with one test in each
@@ -2059,3 +2059,23 @@
self.assertEquals('bar baz', tlist[3])
+class TestFilteredByModuleTestLoader(tests.TestCase):
+
+ def _create_loader(self, test_list):
+ id_filter = tests.TestIdList(test_list)
+ loader = TestUtil.FilteredByModuleTestLoader(id_filter.refers_to)
+ return loader
+
+ def test_load_tests(self):
+ test_list = ['bzrlib.tests.test_sampler.DemoTest.test_nothing']
+ loader = self._create_loader(test_list)
+
+ 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(test_list)
+
+ suite = loader.loadTestsFromModuleName('bzrlib.tests.test_sampler')
+ self.assertEquals([], _test_ids(suite))
More information about the bazaar-commits
mailing list