diff options
Diffstat (limited to 'Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py')
-rw-r--r-- | Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py | 28 |
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, } |