From 4c8216129ee655026e4c0e8c3781645017969614 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Fri, 22 Nov 2019 12:42:50 -0500 Subject: [PATCH] Add script to summarize WPT test directories with failing tests. --- etc/wpt_result_analyzer.py | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 etc/wpt_result_analyzer.py diff --git a/etc/wpt_result_analyzer.py b/etc/wpt_result_analyzer.py new file mode 100644 index 00000000000..eb2277db48a --- /dev/null +++ b/etc/wpt_result_analyzer.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python + +# Copyright 2019 The Servo Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution. +# +# Licensed under the Apache License, Version 2.0 or the MIT license +# , at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +import configparser +import os + +test_root = os.path.join('tests', 'wpt', 'web-platform-tests') +meta_root = os.path.join('tests', 'wpt', 'metadata') + +test_counts = {} +meta_counts = {} + +for base_dir, dir_names, files in os.walk(test_root): + if base_dir == test_root: + continue + + rel_base = os.path.relpath(base_dir, test_root) + if not os.path.exists(os.path.join(meta_root, rel_base)): + continue + + test_files = [] + exts = ['.html', '.htm', '.xht', '.xhtml', '.window.js', '.worker.js', '.any.js'] + for f in files: + for ext in exts: + if f.endswith(ext): + test_files += [f] + test_counts[rel_base] = len(test_files) + +for base_dir, dir_names, files in os.walk(meta_root): + if base_dir == meta_root: + continue + + rel_base = os.path.relpath(base_dir, meta_root) + num_files = len(files) + if '__dir__.ini' in files: + num_files -= 1 + meta_counts[rel_base] = num_files + +final_counts = [] +for (test_dir, test_count) in test_counts.items(): + if not test_count: + continue + meta_count = meta_counts.get(test_dir, 0) + final_counts += [(test_dir, test_count, meta_count)] + +print('Test counts') +print('dir: %% failed (num tests / num failures)') +s = sorted(final_counts, key=lambda x: x[2] / x[1]) +for (test_dir, test_count, meta_count) in reversed(sorted(s, key=lambda x: x[2])): + if not meta_count: + continue + print('%s: %.2f%% (%d / %d)' % (test_dir, meta_count / test_count * 100, test_count, meta_count))