Added os.popen2() and os.popen3() for non-Windows platforms.
diff --git a/Lib/test/test_popen2.py b/Lib/test/test_popen2.py
index f6359ce..26ef9d9 100644
--- a/Lib/test/test_popen2.py
+++ b/Lib/test/test_popen2.py
@@ -3,12 +3,15 @@
    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:
@@ -19,5 +22,35 @@
     import popen2
     popen2._test()
 
-main()
 
+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()