]> granicus.if.org Git - python/commitdiff
The "more" cmd varies across Windows flavors, sometimes adding stray
authorTim Peters <tim.peters@gmail.com>
Fri, 1 Sep 2000 20:38:55 +0000 (20:38 +0000)
committerTim Peters <tim.peters@gmail.com>
Fri, 1 Sep 2000 20:38:55 +0000 (20:38 +0000)
newlines at the start or end.  Fiddle test_popen2 and popen2._test() to
tolerate this.  Also change all "assert"s in these tests to raise
explicit exceptions, so that python -O doesn't render them useless.
Also, in case of error, make the msg display the reprs of what we
wrote and what we read, so we can tell exactly why it's failing.

Lib/popen2.py
Lib/test/test_popen2.py

index e0f2880e7562dc847e42b38a7c6ed5d60e2d8cde..64c34d4cb501630d0b57d1ce378b593d5c076e99 100644 (file)
@@ -143,16 +143,20 @@ else:
 
 def _test():
     cmd  = "cat"
-    teststr = "abc\n"
-    resultstr = teststr
+    teststr = "ab cd\n"
     if os.name == "nt":
         cmd = "more"
-        resultstr = "\n" + resultstr
+    # "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()
     print "testing popen2..."
     r, w = popen2(cmd)
     w.write(teststr)
     w.close()
-    assert r.read() == resultstr
+    got = r.read()
+    if got.strip() != expected:
+        raise ValueError("wrote %s read %s" % (`teststr`, `got`))
     print "testing popen3..."
     try:
         r, w, e = popen3([cmd])
@@ -160,11 +164,16 @@ def _test():
         r, w, e = popen3(cmd)
     w.write(teststr)
     w.close()
-    assert r.read() == resultstr
-    assert e.read() == ""
+    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`)
     for inst in _active[:]:
         inst.wait()
-    assert not _active
+    if _active:
+        raise ValueError("_active not empty")
     print "All OK"
 
 if __name__ == '__main__':
index 26ef9d933ede0bac8261cd0286bc83d956822b62..1215847bbcd45a40784e4c8c3601cac8219f99a9 100644 (file)
@@ -28,16 +28,20 @@ def _test():
     print "Testing os module:"
     import popen2
     cmd  = "cat"
-    teststr = "abc\n"
-    resultstr = teststr
+    teststr = "ab cd\n"
     if os.name == "nt":
         cmd = "more"
-        resultstr = "\n" + resultstr
+    # "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()
     print "testing popen2..."
     w, r = os.popen2(cmd)
     w.write(teststr)
     w.close()
-    assert r.read() == resultstr
+    got = r.read()
+    if got.strip() != expected:
+        raise ValueError("wrote %s read %s" % (`teststr`, `got`))
     print "testing popen3..."
     try:
         w, r, e = os.popen3([cmd])
@@ -45,11 +49,16 @@ def _test():
         w, r, e = os.popen3(cmd)
     w.write(teststr)
     w.close()
-    assert r.read() == resultstr
-    assert e.read() == ""
+    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`)
     for inst in popen2._active[:]:
         inst.wait()
-    assert not popen2._active
+    if popen2._active:
+        raise ValueError("_active not empty")
     print "All OK"
 
 main()