未验证 提交 e6f69fad 编写于 作者: P Pradyun Gedam 提交者: GitHub

Fix crash when `sys.stdin` is `None` (#7118)

Fix a crash when ``sys.stdin`` is set to ``None``, such as on AWS Lambda.
Fix a crash when ``sys.stdin`` is set to ``None``, such as on AWS Lambda.
......@@ -864,3 +864,10 @@ def protect_pip_from_modification_on_windows(modifying_pip):
'To modify pip, please run the following command:\n{}'
.format(" ".join(new_command))
)
def is_console_interactive():
# type: () -> bool
"""Is this console interactive?
"""
return sys.stdin is not None and sys.stdin.isatty()
......@@ -6,11 +6,11 @@ from __future__ import absolute_import
import logging
import os
import re
import sys
from pip._internal.utils.logging import indent_log
from pip._internal.utils.misc import (
display_path,
is_console_interactive,
rmtree,
split_auth_from_netloc,
)
......@@ -188,7 +188,7 @@ class Subversion(VersionControl):
def __init__(self, use_interactive=None):
# type: (bool) -> None
if use_interactive is None:
use_interactive = sys.stdin.isatty()
use_interactive = is_console_interactive()
self.use_interactive = use_interactive
# This member is used to cache the fetched version of the current
......
......@@ -39,6 +39,7 @@ from pip._internal.utils.misc import (
get_prog,
hide_url,
hide_value,
is_console_interactive,
normalize_path,
normalize_version_info,
parse_netloc,
......@@ -971,3 +972,18 @@ def test_make_setuptools_shim_args__unbuffered_output(unbuffered_output):
unbuffered_output=unbuffered_output
)
assert ('-u' in args) == unbuffered_output
@pytest.mark.parametrize('isatty,no_stdin,expected', [
(True, False, True),
(False, False, False),
(True, True, False),
(False, True, False),
])
def test_is_console_interactive(monkeypatch, isatty, no_stdin, expected):
monkeypatch.setattr(sys.stdin, 'isatty', Mock(return_value=isatty))
if no_stdin:
monkeypatch.setattr(sys, 'stdin', None)
assert is_console_interactive() is expected
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册