diff options
author | Tim Peters <tim.peters@gmail.com> | 2000-09-01 20:38:55 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2000-09-01 20:38:55 (GMT) |
commit | 3620857d60e000300d5fa475fa9404bc535b536f (patch) | |
tree | e444cdfcc631ba5f37883a183781070791a1e6f1 | |
parent | f4a090d57953e69a2bb79230751e25690915d2df (diff) | |
download | cpython-3620857d60e000300d5fa475fa9404bc535b536f.zip cpython-3620857d60e000300d5fa475fa9404bc535b536f.tar.gz cpython-3620857d60e000300d5fa475fa9404bc535b536f.tar.bz2 |
The "more" cmd varies across Windows flavors, sometimes adding stray
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.
-rw-r--r-- | Lib/popen2.py | 23 | ||||
-rw-r--r-- | Lib/test/test_popen2.py | 23 |
2 files changed, 32 insertions, 14 deletions
diff --git a/Lib/popen2.py b/Lib/popen2.py index e0f2880..64c34d4 100644 --- a/Lib/popen2.py +++ b/Lib/popen2.py @@ -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__': diff --git a/Lib/test/test_popen2.py b/Lib/test/test_popen2.py index 26ef9d9..1215847 100644 --- a/Lib/test/test_popen2.py +++ b/Lib/test/test_popen2.py @@ -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() |