issue #481: add test.
This commit is contained in:
parent
fa0c25bb2d
commit
4506c528ca
|
@ -8,7 +8,12 @@ import sys
|
|||
os.environ['ORIGINAL_ARGV'] = json.dumps(sys.argv)
|
||||
os.environ['THIS_IS_STUB_SUDO'] = '1'
|
||||
|
||||
# This must be a child process and not exec() since Mitogen replaces its stderr
|
||||
# descriptor, causing the last user of the slave PTY to close it, resulting in
|
||||
# the master side indicating EIO.
|
||||
subprocess.check_call(sys.argv[sys.argv.index('--') + 1:])
|
||||
if os.environ.get('PREHISTORIC_SUDO'):
|
||||
# issue #481: old versions of sudo did in fact use execve, thus we must
|
||||
# have TTY handle preservation in core.py.
|
||||
os.execv(sys.executable, sys.argv[sys.argv.index('--') + 1:])
|
||||
else:
|
||||
# This must be a child process and not exec() since Mitogen replaces its
|
||||
# stderr descriptor, causing the last user of the slave PTY to close it,
|
||||
# resulting in the master side indicating EIO.
|
||||
subprocess.check_call(sys.argv[sys.argv.index('--') + 1:])
|
||||
|
|
|
@ -55,6 +55,15 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
|
|||
'--'
|
||||
])
|
||||
|
||||
def test_tty_preserved(self):
|
||||
# issue #481
|
||||
os.environ['PREHISTORIC_SUDO'] = '1'
|
||||
try:
|
||||
context, argv = self.run_sudo()
|
||||
self.assertEquals('1', context.call(os.getenv, 'PREHISTORIC_SUDO'))
|
||||
finally:
|
||||
del os.environ['PREHISTORIC_SUDO']
|
||||
|
||||
|
||||
class NonEnglishPromptTest(testlib.DockerMixin, testlib.TestCase):
|
||||
# Only mitogen/debian-test has a properly configured sudo.
|
||||
|
|
Loading…
Reference in New Issue