Skip to content

Commit

Permalink
webkitpy: Avoid to use webkit_base() and literal 'LayoutTests' in Bas…
Browse files Browse the repository at this point in the history
…elineOptimizer

BaselineOptimizer handles paths relative to webkit_base, and it's not easy to
update it for paths relative to LayoutTests. So, this CL just replaces
 - webkit_base with the parent of layout_tests_dir
 - ROOT_LAYOUT_TESTS_DIRECTORY with a relative path of layout_tests_dir

BUG=710535

Review-Url: https://codereview.chromium.org/2853733003
Cr-Commit-Position: refs/heads/master@{#469930}
  • Loading branch information
tkent-google authored and Commit bot committed May 8, 2017
1 parent bee127c commit 8e987fe
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@


class BaselineOptimizer(object):
ROOT_LAYOUT_TESTS_DIRECTORY = 'LayoutTests'

def __init__(self, host, port, port_names):
self._filesystem = host.filesystem
Expand All @@ -45,8 +44,10 @@ def __init__(self, host, port, port_names):
for port_name in port_names:
self._ports[port_name] = host.port_factory.get(port_name)

self._webkit_base = port.webkit_base()
self._layout_tests_dir = port.layout_tests_dir()
self._parent_of_tests = self._filesystem.dirname(self._layout_tests_dir)
self._layout_tests_dir_name = self._filesystem.relpath(
self._layout_tests_dir, self._parent_of_tests)

# Only used by unit tests.
self.new_results_by_directory = []
Expand Down Expand Up @@ -158,10 +159,10 @@ def _move_baselines(self, baseline_name, results_by_directory, new_results_by_di
_log.debug(' (Nothing to add)')

def _platform(self, filename):
platform_dir = self.ROOT_LAYOUT_TESTS_DIRECTORY + self._filesystem.sep + 'platform' + self._filesystem.sep
platform_dir = self._layout_tests_dir_name + self._filesystem.sep + 'platform' + self._filesystem.sep
if filename.startswith(platform_dir):
return filename.replace(platform_dir, '').split(self._filesystem.sep)[0]
platform_dir = self._filesystem.join(self._webkit_base, platform_dir)
platform_dir = self._filesystem.join(self._parent_of_tests, platform_dir)
if filename.startswith(platform_dir):
return filename.replace(platform_dir, '').split(self._filesystem.sep)[0]
return '(generic)'
Expand Down Expand Up @@ -190,8 +191,8 @@ def _optimize_virtual_root(self, baseline_name, non_virtual_baseline_name):
def _baseline_root(self, baseline_name):
virtual_suite = self._virtual_suite(baseline_name)
if virtual_suite:
return self._filesystem.join(self.ROOT_LAYOUT_TESTS_DIRECTORY, virtual_suite.name)
return self.ROOT_LAYOUT_TESTS_DIRECTORY
return self._filesystem.join(self._layout_tests_dir_name, virtual_suite.name)
return self._layout_tests_dir_name

def _baseline_search_path(self, port, baseline_name):
virtual_suite = self._virtual_suite(baseline_name)
Expand All @@ -209,7 +210,7 @@ def _relative_baseline_search_paths(self, port, baseline_name):
"""Returns a list of paths to check for baselines in order."""
baseline_search_path = self._baseline_search_path(port, baseline_name)
baseline_root = self._baseline_root(baseline_name)
relative_paths = [self._filesystem.relpath(path, self._webkit_base) for path in baseline_search_path]
relative_paths = [self._filesystem.relpath(path, self._parent_of_tests) for path in baseline_search_path]
return relative_paths + [baseline_root]

def _join_directory(self, directory, baseline_name):
Expand All @@ -226,7 +227,7 @@ def _join_directory(self, directory, baseline_name):
baseline_name_without_virtual = baseline_name[len(virtual_suite.name) + 1:]
else:
baseline_name_without_virtual = baseline_name
return self._filesystem.join(self._webkit_base, directory, baseline_name_without_virtual)
return self._filesystem.join(self._parent_of_tests, directory, baseline_name_without_virtual)

def _results_by_port_name(self, results_by_directory, baseline_name):
results_by_port_name = {}
Expand All @@ -241,7 +242,7 @@ def _results_by_port_name(self, results_by_directory, baseline_name):
def _directories_immediately_preceding_root(self, baseline_name):
directories = set()
for port in self._ports.values():
directory = self._filesystem.relpath(self._baseline_search_path(port, baseline_name)[-1], self._webkit_base)
directory = self._filesystem.relpath(self._baseline_search_path(port, baseline_name)[-1], self._parent_of_tests)
directories.add(directory)
return directories

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,20 @@ class BaselineOptimizerTest(unittest.TestCase):
def _assert_optimization(self, results_by_directory, directory_to_new_results, baseline_dirname='', host=None):
host = host or MockHost()
fs = host.filesystem
webkit_base = WebKitFinder(fs).webkit_base()
layout_tests_dir = WebKitFinder(fs).layout_tests_dir()
baseline_name = 'mock-baseline-expected.txt'
fs.write_text_file(
fs.join(webkit_base, 'LayoutTests', 'VirtualTestSuites'),
fs.join(layout_tests_dir, 'VirtualTestSuites'),
'[{"prefix": "gpu", "base": "fast/canvas", "args": ["--foo"]}]')

for dirname, contents in results_by_directory.items():
fs.write_binary_file(fs.join(webkit_base, 'LayoutTests', dirname, baseline_name), contents)
fs.write_binary_file(fs.join(layout_tests_dir, dirname, baseline_name), contents)

baseline_optimizer = BaselineOptimizer(host, host.port_factory.get(), host.port_factory.all_port_names())
self.assertTrue(baseline_optimizer.optimize(fs.join(baseline_dirname, baseline_name)))

for dirname, contents in directory_to_new_results.items():
path = fs.join(webkit_base, 'LayoutTests', dirname, baseline_name)
path = fs.join(layout_tests_dir, dirname, baseline_name)
if contents is not None:
self.assertEqual(fs.read_binary_file(path), contents)

Expand Down

0 comments on commit 8e987fe

Please sign in to comment.