Changeset 122645 in webkit


Ignore:
Timestamp:
Jul 13, 2012 4:39:13 PM (12 years ago)
Author:
dpranke@chromium.org
Message:

test-webkitpy: move printing-related code out of the runner
https://bugs.webkit.org/show_bug.cgi?id=91289

Reviewed by Ryosuke Niwa.

More refactoring ... this moves all printing-related stuff out
of runner.py and into printer.py.

No functional changes; covered by existing tests.

  • Scripts/webkitpy/test/main.py:

(Tester._run_tests):

  • Scripts/webkitpy/test/printer.py:

(Printer.init):
(Printer):
(Printer.test_name):
(Printer.print_started_test):
(Printer.print_finished_test):
(Printer.print_result):

  • Scripts/webkitpy/test/runner.py:

(Runner.init):
(Runner.all_test_names):
(Runner.run):

  • Scripts/webkitpy/test/runner_unittest.py:

(RunnerTest.test_regular):
(RunnerTest.test_verbose):
(RunnerTest.test_timing):

Location:
trunk/Tools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r122643 r122645  
     12012-07-13  Dirk Pranke  <dpranke@chromium.org>
     2
     3        test-webkitpy: move printing-related code out of the runner
     4        https://bugs.webkit.org/show_bug.cgi?id=91289
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        More refactoring ... this moves all printing-related stuff out
     9        of runner.py and into printer.py.
     10
     11        No functional changes; covered by existing tests.
     12
     13        * Scripts/webkitpy/test/main.py:
     14        (Tester._run_tests):
     15        * Scripts/webkitpy/test/printer.py:
     16        (Printer.__init__):
     17        (Printer):
     18        (Printer.test_name):
     19        (Printer.print_started_test):
     20        (Printer.print_finished_test):
     21        (Printer.print_result):
     22        * Scripts/webkitpy/test/runner.py:
     23        (Runner.__init__):
     24        (Runner.all_test_names):
     25        (Runner.run):
     26        * Scripts/webkitpy/test/runner_unittest.py:
     27        (RunnerTest.test_regular):
     28        (RunnerTest.test_verbose):
     29        (RunnerTest.test_timing):
     30
    1312012-07-13  Dirk Pranke  <dpranke@chromium.org>
    232
  • trunk/Tools/Scripts/webkitpy/test/main.py

    r122643 r122645  
    115115
    116116        test_suite = unittest.TestSuite(suites)
    117         test_runner = Runner(self.printer.stream, self._options, loader)
     117        test_runner = Runner(self.printer, self._options, loader)
    118118
    119119        _log.debug("Running the tests.")
  • trunk/Tools/Scripts/webkitpy/test/printer.py

    r122643 r122645  
    2323
    2424import logging
     25import re
    2526import StringIO
    2627
     
    3435        self.stream = stream
    3536        self.options = options
     37        self.test_description = re.compile("(\w+) \(([\w.]+)\)")
     38
     39    def test_name(self, test):
     40        m = self.test_description.match(str(test))
     41        return "%s.%s" % (m.group(2), m.group(1))
    3642
    3743    def configure(self, options):
     
    9399            outputcapture.OutputCapture.stream_wrapper = _CaptureAndPassThroughStream
    94100
     101    def print_started_test(self, test_name):
     102        if self.options.verbose:
     103            self.stream.write(test_name)
     104
     105    def print_finished_test(self, result, test_name, test_time, failure, err):
     106        timing = ''
     107        if self.options.timing:
     108            timing = ' %.4fs' % test_time
     109        if self.options.verbose:
     110            if failure:
     111                msg = ' failed'
     112            elif err:
     113                msg = ' erred'
     114            else:
     115                msg = ' passed'
     116            self.stream.write(msg + timing + '\n')
     117        else:
     118            if failure:
     119                msg = 'F'
     120            elif err:
     121                msg = 'E'
     122            else:
     123                msg = '.'
     124            self.stream.write(msg)
     125
     126    def print_result(self, result, run_time):
     127        self.stream.write('\n')
     128
     129        for (test, err) in result.errors:
     130            self.stream.write("=" * 80 + '\n')
     131            self.stream.write("ERROR: " + self.test_name(test) + '\n')
     132            self.stream.write("-" * 80 + '\n')
     133            for line in err.splitlines():
     134                self.stream.write(line + '\n')
     135            self.stream.write('\n')
     136
     137        for (test, failure) in result.failures:
     138            self.stream.write("=" * 80 + '\n')
     139            self.stream.write("FAILURE: " + self.test_name(test) + '\n')
     140            self.stream.write("-" * 80 + '\n')
     141            for line in failure.splitlines():
     142                self.stream.write(line + '\n')
     143            self.stream.write('\n')
     144
     145        self.stream.write('-' * 80 + '\n')
     146        self.stream.write('Ran %d test%s in %.3fs\n' %
     147            (result.testsRun, result.testsRun != 1 and "s" or "", run_time))
     148
     149        if result.wasSuccessful():
     150            self.stream.write('\nOK\n')
     151        else:
     152            self.stream.write('FAILED (failures=%d, errors=%d)\n' %
     153                (len(result.failures), len(result.errors)))
     154
    95155
    96156class _CaptureAndPassThroughStream(object):
  • trunk/Tools/Scripts/webkitpy/test/runner.py

    r122548 r122645  
    2424
    2525import logging
    26 import re
    2726import time
    2827import unittest
     
    3332
    3433class Runner(object):
    35     def __init__(self, stream, options, loader):
     34    def __init__(self, printer, options, loader):
    3635        self.options = options
    37         self.stream = stream
     36        self.printer = printer
    3837        self.loader = loader
    39         self.test_description = re.compile("(\w+) \(([\w.]+)\)")
    40 
    41     def test_name(self, test):
    42         m = self.test_description.match(str(test))
    43         return "%s.%s" % (m.group(2), m.group(1))
    4438
    4539    def all_test_names(self, suite):
     
    4943                names.extend(self.all_test_names(t))
    5044        else:
    51             names.append(self.test_name(suite))
     45            names.append(self.printer.test_name(suite))
    5246        return names
    5347
     
    5852        stop = run_start_time
    5953        for test_name in all_test_names:
    60             if self.options.verbose:
    61                 self.stream.write(test_name)
     54            self.printer.print_started_test(test_name)
    6255            num_failures = len(result.failures)
    6356            num_errors = len(result.errors)
     
    7669            elif len(result.errors) > num_errors:
    7770                err = result.errors[num_errors][1]
    78             self.write_result(result, test_name, stop - start, failure, err)
     71            self.printer.print_finished_test(result, test_name, stop - start, failure, err)
    7972
    80         self.write_summary(result, stop - run_start_time)
     73        self.printer.print_result(result, stop - run_start_time)
    8174
    8275        return result
    83 
    84     def write_result(self, result, test_name, test_time, failure=None, err=None):
    85         timing = ''
    86         if self.options.timing:
    87             timing = ' %.4fs' % test_time
    88         if self.options.verbose:
    89             if failure:
    90                 msg = ' failed'
    91             elif err:
    92                 msg = ' erred'
    93             else:
    94                 msg = ' passed'
    95             self.stream.write(msg + timing + '\n')
    96         else:
    97             if failure:
    98                 msg = 'F'
    99             elif err:
    100                 msg = 'E'
    101             else:
    102                 msg = '.'
    103             self.stream.write(msg)
    104 
    105     def write_summary(self, result, run_time):
    106         self.stream.write('\n')
    107 
    108         for (test, err) in result.errors:
    109             self.stream.write("=" * 80 + '\n')
    110             self.stream.write("ERROR: " + self.test_name(test) + '\n')
    111             self.stream.write("-" * 80 + '\n')
    112             for line in err.splitlines():
    113                 self.stream.write(line + '\n')
    114             self.stream.write('\n')
    115 
    116         for (test, failure) in result.failures:
    117             self.stream.write("=" * 80 + '\n')
    118             self.stream.write("FAILURE: " + self.test_name(test) + '\n')
    119             self.stream.write("-" * 80 + '\n')
    120             for line in failure.splitlines():
    121                 self.stream.write(line + '\n')
    122             self.stream.write('\n')
    123 
    124         self.stream.write('-' * 80 + '\n')
    125         self.stream.write('Ran %d test%s in %.3fs\n' %
    126             (result.testsRun, result.testsRun != 1 and "s" or "", run_time))
    127 
    128         if result.wasSuccessful():
    129             self.stream.write('\nOK\n')
    130         else:
    131             self.stream.write('FAILED (failures=%d, errors=%d)\n' %
    132                 (len(result.failures), len(result.errors)))
  • trunk/Tools/Scripts/webkitpy/test/runner_unittest.py

    r122548 r122645  
    2626
    2727from webkitpy.tool.mocktool import MockOptions
     28from webkitpy.test.printer import Printer
    2829from webkitpy.test.runner import Runner
    2930
     
    7576                            ('test2 (Foo)', 'F', 'test2\nfailed'),
    7677                            ('test3 (Foo)', 'E', 'test3\nerred'))
    77         result = Runner(stream, options, loader).run(loader.top_suite())
     78        result = Runner(Printer(stream, options), options, loader).run(loader.top_suite())
    7879        self.assertFalse(result.wasSuccessful())
    7980        self.assertEquals(result.testsRun, 3)
     
    8889                            ('test2 (Foo)', 'F', 'test2\nfailed'),
    8990                            ('test3 (Foo)', 'E', 'test3\nerred'))
    90         result = Runner(stream, options, loader).run(loader.top_suite())
     91        result = Runner(Printer(stream, options), options, loader).run(loader.top_suite())
    9192        self.assertFalse(result.wasSuccessful())
    9293        self.assertEquals(result.testsRun, 3)
     
    101102                            ('test2 (Foo)', 'F', 'test2\nfailed'),
    102103                            ('test3 (Foo)', 'E', 'test3\nerred'))
    103         result = Runner(stream, options, loader).run(loader.top_suite())
     104        result = Runner(Printer(stream, options), options, loader).run(loader.top_suite())
    104105        self.assertFalse(result.wasSuccessful())
    105106        self.assertEquals(result.testsRun, 3)
Note: See TracChangeset for help on using the changeset viewer.