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

Unified Diff: third_party/mojo/src/mojo/public/tools/dart_analyze.py

Issue 1019173002: Update mojo sdk to rev 7214b7ec7d27563b2666afad86cf1c5895c56c18 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Keep permission service alive if embedder drops requests Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: third_party/mojo/src/mojo/public/tools/dart_analyze.py
diff --git a/third_party/mojo/src/mojo/public/tools/dart_analyze.py b/third_party/mojo/src/mojo/public/tools/dart_analyze.py
index 8b8117e205cd0f6a282ba4102bd0ec0987fc8a91..c200783adcdebb20ce8f6c80518185ab841b9c75 100755
--- a/third_party/mojo/src/mojo/public/tools/dart_analyze.py
+++ b/third_party/mojo/src/mojo/public/tools/dart_analyze.py
@@ -10,58 +10,71 @@
# directory, which we treat as the package root. The second is the stamp file
# to touch if we succeed. The rest are passed to the analyzer verbatim.
+import glob
import os
+import re
+import shutil
import subprocess
import sys
-import re
+import tempfile
+import zipfile
_ANALYZING_PATTERN = re.compile(r'^Analyzing \[')
-_FINAL_REPORT_PATTERN = re.compile(r'^[0-9]+ errors and [0-9]+ warnings found.')
+_ERRORS_AND_WARNINGS_PATTERN = re.compile(
+ r'^[0-9]+ errors? and [0-9]+ warnings? found.')
+_ERRORS_PATTERN = re.compile(r'^([0-9]+|No) (error|warning|issue)s? found.')
-_NATIVE_ERROR_PATTERN = re.compile(
- r'^\[error\] Native functions can only be declared in the SDK and code that '
- r'is loaded through native extensions')
-_WARNING_PATTERN = re.compile(r'^\[warning\]')
-_THAT_ONE_BROKEN_CLOSE_IN_WEB_SOCKETS_PATTERN = re.compile(
- r'^\[error\] The name \'close\' is already defined')
def main(args):
- cmd = [
- "../../third_party/dart-sdk/dart-sdk/bin/dartanalyzer",
- ]
-
- gen_dir = args.pop(0)
+ dartzip_file = args.pop(0)
stamp_file = args.pop(0)
- cmd.extend(args)
- cmd.append("--package-root=%s" % gen_dir)
- passed = True
+ dartzip_basename = os.path.basename(dartzip_file) + ":"
+
+ # Unzip |dartzip_file| to a temporary directory.
try:
- subprocess.check_output(cmd, shell=False, stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- # Perform post processing on the output. Filter out non-error messages and
- # known problem patterns that we're working on.
- raw_lines = e.output.split('\n')
- # Remove the last empty line
- raw_lines.pop()
- filtered_lines = [i for i in raw_lines if (
- not re.match(_ANALYZING_PATTERN, i) and
- not re.match(_FINAL_REPORT_PATTERN, i) and
- # TODO(erg): Remove the rest of these as fixes land:
- not re.match(_WARNING_PATTERN, i) and
- not re.match(_NATIVE_ERROR_PATTERN, i) and
- not re.match(_THAT_ONE_BROKEN_CLOSE_IN_WEB_SOCKETS_PATTERN, i))]
- for line in filtered_lines:
- passed = False
- print >> sys.stderr, line
+ temp_dir = tempfile.mkdtemp()
+ zipfile.ZipFile(dartzip_file).extractall(temp_dir)
+
+ cmd = [
+ "../../third_party/dart-sdk/dart-sdk/bin/dartanalyzer",
+ ]
+
+ # Grab all the toplevel dart files in the archive.
+ dart_files = glob.glob(os.path.join(temp_dir, "*.dart"))
+
+ cmd.extend(dart_files)
+ cmd.extend(args)
+ cmd.append("--package-root=%s" % temp_dir)
+ cmd.append("--fatal-warnings")
+
+ passed = True
+ try:
+ subprocess.check_output(cmd, shell=False, stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ # Perform post processing on the output. Filter out non-error messages and
+ # known problem patterns that we're working on.
+ raw_lines = e.output.split('\n')
+ # Remove the last empty line
+ raw_lines.pop()
+ filtered_lines = [i for i in raw_lines if (
+ not re.match(_ANALYZING_PATTERN, i) and
+ not re.match(_ERRORS_AND_WARNINGS_PATTERN, i) and
+ not re.match(_ERRORS_PATTERN, i))]
+ for line in filtered_lines:
+ passed = False
+ print >> sys.stderr, line.replace(temp_dir + "/", dartzip_basename)
+
+ if passed:
+ # We passed cleanly, so touch the stamp file so that we don't run again.
+ with open(stamp_file, 'a'):
+ os.utime(stamp_file, None)
+ return 0
+ else:
+ return -2
+ finally:
+ shutil.rmtree(temp_dir)
- if passed:
- # We passed cleanly, so touch the stamp file so that we don't run again.
- with open(stamp_file, 'a'):
- os.utime(stamp_file, None)
- return 0
- else:
- return -2
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))

Powered by Google App Engine
This is Rietveld 408576698