~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to testsweet.py

  • Committer: Martin Pool
  • Date: 2005-07-07 10:22:02 UTC
  • Revision ID: mbp@sourcefrog.net-20050707102201-2d2a13a25098b101
- rearrange and clear up merged weave

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
 
41
41
from unittest import TestResult, TestCase
42
42
 
43
 
# XXX: Don't need this anymore now we depend on python2.4
44
43
def _need_subprocess():
45
44
    sys.stderr.write("sorry, this test suite requires the subprocess module\n"
46
45
                     "this is shipped with python2.4 and available separately for 2.3\n")
170
169
 
171
170
    def log(self, msg):
172
171
        """Log a message to a progress file"""
173
 
        # XXX: The problem with this is that code that writes straight
174
 
        # to the log file won't be shown when we display the log
175
 
        # buffer; would be better to not have the in-memory buffer and
176
 
        # instead just a log file per test, which is read in and
177
 
        # displayed if the test fails.  That seems to imply one log
178
 
        # per test case, not globally.  OK?
179
172
        self._log_buf = self._log_buf + str(msg) + '\n'
180
173
        print >>self.TEST_LOG, msg
181
174
 
206
199
        self.log("check contents of file %s" % filename)
207
200
        contents = file(filename, 'r').read()
208
201
        if contents != expect:
209
 
            self.log("expected: %r" % expect)
 
202
            self.log("expected: %r" % expected)
210
203
            self.log("actually: %r" % contents)
211
204
            self.fail("contents of %s not as expected")
212
205
            
234
227
 
235
228
    No special behaviour for now.
236
229
    """
237
 
    def __init__(self, out, style):
 
230
    def __init__(self, out):
238
231
        self.out = out
239
232
        TestResult.__init__(self)
240
 
        assert style in ('none', 'progress', 'verbose')
241
 
        self.style = style
242
 
 
243
233
 
244
234
    def startTest(self, test):
245
235
        # TODO: Maybe show test.shortDescription somewhere?
248
238
        if what == 'runit':
249
239
            what = test.shortDescription()
250
240
        
251
 
        if self.style == 'verbose':
252
 
            print >>self.out, '%-60.60s' % what,
253
 
            self.out.flush()
254
 
        elif self.style == 'progress':
255
 
            self.out.write('~')
256
 
            self.out.flush()
 
241
        print >>self.out, '%-60.60s' % what,
 
242
        self.out.flush()
257
243
        TestResult.startTest(self, test)
258
244
 
259
 
 
260
245
    def stopTest(self, test):
261
246
        # print
262
247
        TestResult.stopTest(self, test)
263
248
 
264
249
 
265
250
    def addError(self, test, err):
266
 
        if self.style == 'verbose':
267
 
            print >>self.out, 'ERROR'
 
251
        print >>self.out, 'ERROR'
268
252
        TestResult.addError(self, test, err)
269
253
        _show_test_failure('error', test, err, self.out)
270
254
 
271
255
    def addFailure(self, test, err):
272
 
        if self.style == 'verbose':
273
 
            print >>self.out, 'FAILURE'
 
256
        print >>self.out, 'FAILURE'
274
257
        TestResult.addFailure(self, test, err)
275
258
        _show_test_failure('failure', test, err, self.out)
276
259
 
277
260
    def addSuccess(self, test):
278
 
        if self.style == 'verbose':
279
 
            print >>self.out, 'OK'
 
261
        print >>self.out, 'OK'
280
262
        TestResult.addSuccess(self, test)
281
263
 
282
264
 
283
265
 
284
 
def run_suite(suite, name='test', verbose=False):
 
266
def run_suite(suite, name="test"):
285
267
    import os
286
268
    import shutil
287
269
    import time
296
278
    real_stderr = sys.stderr
297
279
    sys.stdout = sys.stderr = TestBase.TEST_LOG
298
280
    try:
299
 
        if verbose:
300
 
            style = 'verbose'
301
 
        else:
302
 
            style = 'progress'
303
 
        result = _MyResult(real_stdout, style)
 
281
        result = _MyResult(real_stdout)
304
282
        suite.run(result)
305
283
    finally:
306
284
        sys.stdout = real_stdout
353
331
 
354
332
def _show_test_failure(kind, case, exc_info, out):
355
333
    from traceback import print_exception
356
 
 
357
 
    print >>out
 
334
    
358
335
    print >>out, '-' * 60
359
336
    print >>out, case
360
337