Changeset 92493 in webkit


Ignore:
Timestamp:
Aug 5, 2011 11:50:37 AM (13 years ago)
Author:
abarth@webkit.org
Message:

Rebuild rebaseline-chromium-webkit-tests on top of modern infrastructure
https://bugs.webkit.org/show_bug.cgi?id=65759

Reviewed by Dimitri Glazkov.

rebaseline-chromium-webkit-tests doesn't really fit into webkitpy's
architecture, is poorly tested, and has a bunch of quirks. This patch
rebuilds the core functionality of rebaseline-chromium-webkit-tests on
top of more modern infrastructure. In the process, we get more code
re-use and better testing.

Once we're satisfied with this new implementation, we can delete the
old implementation.

  • Scripts/webkitpy/common/checkout/baselineoptimizer.py:
  • Scripts/webkitpy/common/net/web.py:
  • Scripts/webkitpy/layout_tests/models/test_expectations.py:
  • Scripts/webkitpy/layout_tests/port/builders.py:
  • Scripts/webkitpy/layout_tests/port/chromium.py:
  • Scripts/webkitpy/layout_tests/port/factory.py:
  • Scripts/webkitpy/layout_tests/port/webkit.py:
  • Scripts/webkitpy/tool/commands/rebaseline.py:
  • Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
