Skip to content

Commit

Permalink
Fix crash when sys.stdin is None (#7118)
Browse files Browse the repository at this point in the history
  • Loading branch information
pradyunsg authored Oct 2, 2019
2 parents 2ac112d + 5089b84 commit e6f69fa
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 2 deletions.
1 change: 1 addition & 0 deletions news/7118.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix a crash when ``sys.stdin`` is set to ``None``, such as on AWS Lambda.
1 change: 1 addition & 0 deletions news/7119.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix a crash when ``sys.stdin`` is set to ``None``, such as on AWS Lambda.
7 changes: 7 additions & 0 deletions src/pip/_internal/utils/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
4 changes: 2 additions & 2 deletions src/pip/_internal/vcs/subversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
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,
)
Expand Down Expand Up @@ -188,7 +188,7 @@ def is_commit_id_equal(cls, dest, name):
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
Expand Down
16 changes: 16 additions & 0 deletions tests/unit/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
get_prog,
hide_url,
hide_value,
is_console_interactive,
normalize_path,
normalize_version_info,
parse_netloc,
Expand Down Expand Up @@ -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

0 comments on commit e6f69fa

Please sign in to comment.