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

Unified Diff: tools/emacs/trybot.el

Issue 5737005: emacs: use curl to fetch trybot output, improve mac performance (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ok Created 10 years 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
« no previous file with comments | « no previous file | tools/emacs/trybot-mac.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/emacs/trybot.el
diff --git a/tools/emacs/trybot.el b/tools/emacs/trybot.el
index 784241d2241a8f4a4751d92f6ac8c409f9df355b..b3820df6f9f3df993bcae9e375b777c7c10aa6e3 100644
--- a/tools/emacs/trybot.el
+++ b/tools/emacs/trybot.el
@@ -85,17 +85,46 @@
(compilation-mode))
+(defun trybot-get-new-buffer ()
+ "Get a new clean buffer for trybot output."
+ ; Use trybot-buffer-name if available; otherwise, "*trybot*".
+ (let ((buffer-name (if (boundp 'trybot-buffer-name)
+ trybot-buffer-name
+ "*trybot*")))
+ (let ((old (get-buffer buffer-name)))
+ (when old (kill-buffer old)))
+ (get-buffer-create buffer-name)))
+
+(defun trybot-fetch (type-hint url)
+ "Fetch a URL and postprocess it as trybot output."
+
+ (let ((on-fetch-completion
+ (lambda (process state)
+ (switch-to-buffer (process-buffer process))
+ (when (equal state "finished\n")
+ (trybot-fixup (process-get process 'type-hint)))))
+ (command (concat "curl -s " url
+ (when (eq type-hint 'mac)
+ ; Pipe it through the output shortener.
+ (concat " | " (get-chrome-root)
+ "build/sanitize-mac-build-log.sed")))))
+
+ ; Start up the subprocess.
+ (let* ((coding-system-for-read 'utf-8-dos)
+ (buffer (trybot-get-new-buffer))
+ (process (start-process-shell-command "curl" buffer command)))
+ ; Attach the type hint to the process so we can get it back when
+ ; the process completes.
+ (process-put process 'type-hint type-hint)
+ (set-process-query-on-exit-flag process nil)
+ (set-process-sentinel process on-fetch-completion))))
+
(defun trybot-test (type-hint filename)
"Load the given test data filename and do the trybot parse on it."
- (switch-to-buffer (get-buffer-create "*trybot-test*"))
- (let ((inhibit-read-only t)
- (coding-system-for-read 'utf-8-dos))
- (erase-buffer)
- (insert-file-contents
- (concat (get-chrome-root) "tools/emacs/" filename))
-
- (trybot-fixup type-hint)))
+ (let ((trybot-buffer-name "*trybot-test*")
+ (url (concat "file://" (get-chrome-root) "tools/emacs/" filename)))
+ (trybot-fetch type-hint url)))
(defun trybot-test-win ()
"Load the Windows test data and do the trybot parse on it."
@@ -122,18 +151,11 @@
;; TODO: fixup URL to append /text if necessary.
- ;; Extract the body out of the URL.
- ; TODO: delete HTTP headers somehow.
- (let ((inhibit-read-only t)
- (coding-system-for-read 'utf-8-dos)
- (type-hint (cond ((string-match "/win/" url) 'win)
+ (let ((type-hint (cond ((string-match "/win/" url) 'win)
((string-match "/mac/" url) 'mac)
; Match /linux, /linux_view, etc.
((string-match "/linux" url) 'linux)
(t 'unknown))))
- (switch-to-buffer (get-buffer-create "*trybot*"))
- (buffer-swap-text (url-retrieve-synchronously url))
-
- (trybot-fixup type-hint)))
+ (trybot-fetch type-hint url)))
(provide 'trybot)
« no previous file with comments | « no previous file | tools/emacs/trybot-mac.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698