| #! /usr/bin/env python |
| """Test script for popen2.py |
| Christian Tismer |
| """ |
| |
| import os |
| |
| # popen2 contains its own testing routine |
| # which is especially useful to see if open files |
| # like stdin can be read successfully by a forked |
| # subprocess. |
| |
| def main(): |
| 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 |
| import popen2 |
| popen2._test() |
| |
| |
| def _test(): |
| # same test as popen2._test(), but using the os.popen*() API |
| print "Testing os module:" |
| import popen2 |
| cmd = "cat" |
| teststr = "abc\n" |
| resultstr = teststr |
| if os.name == "nt": |
| cmd = "more" |
| resultstr = "\n" + resultstr |
| print "testing popen2..." |
| w, r = os.popen2(cmd) |
| w.write(teststr) |
| w.close() |
| assert r.read() == resultstr |
| print "testing popen3..." |
| try: |
| w, r, e = os.popen3([cmd]) |
| except: |
| w, r, e = os.popen3(cmd) |
| w.write(teststr) |
| w.close() |
| assert r.read() == resultstr |
| assert e.read() == "" |
| for inst in popen2._active[:]: |
| inst.wait() |
| assert not popen2._active |
| print "All OK" |
| |
| main() |
| _test() |