tools: fix idf_tools.py exception with python3

use `subprocess.Popen` when catch TypeError:

```
Traceback (most recent call last):
  File "tools/idf_tools.py", line 1249, in <module>
    main(sys.argv[1:])
  File "tools/idf_tools.py", line 1245, in main
    action_func(args)
  File "tools/idf_tools.py", line 1038, in action_install
    tool_obj.find_installed_versions()
  File "tools/idf_tools.py", line 468, in find_installed_versions
    ver_str = self.check_version()
  File "tools/idf_tools.py", line 426, in check_version
    version_cmd_result = run_cmd_check_output(cmd, None, extra_paths)
  File "tools/idf_tools.py", line 176, in run_cmd_check_output
    result = subprocess.run(cmd, capture_output=True, check=True, input=input_text)
  File "/opt/pyenv/pyenv-1.2.6/versions/3.5.5/lib/python3.5/subprocess.py", line 383, in run
    with Popen(*popenargs, **kwargs) as process:
TypeError: __init__() got an unexpected keyword argument 'capture_output'
```
This commit is contained in:
He Yin Ling
2019-07-04 15:06:00 +08:00
parent 533c080bc1
commit 9ecd0436f5

View File

@@ -175,7 +175,7 @@ def run_cmd_check_output(cmd, input_text=None, extra_paths=None):
input_text = input_text.encode()
result = subprocess.run(cmd, capture_output=True, check=True, input=input_text)
return result.stdout + result.stderr
except AttributeError:
except (AttributeError, TypeError):
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate(input_text)
if p.returncode != 0: