From b14f156c7e5876e8e8472036d8115f8ff034eb88 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 23 Aug 2022 23:51:44 +0100 Subject: 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). --- tests/test_run.py | 22 ++++++++++------------ 1 file 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): -- cgit v1.2.1