Rev 2951: Switch test_check_reconcile.py into its own subdir, which in http://bzr.arbash-meinel.com/branches/bzr/0.93-dev/test_autoloader
John Arbash Meinel
john at arbash-meinel.com
Tue Nov 6 18:23:01 GMT 2007
At http://bzr.arbash-meinel.com/branches/bzr/0.93-dev/test_autoloader
------------------------------------------------------------
revno: 2951
revision-id:john at arbash-meinel.com-20071106182250-wo1r53cm684pxezy
parent: john at arbash-meinel.com-20071104200653-g0yhddwczxj1nmmf
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: test_autoloader
timestamp: Tue 2007-11-06 12:22:50 -0600
message:
Switch test_check_reconcile.py into its own subdir, which
has a repo_implementations times broken_scenarios set of scenarios.
All test are still being loaded.
added:
bzrlib/tests/repository_implementations/__init__.py __init__.py-20071106181807-kpo66u524sewupho-1
bzrlib/tests/repository_implementations/broken_scenarios/ bzrlibtestsrepositor-20071106181024-vkv9m7xzrpe8pujf-1
renamed:
bzrlib/tests/repository_implementations/__init__.py => bzrlib/tests/repository_implementations/broken_scenarios/__init__.py __init__.py-20060131092037-9564957a7d4a841b
bzrlib/tests/repository_implementations/test_check_reconcile.py => bzrlib/tests/repository_implementations/broken_scenarios/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
modified:
bzrlib/tests/repository_implementations/broken_scenarios/__init__.py __init__.py-20060131092037-9564957a7d4a841b
-------------- next part --------------
=== added file 'bzrlib/tests/repository_implementations/__init__.py'
--- a/bzrlib/tests/repository_implementations/__init__.py 1970-01-01 00:00:00 +0000
+++ b/bzrlib/tests/repository_implementations/__init__.py 2007-11-06 18:22:50 +0000
@@ -0,0 +1,126 @@
+# Copyright (C) 2006, 2007 Canonical Ltd
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+"""Repository implementation tests for bzr.
+
+These test the conformance of all the repository variations to the expected API.
+Specific tests for individual formats are in the tests/test_repository.py file
+rather than in tests/branch_implementations/*.py.
+"""
+
+from bzrlib import (
+ repository,
+ )
+from bzrlib.repofmt import (
+ weaverepo,
+ )
+from bzrlib.remote import RemoteBzrDirFormat, RemoteRepositoryFormat
+from bzrlib.smart.server import (
+ SmartTCPServer_for_testing,
+ ReadonlySmartTCPServer_for_testing,
+ )
+from bzrlib.tests import (
+ default_transport,
+ load_tests_with_scenarios,
+ TestScenarioApplier,
+ )
+from bzrlib.tests.bzrdir_implementations.test_bzrdir import TestCaseWithBzrDir
+from bzrlib.transport.memory import MemoryServer
+
+
+class RepositoryTestProviderAdapter(TestScenarioApplier):
+ """A tool to generate a suite testing multiple repository formats at once.
+
+ This is done by copying the test once for each transport and injecting
+ the transport_server, transport_readonly_server, and bzrdir_format and
+ repository_format classes into each copy. Each copy is also given a new id()
+ to make it easy to identify.
+ """
+
+ def __init__(self, transport_server, transport_readonly_server, formats,
+ vfs_transport_factory=None):
+ TestScenarioApplier.__init__(self)
+ self._transport_server = transport_server
+ self._transport_readonly_server = transport_readonly_server
+ self._vfs_transport_factory = vfs_transport_factory
+ self.scenarios = self.formats_to_scenarios(formats)
+
+ def formats_to_scenarios(self, formats):
+ """Transform the input formats to a list of scenarios.
+
+ :param formats: A list of (repository_format, bzrdir_format).
+ """
+ result = []
+ for repository_format, bzrdir_format in formats:
+ scenario = (repository_format.__class__.__name__,
+ {"transport_server":self._transport_server,
+ "transport_readonly_server":self._transport_readonly_server,
+ "bzrdir_format":bzrdir_format,
+ "repository_format":repository_format,
+ })
+ # Only override the test's vfs_transport_factory if one was
+ # specified, otherwise just leave the default in place.
+ if self._vfs_transport_factory:
+ scenario[1]['vfs_transport_factory'] = self._vfs_transport_factory
+ result.append(scenario)
+ return result
+
+
+class TestCaseWithRepository(TestCaseWithBzrDir):
+
+ def make_repository(self, relpath, format=None):
+ if format is None:
+ # Create a repository of the type we are trying to test.
+ made_control = self.make_bzrdir(relpath)
+ repo = self.repository_format.initialize(made_control)
+ if getattr(self, "repository_to_test_repository", None):
+ repo = self.repository_to_test_repository(repo)
+ return repo
+ else:
+ return super(TestCaseWithRepository, self).make_repository(
+ relpath, format=format)
+
+
+def get_repository_format_scenarios():
+ registry = repository.format_registry
+ all_formats = [registry.get(k) for k in registry.keys()]
+ all_formats.extend(weaverepo._legacy_formats)
+ disk_format_adapter = RepositoryTestProviderAdapter(
+ 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 all_formats])
+
+ remote_repo_adapter = RepositoryTestProviderAdapter(
+ SmartTCPServer_for_testing,
+ ReadonlySmartTCPServer_for_testing,
+ [(RemoteRepositoryFormat(), RemoteBzrDirFormat())],
+ MemoryServer
+ )
+
+ # format_scenarios is all the implementations of Repository; i.e. all disk
+ # formats plus RemoteRepository.
+ format_scenarios = (disk_format_adapter.scenarios +
+ remote_repo_adapter.scenarios)
+ return format_scenarios
+
+
+def test_suite():
+ format_scenarios = get_repository_format_scenarios()
+
+ return load_tests_with_scenarios(__file__, __name__, format_scenarios)
=== added directory 'bzrlib/tests/repository_implementations/broken_scenarios'
=== renamed file 'bzrlib/tests/repository_implementations/__init__.py' => 'bzrlib/tests/repository_implementations/broken_scenarios/__init__.py'
--- a/bzrlib/tests/repository_implementations/__init__.py 2007-11-04 19:35:25 +0000
+++ b/bzrlib/tests/repository_implementations/broken_scenarios/__init__.py 2007-11-06 18:22:50 +0000
@@ -24,81 +24,13 @@
rather than in tests/branch_implementations/*.py.
"""
-from bzrlib import (
- repository,
- )
-from bzrlib.repofmt import (
- weaverepo,
- )
-from bzrlib.remote import RemoteBzrDirFormat, RemoteRepositoryFormat
-from bzrlib.smart.server import (
- SmartTCPServer_for_testing,
- ReadonlySmartTCPServer_for_testing,
- )
from bzrlib.tests import (
- adapt_modules,
- default_transport,
- load_and_adapt_modules,
+ load_tests_with_scenarios,
multiply_scenarios,
- multiply_tests_from_modules,
- TestScenarioApplier,
- TestLoader,
)
-from bzrlib.tests.bzrdir_implementations.test_bzrdir import TestCaseWithBzrDir
-from bzrlib.transport.memory import MemoryServer
-
-
-class RepositoryTestProviderAdapter(TestScenarioApplier):
- """A tool to generate a suite testing multiple repository formats at once.
-
- This is done by copying the test once for each transport and injecting
- the transport_server, transport_readonly_server, and bzrdir_format and
- repository_format classes into each copy. Each copy is also given a new id()
- to make it easy to identify.
- """
-
- def __init__(self, transport_server, transport_readonly_server, formats,
- vfs_transport_factory=None):
- TestScenarioApplier.__init__(self)
- self._transport_server = transport_server
- self._transport_readonly_server = transport_readonly_server
- self._vfs_transport_factory = vfs_transport_factory
- self.scenarios = self.formats_to_scenarios(formats)
-
- def formats_to_scenarios(self, formats):
- """Transform the input formats to a list of scenarios.
-
- :param formats: A list of (repository_format, bzrdir_format).
- """
- result = []
- for repository_format, bzrdir_format in formats:
- scenario = (repository_format.__class__.__name__,
- {"transport_server":self._transport_server,
- "transport_readonly_server":self._transport_readonly_server,
- "bzrdir_format":bzrdir_format,
- "repository_format":repository_format,
- })
- # Only override the test's vfs_transport_factory if one was
- # specified, otherwise just leave the default in place.
- if self._vfs_transport_factory:
- scenario[1]['vfs_transport_factory'] = self._vfs_transport_factory
- result.append(scenario)
- return result
-
-
-class TestCaseWithRepository(TestCaseWithBzrDir):
-
- def make_repository(self, relpath, format=None):
- if format is None:
- # Create a repository of the type we are trying to test.
- made_control = self.make_bzrdir(relpath)
- repo = self.repository_format.initialize(made_control)
- if getattr(self, "repository_to_test_repository", None):
- repo = self.repository_to_test_repository(repo)
- return repo
- else:
- return super(TestCaseWithRepository, self).make_repository(
- relpath, format=format)
+from bzrlib.tests.repository_implementations import (
+ get_repository_format_scenarios,
+ )
class BrokenRepoScenario(object):
@@ -613,131 +545,16 @@
IncorrectlyOrderedParentsScenario,
UnreferencedFileParentsFromNoOpMergeScenario,
]
-
+
def test_suite():
- registry = repository.format_registry
- all_formats = [registry.get(k) for k in registry.keys()]
- all_formats.extend(weaverepo._legacy_formats)
- disk_format_adapter = RepositoryTestProviderAdapter(
- 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 all_formats])
-
- remote_repo_adapter = RepositoryTestProviderAdapter(
- SmartTCPServer_for_testing,
- ReadonlySmartTCPServer_for_testing,
- [(RemoteRepositoryFormat(), RemoteBzrDirFormat())],
- MemoryServer
- )
-
# format_scenarios is all the implementations of Repository; i.e. all disk
# formats plus RemoteRepository.
- format_scenarios = (disk_format_adapter.scenarios +
- remote_repo_adapter.scenarios)
-
- prefix = 'bzrlib.tests.repository_implementations.'
- test_repository_modules = [
- 'test_break_lock',
- 'test_check',
- # test_check_reconcile is intentionally omitted, see below.
- 'test_commit_builder',
- 'test_fetch',
- 'test_fileid_involved',
- 'test_has_same_location',
- 'test_is_write_locked',
- 'test_iter_reverse_revision_history',
- 'test_pack',
- 'test_reconcile',
- 'test_repository',
- 'test_revision',
- 'test_statistics',
- 'test_write_group',
- ]
- module_name_list = [prefix + module_name
- for module_name in test_repository_modules]
-
- # Parameterise repository_implementations test modules by format.
- result = multiply_tests_from_modules(module_name_list, format_scenarios)
-
- # test_check_reconcile needs to be parameterised by format *and* by broken
- # repository scenario.
+ format_scenarios = get_repository_format_scenarios()
+
broken_scenarios = [(s.__name__, {'scenario_class': s})
for s in all_broken_scenario_classes]
broken_scenarios_for_all_formats = multiply_scenarios(
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)
-
- return result
-#def test_suite():
-# registry = repository.format_registry
-# all_formats = [registry.get(k) for k in registry.keys()]
-# all_formats.extend(weaverepo._legacy_formats)
-# disk_format_adapter = RepositoryTestProviderAdapter(
-# 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 all_formats])
-# result = load_and_adapt_modules(adapter, __file__, __name__)
-#
-# remote_repo_adapter = RepositoryTestProviderAdapter(
-# SmartTCPServer_for_testing,
-# ReadonlySmartTCPServer_for_testing,
-# [(RemoteRepositoryFormat(), RemoteBzrDirFormat())],
-# MemoryServer
-# )
-#<<<<<<< TREE
-#
-# # format_scenarios is all the implementations of Repository; i.e. all disk
-# # formats plus RemoteRepository.
-# format_scenarios = (disk_format_adapter.scenarios +
-# remote_repo_adapter.scenarios)
-#
-# prefix = 'bzrlib.tests.repository_implementations.'
-# test_repository_modules = [
-# 'test_break_lock',
-# 'test_check',
-# # test_check_reconcile is intentionally omitted, see below.
-# 'test_commit_builder',
-# 'test_fetch',
-# 'test_fileid_involved',
-# 'test_has_same_location',
-# 'test_is_write_locked',
-# 'test_iter_reverse_revision_history',
-# 'test_pack',
-# 'test_reconcile',
-# 'test_repository',
-# 'test_revision',
-# 'test_statistics',
-# 'test_write_group',
-# ]
-# # module_name_list = [prefix + module_name
-# # for module_name in test_repository_modules]
-#
-# # # Parameterise repository_implementations test modules by format.
-# # result = multiply_tests_from_modules(module_name_list, format_scenarios)
-#
-# # # test_check_reconcile needs to be parameterised by format *and* by broken
-# # # repository scenario.
-# # broken_scenarios = [(s.__name__, {'scenario_class': s})
-# # for s in all_broken_scenario_classes]
-# # broken_scenarios_for_all_formats = multiply_scenarios(
-# # 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)
-#
-# # result.addTests(load_and_adapt_modules(adapt_to_smart_server,
-# # __file__, __name__))
-# return result
+ return load_tests_with_scenarios(__file__, __name__,
+ broken_scenarios_for_all_formats)
=== renamed file 'bzrlib/tests/repository_implementations/test_check_reconcile.py' => 'bzrlib/tests/repository_implementations/broken_scenarios/test_check_reconcile.py'
More information about the bazaar-commits
mailing list