diff options
author | Dave Jones <dave.jones@canonical.com> | 2022-08-23 23:51:44 +0100 |
---|---|---|
committer | Dave Jones <dave.jones@canonical.com> | 2022-08-23 23:51:44 +0100 |
commit | b14f156c7e5876e8e8472036d8115f8ff034eb88 (patch) | |
tree | a94bda5e698a0cfdfdd530d971ff01a3a87e5a78 | |
parent | acb017a97332c19a9295660fe87316926a8adc55 (diff) | |
download | pexpect-b14f156c7e5876e8e8472036d8115f8ff034eb88.tar.gz |
Ensure test_run.py works when system-wide bashrc produces output
The --rcfile option to bash does not prevent the system-wide
/etc/bash.bashrc script from running (contrary to the Debian man-page).
This causes test_run.py to fail when the system-wide script produces
output (as is the case in an Ubuntu image where the regular user belongs
to the "sudo" group and the system-wide script produces an informational
message about sudo usage).
Rather than rely on --rcfile, this patch changes the test to use --norc
(which does suppress the execution of the system-wide bashrc), and
changes PS1 via the inherited environment instead (this also slightly
simplifies the fixture setup too as tempfile is no longer required).
-rwxr-xr-x | tests/test_run.py | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/tests/test_run.py b/tests/test_run.py index f750fb2..baa6b49 100755 --- a/tests/test_run.py +++ b/tests/test_run.py @@ -22,7 +22,6 @@ PEXPECT LICENSE import pexpect import unittest import subprocess -import tempfile import sys import os from . import PexpectTestCase @@ -59,15 +58,10 @@ class RunFuncTestCase(PexpectTestCase.PexpectTestCase): prep_subprocess_out = staticmethod(lambda x: x) def setUp(self): - fd, self.rcfile = tempfile.mkstemp() - os.write(fd, b'PS1=GO: \n') - os.close(fd) + self.runenv = os.environ.copy() + self.runenv['PS1'] = 'GO:' super(RunFuncTestCase, self).setUp() - def tearDown(self): - os.unlink(self.rcfile) - super(RunFuncTestCase, self).tearDown() - def test_run_exit(self): (data, exitstatus) = self.runfunc(sys.executable + ' exit1.py', withexitstatus=1) assert exitstatus == 1, "Exit status of 'python exit1.py' should be 1." @@ -106,9 +100,10 @@ class RunFuncTestCase(PexpectTestCase.PexpectTestCase): ] (data, exitstatus) = pexpect.run( - 'bash --rcfile {0}'.format(self.rcfile), + 'bash --norc', withexitstatus=True, events=events, + env=self.runenv, timeout=10) assert exitstatus == 0 @@ -118,9 +113,10 @@ class RunFuncTestCase(PexpectTestCase.PexpectTestCase): ] (data, exitstatus) = pexpect.run( - 'bash --rcfile {0}'.format(self.rcfile), + 'bash --norc', withexitstatus=True, events=events, + env=self.runenv, timeout=10) assert exitstatus == 0 @@ -130,18 +126,20 @@ class RunFuncTestCase(PexpectTestCase.PexpectTestCase): ] (data, exitstatus) = pexpect.run( - 'bash --rcfile {0}'.format(self.rcfile), + 'bash --norc', withexitstatus=True, events=events, + env=self.runenv, timeout=10) assert exitstatus == 0 def test_run_event_typeerror(self): events = [('GO:', -1)] with self.assertRaises(TypeError): - pexpect.run('bash --rcfile {0}'.format(self.rcfile), + pexpect.run('bash --norc', withexitstatus=True, events=events, + env=self.runenv, timeout=10) def _method_events_callback(self, values): |