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

Side by Side Diff: experimental/webtry/webtry.go

Issue 252863002: Add pathops and capture stderr so we can get SkDebugf output. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 7 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
« no previous file with comments | « experimental/webtry/templates/template.cpp ('k') | gyp/webtry.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 package main 1 package main
2 2
3 import ( 3 import (
4 "bytes" 4 "bytes"
5 "crypto/md5" 5 "crypto/md5"
6 "database/sql" 6 "database/sql"
7 "encoding/base64" 7 "encoding/base64"
8 "encoding/json" 8 "encoding/json"
9 "flag" 9 "flag"
10 "fmt" 10 "fmt"
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 251
252 // response is serialized to JSON as a response to POSTs. 252 // response is serialized to JSON as a response to POSTs.
253 type response struct { 253 type response struct {
254 Message string `json:"message"` 254 Message string `json:"message"`
255 StdOut string `json:"stdout"` 255 StdOut string `json:"stdout"`
256 Img string `json:"img"` 256 Img string `json:"img"`
257 Hash string `json:"hash"` 257 Hash string `json:"hash"`
258 } 258 }
259 259
260 // doCmd executes the given command line string in either the out/Debug 260 // doCmd executes the given command line string in either the out/Debug
261 // directory or the inout directory. Returns the stdout, and stderr in the case 261 // directory or the inout directory. Returns the stdout and stderr.
262 // of a non-zero exit code.
263 func doCmd(commandLine string, moveToDebug bool) (string, error) { 262 func doCmd(commandLine string, moveToDebug bool) (string, error) {
264 log.Printf("Command: %q\n", commandLine) 263 log.Printf("Command: %q\n", commandLine)
265 programAndArgs := strings.SplitN(commandLine, " ", 2) 264 programAndArgs := strings.SplitN(commandLine, " ", 2)
266 program := programAndArgs[0] 265 program := programAndArgs[0]
267 args := []string{} 266 args := []string{}
268 if len(programAndArgs) > 1 { 267 if len(programAndArgs) > 1 {
269 args = strings.Split(programAndArgs[1], " ") 268 args = strings.Split(programAndArgs[1], " ")
270 } 269 }
271 cmd := exec.Command(program, args...) 270 cmd := exec.Command(program, args...)
272 abs, err := filepath.Abs("../../out/Debug") 271 abs, err := filepath.Abs("../../out/Debug")
273 if err != nil { 272 if err != nil {
274 return "", fmt.Errorf("Failed to find absolute path to Debug dir ectory.") 273 return "", fmt.Errorf("Failed to find absolute path to Debug dir ectory.")
275 } 274 }
276 if moveToDebug { 275 if moveToDebug {
277 cmd.Dir = abs 276 cmd.Dir = abs
278 } else if !*useChroot { // Don't set cmd.Dir when using chroot. 277 } else if !*useChroot { // Don't set cmd.Dir when using chroot.
279 abs, err := filepath.Abs("../../../inout") 278 abs, err := filepath.Abs("../../../inout")
280 if err != nil { 279 if err != nil {
281 return "", fmt.Errorf("Failed to find absolute path to i nout directory.") 280 return "", fmt.Errorf("Failed to find absolute path to i nout directory.")
282 } 281 }
283 cmd.Dir = abs 282 cmd.Dir = abs
284 } 283 }
285 log.Printf("Run in directory: %q\n", cmd.Dir) 284 log.Printf("Run in directory: %q\n", cmd.Dir)
286 » var stdOut bytes.Buffer 285 » message, err := cmd.CombinedOutput()
287 » cmd.Stdout = &stdOut 286 » log.Printf("StdOut + StdErr: %s\n", string(message))
288 » var stdErr bytes.Buffer
289 » cmd.Stderr = &stdErr
290 » cmd.Start()
291 » err = cmd.Wait()
292 » message := stdOut.String()
293 » log.Printf("StdOut: %s\n", message)
294 if err != nil { 287 if err != nil {
295 log.Printf("Exit status: %s\n", err.Error()) 288 log.Printf("Exit status: %s\n", err.Error())
296 » » log.Printf("StdErr: %s\n", stdErr.String()) 289 » » return string(message), fmt.Errorf("Failed to run command.")
297 » » message += stdErr.String()
298 » » return message, fmt.Errorf("Failed to run command.")
299 } 290 }
300 » return message, nil 291 » return string(message), nil
301 } 292 }
302 293
303 // reportError formats an HTTP error response and also logs the detailed error m essage. 294 // reportError formats an HTTP error response and also logs the detailed error m essage.
304 func reportError(w http.ResponseWriter, r *http.Request, err error, message stri ng) { 295 func reportError(w http.ResponseWriter, r *http.Request, err error, message stri ng) {
305 log.Printf("Error: %s\n%s", message, err.Error()) 296 log.Printf("Error: %s\n%s", message, err.Error())
306 http.Error(w, message, 500) 297 http.Error(w, message, 500)
307 } 298 }
308 299
309 // reportTryError formats an HTTP error response in JSON and also logs the detai led error message. 300 // reportTryError formats an HTTP error response in JSON and also logs the detai led error message.
310 func reportTryError(w http.ResponseWriter, r *http.Request, err error, message, hash string) { 301 func reportTryError(w http.ResponseWriter, r *http.Request, err error, message, hash string) {
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 http.HandleFunc("/w/", workspaceHandler) 657 http.HandleFunc("/w/", workspaceHandler)
667 http.HandleFunc("/recent/", recentHandler) 658 http.HandleFunc("/recent/", recentHandler)
668 http.HandleFunc("/iframe/", iframeHandler) 659 http.HandleFunc("/iframe/", iframeHandler)
669 http.HandleFunc("/json/", tryInfoHandler) 660 http.HandleFunc("/json/", tryInfoHandler)
670 http.HandleFunc("/css/", cssHandler) 661 http.HandleFunc("/css/", cssHandler)
671 http.HandleFunc("/js/", jsHandler) 662 http.HandleFunc("/js/", jsHandler)
672 // TODO Break out /c/ as it's own handler. 663 // TODO Break out /c/ as it's own handler.
673 http.HandleFunc("/", mainHandler) 664 http.HandleFunc("/", mainHandler)
674 log.Fatal(http.ListenAndServe(*port, nil)) 665 log.Fatal(http.ListenAndServe(*port, nil))
675 } 666 }
OLDNEW
« no previous file with comments | « experimental/webtry/templates/template.cpp ('k') | gyp/webtry.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698