diff options
Diffstat (limited to 'emrun')
-rwxr-xr-x[-rw-r--r--] | emrun | 56 |
1 files changed, 31 insertions, 25 deletions
@@ -93,17 +93,7 @@ http_mutex = RLock() # Prints a log message to 'info' stdout channel. Always printed. def logi(msg): global last_message_time - if emrun_options.log_html: - sys.stdout.write(format_html(msg)) - else: - print >> sys.stdout, msg - sys.stdout.flush() - last_message_time = time.clock() - -# Prints a verbose log message to stdout channel. Only shown if run with --verbose. -def logv(msg): - global emrun_options, last_message_time - if emrun_options.verbose: + with http_mutex: if emrun_options.log_html: sys.stdout.write(format_html(msg)) else: @@ -111,15 +101,28 @@ def logv(msg): sys.stdout.flush() last_message_time = time.clock() +# Prints a verbose log message to stdout channel. Only shown if run with --verbose. +def logv(msg): + global emrun_options, last_message_time + with http_mutex: + if emrun_options.verbose: + if emrun_options.log_html: + sys.stdout.write(format_html(msg)) + else: + print >> sys.stdout, msg + sys.stdout.flush() + last_message_time = time.clock() + # Prints an error message to stderr channel. def loge(msg): global last_message_time - if emrun_options.log_html: - sys.stderr.write(format_html(msg)) - else: - print >> sys.stderr, msg - sys.stderr.flush() - last_message_time = time.clock() + with http_mutex: + if emrun_options.log_html: + sys.stderr.write(format_html(msg)) + else: + print >> sys.stderr, msg + sys.stderr.flush() + last_message_time = time.clock() def format_eol(msg): if WINDOWS: @@ -129,8 +132,6 @@ def format_eol(msg): # Prints a message to the browser stdout output stream. def browser_logi(msg): global browser_stdout_handle - if browser_stdout_handle != sys.stdout and not msg.endswith('\n'): - msg += '\n' msg = format_eol(msg) print >> browser_stdout_handle, msg browser_stdout_handle.flush() @@ -139,8 +140,6 @@ def browser_logi(msg): # Prints a message to the browser stderr output stream. def browser_loge(msg): global browser_stderr_handle - if browser_stderr_handle != sys.stderr and not msg.endswith('\n'): - msg += '\n' msg = format_eol(msg) print >> browser_stderr_handle, msg browser_stderr_handle.flush() @@ -216,7 +215,6 @@ class HTTPWebServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): elif seq_num < self.expected_http_seq_num: log(data) else: - log(data) self.http_message_queue += [(seq_num, data, log)] self.http_message_queue.sort(key=itemgetter(0)) if len(self.http_message_queue) > 16: @@ -1043,6 +1041,10 @@ def main(): else: browser_stderr_handle = open(options.log_stderr, 'ab') + if not options.no_server: + logv('Starting web server in port ' + str(options.port)) + httpd = HTTPWebServer(('', options.port), HTTPHandler) + if not options.no_browser: logv("Executing %s" % ' '.join(browser)) if browser[0] == 'cmd': @@ -1054,9 +1056,11 @@ def main(): if options.android: browser_process = None + if browser_process and browser_process.poll() == None: + options.serve_after_close = True + logv('Warning: emrun got detached from the target browser process. Cannot detect when user closes the browser. Behaving as if --serve_after_close was passed in.') + if not options.no_server: - logv('Starting web server in port ' + str(options.port)) - httpd = HTTPWebServer(('', options.port), HTTPHandler) try: httpd.serve_forever() except KeyboardInterrupt: @@ -1074,4 +1078,6 @@ def main(): return page_exit_code if __name__ == '__main__': - sys.exit(main()) + returncode = main() + logv('emrun quitting with process exit code ' + str(returncode)) + sys.exit(returncode) |