| OLD | NEW |
| 1 # Copyright (C) 2010 Google Inc. All rights reserved. | 1 # Copyright (C) 2010 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 tests = [] | 793 tests = [] |
| 794 for file_path in files: | 794 for file_path in files: |
| 795 # Path separators are normalized by relative_test_filename(). | 795 # Path separators are normalized by relative_test_filename(). |
| 796 match = re.search(r'imported/wpt/(.*)$', file_path) | 796 match = re.search(r'imported/wpt/(.*)$', file_path) |
| 797 if not match: | 797 if not match: |
| 798 tests.append(file_path) | 798 tests.append(file_path) |
| 799 continue | 799 continue |
| 800 path_in_wpt = match.group(1) | 800 path_in_wpt = match.group(1) |
| 801 manifest_items = self._manifest_items_for_path(path_in_wpt) | 801 manifest_items = self._manifest_items_for_path(path_in_wpt) |
| 802 assert manifest_items is not None | 802 assert manifest_items is not None |
| 803 if len(manifest_items) != 1 or manifest_items[0]['url'][1:] != path_
in_wpt: | 803 # For most testharness tests, manifest_items looks like: |
| 804 # [["/some/test/path.html", {}]] |
| 805 if len(manifest_items) != 1 or manifest_items[0][0][1:] != path_in_w
pt: |
| 804 # TODO(tkent): foo.any.js and bar.worker.js should be accessed | 806 # TODO(tkent): foo.any.js and bar.worker.js should be accessed |
| 805 # as foo.any.html, foo.any.worker, and bar.worker with WPTServe. | 807 # as foo.any.html, foo.any.worker, and bar.worker with WPTServe. |
| 806 continue | 808 continue |
| 807 tests.append(file_path) | 809 tests.append(file_path) |
| 808 return tests | 810 return tests |
| 809 | 811 |
| 810 @memoized | 812 @memoized |
| 811 def _wpt_manifest(self): | 813 def _wpt_manifest(self): |
| 812 path = self._filesystem.join(self.layout_tests_dir(), 'imported', 'wpt',
'MANIFEST.json') | 814 path = self._filesystem.join(self.layout_tests_dir(), 'imported', 'wpt',
'MANIFEST.json') |
| 813 return json.loads(self._filesystem.read_text_file(path)) | 815 return json.loads(self._filesystem.read_text_file(path)) |
| 814 | 816 |
| 815 def _manifest_items_for_path(self, path_in_wpt): | 817 def _manifest_items_for_path(self, path_in_wpt): |
| 816 """Returns a list of a dict representing ManifestItem for the specified | 818 """Returns a manifest item for the given WPT path, or None if not found. |
| 817 path, or None if MANIFEST.json has no items for the specified path. | |
| 818 | 819 |
| 819 A ManifestItem has 'path', 'url', and optional 'timeout' fields. Also, | 820 The format of a manifest item depends on |
| 820 it has "references" list for reference tests. It's defined in | 821 https://github.com/w3c/wpt-tools/blob/master/manifest/item.py |
| 821 web-platform-tests/tools/manifest/item.py. | 822 and is assumed to be a list of the format [url, extras], |
| 823 or [url, references, extras] for reftests, or None if not found. |
| 822 """ | 824 """ |
| 823 # Because we generate MANIFEST.json before finishing import, all | 825 items = self._wpt_manifest()['items'] |
| 824 # entries are in 'local_changes'. | |
| 825 items = self._wpt_manifest()['local_changes']['items'] | |
| 826 if path_in_wpt in items['manual']: | 826 if path_in_wpt in items['manual']: |
| 827 return items['manual'][path_in_wpt] | 827 return items['manual'][path_in_wpt] |
| 828 elif path_in_wpt in items['reftest']: | 828 elif path_in_wpt in items['reftest']: |
| 829 return items['reftest'][path_in_wpt] | 829 return items['reftest'][path_in_wpt] |
| 830 elif path_in_wpt in items['testharness']: | 830 elif path_in_wpt in items['testharness']: |
| 831 return items['testharness'][path_in_wpt] | 831 return items['testharness'][path_in_wpt] |
| 832 return None | 832 return None |
| 833 | 833 |
| 834 ALL_TEST_TYPES = ['audio', 'harness', 'pixel', 'ref', 'text', 'unknown'] | 834 ALL_TEST_TYPES = ['audio', 'harness', 'pixel', 'ref', 'text', 'unknown'] |
| 835 | 835 |
| (...skipping 958 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1794 | 1794 |
| 1795 def __init__(self, base, args, reference_args=None): | 1795 def __init__(self, base, args, reference_args=None): |
| 1796 self.name = base | 1796 self.name = base |
| 1797 self.base = base | 1797 self.base = base |
| 1798 self.args = args | 1798 self.args = args |
| 1799 self.reference_args = args if reference_args is None else reference_args | 1799 self.reference_args = args if reference_args is None else reference_args |
| 1800 self.tests = set() | 1800 self.tests = set() |
| 1801 | 1801 |
| 1802 def __repr__(self): | 1802 def __repr__(self): |
| 1803 return "PhysicalTestSuite('%s', '%s', %s, %s)" % (self.name, self.base,
self.args, self.reference_args) | 1803 return "PhysicalTestSuite('%s', '%s', %s, %s)" % (self.name, self.base,
self.args, self.reference_args) |
| OLD | NEW |