self.doCleanups()
support.reap_children()
- def assertStderrEqual(self, stderr, expected, msg=None):
- # In a debug build, stuff like "[6580 refs]" is printed to stderr at
- # shutdown time. That frustrates tests trying to check stderr produced
- # from a spawned Python process.
- actual = support.strip_python_stderr(stderr)
- # strip_python_stderr also strips whitespace, so we do too.
- expected = expected.strip()
- self.assertEqual(actual, expected, msg)
-
class PopenTestException(Exception):
pass
'import sys; sys.stderr.write("strawberry")'],
stderr=subprocess.PIPE)
with p:
- self.assertStderrEqual(p.stderr.read(), b"strawberry")
+ self.assertEqual(p.stderr.read(), b"strawberry")
def test_stderr_filedes(self):
# stderr is set to open file descriptor
stderr=d)
p.wait()
os.lseek(d, 0, 0)
- self.assertStderrEqual(os.read(d, 1024), b"strawberry")
+ self.assertEqual(os.read(d, 1024), b"strawberry")
def test_stderr_fileobj(self):
# stderr is set to open file object
stderr=tf)
p.wait()
tf.seek(0)
- self.assertStderrEqual(tf.read(), b"strawberry")
+ self.assertEqual(tf.read(), b"strawberry")
def test_stderr_redirect_with_no_stdout_redirect(self):
# test stderr=STDOUT while stdout=None (not set)
stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
#NOTE: stdout should get stderr from grandchild
- self.assertStderrEqual(stdout, b'42')
- self.assertStderrEqual(stderr, b'') # should be empty
+ self.assertEqual(stdout, b'42')
+ self.assertEqual(stderr, b'') # should be empty
self.assertEqual(p.returncode, 0)
def test_stdout_stderr_pipe(self):
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
with p:
- self.assertStderrEqual(p.stdout.read(), b"appleorange")
+ self.assertEqual(p.stdout.read(), b"appleorange")
def test_stdout_stderr_file(self):
# capture stdout and stderr to the same open file
stderr=tf)
p.wait()
tf.seek(0)
- self.assertStderrEqual(tf.read(), b"appleorange")
+ self.assertEqual(tf.read(), b"appleorange")
def test_stdout_filedes_of_stdout(self):
# stdout is set to 1 (#1531862).
stderr=subprocess.PIPE)
(stdout, stderr) = p.communicate()
self.assertEqual(stdout, None)
- self.assertStderrEqual(stderr, b"pineapple")
+ self.assertEqual(stderr, b"pineapple")
def test_communicate(self):
p = subprocess.Popen([sys.executable, "-c",
self.addCleanup(p.stdin.close)
(stdout, stderr) = p.communicate(b"banana")
self.assertEqual(stdout, b"banana")
- self.assertStderrEqual(stderr, b"pineapple")
+ self.assertEqual(stderr, b"pineapple")
def test_communicate_timeout(self):
p = subprocess.Popen([sys.executable, "-c",
# after it completes.
(stdout, stderr) = p.communicate()
self.assertEqual(stdout, "banana")
- self.assertStderrEqual(stderr.encode(), b"pineapple\npear\n")
+ self.assertEqual(stderr.encode(), b"pineapple\npear\n")
def test_communicate_timeout_large_output(self):
# Test an expiring timeout while the child is outputting lots of data.
p.stdin.write(b"banana")
(stdout, stderr) = p.communicate(b"split")
self.assertEqual(stdout, b"bananasplit")
- self.assertStderrEqual(stderr, b"")
+ self.assertEqual(stderr, b"")
def test_universal_newlines_and_text(self):
args = [
self.assertEqual("line1\nline2\nline3\nline4\nline5\n", stdout)
# Python debug build push something like "[42442 refs]\n"
# to stderr at exit of subprocess.
- # Don't use assertStderrEqual because it strips CR and LF from output.
self.assertTrue(stderr.startswith("eline2\neline6\neline7\n"))
def test_universal_newlines_communicate_encodings(self):
def test_kill(self):
p = self._kill_process('kill')
_, stderr = p.communicate()
- self.assertStderrEqual(stderr, b'')
+ self.assertEqual(stderr, b'')
self.assertEqual(p.wait(), -signal.SIGKILL)
def test_terminate(self):
p = self._kill_process('terminate')
_, stderr = p.communicate()
- self.assertStderrEqual(stderr, b'')
+ self.assertEqual(stderr, b'')
self.assertEqual(p.wait(), -signal.SIGTERM)
def test_send_signal_dead(self):
stdin=stdin,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE).communicate()
- err = support.strip_python_stderr(err)
- self.assertEqual((out, err), (b'apple', b'orange'))
+ self.assertEqual(out, b'apple')
+ self.assertEqual(err, b'orange')
finally:
self._restore_fds(saved_fds)
os.lseek(fd, 0, 0)
out = os.read(temp_fds[2], 1024)
- err = support.strip_python_stderr(os.read(temp_fds[0], 1024))
+ err = os.read(temp_fds[0], 1024).strip()
self.assertEqual(out, b"got STDIN")
self.assertEqual(err, b"err")
os.lseek(fd, 0, 0)
out = os.read(stdout_no, 1024)
- err = support.strip_python_stderr(os.read(stderr_no, 1024))
+ err = os.read(stderr_no, 1024).strip()
finally:
self._restore_fds(saved_fds)
p.stdout.read(1)
getattr(p, method)(*args)
_, stderr = p.communicate()
- self.assertStderrEqual(stderr, b'')
+ self.assertEqual(stderr, b'')
returncode = p.wait()
self.assertNotEqual(returncode, 0)
# This shouldn't raise even though the child is now dead
getattr(p, method)(*args)
_, stderr = p.communicate()
- self.assertStderrEqual(stderr, b'')
+ self.assertEqual(stderr, b'')
rc = p.wait()
self.assertEqual(rc, 42)
stdout=subprocess.PIPE,
stderr=subprocess.PIPE) as proc:
self.assertEqual(proc.stdout.read(), b"stdout")
- self.assertStderrEqual(proc.stderr.read(), b"stderr")
+ self.assertEqual(proc.stderr.read(), b"stderr")
self.assertTrue(proc.stdout.closed)
self.assertTrue(proc.stderr.closed)