The usual
diff --git a/Lib/dos-8x3/test_pop.py b/Lib/dos-8x3/test_pop.py
index be79f3c..26ef9d9 100644
--- a/Lib/dos-8x3/test_pop.py
+++ b/Lib/dos-8x3/test_pop.py
@@ -3,15 +3,54 @@
    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 
+# like stdin can be read successfully by a forked
 # subprocess.
 
 def main():
-    from os import fork # skips test through ImportError
+    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()
 
-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()