From 48dacc69a2d6867579c9a6296815f704bc5fb194 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Wed, 11 Jul 2001 21:43:42 +0000 Subject: SF patch #440144: Tests and minor bugfix for uu module. New test_uu.py from Nick Mathewson, fiddled to work on Windows too. Somebody should check that it still works on non-Windows boxes, though! --- Lib/test/test_sundry.py | 1 - Lib/test/test_uu.py | 124 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 Lib/test/test_uu.py diff --git a/Lib/test/test_sundry.py b/Lib/test/test_sundry.py index b1a339f..f2a4c76 100644 --- a/Lib/test/test_sundry.py +++ b/Lib/test/test_sundry.py @@ -96,7 +96,6 @@ import urllib2 # Can't test the "user" module -- if the user has a ~/.pythonrc.py, it # can screw up all sorts of things (esp. if it prints!). #import user -import uu import webbrowser import whichdb import xdrlib diff --git a/Lib/test/test_uu.py b/Lib/test/test_uu.py new file mode 100644 index 0000000..503976a --- /dev/null +++ b/Lib/test/test_uu.py @@ -0,0 +1,124 @@ +""" +Tests for uu module. +Nick Mathewson +""" + +from test_support import verify, TestFailed, verbose, TESTFN +import sys, os +import uu +from StringIO import StringIO + +teststr = "The smooth-scaled python crept over the sleeping dog\n" +expected = """\ +M5&AE('-M;V]T:\"US8V%L960@<'ET:&]N(&-R97!T(&]V97(@=&AE('-L965P +(:6YG(&1O9PH """ +encoded1 = "begin 666 t1\n"+expected+"\n \nend\n" +if verbose: + print '1. encode file->file' +inp = StringIO(teststr) +out = StringIO() +uu.encode(inp, out, "t1") +verify(out.getvalue() == encoded1) +inp = StringIO(teststr) +out = StringIO() +uu.encode(inp, out, "t1", 0644) +verify(out.getvalue() == "begin 644 t1\n"+expected+"\n \nend\n") + +if verbose: + print '2. decode file->file' +inp = StringIO(encoded1) +out = StringIO() +uu.decode(inp, out) +verify(out.getvalue() == teststr) +inp = StringIO("""UUencoded files may contain many lines, + even some that have 'begin' in them.\n"""+encoded1) +out = StringIO() +uu.decode(inp, out) +verify(out.getvalue() == teststr) + +stdinsave = sys.stdin +stdoutsave = sys.stdout +try: + if verbose: + print '3. encode stdin->stdout' + sys.stdin = StringIO(teststr) + sys.stdout = StringIO() + uu.encode("-", "-", "t1", 0666) + verify(sys.stdout.getvalue() == encoded1) + if verbose: + print >>stdoutsave, '4. decode stdin->stdout' + sys.stdin = StringIO(encoded1) + sys.stdout = StringIO() + uu.decode("-", "-") + verify(sys.stdout.getvalue() == teststr) +finally: + sys.stdin = stdinsave + sys.stdout = stdoutsave + +if verbose: + print '5. encode file->file' +tmpIn = TESTFN + "i" +tmpOut = TESTFN + "o" +try: + fin = open(tmpIn, 'w') + fin.write(teststr) + fin.close() + + fin = open(tmpIn, 'r') + fout = open(tmpOut, 'w') + uu.encode(fin, fout, tmpIn, mode=0644) + fin.close() + fout.close() + + fout = open(tmpOut, 'r') + s = fout.read() + fout.close() + verify(s == 'begin 644 ' + tmpIn + '\n' + expected + '\n \nend\n') + + os.unlink(tmpIn) + if verbose: + print '6. decode file-> file' + uu.decode(tmpOut) + fin = open(tmpIn, 'r') + s = fin.read() + fin.close() + verify(s == teststr) + # XXX is there an xp way to verify the mode? + +finally: + try: + fin.close() + except: + pass + try: + fout.close() + except: + pass + try: + os.unlink(tmpIn) + except: + pass + try: + os.unlink(tmpOut) + except: + pass + +if verbose: + print '7. error: truncated input' +inp = StringIO("begin 644 t1\n"+expected) +out = StringIO() +try: + uu.decode(inp, out) + raise TestFailed("No exception thrown") +except uu.Error, e: + verify(str(e) == 'Truncated input file') + +if verbose: + print '8. error: missing begin' +inp = StringIO("") +out = StringIO() +try: + uu.decode(inp, out) + raise TestFailed("No exception thrown") +except uu.Error, e: + verify(str(e) == 'No valid begin line found in input file') -- cgit v0.12