summaryrefslogtreecommitdiffstats
path: root/Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py')
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py28
1 files changed, 20 insertions, 8 deletions
diff --git a/Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py b/Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py
index 86649b6..5472dfe 100644
--- a/Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py
+++ b/Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py
@@ -55,9 +55,7 @@ def port_fallbacks():
back on. All platforms fall back on 'base'.
"""
fallbacks = {_BASE_PLATFORM: []}
- platform_dir = os.path.join(scm.find_checkout_root(), 'LayoutTests',
- 'platform')
- for port_name in os.listdir(platform_dir):
+ for port_name in port_factory.all_port_names():
try:
platforms = port_factory.get(port_name).baseline_search_path()
except NotImplementedError:
@@ -67,6 +65,7 @@ def port_fallbacks():
continue
fallbacks[port_name] = [os.path.basename(p) for p in platforms][1:]
fallbacks[port_name].append(_BASE_PLATFORM)
+
return fallbacks
@@ -119,6 +118,15 @@ def cluster_file_hashes(glob_pattern):
return parse_git_output(git_output, glob_pattern)
+def dirname_to_platform(dirname):
+ if dirname == 'chromium-linux':
+ return 'chromium-linux-x86'
+ elif dirname == 'chromium-win':
+ return 'chromium-win-win7'
+ elif dirname == 'chromium-mac':
+ return 'chromium-mac-snowleopard'
+ return dirname
+
def extract_platforms(paths):
"""Extracts the platforms from a list of paths matching ^platform/(.*?)/.
Args:
@@ -130,7 +138,7 @@ def extract_platforms(paths):
for path in paths:
match = re.match(r'^platform/(.*?)/', path)
if match:
- platform = match.group(1)
+ platform = dirname_to_platform(match.group(1))
else:
platform = _BASE_PLATFORM
platforms[platform] = path
@@ -154,10 +162,11 @@ def has_intermediate_results(test, fallbacks, matching_platform,
path_exists: Optional parameter that allows us to stub out
os.path.exists for testing.
"""
- for platform in fallbacks:
+ for dirname in fallbacks:
+ platform = dirname_to_platform(dirname)
if platform == matching_platform:
return False
- test_path = os.path.join('LayoutTests', 'platform', platform, test)
+ test_path = os.path.join('LayoutTests', 'platform', dirname, test)
if path_exists(test_path):
return True
return False
@@ -199,7 +208,10 @@ def find_dups(hashes, port_fallbacks, relative_to):
# See if any of the platforms are redundant with each other.
for platform in platforms.keys():
- for fallback in port_fallbacks[platform]:
+ if platform not in port_factory.all_port_names():
+ continue
+ for dirname in port_fallbacks[platform]:
+ fallback = dirname_to_platform(dirname)
if fallback not in platforms.keys():
continue
# We have to verify that there isn't an intermediate result
@@ -215,7 +227,7 @@ def find_dups(hashes, port_fallbacks, relative_to):
yield {
'test': test,
'platform': platform,
- 'fallback': fallback,
+ 'fallback': dirname,
'path': path,
}