Rev 3212: Use load_tests() instead of test_suite() since the former propagates the loader object. in file:///v/home/vila/src/bzr/experimental/selftest/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Thu Feb 14 15:48:43 GMT 2008
At file:///v/home/vila/src/bzr/experimental/selftest/
------------------------------------------------------------
revno: 3212
revision-id:v.ladeuil+lp at free.fr-20080214154839-4ypvfqmvlduf1vsa
parent: v.ladeuil+lp at free.fr-20080210202350-wo0x3tjdorw1og6x
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: selftest
timestamp: Thu 2008-02-14 16:48:39 +0100
message:
Use load_tests() instead of test_suite() since the former propagates the loader object.
* bzrlib/tests/__init__.py:
(test_suite): The modules above don't use test_suite() anymore.
* bzrlib/tests/blackbox/__init__.py
* bzrlib/tests/branch_implementations/__init__.py
* bzrlib/tests/bzrdir_implementations/__init__.py
* bzrlib/tests/commands/__init__.py
* bzrlib/tests/interrepository_implementations/__init__.py
* bzrlib/tests/intertree_implementations/__init__.py
* bzrlib/tests/interversionedfile_implementations/__init__.py
* bzrlib/tests/inventory_implementations/__init__.py
* bzrlib/tests/inventory_implementations/basics.py
* bzrlib/tests/per_lock/__init__.py
* bzrlib/tests/repository_implementations/__init__.py
* bzrlib/tests/revisionstore_implementations/__init__.py
* bzrlib/tests/tree_implementations/__init__.py
* bzrlib/tests/workingtree_implementations/__init__.py
* bzrlib/tests/tree_implementations/__init__.py:
(load_tests): Preferred to test_suite().
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
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/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/inventory_implementations/basics.py basics.py-20070903044446-kdjwbiu1p1zi9phs-1
bzrlib/tests/per_lock/__init__.py __init__.py-20070314201444-u92yjsqrkh2m3qcb-1
bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
bzrlib/tests/revisionstore_implementations/__init__.py __init__.py-20060303020702-976c4186a0f99edb
bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
-------------- next part --------------
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2008-02-10 20:23:50 +0000
+++ b/bzrlib/tests/__init__.py 2008-02-14 15:48:39 +0000
@@ -132,34 +132,8 @@
triggered when running selftest, not when importing the command.
"""
import bzrlib.doc
- import bzrlib.tests.blackbox
- import bzrlib.tests.branch_implementations
- import bzrlib.tests.bzrdir_implementations
- import bzrlib.tests.commands
- import bzrlib.tests.interrepository_implementations
- import bzrlib.tests.interversionedfile_implementations
- import bzrlib.tests.intertree_implementations
- import bzrlib.tests.inventory_implementations
- import bzrlib.tests.per_lock
- import bzrlib.tests.repository_implementations
- import bzrlib.tests.revisionstore_implementations
- import bzrlib.tests.tree_implementations
- import bzrlib.tests.workingtree_implementations
return [
bzrlib.doc,
- bzrlib.tests.blackbox,
- bzrlib.tests.branch_implementations,
- bzrlib.tests.bzrdir_implementations,
- bzrlib.tests.commands,
- bzrlib.tests.interrepository_implementations,
- bzrlib.tests.interversionedfile_implementations,
- bzrlib.tests.intertree_implementations,
- bzrlib.tests.inventory_implementations,
- bzrlib.tests.per_lock,
- bzrlib.tests.repository_implementations,
- bzrlib.tests.revisionstore_implementations,
- bzrlib.tests.tree_implementations,
- bzrlib.tests.workingtree_implementations,
]
@@ -2625,6 +2599,16 @@
"""
testmod_names = [
'bzrlib.util.tests.test_bencode',
+ 'bzrlib.tests.blackbox',
+ 'bzrlib.tests.branch_implementations',
+ 'bzrlib.tests.bzrdir_implementations',
+ 'bzrlib.tests.commands',
+ 'bzrlib.tests.interrepository_implementations',
+ 'bzrlib.tests.interversionedfile_implementations',
+ 'bzrlib.tests.inventory_implementations',
+ 'bzrlib.tests.per_lock',
+ 'bzrlib.tests.repository_implementations',
+ 'bzrlib.tests.revisionstore_implementations',
'bzrlib.tests.test__dirstate_helpers',
'bzrlib.tests.test_ancestry',
'bzrlib.tests.test_annotate',
@@ -2671,6 +2655,7 @@
'bzrlib.tests.test_ignores',
'bzrlib.tests.test_index',
'bzrlib.tests.test_info',
+ 'bzrlib.tests.intertree_implementations',
'bzrlib.tests.test_inv',
'bzrlib.tests.test_knit',
'bzrlib.tests.test_lazy_import',
@@ -2753,7 +2738,9 @@
'bzrlib.tests.test_workingtree_4',
'bzrlib.tests.test_wsgi',
'bzrlib.tests.test_xml',
- ]
+ 'bzrlib.tests.tree_implementations',
+ 'bzrlib.tests.workingtree_implementations',
+ ]
suite = TestUtil.TestSuite()
loader = TestUtil.TestLoader()
@@ -2812,7 +2799,7 @@
return suite
-def multiply_tests_from_modules(module_name_list, scenario_iter):
+def multiply_tests_from_modules(module_name_list, scenario_iter, loader=None):
"""Adapt all tests in some given modules to given scenarios.
This is the recommended public interface for test parameterization.
@@ -2824,6 +2811,9 @@
modules.
:param scenario_iter: Iterable of pairs of (scenario_name,
scenario_param_dict).
+ :param loader: If provided, will be used instead of a new
+ bzrlib.tests.TestLoader() instance. It will also be used to get
+ a TestSuite object.
This returns a new TestSuite containing the cross product of
all the tests in all the modules, each repeated for each scenario.
@@ -2845,8 +2835,12 @@
>>> tests[1].param
2
"""
- loader = TestLoader()
- suite = TestSuite()
+ if loader is None:
+ loader = TestLoader()
+ suite = TestSuite()
+ else:
+ suite = loader.suiteClass()
+
adapter = TestScenarioApplier()
adapter.scenarios = list(scenario_iter)
adapt_modules(module_name_list, adapter, loader, suite)
=== modified file 'bzrlib/tests/blackbox/__init__.py'
--- a/bzrlib/tests/blackbox/__init__.py 2007-11-21 15:10:44 +0000
+++ b/bzrlib/tests/blackbox/__init__.py 2008-02-14 15:48:39 +0000
@@ -27,8 +27,6 @@
from bzrlib.tests import (
adapt_modules,
TestCaseWithTransport,
- TestSuite,
- TestLoader,
iter_suite_tests,
)
from bzrlib.tests.EncodingAdapter import EncodingTestAdapter
@@ -39,7 +37,11 @@
import bzrlib.ui as ui
-def test_suite():
+def load_tests(basic_tests, module, loader):
+ suite = loader.suiteClass()
+ # add the tests for this module
+ suite.addTests(basic_tests)
+
testmod_names = [
'bzrlib.tests.blackbox.test_add',
'bzrlib.tests.blackbox.test_added',
@@ -114,13 +116,12 @@
'bzrlib.tests.blackbox.test_versioning',
'bzrlib.tests.blackbox.test_whoami',
]
+ suite.addTests(loader.loadTestsFromModuleNames(testmod_names))
+
test_encodings = [
'bzrlib.tests.blackbox.test_non_ascii',
]
- loader = TestLoader()
- suite = loader.loadTestsFromModuleNames(testmod_names)
-
adapter = EncodingTestAdapter()
adapt_modules(test_encodings, adapter, loader, suite)
=== modified file 'bzrlib/tests/branch_implementations/__init__.py'
--- a/bzrlib/tests/branch_implementations/__init__.py 2007-06-28 05:19:04 +0000
+++ b/bzrlib/tests/branch_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -135,8 +135,11 @@
return tree
-def test_suite():
- result = tests.TestSuite()
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
+ # add the tests for this module
+ result.addTests(basic_tests)
+
test_branch_implementations = [
'bzrlib.tests.branch_implementations.test_bound_sftp',
'bzrlib.tests.branch_implementations.test_branch',
@@ -170,7 +173,6 @@
# by the TestCaseWithTransport.get_readonly_transport method.
None,
combinations)
- loader = tests.TestLoader()
tests.adapt_modules(test_branch_implementations, adapter, loader, result)
adapt_to_smart_server = BranchTestProviderAdapter(
=== modified file 'bzrlib/tests/bzrdir_implementations/__init__.py'
--- a/bzrlib/tests/bzrdir_implementations/__init__.py 2007-06-28 06:01:18 +0000
+++ b/bzrlib/tests/bzrdir_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -29,9 +29,7 @@
adapt_modules,
default_transport,
TestCaseWithTransport,
- TestLoader,
TestScenarioApplier,
- TestSuite,
)
from bzrlib.transport.memory import MemoryServer
@@ -90,8 +88,11 @@
relpath, format=self.bzrdir_format)
-def test_suite():
- result = TestSuite()
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
+ # add the tests for this module
+ result.addTests(basic_tests)
+
test_bzrdir_implementations = [
'bzrlib.tests.bzrdir_implementations.test_bzrdir',
]
@@ -103,16 +104,18 @@
# by the TestCaseWithTransport.get_readonly_transport method.
None,
formats)
- loader = TestLoader()
adapt_modules(test_bzrdir_implementations, adapter, loader, result)
# This will always add the tests for smart server transport, regardless of
# the --transport option the user specified to 'bzr selftest'.
- from bzrlib.smart.server import SmartTCPServer_for_testing, ReadonlySmartTCPServer_for_testing
+ from bzrlib.smart.server import (
+ SmartTCPServer_for_testing,
+ ReadonlySmartTCPServer_for_testing,
+ )
from bzrlib.remote import RemoteBzrDirFormat
# test the remote server behaviour using a MemoryTransport
- smart_server_suite = TestSuite()
+ smart_server_suite = loader.suiteClass()
adapt_to_smart_server = BzrDirTestProviderAdapter(
MemoryServer,
SmartTCPServer_for_testing,
@@ -120,7 +123,7 @@
[(RemoteBzrDirFormat())])
adapt_modules(test_bzrdir_implementations,
adapt_to_smart_server,
- TestLoader(),
+ loader,
smart_server_suite)
result.addTests(smart_server_suite)
=== modified file 'bzrlib/tests/commands/__init__.py'
--- a/bzrlib/tests/commands/__init__.py 2007-10-04 15:45:21 +0000
+++ b/bzrlib/tests/commands/__init__.py 2008-02-14 15:48:39 +0000
@@ -24,10 +24,11 @@
# FIXME: If the separation described above from the blackbox tests is not worth
# it, all the tests defined below should be moved to blackbox instead.
-from bzrlib.tests import TestLoader
-
-
-def test_suite():
+def load_tests(basic_tests, module, loader):
+ suite = loader.suiteClass()
+ # add the tests for this module
+ suite.addTests(basic_tests)
+
testmod_names = [
'bzrlib.tests.commands.test_branch',
'bzrlib.tests.commands.test_cat',
@@ -41,7 +42,6 @@
'bzrlib.tests.commands.test_push',
'bzrlib.tests.commands.test_update',
]
- loader = TestLoader()
suite = loader.loadTestsFromModuleNames(testmod_names)
return suite
=== modified file 'bzrlib/tests/interrepository_implementations/__init__.py'
--- a/bzrlib/tests/interrepository_implementations/__init__.py 2007-11-29 22:27:29 +0000
+++ b/bzrlib/tests/interrepository_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -34,9 +34,7 @@
from bzrlib.tests import (
adapt_modules,
default_transport,
- TestLoader,
TestScenarioApplier,
- TestSuite,
)
@@ -116,8 +114,11 @@
return result
-def test_suite():
- result = TestSuite()
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
+ # add the tests for this module
+ result.addTests(basic_tests)
+
test_interrepository_implementations = [
'bzrlib.tests.interrepository_implementations.test_interrepository',
]
@@ -128,6 +129,5 @@
None,
InterRepositoryTestProviderAdapter.default_test_list()
)
- loader = TestLoader()
adapt_modules(test_interrepository_implementations, adapter, loader, result)
return result
=== modified file 'bzrlib/tests/intertree_implementations/__init__.py'
--- a/bzrlib/tests/intertree_implementations/__init__.py 2007-06-28 07:15:28 +0000
+++ b/bzrlib/tests/intertree_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -27,8 +27,6 @@
from bzrlib.tests import (
adapt_modules,
default_transport,
- TestLoader,
- TestSuite,
)
from bzrlib.tests.tree_implementations import (
return_parameter,
@@ -95,11 +93,10 @@
return result
-def test_suite():
- result = TestSuite()
- loader = TestLoader()
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
# load the tests of the infrastructure for these tests
- result.addTests(loader.loadTestsFromModuleNames(['bzrlib.tests.intertree_implementations']))
+ result.addTests(basic_tests)
default_tree_format = WorkingTreeFormat3()
test_intertree_implementations = [
=== modified file 'bzrlib/tests/interversionedfile_implementations/__init__.py'
--- a/bzrlib/tests/interversionedfile_implementations/__init__.py 2007-06-28 06:16:19 +0000
+++ b/bzrlib/tests/interversionedfile_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -27,9 +27,7 @@
from bzrlib.tests import (
adapt_modules,
default_transport,
- TestLoader,
TestScenarioApplier,
- TestSuite,
)
@@ -89,8 +87,11 @@
return result
-def test_suite():
- result = TestSuite()
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
+ # add the tests for this module
+ result.addTests(basic_tests)
+
test_interversionedfile_implementations = [
'bzrlib.tests.interversionedfile_implementations.test_join',
]
@@ -101,6 +102,6 @@
None,
InterVersionedFileTestProviderAdapter.default_test_list()
)
- loader = TestLoader()
- adapt_modules(test_interversionedfile_implementations, adapter, loader, result)
+ adapt_modules(test_interversionedfile_implementations, adapter,
+ loader, result)
return result
=== modified file 'bzrlib/tests/inventory_implementations/__init__.py'
--- a/bzrlib/tests/inventory_implementations/__init__.py 2008-01-03 01:21:46 +0000
+++ b/bzrlib/tests/inventory_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -33,10 +33,16 @@
yield ('Inventory', dict(inventory_class=Inventory))
-def test_suite():
+def load_tests(basic_tests, module, loader):
"""Generate suite containing all parameterized tests"""
+ suite = loader.suiteClass()
+ # add the tests for this module
+ suite.addTests(basic_tests)
+
modules_to_test = [
- 'bzrlib.tests.inventory_implementations.basics',
- ]
- return multiply_tests_from_modules(modules_to_test,
- _inventory_test_scenarios())
+ 'bzrlib.tests.inventory_implementations.basics',
+ ]
+ suite.addTests(multiply_tests_from_modules(modules_to_test,
+ _inventory_test_scenarios(),
+ loader))
+ return suite
=== modified file 'bzrlib/tests/inventory_implementations/basics.py'
--- a/bzrlib/tests/inventory_implementations/basics.py 2007-10-24 20:38:50 +0000
+++ b/bzrlib/tests/inventory_implementations/basics.py 2008-02-14 15:48:39 +0000
@@ -21,6 +21,7 @@
from bzrlib import (
errors,
+ tests,
)
from bzrlib.inventory import (
@@ -32,13 +33,8 @@
TreeReference,
)
-from bzrlib.tests import (
- TestCase,
- multiply_tests_from_modules,
- )
-
-
-class TestInventoryBasics(TestCase):
+
+class TestInventoryBasics(tests.TestCase):
# Most of these were moved the rather old bzrlib.tests.test_inv module
def make_inventory(self, root_id):
=== modified file 'bzrlib/tests/per_lock/__init__.py'
--- a/bzrlib/tests/per_lock/__init__.py 2007-03-14 23:40:34 +0000
+++ b/bzrlib/tests/per_lock/__init__.py 2008-02-14 15:48:39 +0000
@@ -63,13 +63,15 @@
return result
-def test_suite():
- result = tests.TestSuite()
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
+ # add the tests for this module
+ result.addTests(basic_tests)
+
test_lock_implementations = [
'bzrlib.tests.per_lock.test_lock',
'bzrlib.tests.per_lock.test_temporary_write_lock',
]
adapter = LockTestProviderAdapter(lock._lock_classes)
- loader = tests.TestLoader()
tests.adapt_modules(test_lock_implementations, adapter, loader, result)
return result
=== modified file 'bzrlib/tests/repository_implementations/__init__.py'
--- a/bzrlib/tests/repository_implementations/__init__.py 2008-01-11 03:54:51 +0000
+++ b/bzrlib/tests/repository_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -43,8 +43,6 @@
multiply_scenarios,
multiply_tests_from_modules,
TestScenarioApplier,
- TestLoader,
- TestSuite,
)
from bzrlib.tests.bzrdir_implementations.test_bzrdir import TestCaseWithBzrDir
from bzrlib.transport.memory import MemoryServer
@@ -834,7 +832,11 @@
]
-def test_suite():
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
+ # add the tests for this module
+ result.addTests(basic_tests)
+
registry = repository.format_registry
all_formats = [registry.get(k) for k in registry.keys()]
all_formats.extend(weaverepo._legacy_formats)
@@ -882,7 +884,9 @@
for module_name in test_repository_modules]
# Parameterize repository_implementations test modules by format.
- result = multiply_tests_from_modules(module_name_list, format_scenarios)
+ result.addTests(multiply_tests_from_modules(module_name_list,
+ format_scenarios,
+ loader))
# test_check_reconcile needs to be parameterized by format *and* by broken
# repository scenario.
@@ -892,7 +896,6 @@
format_scenarios, broken_scenarios)
broken_scenario_applier = TestScenarioApplier()
broken_scenario_applier.scenarios = broken_scenarios_for_all_formats
- loader = TestLoader()
adapt_modules(
[prefix + 'test_check_reconcile'],
broken_scenario_applier, loader, result)
=== modified file 'bzrlib/tests/revisionstore_implementations/__init__.py'
--- a/bzrlib/tests/revisionstore_implementations/__init__.py 2007-06-28 06:44:36 +0000
+++ b/bzrlib/tests/revisionstore_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -27,9 +27,7 @@
from bzrlib.tests import (
adapt_modules,
default_transport,
- TestLoader,
TestScenarioApplier,
- TestSuite,
)
@@ -74,8 +72,11 @@
return result
-def test_suite():
- result = TestSuite()
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
+ # add the tests for this module
+ result.addTests(basic_tests)
+
test_revisionstore_implementations = [
'bzrlib.tests.revisionstore_implementations.test_all',
]
@@ -86,6 +87,5 @@
None,
RevisionStoreTestProviderAdapter.default_test_list()
)
- loader = TestLoader()
adapt_modules(test_revisionstore_implementations, adapter, loader, result)
return result
=== modified file 'bzrlib/tests/tree_implementations/__init__.py'
--- a/bzrlib/tests/tree_implementations/__init__.py 2007-10-26 19:18:48 +0000
+++ b/bzrlib/tests/tree_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -36,9 +36,7 @@
adapt_modules,
default_transport,
TestCaseWithTransport,
- TestLoader,
TestSkipped,
- TestSuite,
)
from bzrlib.tests.bzrdir_implementations.test_bzrdir import TestCaseWithBzrDir
from bzrlib.tests.workingtree_implementations import (
@@ -319,8 +317,11 @@
self.scenarios[-1][1]["workingtree_to_test_tree"] = _dirstate_tree_from_workingtree
-def test_suite():
- result = TestSuite()
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
+ # add the tests for this module
+ result.addTests(basic_tests)
+
test_tree_implementations = [
'bzrlib.tests.tree_implementations.test_get_file_mtime',
'bzrlib.tests.tree_implementations.test_get_root_id',
@@ -333,14 +334,14 @@
'bzrlib.tests.tree_implementations.test_tree',
'bzrlib.tests.tree_implementations.test_walkdirs',
]
+
adapter = TreeTestProviderAdapter(
default_transport,
# None here will cause a readonly decorator to be created
# by the TestCaseWithTransport.get_readonly_transport method.
None,
- [(format, format._matchingbzrdir) for format in
+ [(format, format._matchingbzrdir) for format in
WorkingTreeFormat._formats.values() + _legacy_formats])
- loader = TestLoader()
+
adapt_modules(test_tree_implementations, adapter, loader, result)
- result.addTests(loader.loadTestsFromModuleNames(['bzrlib.tests.tree_implementations']))
return result
=== modified file 'bzrlib/tests/workingtree_implementations/__init__.py'
--- a/bzrlib/tests/workingtree_implementations/__init__.py 2007-07-12 07:22:52 +0000
+++ b/bzrlib/tests/workingtree_implementations/__init__.py 2008-02-14 15:48:39 +0000
@@ -27,9 +27,7 @@
from bzrlib.tests import (
adapt_modules,
default_transport,
- TestLoader,
TestScenarioApplier,
- TestSuite,
)
from bzrlib.tests.bzrdir_implementations.test_bzrdir import TestCaseWithBzrDir
from bzrlib.workingtree import (WorkingTreeFormat,
@@ -78,8 +76,11 @@
return self.workingtree_format.initialize(made_control)
-def test_suite():
- result = TestSuite()
+def load_tests(basic_tests, module, loader):
+ result = loader.suiteClass()
+ # add the tests for this module
+ result.addTests(basic_tests)
+
test_workingtree_implementations = [
'bzrlib.tests.workingtree_implementations.test_add_reference',
'bzrlib.tests.workingtree_implementations.test_add',
@@ -116,6 +117,7 @@
'bzrlib.tests.workingtree_implementations.test_walkdirs',
'bzrlib.tests.workingtree_implementations.test_workingtree',
]
+
adapter = WorkingTreeTestProviderAdapter(
default_transport,
# None here will cause a readonly decorator to be created
@@ -123,6 +125,6 @@
None,
[(format, format._matchingbzrdir) for format in
WorkingTreeFormat._formats.values() + _legacy_formats])
- loader = TestLoader()
+
adapt_modules(test_workingtree_implementations, adapter, loader, result)
return result
More information about the bazaar-commits
mailing list