Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(354)

Side by Side Diff: Source/devtools/scripts/compile_frontend.py

Issue 472903003: DevTools: Get rid of module initializers in the source tree (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add missing worker module.json's to gypi Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 Google Inc. All rights reserved. 2 # Copyright (c) 2012 Google Inc. All rights reserved.
3 # 3 #
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 80
81 type_checked_jsdoc_tags_list = ["param", "return", "type", "enum"] 81 type_checked_jsdoc_tags_list = ["param", "return", "type", "enum"]
82 82
83 type_checked_jsdoc_tags_or = "|".join(type_checked_jsdoc_tags_list) 83 type_checked_jsdoc_tags_or = "|".join(type_checked_jsdoc_tags_list)
84 84
85 # Basic regex for invalid JsDoc types: an object type name ([A-Z][A-Za-z0-9.]+[A -Za-z0-9]) not preceded by '!', '?', ':' (this, new), or '.' (object property). 85 # Basic regex for invalid JsDoc types: an object type name ([A-Z][A-Za-z0-9.]+[A -Za-z0-9]) not preceded by '!', '?', ':' (this, new), or '.' (object property).
86 invalid_type_regex = re.compile(r"@(?:" + type_checked_jsdoc_tags_or + r")\s*\{. *(?<![!?:.A-Za-z0-9])([A-Z][A-Za-z0-9.]+[A-Za-z0-9])[^/]*\}") 86 invalid_type_regex = re.compile(r"@(?:" + type_checked_jsdoc_tags_or + r")\s*\{. *(?<![!?:.A-Za-z0-9])([A-Z][A-Za-z0-9.]+[A-Za-z0-9])[^/]*\}")
87 87
88 invalid_type_designator_regex = re.compile(r"@(?:" + type_checked_jsdoc_tags_or + r")\s*.*(?<![{: ])([?!])=?\}") 88 invalid_type_designator_regex = re.compile(r"@(?:" + type_checked_jsdoc_tags_or + r")\s*.*(?<![{: ])([?!])=?\}")
89 89
90 importscript_regex = re.compile(r"importScript\(\s*[\"']")
91 error_warning_regex = re.compile(r"(?:WARNING|ERROR)") 90 error_warning_regex = re.compile(r"(?:WARNING|ERROR)")
92 91
93 errors_found = False 92 errors_found = False
94 93
95 94
96 def run_in_shell(command_line): 95 def run_in_shell(command_line):
97 return subprocess.Popen(command_line, stdout=subprocess.PIPE, stderr=subproc ess.STDOUT, shell=True) 96 return subprocess.Popen(command_line, stdout=subprocess.PIPE, stderr=subproc ess.STDOUT, shell=True)
98 97
99 98
100 def hasErrors(output): 99 def hasErrors(output):
101 return re.search(error_warning_regex, output) != None 100 return re.search(error_warning_regex, output) != None
102 101
103 102
104 def verify_importScript_usage():
105 errors_found = False
106 for module in modules:
107 for file_name in module["sources"]:
108 if path.basename(file_name) == module_initializer_name:
109 log_error("Module initializer (%s) may not be listed among modul e's scripts; found in '%s'" % (module_initializer_name, module["name"]))
110 errors_found = True
111 continue
112 try:
113 with open(path.join(devtools_frontend_path, file_name), "r") as sourceFile:
114 source = sourceFile.read()
115 if re.search(importscript_regex, source):
116 log_error("importScript() call only allowed in module in itializers (%s); found in %s" % (module_initializer_name, file_name))
117 errors_found = True
118 except:
119 log_error("Failed to access %s" % file_name)
120 raise
121 return errors_found
122
123
124 def dump_all_checked_files(): 103 def dump_all_checked_files():
125 files = {} 104 files = {}
126 for module in modules: 105 for module in modules:
127 for source in module["sources"]: 106 for source in module["sources"]:
128 files[path.join(devtools_frontend_path, source)] = True 107 files[path.join(devtools_frontend_path, source)] = True
129 return files.keys() 108 return files.keys()
130 109
131 110
132 def verify_jsdoc_extra(additional_files): 111 def verify_jsdoc_extra(additional_files):
133 return run_in_shell("%s -jar %s %s" % (java_exec, jsdoc_validator_jar, " ".j oin(dump_all_checked_files() + additional_files))) 112 return run_in_shell("%s -jar %s %s" % (java_exec, jsdoc_validator_jar, " ".j oin(dump_all_checked_files() + additional_files)))
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 proc = subprocess.Popen("which java", stdout=subprocess.PIPE, shell=True) 157 proc = subprocess.Popen("which java", stdout=subprocess.PIPE, shell=True)
179 (javaPath, _) = proc.communicate() 158 (javaPath, _) = proc.communicate()
180 159
181 if proc.returncode != 0: 160 if proc.returncode != 0:
182 print "Cannot find java ('which java' return code = %d, should be 0)" % proc.returncode 161 print "Cannot find java ('which java' return code = %d, should be 0)" % proc.returncode
183 sys.exit(1) 162 sys.exit(1)
184 print "Java executable: " + re.sub(r"\n$", "", javaPath) 163 print "Java executable: " + re.sub(r"\n$", "", javaPath)
185 164
186 check_java_path() 165 check_java_path()
187 166
188 print "Verifying 'importScript' function usage..."
189 errors_found |= verify_importScript_usage()
190
191 modules_dir = tempfile.mkdtemp() 167 modules_dir = tempfile.mkdtemp()
192 common_closure_args = " --summary_detail_level 3 --jscomp_error visibility --com pilation_level SIMPLE_OPTIMIZATIONS --warning_level VERBOSE --language_in ECMASC RIPT5 --accept_const_keyword --module_output_path_prefix %s/" % modules_dir 168 common_closure_args = " --summary_detail_level 3 --jscomp_error visibility --com pilation_level SIMPLE_OPTIMIZATIONS --warning_level VERBOSE --language_in ECMASC RIPT5 --accept_const_keyword --module_output_path_prefix %s/" % modules_dir
193 169
194 spawned_compiler_command = "%s -jar %s %s \\\n" % (java_exec, closure_compiler_j ar, common_closure_args) 170 spawned_compiler_command = "%s -jar %s %s \\\n" % (java_exec, closure_compiler_j ar, common_closure_args)
195 171
196 modules_by_name = {} 172 modules_by_name = {}
197 standalone_modules_by_name = {} 173 standalone_modules_by_name = {}
198 dependents_by_module_name = {} 174 dependents_by_module_name = {}
199 175
200 for module in modules: 176 for module in modules:
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 errors_found |= hasErrors(validateInjectedScriptOut) 382 errors_found |= hasErrors(validateInjectedScriptOut)
407 383
408 if errors_found: 384 if errors_found:
409 print "ERRORS DETECTED" 385 print "ERRORS DETECTED"
410 386
411 os.remove(injectedScriptSourceTmpFile) 387 os.remove(injectedScriptSourceTmpFile)
412 os.remove(injectedScriptCanvasModuleSourceTmpFile) 388 os.remove(injectedScriptCanvasModuleSourceTmpFile)
413 os.remove(compiler_args_file.name) 389 os.remove(compiler_args_file.name)
414 os.remove(protocol_externs_file) 390 os.remove(protocol_externs_file)
415 shutil.rmtree(modules_dir, True) 391 shutil.rmtree(modules_dir, True)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698