blob: 52952bff8bc462d4f495377c677930032dccd8ff [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
'''Generator script that, for each script-tests/X.js, creates
- window/X.html
- worker/X.html
- serviceworker/X.html
from templates in script-tests/TEMPLATE*.html.
The following tokens in the template files are replaced:
- TESTNAME -> X
- OPTIONS -> OPTIONS string (see README).
Run
$ python generate.py
at this (/LayoutTests/http/tests/fetch/) directory, and
commit the generated files.
'''
import os
import os.path
import re
import sys
top_path = os.path.dirname(os.path.abspath(__file__))
script_tests_path = os.path.join(top_path, 'script-tests')
def generate(output_path, template_path, context, testname, options):
output_basename = testname + options + '.html'
with open(template_path, 'r') as template_file:
template_data = template_file.read()
output_data = re.sub(r'TESTNAME', testname, template_data)
output_data = re.sub(r'OPTIONS', options, output_data)
with open(os.path.join(output_path, output_basename), 'w') as output_file:
output_file.write(output_data)
def generate_directory(relative_path, contexts, original_options):
directory_path = os.path.join(script_tests_path, relative_path)
for script in os.listdir(directory_path):
if script.startswith('.') or not script.endswith('.js'):
continue
testname = re.sub(r'\.js$', '', os.path.basename(script))
options = original_options
# Read OPTIONS list.
with open(os.path.join(directory_path, script), 'r') as script_file:
script = script_file.read()
m = re.search(r'// *OPTIONS: *([a-z\-,]*)', script)
if m:
options = re.split(',', m.group(1))
for context in contexts:
template_path = os.path.join(
directory_path, 'TEMPLATE-' + context + '.html')
for option in options:
generate(os.path.join(top_path, context, relative_path),
template_path, context, testname, option)
def main():
basic_contexts = ['window', 'workers', 'serviceworker']
generate_directory('', ['window', 'workers', 'serviceworker'],
['', '-base-https-other-https'])
generate_directory(
'thorough',
['window', 'workers', 'serviceworker', 'serviceworker-proxied'],
['', '-other-https', '-base-https-other-https'])
return 0
if __name__ == "__main__":
sys.exit(main())