~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/__init__.py

Show diffs side-by-side

added added

removed removed

Lines of Context:
799
799
    _log_file_name = None
800
800
    # record lsprof data when performing benchmark calls.
801
801
    _gather_lsprof_in_benchmarks = False
802
 
    # Mutable attributes defined in bzrlib.tests.TestCase and
803
 
    # testtools.TestCase that should not be shallow copied by clone_test.
804
 
    # This is ugly, but probably the best we can do until testtools provide a
805
 
    # nicer way to deal with this, see
806
 
    # <https://bugs.launchpad.net/testtools/+bug/637725>.
807
 
    _attrs_to_deepcopy = (
808
 
        '_cleanups', 'exception_handlers', '_unique_id_gen',
809
 
        '_traceback_id_gen', '_TestCase__details',
810
 
        '_TestCase__exception_handlers')
811
802
 
812
803
    def __init__(self, methodName='testMethod'):
813
804
        super(TestCase, self).__init__(methodName)
818
809
        self.exception_handlers.insert(0,
819
810
            (TestNotApplicable, self._do_not_applicable))
820
811
 
821
 
    def __copy__(self):
822
 
        # XXX: This method works around the lack of a way to correctly clone a
823
 
        # test with current testtools.  See
824
 
        # <https://bugs.launchpad.net/testtools/+bug/637725>.
825
 
        # The work around is to:
826
 
        #  - shallow copy self.__dict__
827
 
        #  - deep copy individual attributes in the _attrs_to_deepcopy black
828
 
        #    list.
829
 
        #  - create a new instance (skipping __init__) with the new __dict__.
830
 
        attrs = self.__dict__.copy()
831
 
        for attr_name in self._attrs_to_deepcopy:
832
 
            if attr_name in attrs:
833
 
                attrs[attr_name] = copy.deepcopy(attrs[attr_name])
834
 
        # Some Python voodoo to create an instance without invoking its
835
 
        # __init__, because we've already constructed the __dict__ to use.
836
 
        new_instance = self.__class__.__new__(self.__class__)
837
 
        new_instance.__dict__ = attrs
838
 
        return new_instance
839
 
 
840
812
    def setUp(self):
841
813
        super(TestCase, self).setUp()
842
814
        for feature in getattr(self, '_test_needs_features', []):
3841
3813
        'bzrlib.tests.test_transport_log',
3842
3814
        'bzrlib.tests.test_tree',
3843
3815
        'bzrlib.tests.test_treebuilder',
3844
 
        'bzrlib.tests.test_treeshape',
3845
3816
        'bzrlib.tests.test_tsort',
3846
3817
        'bzrlib.tests.test_tuned_gzip',
3847
3818
        'bzrlib.tests.test_ui',