From 0d5ef24c5df0fc2e1be6231fc421280867fda4be Mon Sep 17 00:00:00 2001 From: "maruel@chromium.org" Date: Mon, 18 Apr 2011 13:52:58 +0000 Subject: [PATCH] Use a marker instead of a string so it can be distingished when used as stdin. R=dpranke@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/6840053 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@81941 0039d316-1c4b-4281-b951-d872f2087c98 --- subprocess2.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/subprocess2.py b/subprocess2.py index 3cc79aeb8..c743b0390 100644 --- a/subprocess2.py +++ b/subprocess2.py @@ -21,7 +21,7 @@ import threading PIPE = subprocess.PIPE STDOUT = subprocess.STDOUT # Sends stdout or stderr to os.devnull. -VOID = '/dev/null' +VOID = object() # Error code when a process was killed because it timed out. TIMED_OUT = -2001 @@ -203,10 +203,14 @@ def call(args, timeout=None, **kwargs): """ stdin = kwargs.pop('stdin', None) if stdin is not None: - assert stdin != PIPE - # When stdin is passed as an argument, use it as the actual input data and - # set the Popen() parameter accordingly. - kwargs['stdin'] = PIPE + if stdin is VOID: + kwargs['stdin'] = open(os.devnull, 'r') + stdin = None + else: + assert isinstance(stdin, str) + # When stdin is passed as an argument, use it as the actual input data and + # set the Popen() parameter accordingly. + kwargs['stdin'] = PIPE if not timeout: # Normal workflow.