Fix bug with invalid process's "return code" when PlatformIO has internal error

This commit is contained in:
Ivan Kravets
2015-02-19 22:02:50 +02:00
parent 1fc6b222ec
commit 2d53d2100d
7 changed files with 48 additions and 22 deletions

View File

@@ -117,7 +117,12 @@ def change_filemtime(path, time):
def exec_command(*args, **kwargs):
result = {"out": None, "err": None}
result = {
"out": None,
"err": None,
"returncode": None
}
default = dict(
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
@@ -129,6 +134,7 @@ def exec_command(*args, **kwargs):
p = subprocess.Popen(*args, **kwargs)
try:
result['out'], result['err'] = p.communicate()
result['returncode'] = p.returncode
except KeyboardInterrupt:
for s in ("stdout", "stderr"):
if isinstance(kwargs[s], AsyncPipe):
@@ -141,9 +147,8 @@ def exec_command(*args, **kwargs):
result[s[3:]] = "\n".join(kwargs[s].get_buffer())
for k, v in result.iteritems():
if not v:
continue
result[k].strip()
if v and isinstance(v, basestring):
result[k].strip()
return result