~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/__init__.py

Merge from integration

Show diffs side-by-side

added added

removed removed

Lines of Context:
93
93
            ]
94
94
 
95
95
 
96
 
class EarlyStoppingTestResultAdapter(object):
97
 
    """An adapter for TestResult to stop at the first first failure or error"""
98
 
 
99
 
    def __init__(self, result):
100
 
        self._result = result
101
 
 
102
 
    def addError(self, test, err):
103
 
        if (isinstance(err[1], TestSkipped) and 
104
 
            getattr(self, "addSkipped", None) is not None):
105
 
            return self.addSkipped(test, err)    
106
 
        self._result.addError(test, err)
107
 
        self._result.stop()
108
 
 
109
 
    def addFailure(self, test, err):
110
 
        self._result.addFailure(test, err)
111
 
        self._result.stop()
112
 
 
113
 
    def __getattr__(self, name):
114
 
        return getattr(self._result, name)
115
 
 
116
 
    def __setattr__(self, name, value):
117
 
        if name == '_result':
118
 
            object.__setattr__(self, name, value)
119
 
        return setattr(self._result, name, value)
120
 
 
121
 
 
122
96
class _MyResult(unittest._TextTestResult):
123
97
    """Custom TestResult.
124
98
 
125
99
    Shows output in a different format, including displaying runtime for tests.
126
100
    """
 
101
    stop_early = False
127
102
 
128
103
    def _elapsedTime(self):
129
104
        return "%5dms" % (1000 * (time.time() - self._start_time))
163
138
        elif self.dots:
164
139
            self.stream.write('E')
165
140
        self.stream.flush()
 
141
        if self.stop_early:
 
142
            self.stop()
166
143
 
167
144
    def addFailure(self, test, err):
168
145
        unittest.TestResult.addFailure(self, test, err)
171
148
        elif self.dots:
172
149
            self.stream.write('F')
173
150
        self.stream.flush()
 
151
        if self.stop_early:
 
152
            self.stop()
174
153
 
175
154
    def addSuccess(self, test):
176
155
        if self.showAll:
211
190
 
212
191
    def _makeResult(self):
213
192
        result = _MyResult(self.stream, self.descriptions, self.verbosity)
214
 
        if self.stop_on_failure:
215
 
            result = EarlyStoppingTestResultAdapter(result)
 
193
        result.stop_early = self.stop_on_failure
216
194
        return result
217
195
 
218
196
 
849
827
                   'bzrlib.tests.test_commit_merge',
850
828
                   'bzrlib.tests.test_config',
851
829
                   'bzrlib.tests.test_conflicts',
 
830
                   'bzrlib.tests.test_decorators',
852
831
                   'bzrlib.tests.test_diff',
853
 
                   'bzrlib.tests.test_decorators',
 
832
                   'bzrlib.tests.test_doc_generate',
854
833
                   'bzrlib.tests.test_fetch',
855
834
                   'bzrlib.tests.test_gpg',
856
835
                   'bzrlib.tests.test_graph',