aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/pytest/py2/patches/05-support-readline.patch
diff options
context:
space:
mode:
authormaxim-yurchuk <maxim-yurchuk@yandex-team.com>2024-10-09 12:29:46 +0300
committermaxim-yurchuk <maxim-yurchuk@yandex-team.com>2024-10-09 13:14:22 +0300
commit9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80 (patch)
treea8fb3181d5947c0d78cf402aa56e686130179049 /contrib/python/pytest/py2/patches/05-support-readline.patch
parenta44b779cd359f06c3ebbef4ec98c6b38609d9d85 (diff)
downloadydb-9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80.tar.gz
publishFullContrib: true for ydb
<HIDDEN_URL> commit_hash:c82a80ac4594723cebf2c7387dec9c60217f603e
Diffstat (limited to 'contrib/python/pytest/py2/patches/05-support-readline.patch')
-rw-r--r--contrib/python/pytest/py2/patches/05-support-readline.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/contrib/python/pytest/py2/patches/05-support-readline.patch b/contrib/python/pytest/py2/patches/05-support-readline.patch
new file mode 100644
index 0000000000..51c6ee2bf4
--- /dev/null
+++ b/contrib/python/pytest/py2/patches/05-support-readline.patch
@@ -0,0 +1,69 @@
+--- contrib/python/pytest/py2/_pytest/debugging.py (index)
++++ contrib/python/pytest/py2/_pytest/debugging.py (working tree)
+@@ -4,6 +4,7 @@ from __future__ import absolute_import
+ from __future__ import division
+ from __future__ import print_function
+
++import os
+ import argparse
+ import pdb
+ import sys
+@@ -14,6 +15,42 @@ from _pytest import outcomes
+ from _pytest.config.exceptions import UsageError
+
+
++def import_readline():
++ try:
++ import readline
++ except ImportError:
++ sys.path.append('/usr/lib/python2.7/lib-dynload')
++
++ try:
++ import readline
++ except ImportError as e:
++ print('can not import readline:', e)
++
++ import subprocess
++ try:
++ subprocess.check_call('stty icrnl'.split())
++ except OSError as e:
++ print('can not restore Enter, use Control+J:', e)
++
++
++def tty():
++ if os.isatty(1):
++ return
++
++ fd = os.open('/dev/tty', os.O_RDWR)
++ os.dup2(fd, 0)
++ os.dup2(fd, 1)
++ os.dup2(fd, 2)
++ os.close(fd)
++
++ old_sys_path = sys.path
++ sys.path = list(sys.path)
++ try:
++ import_readline()
++ finally:
++ sys.path = old_sys_path
++
++
+ def _validate_usepdb_cls(value):
+ """Validate syntax of --pdbcls option."""
+ try:
+@@ -249,6 +286,7 @@ class pytestPDB(object):
+ @classmethod
+ def set_trace(cls, *args, **kwargs):
+ """Invoke debugging via ``Pdb.set_trace``, dropping any IO capturing."""
++ tty()
+ frame = sys._getframe().f_back
+ _pdb = cls._init_pdb("set_trace", *args, **kwargs)
+ _pdb.set_trace(frame)
+@@ -262,6 +300,7 @@ class PdbInvoke(object):
+ out, err = capman.read_global_capture()
+ sys.stdout.write(out)
+ sys.stdout.write(err)
++ tty()
+ _enter_pdb(node, call.excinfo, report)
+
+ def pytest_internalerror(self, excrepr, excinfo):