Location:
trunk/Tools
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r92492 r92493  
     12011-08-05  Adam Barth  <abarth@webkit.org>
     2
     3        Rebuild rebaseline-chromium-webkit-tests on top of modern infrastructure
     4        https://bugs.webkit.org/show_bug.cgi?id=65759
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        rebaseline-chromium-webkit-tests doesn't really fit into webkitpy's
     9        architecture, is poorly tested, and has a bunch of quirks.  This patch
     10        rebuilds the core functionality of rebaseline-chromium-webkit-tests on
     11        top of more modern infrastructure.  In the process, we get more code
     12        re-use and better testing.
     13
     14        Once we're satisfied with this new implementation, we can delete the
     15        old implementation.
     16
     17        * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
     18        * Scripts/webkitpy/common/net/web.py:
     19        * Scripts/webkitpy/layout_tests/models/test_expectations.py:
     20        * Scripts/webkitpy/layout_tests/port/builders.py:
     21        * Scripts/webkitpy/layout_tests/port/chromium.py:
     22        * Scripts/webkitpy/layout_tests/port/factory.py:
     23        * Scripts/webkitpy/layout_tests/port/webkit.py:
     24        * Scripts/webkitpy/tool/commands/rebaseline.py:
     25        * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
     26
    1272011-08-05  Anders Carlsson  <andersca@apple.com>
    228
  • trunk/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py

    r92153 r92493  
    146146                file_name = self._filesystem.join(self._scm.checkout_root, directory, baseline_name)
    147147                self._scm.delete(file_name)
     148                # FIXME: Check for empty directories and remove them as well.
    148149
    149150    def optimize(self, baseline_name):
  • trunk/Tools/Scripts/webkitpy/common/net/web.py

    r90770 r92493  
    3333
    3434class Web(object):
    35     def get_binary(self, url):
    36         return NetworkTransaction().run(lambda: urllib2.urlopen(url).read())
     35    def get_binary(self, url, convert_404_to_None=False):
     36        return NetworkTransaction(convert_404_to_None=convert_404_to_None).run(lambda: urllib2.urlopen(url).read())
  • trunk/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py

    r92317 r92493  
    777777
    778778    def __init__(self, port, tests, expectations,
    779                  test_config, is_lint_mode, overrides=None):
     779                 test_config, is_lint_mode=False, overrides=None):
    780780        """Loads and parses the test expectations given in the string.
    781781        Args:
  • trunk/Tools/Scripts/webkitpy/layout_tests/port/builders.py

    r90770 r92493  
    3030import re
    3131
     32from webkitpy.common.memoized import memoized
     33
     34
     35_exact_matches = {
     36    # These builders are on build.chromium.org.
     37    "Webkit Win": "chromium-win-xp",
     38    "Webkit Vista": "chromium-win-vista",
     39    "Webkit Win7": "chromium-win-win7",
     40    "Webkit Win (dbg)(1)": "chromium-win-xp",
     41    "Webkit Win (dbg)(2)": "chromium-win-xp",
     42    "Webkit Linux": "chromium-linux-x86_64",
     43    "Webkit Linux 32": "chromium-linux-x86",
     44    "Webkit Linux (dbg)(1)": "chromium-linux-x86_64",
     45    "Webkit Linux (dbg)(2)": "chromium-linux-x86_64",
     46    "Webkit Mac10.5": "chromium-mac-leopard",
     47    "Webkit Mac10.5 (dbg)(1)": "chromium-mac-leopard",
     48    "Webkit Mac10.5 (dbg)(2)": "chromium-mac-leopard",
     49    "Webkit Mac10.6": "chromium-mac-snowleopard",
     50    "Webkit Mac10.6 (dbg)": "chromium-mac-snowleopard",
     51    "Webkit Mac10.6 - GPU": "chromium-gpu-mac-snowleopard",
     52    "Webkit Win - GPU": "chromium-gpu-win-xp",
     53    "Webkit Win7 - GPU": "chromium-gpu-win-win7",
     54    # FIXME: For some reason, these port names don't work correctly.
     55    # "Webkit Linux - GPU": "chromium-gpu-linux-x86_64",
     56    # "Webkit Linux 32 - GPU": "chromium-gpu-linux-x86",
     57    "Webkit Mac10.5 - GPU": "chromium-gpu-mac-leopard",
     58    "Webkit Mac10.6 - GPU": "chromium-gpu-mac-snowleopard",
     59
     60    # These builders are on build.webkit.org.
     61    "GTK Linux 32-bit Debug": "gtk",
     62    "Leopard Intel Debug (Tests)": "mac-leopard",
     63    "SnowLeopard Intel Release (Tests)": "mac-snowleopard",
     64    "SnowLeopard Intel Release (WebKit2 Tests)": "mac-wk2",
     65    "Qt Linux Release": "qt-linux",
     66    "Windows XP Debug (Tests)": "win-xp",
     67    "Windows 7 Release (WebKit2 Tests)": "win-wk2",
     68}
     69
     70
     71_fuzzy_matches = {
     72    # These builders are on build.webkit.org.
     73    r"SnowLeopard": "mac-snowleopard",
     74    r"Leopard": "mac-leopard",
     75    r"Windows": "win",
     76    r"GTK": "gtk",
     77    r"Qt": "qt",
     78    r"Chromium Mac": "chromium-mac",
     79    r"Chromium Linux": "chromium-linux",
     80    r"Chromium Win": "chromium-win",
     81}
     82
     83
     84_ports_without_builders = [
     85    # FIXME: Including chromium-gpu-linux below is a workaroudn for
     86    # chromium-gpu-linux-x86_64 and chromium-gpu-linux-x86 not working properly.
     87    "chromium-gpu-linux",
     88    "google-chrome-linux32",
     89    "google-chrome-linux64",
     90    "qt-mac",
     91    "qt-win",
     92    "qt-wk2",
     93]
     94
    3295
    3396def builder_path_from_name(builder_name):
     
    3598
    3699
    37 # Compiled manually from http://build.chromium.org/p/chromium/json/builders/help?as_text=1
    38 # Values of None mean there are no bots running at build.webkit.org or
    39 # build.chromium.org for that port.
    40 # FIXME Make the values in this map into lists.
    41 CHROMIUM_PORT_TO_BUILDER_NAME = {
    42     'chromium-gpu-linux': builder_path_from_name('Webkit Linux - GPU'),
    43 
    44     'chromium-gpu-mac-snowleopard': builder_path_from_name('Webkit Mac10.6 - GPU'),
    45     'chromium-gpu-mac-leopard': builder_path_from_name('Webkit Mac10.5 - GPU'),
    46 
    47     'chromium-gpu-win-xp': builder_path_from_name('Webkit Win - GPU'),
    48     'chromium-gpu-win-vista': builder_path_from_name('Webkit Vista - GPU'),
    49     'chromium-gpu-win-win7': builder_path_from_name('Webkit Win7 - GPU'),
    50 
    51     'chromium-linux-x86_64': builder_path_from_name('Linux Tests x64'),
    52     'chromium-linux-x86': builder_path_from_name('Linux Tests (dbg)(1)'),
    53 
    54     'chromium-mac-leopard': builder_path_from_name('Mac10.5 Tests (1)'),
    55     'chromium-mac-snowleopard': builder_path_from_name('Mac 10.6 Tests (dbg)(1)'),
    56 
    57     'chromium-win-xp': builder_path_from_name('XP Tests (dbg)(5)'),
    58     'chromium-win-vista': builder_path_from_name('Vista Tests (dbg)(1)'),
    59     'chromium-win-win7': None,
    60 
    61     'google-chrome-linux32': None,
    62     'google-chrome-linux64': None,
    63 }
    64 
    65 # Compiled manually from http://build.webkit.org/builders
    66 WEBKIT_PORT_TO_BUILDER_NAME = {
    67     'gtk': 'GTK Linux 32-bit Debug',
    68 
    69     'mac-leopard': 'Leopard Intel Debug (Tests)',
    70     'mac-snowleopard': 'SnowLeopard Intel Release (Tests)',
    71     'mac-wk2': 'SnowLeopard Intel Release (WebKit2 Tests)',
    72 
    73     'qt-linux': 'Qt Linux Release',
    74     'qt-mac': None,
    75     'qt-win': None,
    76     'qt-wk2': None,
    77 
    78     'win-xp': 'Windows XP Debug (Tests)',
    79     'win': None,
    80     'win-wk2': 'Windows 7 Release (WebKit2 Tests)',
    81 }
    82 
    83 PORT_TO_BUILDER_NAME = {}
    84 PORT_TO_BUILDER_NAME.update(CHROMIUM_PORT_TO_BUILDER_NAME)
    85 PORT_TO_BUILDER_NAME.update(WEBKIT_PORT_TO_BUILDER_NAME)
     100@memoized
     101def all_port_names():
     102    return sorted(set(_exact_matches.values() + _ports_without_builders))
    86103
    87104
    88 def builder_name_for_platform(platform):
    89     return PORT_TO_BUILDER_NAME.get(platform)
     105def port_name_for_builder_name(builder_name):
     106    if builder_name in _exact_matches:
     107        return _exact_matches[builder_name]
     108
     109    for regexp, port_name in _fuzzy_matches.items():
     110        if re.match(regexp, builder_name):
     111            return port_name
     112
     113
     114def builder_name_for_port_name(target_port_name):
     115    for builder_name, port_name in _exact_matches.items():
     116        if port_name == target_port_name:
     117            return builder_name
     118    return None
     119
     120
     121def builder_path_for_port_name(port_name):
     122    builder_path_from_name(builder_name_for_port_name(port_name))
  • trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium.py

    r92026 r92493  
    227227
    228228    def _results_for_platform(self, platform):
    229         builder_name = builders.builder_name_for_platform(platform)
     229        builder_name = builders.builder_path_for_port_name(platform)
    230230        if not builder_name:
    231231            raise Exception("Can't find builder for %s" % platform)
  • trunk/Tools/Scripts/webkitpy/layout_tests/port/factory.py

    r90826 r92493  
    4343    or "mock-mac", and it does not include any directories that are not ."""
    4444    # FIXME: There's probably a better way to generate this list ...
    45     return builders.PORT_TO_BUILDER_NAME.keys()
     45    return builders.all_port_names()
    4646
    4747
  • trunk/Tools/Scripts/webkitpy/layout_tests/port/webkit.py

    r91315 r92493  
    8282
    8383    def _results_for_platform(self, platform):
    84         builder_name = builders.builder_name_for_platform(platform)
     84        builder_name = builders.builder_path_for_port_name(platform)
    8585        if not builder_name:
    8686            raise Exception("Can't find builder for %s" % platform)
  • trunk/Tools/Scripts/webkitpy/tool/commands/rebaseline.py

    r92294 r92493  
    3636from webkitpy.common.net.buildbot import BuildBot
    3737from webkitpy.common.net.layouttestresults import LayoutTestResults
     38from webkitpy.common.system.executive import ScriptError
    3839from webkitpy.common.system.user import User
    3940from webkitpy.layout_tests.layout_package.test_result_writer import TestResultWriter
    4041from webkitpy.layout_tests.models import test_failures
    41 from webkitpy.layout_tests.port import factory
     42from webkitpy.layout_tests.models.test_expectations import TestExpectations
     43from webkitpy.layout_tests.port import factory, builders
    4244from webkitpy.tool.grammar import pluralize
    4345from webkitpy.tool.multicommandtool import AbstractDeclarativeCommand
     46
     47
     48_baseline_suffix_list = ['png', 'txt']
     49
     50
     51def _port_for_builder(builder_name):
     52    port_name = builders.port_name_for_builder_name(builder_name)
     53    assert(port_name)  # Need to update port_name_for_builder_name
     54    port = factory.get(port_name, RebaseliningOptions(builder_name))
     55    assert(port)  # Need to update port_name_for_builder_name
     56    return port
    4457
    4558
     
    5366
    5467
    55 # FIXME: This logic should be moved to builders.py.
    56 class BuilderToPort(object):
    57 
    58     _builder_name_to_port_name = {
    59         # These builders are on build.webkit.org.
    60         r"SnowLeopard": "mac-snowleopard",
    61         r"Leopard": "mac-leopard",
    62         r"Windows": "win",
    63         r"GTK": "gtk",
    64         r"Qt": "qt",
    65         r"Chromium Mac": "chromium-mac",
    66         r"Chromium Linux": "chromium-linux",
    67         r"Chromium Win": "chromium-win",
    68 
    69         # These builders are on build.chromium.org.
    70         r"Webkit Win$": "chromium-win-xp",
    71         r"Webkit Vista": "chromium-win-vista",
    72         r"Webkit Win7": "chromium-win-win7",
    73         r"Webkit Win \(dbg\)\(1\)": "chromium-win-xp",
    74         r"Webkit Win \(dbg\)\(2\)": "chromium-win-xp",
    75         r"Webkit Linux": "chromium-linux-x86_64",
    76         r"Webkit Linux 32": "chromium-linux-x86",
    77         r"Webkit Linux \(dbg\)\(1\)": "chromium-linux-x86_64",
    78         r"Webkit Linux \(dbg\)\(2\)": "chromium-linux-x86_64",
    79         r"Webkit Mac10\.5": "chromium-mac-leopard",
    80         r"Webkit Mac10\.5 \(dbg\)\(1\)": "chromium-mac-leopard",
    81         r"Webkit Mac10\.5 \(dbg\)\(2\)": "chromium-mac-leopard",
    82         r"Webkit Mac10\.6": "chromium-mac-snowleopard",
    83         r"Webkit Mac10\.6 \(dbg\)": "chromium-mac-snowleopard",
    84     }
    85 
    86     def _port_name_for_builder_name(self, builder_name):
    87         for regexp, port_name in self._builder_name_to_port_name.items():
    88             if re.match(regexp, builder_name):
    89                 return port_name
    90 
    91     def port_for_builder(self, builder_name):
    92         port_name = self._port_name_for_builder_name(builder_name)
    93         assert(port_name)  # Need to update _builder_name_to_port_name
    94         port = factory.get(port_name, RebaseliningOptions(builder_name))
    95         assert(port)  # Need to update _builder_name_to_port_name
    96         return port
    97 
    98 
    9968class RebaselineTest(AbstractDeclarativeCommand):
    10069    name = "rebaseline-test"
    10170    help_text = "Rebaseline a single test from a buildbot.  (Currently works only with build.chromium.org buildbots.)"
    102     argument_names = "BUILDER_NAME TEST_NAME SUFFIX"
     71    # FIXME: Remove SUFFIX argument.
     72    argument_names = "BUILDER_NAME TEST_NAME [SUFFIX]"
    10373
    10474    def _results_url(self, builder_name):
     
    10878
    10979    def _baseline_directory(self, builder_name):
    110         port = BuilderToPort().port_for_builder(builder_name)
     80        port = _port_for_builder(builder_name)
    11181        return port.baseline_path()
    11282
    11383    def _save_baseline(self, data, target_baseline):
     84        if not data:
     85            return
    11486        filesystem = self._tool.filesystem
    11587        filesystem.maybe_make_directory(filesystem.dirname(target_baseline))
     
    131103        baseline_directory = self._baseline_directory(builder_name)
    132104
    133         source_baseline = "%s/%s" % (results_url, self._file_name_for_actual_result(test_name, suffix))
     105        source_baseline = "%s%s" % (results_url, self._file_name_for_actual_result(test_name, suffix))
    134106        target_baseline = os.path.join(baseline_directory, self._file_name_for_expected_result(test_name, suffix))
    135107
    136         print "Retrieving %s ..." % source_baseline
    137         self._save_baseline(self._tool.web.get_binary(source_baseline), target_baseline)
    138 
    139     def execute(self, options, args, tool):
    140         self._rebaseline_test(args[0], args[1], args[2])
     108        print "Retrieving %s." % source_baseline
     109        self._save_baseline(self._tool.web.get_binary(source_baseline, convert_404_to_None=True), target_baseline)
     110
     111    def execute(self, options, args, tool):
     112        for suffix in _baseline_suffix_list:
     113            self._rebaseline_test(args[0], args[1], suffix)
    141114
    142115
     
    148121    # FIXME: Should TestResultWriter know how to compute this string?
    149122    def _baseline_name(self, test_name, suffix):
    150         return self._tool.filesystem.splitext(test_name)[0] + TestResultWriter.FILENAME_SUFFIX_EXPECTED + suffix
     123        return self._tool.filesystem.splitext(test_name)[0] + TestResultWriter.FILENAME_SUFFIX_EXPECTED + "." + suffix
    151124
    152125    def execute(self, options, args, tool):
     
    154127
    155128        test_name = args[0]
    156         for suffix in ['.png', '.txt']:
     129        for suffix in _baseline_suffix_list:
    157130            baseline_name = self._baseline_name(test_name, suffix)
    158131            if not baseline_optimizer.optimize(baseline_name):
    159132                print "Hueristics failed to optimize %s" % baseline_name
     133
     134
     135class RebaselineExpectations(AbstractDeclarativeCommand):
     136    name = "rebaseline-expectations"
     137    help_text = "Rebaselines the tests indicated in test_expectations.txt."
     138
     139    def _run_webkit_patch(self, args):
     140        try:
     141            self._tool.executive.run_command([self._tool.path()] + args, cwd=self._tool.scm().checkout_root)
     142        except ScriptError, e:
     143            pass
     144
     145    def _is_supported_port(self, port_name):
     146        # FIXME: Support non-Chromium ports.
     147        return port_name.startswith('chromium-')
     148
     149    def _update_expectations_file(self, port, expectations, tests_to_rebaseline):
     150        new_expectations = expectations.remove_rebaselined_tests(tests_to_rebaseline)
     151        path = port.path_to_test_expectations_file()
     152        self._tool.filesystem.write_text_file(path, new_expectations)
     153
     154    # FIXME: We read and write the test_expectations.txt file once for each port.  That seems excessive.
     155    def _tests_to_rebaseline(self, port):
     156        expectations = TestExpectations(port, None, port.test_expectations(), port.test_configuration())
     157        tests_to_rebaseline = expectations.get_rebaselining_failures()
     158        self._update_expectations_file(port, expectations, tests_to_rebaseline)
     159        return tests_to_rebaseline
     160
     161    def _rebaseline_port(self, port_name):
     162        if not self._is_supported_port(port_name):
     163            return
     164        builder_name = builders.builder_name_for_port_name(port_name)
     165        if not builder_name:
     166            return
     167        print "Retrieving results for %s from %s." % (port_name, builder_name)
     168        for test_name in self._tests_to_rebaseline(factory.get(port_name)):
     169            self._touched_test_names.add(test_name)
     170            print "    %s" % test_name
     171            self._run_webkit_patch(['rebaseline-test', builder_name, test_name])
     172
     173    def execute(self, options, args, tool):
     174        self._touched_test_names = set([])
     175        for port_name in factory.all_port_names():
     176            self._rebaseline_port(port_name)
     177        for test_name in self._touched_test_names:
     178            print "Optimizing baselines for %s." % test_name
     179            self._run_webkit_patch(['optimize-baselines', test_name])
    160180
    161181
     
    192212        builder, build_number = self._builder_to_pull_from()
    193213        build = builder.build(build_number)
    194         port = BuilderToPort().port_for_builder(builder.name())
     214        port = builder_name_for_port_name.port_for_builder(builder.name())
    195215
    196216        for test in self._tests_to_update(build):
  • trunk/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py

    r92294 r92493  
    3232from webkitpy.thirdparty.mock import Mock
    3333from webkitpy.tool.commands.rebaseline import *
    34 from webkitpy.tool.mocktool import MockTool
     34from webkitpy.tool.mocktool import MockTool, MockExecutive
    3535
    3636
    3737class TestRebaseline(unittest.TestCase):
    38     # This just makes sure the code runs without exceptions.
    3938    def test_tests_to_update(self):
    4039        command = Rebaseline()
     
    4342        OutputCapture().assert_outputs(self, command._tests_to_update, [build])
    4443
    45 
    46 class TestRebaselineTest(unittest.TestCase):
    47     def test_tests_to_update(self):
     44    def test_rebaseline_test(self):
    4845        command = RebaselineTest()
    4946        command.bind_to_tool(MockTool())
    50         build = Mock()
    51         expected_stdout = "Retrieving http://example.com/f/builders/Webkit Linux/results//userscripts/another-test-actual.txt ...\n"
     47        expected_stdout = "Retrieving http://example.com/f/builders/Webkit Linux/results/userscripts/another-test-actual.txt.\n"
    5248        OutputCapture().assert_outputs(self, command._rebaseline_test, ["Webkit Linux", "userscripts/another-test.html", "txt"], expected_stdout=expected_stdout)
    5349
    54 
    55 class BuilderToPortTest(unittest.TestCase):
    56     def test_port_for_builder(self):
    57         converter = BuilderToPort()
    58         port = converter.port_for_builder("Leopard Intel Debug (Tests)")
    59         self.assertEqual(str(port.test_configuration()), "<leopard, x86, debug, cpu>")
    60         port = converter.port_for_builder("Leopard Intel Release (Tests)")
    61         self.assertEqual(str(port.test_configuration()), "<leopard, x86, release, cpu>")
    62         port = converter.port_for_builder("Webkit Win (dbg)(1)")
    63         self.assertEqual(str(port.test_configuration()), "<xp, x86, debug, cpu>")
     50    def test_rebaseline_expectations(self):
     51        command = RebaselineExpectations()
     52        tool = MockTool()
     53        tool.executive = MockExecutive(should_log=True)
     54        command.bind_to_tool(tool)
     55        expected_stdout = """Retrieving results for chromium-gpu-mac-leopard from Webkit Mac10.5 - GPU.
     56Retrieving results for chromium-gpu-mac-snowleopard from Webkit Mac10.6 - GPU.
     57Retrieving results for chromium-gpu-win-win7 from Webkit Win7 - GPU.
     58Retrieving results for chromium-gpu-win-xp from Webkit Win - GPU.
     59Retrieving results for chromium-linux-x86 from Webkit Linux 32.
     60    userscripts/another-test.html
     61    userscripts/images.svg
     62Retrieving results for chromium-linux-x86_64 from Webkit Linux (dbg)(2).
     63    userscripts/another-test.html
     64    userscripts/images.svg
     65Retrieving results for chromium-mac-leopard from Webkit Mac10.5 (dbg)(1).
     66    userscripts/another-test.html
     67    userscripts/images.svg
     68Retrieving results for chromium-mac-snowleopard from Webkit Mac10.6 (dbg).
     69    userscripts/another-test.html
     70    userscripts/images.svg
     71Retrieving results for chromium-win-vista from Webkit Vista.
     72    userscripts/another-test.html
     73    userscripts/images.svg
     74Retrieving results for chromium-win-win7 from Webkit Win7.
     75    userscripts/another-test.html
     76    userscripts/images.svg
     77Retrieving results for chromium-win-xp from Webkit Win (dbg)(2).
     78    userscripts/another-test.html
     79    userscripts/images.svg
     80Optimizing baselines for userscripts/another-test.html.
     81Optimizing baselines for userscripts/images.svg.
     82"""
     83        expected_stderr = """MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Linux 32', 'userscripts/another-test.html'], cwd=/mock-checkout
     84MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Linux 32', 'userscripts/images.svg'], cwd=/mock-checkout
     85MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Linux (dbg)(2)', 'userscripts/another-test.html'], cwd=/mock-checkout
     86MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Linux (dbg)(2)', 'userscripts/images.svg'], cwd=/mock-checkout
     87MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Mac10.5 (dbg)(1)', 'userscripts/another-test.html'], cwd=/mock-checkout
     88MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Mac10.5 (dbg)(1)', 'userscripts/images.svg'], cwd=/mock-checkout
     89MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Mac10.6 (dbg)', 'userscripts/another-test.html'], cwd=/mock-checkout
     90MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Mac10.6 (dbg)', 'userscripts/images.svg'], cwd=/mock-checkout
     91MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Vista', 'userscripts/another-test.html'], cwd=/mock-checkout
     92MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Vista', 'userscripts/images.svg'], cwd=/mock-checkout
     93MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Win7', 'userscripts/another-test.html'], cwd=/mock-checkout
     94MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Win7', 'userscripts/images.svg'], cwd=/mock-checkout
     95MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Win (dbg)(2)', 'userscripts/another-test.html'], cwd=/mock-checkout
     96MOCK run_command: ['echo', 'rebaseline-test', 'Webkit Win (dbg)(2)', 'userscripts/images.svg'], cwd=/mock-checkout
     97MOCK run_command: ['echo', 'optimize-baselines', 'userscripts/another-test.html'], cwd=/mock-checkout
     98MOCK run_command: ['echo', 'optimize-baselines', 'userscripts/images.svg'], cwd=/mock-checkout
     99"""
     100        command._tests_to_rebaseline = lambda port: [] if not port.name().find('-gpu-') == -1 else ['userscripts/another-test.html', 'userscripts/images.svg']
     101        OutputCapture().assert_outputs(self, command.execute, [MockTool(), None, None], expected_stdout=expected_stdout, expected_stderr=expected_stderr)
Note: See TracChangeset for help on using the changeset viewer.