| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 | 2 |
| 3 # Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 3 # Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
| 4 # | 4 # |
| 5 # Redistribution and use in source and binary forms, with or without | 5 # Redistribution and use in source and binary forms, with or without |
| 6 # modification, are permitted provided that the following conditions | 6 # modification, are permitted provided that the following conditions |
| 7 # are met: | 7 # are met: |
| 8 # | 8 # |
| 9 # 1. Redistributions of source code must retain the above | 9 # 1. Redistributions of source code must retain the above |
| 10 # copyright notice, this list of conditions and the following | 10 # copyright notice, this list of conditions and the following |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 This can also be overridden by a -n or --no-overwrite flag | 65 This can also be overridden by a -n or --no-overwrite flag |
| 66 | 66 |
| 67 - All files are converted to work in WebKit: | 67 - All files are converted to work in WebKit: |
| 68 1. .xht extensions are changed to .xhtml to make new-run-webkit-tests h
appy | 68 1. .xht extensions are changed to .xhtml to make new-run-webkit-tests h
appy |
| 69 2. Paths to testharness.js files are modified point to Webkit's copy of
them in | 69 2. Paths to testharness.js files are modified point to Webkit's copy of
them in |
| 70 LayoutTests/resources, using the correct relative path from the new
location | 70 LayoutTests/resources, using the correct relative path from the new
location |
| 71 3. All CSS properties requiring the -webkit-vendor prefix are prefixed
- this current | 71 3. All CSS properties requiring the -webkit-vendor prefix are prefixed
- this current |
| 72 list of what needs prefixes is read from Source/WebCore/CSS/CSSPrope
rties.in | 72 list of what needs prefixes is read from Source/WebCore/CSS/CSSPrope
rties.in |
| 73 4. Each reftest has its own copy of its reference file following the na
ming conventions | 73 4. Each reftest has its own copy of its reference file following the na
ming conventions |
| 74 new-run-webkit-tests expects | 74 new-run-webkit-tests expects |
| 75 5. If a a reference files lives outside the directory of the test that
uses it, it is checked | 75 5. If a reference files lives outside the directory of the test that us
es it, it is checked |
| 76 for paths to support files as it will be imported into a different r
elative position to the | 76 for paths to support files as it will be imported into a different r
elative position to the |
| 77 test file (in the same directory) | 77 test file (in the same directory) |
| 78 | 78 |
| 79 - Upon completion, script outputs the total number tests imported, broken d
own by test type | 79 - Upon completion, script outputs the total number tests imported, broken d
own by test type |
| 80 | 80 |
| 81 - Also upon completion, each directory where files are imported will have w
3c-import.log written | 81 - Also upon completion, each directory where files are imported will have w
3c-import.log written |
| 82 with a timestamp, the W3C Mercurial changeset if available, the list of C
SS properties used that | 82 with a timestamp, the W3C Mercurial changeset if available, the list of C
SS properties used that |
| 83 require prefixes, the list of imported files, and guidance for future tes
t modification and | 83 require prefixes, the list of imported files, and guidance for future tes
t modification and |
| 84 maintenance. | 84 maintenance. |
| 85 | 85 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 self.changeset = CHANGESET_NOT_AVAILABLE | 178 self.changeset = CHANGESET_NOT_AVAILABLE |
| 179 | 179 |
| 180 def find_importable_tests(self, directory): | 180 def find_importable_tests(self, directory): |
| 181 # FIXME: use filesystem | 181 # FIXME: use filesystem |
| 182 for root, dirs, files in os.walk(directory): | 182 for root, dirs, files in os.walk(directory): |
| 183 print 'Scanning ' + root + '...' | 183 print 'Scanning ' + root + '...' |
| 184 total_tests = 0 | 184 total_tests = 0 |
| 185 reftests = 0 | 185 reftests = 0 |
| 186 jstests = 0 | 186 jstests = 0 |
| 187 | 187 |
| 188 # Ignore any repo stuff | 188 # "archive" and "data" dirs are internal csswg things that live in e
very approved directory. |
| 189 if '.git' in dirs: | 189 DIRS_TO_SKIP = ('.git', '.hg', 'data', 'archive') |
| 190 dirs.remove('.git') | 190 for d in DIRS_TO_SKIP: |
| 191 if '.hg' in dirs: | 191 if d in dirs: |
| 192 dirs.remove('.hg') | 192 dirs.remove(d) |
| 193 | |
| 194 # archive and data dirs are internal csswg things that live in every
approved directory | |
| 195 if 'data' in dirs: | |
| 196 dirs.remove('data') | |
| 197 if 'archive' in dirs: | |
| 198 dirs.remove('archive') | |
| 199 | 193 |
| 200 copy_list = [] | 194 copy_list = [] |
| 201 | 195 |
| 202 for filename in files: | 196 for filename in files: |
| 203 # FIXME: This block should really be a separate function, but th
e early-continues make that difficult. | 197 # FIXME: This block should really be a separate function, but th
e early-continues make that difficult. |
| 204 | 198 |
| 205 if filename.startswith('.') or filename.endswith('.pl'): | 199 if filename.startswith('.') or filename.endswith('.pl'): |
| 206 continue # For some reason the w3c repo contains random per
l scripts we don't care about. | 200 continue # For some reason the w3c repo contains random per
l scripts we don't care about. |
| 207 | 201 |
| 208 fullpath = os.path.join(root, filename) | 202 fullpath = os.path.join(root, filename) |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 copy_list.append({'src': fullpath, 'dest': filename}) | 245 copy_list.append({'src': fullpath, 'dest': filename}) |
| 252 else: | 246 else: |
| 253 total_tests += 1 | 247 total_tests += 1 |
| 254 copy_list.append({'src': fullpath, 'dest': filename}) | 248 copy_list.append({'src': fullpath, 'dest': filename}) |
| 255 | 249 |
| 256 if not total_tests: | 250 if not total_tests: |
| 257 # We can skip the support directory if no tests were found. | 251 # We can skip the support directory if no tests were found. |
| 258 if 'support' in dirs: | 252 if 'support' in dirs: |
| 259 dirs.remove('support') | 253 dirs.remove('support') |
| 260 | 254 |
| 261 if copy_list: | 255 if copy_list: |
| 262 # Only add this directory to the list if there's something t
o import | 256 # Only add this directory to the list if there's something to im
port |
| 263 self.import_list.append({'dirname': root, 'copy_list': copy_
list, | 257 self.import_list.append({'dirname': root, 'copy_list': copy_list
, |
| 264 'reftests': reftests, 'jstests': jstests, 'total_tests':
total_tests}) | 258 'reftests': reftests, 'jstests': jstests, 'total_tests': tot
al_tests}) |
| 265 | 259 |
| 266 def import_tests(self): | 260 def import_tests(self): |
| 267 if self.import_list: | 261 if self.import_list: |
| 268 self.setup_destination_directory() | 262 self.setup_destination_directory() |
| 269 | 263 |
| 270 converter = W3CTestConverter() | 264 converter = W3CTestConverter() |
| 271 total_imported_tests = 0 | 265 total_imported_tests = 0 |
| 272 total_imported_reftests = 0 | 266 total_imported_reftests = 0 |
| 273 total_imported_jstests = 0 | 267 total_imported_jstests = 0 |
| 274 | 268 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 # FIXME: Eventually, so should js when support is added for this
type of conversion | 322 # FIXME: Eventually, so should js when support is added for this
type of conversion |
| 329 mimetype = mimetypes.guess_type(orig_filepath) | 323 mimetype = mimetypes.guess_type(orig_filepath) |
| 330 if 'html' in str(mimetype[0]) or 'xml' in str(mimetype[0]) or '
css' in str(mimetype[0]): | 324 if 'html' in str(mimetype[0]) or 'xml' in str(mimetype[0]) or '
css' in str(mimetype[0]): |
| 331 | 325 |
| 332 converted_file = converter.convert_for_webkit(new_path, file
name=orig_filepath) | 326 converted_file = converter.convert_for_webkit(new_path, file
name=orig_filepath) |
| 333 | 327 |
| 334 if not converted_file: | 328 if not converted_file: |
| 335 shutil.copyfile(orig_filepath, new_filepath) # The file
was unmodified. | 329 shutil.copyfile(orig_filepath, new_filepath) # The file
was unmodified. |
| 336 else: | 330 else: |
| 337 prefixed_properties.extend(set(converted_file[0]) - set(
prefixed_properties)) | 331 prefixed_properties.extend(set(converted_file[0]) - set(
prefixed_properties)) |
| 338 outfile = open(new_filepath, 'w') | 332 outfile = open(new_filepath, 'wb') |
| 339 outfile.write(converted_file[1]) | 333 outfile.write(converted_file[1]) |
| 340 outfile.close() | 334 outfile.close() |
| 341 else: | 335 else: |
| 342 shutil.copyfile(orig_filepath, new_filepath) | 336 shutil.copyfile(orig_filepath, new_filepath) |
| 343 | 337 |
| 344 copied_files.append(new_filepath.replace(self._webkit_root, '')) | 338 copied_files.append(new_filepath.replace(self._webkit_root, '')) |
| 345 | 339 |
| 346 self.remove_deleted_files(new_path, copied_files) | 340 self.remove_deleted_files(new_path, copied_files) |
| 347 self.write_import_log(new_path, copied_files, prefixed_properties) | 341 self.write_import_log(new_path, copied_files, prefixed_properties) |
| 348 | 342 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 for prop in prop_list: | 419 for prop in prop_list: |
| 426 import_log.write(prop + '\n') | 420 import_log.write(prop + '\n') |
| 427 else: | 421 else: |
| 428 import_log.write('None\n') | 422 import_log.write('None\n') |
| 429 import_log.write('------------------------------------------------------
------------------\n') | 423 import_log.write('------------------------------------------------------
------------------\n') |
| 430 import_log.write('List of files:\n') | 424 import_log.write('List of files:\n') |
| 431 for item in file_list: | 425 for item in file_list: |
| 432 import_log.write(item + '\n') | 426 import_log.write(item + '\n') |
| 433 | 427 |
| 434 import_log.close() | 428 import_log.close() |
| OLD | NEW |