Index: third_party/android_testrunner/patch.diff |
diff --git a/third_party/android_testrunner/patch.diff b/third_party/android_testrunner/patch.diff |
deleted file mode 100644 |
index 9b067cd50b28000c42dd1d6fe4bc6a02a40c7ebd..0000000000000000000000000000000000000000 |
--- a/third_party/android_testrunner/patch.diff |
+++ /dev/null |
@@ -1,104 +0,0 @@ |
-diff --git a/third_party/android_testrunner/run_command.py b/third_party/android_testrunner/run_command.py |
-index d398daa..6b84156 100644 |
---- a/third_party/android_testrunner/run_command.py |
-+++ b/third_party/android_testrunner/run_command.py |
-@@ -19,6 +19,7 @@ |
- import os |
- import signal |
- import subprocess |
-+import tempfile |
- import threading |
- import time |
- |
-@@ -80,31 +81,36 @@ def RunOnce(cmd, timeout_time=None, return_output=True, stdin_input=None): |
- """ |
- start_time = time.time() |
- so = [] |
-- pid = [] |
- global _abort_on_error, error_occurred |
- error_occurred = False |
- |
-+ if return_output: |
-+ output_dest = tempfile.TemporaryFile(bufsize=0) |
-+ else: |
-+ # None means direct to stdout |
-+ output_dest = None |
-+ if stdin_input: |
-+ stdin_dest = subprocess.PIPE |
-+ else: |
-+ stdin_dest = None |
-+ pipe = subprocess.Popen( |
-+ cmd, |
-+ executable='/bin/bash', |
-+ stdin=stdin_dest, |
-+ stdout=output_dest, |
-+ stderr=subprocess.STDOUT, |
-+ shell=True, close_fds=True, |
-+ preexec_fn=lambda: signal.signal(signal.SIGPIPE, signal.SIG_DFL)) |
-+ |
- def Run(): |
- global error_occurred |
-- if return_output: |
-- output_dest = subprocess.PIPE |
-- else: |
-- # None means direct to stdout |
-- output_dest = None |
-- if stdin_input: |
-- stdin_dest = subprocess.PIPE |
-- else: |
-- stdin_dest = None |
-- pipe = subprocess.Popen( |
-- cmd, |
-- executable='/bin/bash', |
-- stdin=stdin_dest, |
-- stdout=output_dest, |
-- stderr=subprocess.STDOUT, |
-- shell=True) |
-- pid.append(pipe.pid) |
- try: |
-- output = pipe.communicate(input=stdin_input)[0] |
-+ pipe.communicate(input=stdin_input) |
-+ output = None |
-+ if return_output: |
-+ output_dest.seek(0) |
-+ output = output_dest.read() |
-+ output_dest.close() |
- if output is not None and len(output) > 0: |
- so.append(output) |
- except OSError, e: |
-@@ -119,27 +125,17 @@ def RunOnce(cmd, timeout_time=None, return_output=True, stdin_input=None): |
- |
- t = threading.Thread(target=Run) |
- t.start() |
-- |
-- break_loop = False |
-- while not break_loop: |
-- if not t.isAlive(): |
-- break_loop = True |
-- |
-- # Check the timeout |
-- if (not break_loop and timeout_time is not None |
-- and time.time() > start_time + timeout_time): |
-- try: |
-- os.kill(pid[0], signal.SIGKILL) |
-- except OSError: |
-- # process already dead. No action required. |
-- pass |
-- |
-+ t.join(timeout_time) |
-+ if t.isAlive(): |
-+ try: |
-+ pipe.kill() |
-+ except OSError: |
-+ # Can't kill a dead process. |
-+ pass |
-+ finally: |
- logger.SilentLog("about to raise a timeout for: %s" % cmd) |
- raise errors.WaitForResponseTimedOutError |
-- if not break_loop: |
-- time.sleep(0.1) |
- |
-- t.join() |
- output = "".join(so) |
- if _abort_on_error and error_occurred: |
- raise errors.AbortError(msg=output) |