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!
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 @@
 # 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')