/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-07-02 07:06:39 UTC
  • mfrom: (2553.2.14 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20070702070639-um9oyfoc2i6g8umv
(robertc) Reduce duplication in interface based testing by extracting a new class TestScenarioApplier.

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
lazy_import(globals(), """
45
45
from bisect import bisect_left
46
46
import collections
47
 
from copy import deepcopy
48
47
import errno
49
48
import itertools
50
49
import operator
2772
2771
# and not independently creatable, so are not registered.
2773
2772
_legacy_formats = [WorkingTreeFormat2(),
2774
2773
                   ]
2775
 
 
2776
 
 
2777
 
class WorkingTreeTestProviderAdapter(object):
2778
 
    """A tool to generate a suite testing multiple workingtree formats at once.
2779
 
 
2780
 
    This is done by copying the test once for each transport and injecting
2781
 
    the transport_server, transport_readonly_server, and workingtree_format
2782
 
    classes into each copy. Each copy is also given a new id() to make it
2783
 
    easy to identify.
2784
 
    """
2785
 
 
2786
 
    def __init__(self, transport_server, transport_readonly_server, formats):
2787
 
        self._transport_server = transport_server
2788
 
        self._transport_readonly_server = transport_readonly_server
2789
 
        self._formats = formats
2790
 
    
2791
 
    def _clone_test(self, test, bzrdir_format, workingtree_format, variation):
2792
 
        """Clone test for adaption."""
2793
 
        new_test = deepcopy(test)
2794
 
        new_test.transport_server = self._transport_server
2795
 
        new_test.transport_readonly_server = self._transport_readonly_server
2796
 
        new_test.bzrdir_format = bzrdir_format
2797
 
        new_test.workingtree_format = workingtree_format
2798
 
        def make_new_test_id():
2799
 
            new_id = "%s(%s)" % (test.id(), variation)
2800
 
            return lambda: new_id
2801
 
        new_test.id = make_new_test_id()
2802
 
        return new_test
2803
 
    
2804
 
    def adapt(self, test):
2805
 
        from bzrlib.tests import TestSuite
2806
 
        result = TestSuite()
2807
 
        for workingtree_format, bzrdir_format in self._formats:
2808
 
            new_test = self._clone_test(
2809
 
                test,
2810
 
                bzrdir_format,
2811
 
                workingtree_format, workingtree_format.__class__.__name__)
2812
 
            result.addTest(new_test)
2813
 
        return result