cpython/Lib/dos-8x3/test_pop.py

66 lines
1.7 KiB
Python
Raw Normal View History

1999-04-08 20:27:54 +00:00
#! /usr/bin/env python
"""Test script for popen2.py
Christian Tismer
"""
2000-09-01 19:25:51 +00:00
import os
1999-04-08 20:27:54 +00:00
# popen2 contains its own testing routine
# which is especially useful to see if open files
2000-09-01 19:25:51 +00:00
# like stdin can be read successfully by a forked
1999-04-08 20:27:54 +00:00
# subprocess.
def main():
2000-09-01 19:25:51 +00:00
print "Test popen2 module:"
try:
from os import popen
except ImportError:
# if we don't have os.popen, check that
# we have os.fork. if not, skip the test
# (by raising an ImportError)
from os import fork
1999-04-08 20:27:54 +00:00
import popen2
popen2._test()
2000-09-01 19:25:51 +00:00
def _test():
# same test as popen2._test(), but using the os.popen*() API
print "Testing os module:"
import popen2
cmd = "cat"
2000-09-05 04:49:50 +00:00
teststr = "ab cd\n"
2000-09-01 19:25:51 +00:00
if os.name == "nt":
cmd = "more"
2000-09-05 04:49:50 +00:00
# "more" doesn't act the same way across Windows flavors,
# sometimes adding an extra newline at the start or the
# end. So we strip whitespace off both ends for comparison.
expected = teststr.strip()
2000-09-01 19:25:51 +00:00
print "testing popen2..."
w, r = os.popen2(cmd)
w.write(teststr)
w.close()
2000-09-05 04:49:50 +00:00
got = r.read()
if got.strip() != expected:
raise ValueError("wrote %s read %s" % (`teststr`, `got`))
2000-09-01 19:25:51 +00:00
print "testing popen3..."
try:
w, r, e = os.popen3([cmd])
except:
w, r, e = os.popen3(cmd)
w.write(teststr)
w.close()
2000-09-05 04:49:50 +00:00
got = r.read()
if got.strip() != expected:
raise ValueError("wrote %s read %s" % (`teststr`, `got`))
got = e.read()
if got:
raise ValueError("unexected %s on stderr" % `got`)
2000-09-01 19:25:51 +00:00
for inst in popen2._active[:]:
inst.wait()
2000-09-05 04:49:50 +00:00
if popen2._active:
raise ValueError("_active not empty")
2000-09-01 19:25:51 +00:00
print "All OK"
main()
_test()