Chromium Code Reviews| Index: chrome/test/gpu/generate_webgl_conformance_test_list.py |
| diff --git a/chrome/test/gpu/generate_webgl_conformance_test_list.py b/chrome/test/gpu/generate_webgl_conformance_test_list.py |
| index 8b05b4e778b0672ff07fcb2662a7090377d6465f..b1409692431c01460608fc69585cfade23ef542c 100755 |
| --- a/chrome/test/gpu/generate_webgl_conformance_test_list.py |
| +++ b/chrome/test/gpu/generate_webgl_conformance_test_list.py |
| @@ -11,8 +11,6 @@ for individual conformance tests (each on a new line). It recursively parses |
| sent to the C++ header file. |
| """ |
| -__author__ = 'jrt@chromium.org (Joe Tessler)' |
| - |
| import getopt |
| import os |
| import re |
| @@ -41,6 +39,27 @@ HEADER_GUARD_END = """ |
| # Assume this script is run from the src/chrome/ directory. |
| INPUT_DIR = "../third_party/webgl_conformance" |
| INPUT_FILE = "00_test_list.txt" |
| +EXPECTATION_FILE = "test/gpu/webgl_conformance_test_expectations.txt" |
| +EXPECTATION_REGEXP = re.compile( |
| + r'^(?P<BUG>\d+)' |
|
Zhenyao Mo
2011/08/04 17:56:11
<BUG> should allow more than numbers
jrt
2011/08/04 18:57:51
Done.
|
| + '(?P<OS>(\s*(WIN|MAC|LINUX)\s*)+):' |
| + '(?P<TEST>[^=]+)=' |
| + '(?P<OUTCOME>(\s*(FAIL|TIMEOUT)\s*)+)') |
|
Zhenyao Mo
2011/08/04 17:56:11
also PASS
jrt
2011/08/04 18:57:51
Done.
|
| + |
| +def is_matching_os(expected_os_list): |
| + """Returns true if the current OS is in the given list. |
| + |
| + Given a list containing 'WIN', 'MAC' or 'LINUX', return true if the current |
| + OS, represented as 'win32', 'darwin' or 'linux*', respectively, exists in the |
| + list. |
| + """ |
| + if sys.platform.startswith('linux') and 'LINUX' in expected_os_list: |
| + return True; |
| + if sys.platform == 'darwin' and 'MAC' in expected_os_list: |
| + return True; |
| + if sys.platform == 'win32' and 'WIN' in expected_os_list: |
| + return True; |
| + return False; |
| def main(argv): |
| """Main function for the WebGL conformance test list generator. |
| @@ -72,6 +91,24 @@ def main(argv): |
| print >> sys.stderr, "ERROR: WebGL conformance tests do not exist." |
| return 1 |
| + test_prefix = {} |
| + if os.path.exists(EXPECTATION_FILE): |
| + test_expectations = open(EXPECTATION_FILE) |
| + for line in test_expectations: |
| + line_match = EXPECTATION_REGEXP.match(line) |
| + if line_match: |
| + match_dict = line_match.groupdict() |
| + os_list = match_dict['OS'].strip().split() |
| + if not is_matching_os(os_list): |
| + continue |
| + test = match_dict['TEST'].strip() |
| + outcome_list = match_dict['OUTCOME'].strip().split() |
| + if 'TIMEOUT' in outcome_list: |
| + test_prefix[test] = "DISABLED_" |
| + elif 'FAIL' in outcome_list: |
| + test_prefix[test] = "FAILS_" |
|
Zhenyao Mo
2011/08/04 17:56:11
If both FAIL and PASS exist, map to FLAKY
jrt
2011/08/04 18:57:51
Done.
|
| + test_expectations.close() |
| + |
| output = open(output_file, "w") |
| output.write(COPYRIGHT) |
| output.write(WARNING) |
| @@ -106,6 +143,9 @@ def main(argv): |
| # is sent through javascript. |
| url = "%s/%s" % (os.path.dirname(filename), url) |
| if os.path.exists(os.path.join(INPUT_DIR, url)): |
| + # Append "DISABLED_" or "FAILS_" if needed. |
| + if name in test_prefix: |
| + name = test_prefix[name] + name |
| output.write('CONFORMANCE_TEST(%s,\n "%s");\n' % (name, url)) |
| else: |
| print >> sys.stderr, "WARNING: %s does not exist (skipped)." % url |