blob: 26ef9d933ede0bac8261cd0286bc83d956822b62 [file] [log] [blame]
Guido van Rossum59e4f371999-03-11 13:26:23 +00001#! /usr/bin/env python
2"""Test script for popen2.py
3 Christian Tismer
4"""
5
Fred Drake31f182e2000-08-28 17:20:05 +00006import os
7
Guido van Rossum59e4f371999-03-11 13:26:23 +00008# popen2 contains its own testing routine
9# which is especially useful to see if open files
Fredrik Lundh9407e552000-07-27 07:42:43 +000010# like stdin can be read successfully by a forked
Guido van Rossum59e4f371999-03-11 13:26:23 +000011# subprocess.
12
13def main():
Fred Drake31f182e2000-08-28 17:20:05 +000014 print "Test popen2 module:"
Fredrik Lundh9407e552000-07-27 07:42:43 +000015 try:
16 from os import popen
17 except ImportError:
18 # if we don't have os.popen, check that
19 # we have os.fork. if not, skip the test
20 # (by raising an ImportError)
21 from os import fork
Guido van Rossum59e4f371999-03-11 13:26:23 +000022 import popen2
23 popen2._test()
24
Guido van Rossum59e4f371999-03-11 13:26:23 +000025
Fred Drake31f182e2000-08-28 17:20:05 +000026def _test():
27 # same test as popen2._test(), but using the os.popen*() API
28 print "Testing os module:"
29 import popen2
30 cmd = "cat"
31 teststr = "abc\n"
32 resultstr = teststr
33 if os.name == "nt":
34 cmd = "more"
35 resultstr = "\n" + resultstr
36 print "testing popen2..."
37 w, r = os.popen2(cmd)
38 w.write(teststr)
39 w.close()
40 assert r.read() == resultstr
41 print "testing popen3..."
42 try:
43 w, r, e = os.popen3([cmd])
44 except:
45 w, r, e = os.popen3(cmd)
46 w.write(teststr)
47 w.close()
48 assert r.read() == resultstr
49 assert e.read() == ""
50 for inst in popen2._active[:]:
51 inst.wait()
52 assert not popen2._active
53 print "All OK"
54
55main()
56_test()