[Python-checkins] python/dist/src/Lib/test test_uu.py,1.5,1.6
doerwalter@users.sourceforge.net
doerwalter@users.sourceforge.net
Tue, 06 May 2003 01:57:43 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv18131/Lib/test
Modified Files:
test_uu.py
Log Message:
Port test_uu.py to PyUnit. From SF patch #662807.
Index: test_uu.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_uu.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** test_uu.py 9 Aug 2002 16:37:36 -0000 1.5
--- test_uu.py 6 May 2003 08:57:41 -0000 1.6
***************
*** 4,157 ****
"""
! from test.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, 'wb')
! fin.write(teststr)
! fin.close()
! fin = open(tmpIn, 'rb')
! 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, 'rb')
! 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')
! # Test to verify that decode() will refuse to overwrite an existing file
! outfile = TESTFN + "out"
! inp = StringIO('Here is a message to be uuencoded')
! out = StringIO()
! uu.encode(inp, out, outfile)
! out.seek(0)
! try:
! if verbose:
! print '9. decode w/file not exists is okay'
! uu.decode(out)
! if not os.path.exists(outfile):
! raise TestFailed('uudecode w/ out_file=None failed')
! fp = open(outfile)
! data = fp.read()
! fp.close()
! if data <> inp.getvalue():
! raise TestFailed('uudecode stored something weird')
! # Try to write it again, which should cause a failure
! if verbose:
! print '10. uudecode w/file exists fails'
! out.seek(0)
! try:
! uu.decode(out)
! except uu.Error:
! pass
! else:
! raise TestFailed('expected to get a "file exists" error')
! finally:
! try:
! os.unlink(outfile)
! except OSError:
! pass
--- 4,172 ----
"""
! import unittest
! from test import test_support
!
! import sys, os, uu, cStringIO
import uu
from StringIO import StringIO
! plaintext = "The smooth-scaled python crept over the sleeping dog\n"
!
! encodedtext = """\
M5&AE('-M;V]T:\"US8V%L960@<'ET:&]N(&-R97!T(&]V97(@=&AE('-L965P
(:6YG(&1O9PH """
! encodedtextwrapped = "begin %03o %s\n" + encodedtext.replace("%", "%%") + "\n \nend\n"
! class UUTest(unittest.TestCase):
! def test_encode(self):
! inp = cStringIO.StringIO(plaintext)
! out = cStringIO.StringIO()
! uu.encode(inp, out, "t1")
! self.assertEqual(out.getvalue(), encodedtextwrapped % (0666, "t1"))
! inp = cStringIO.StringIO(plaintext)
! out = cStringIO.StringIO()
! uu.encode(inp, out, "t1", 0644)
! self.assertEqual(out.getvalue(), encodedtextwrapped % (0644, "t1"))
! def test_decode(self):
! inp = cStringIO.StringIO(encodedtextwrapped % (0666, "t1"))
! out = cStringIO.StringIO()
! uu.decode(inp, out)
! self.assertEqual(out.getvalue(), plaintext)
! inp = cStringIO.StringIO(
! "UUencoded files may contain many lines,\n" +
! "even some that have 'begin' in them.\n" +
! encodedtextwrapped % (0666, "t1")
! )
! out = cStringIO.StringIO()
! uu.decode(inp, out)
! self.assertEqual(out.getvalue(), plaintext)
! def test_truncatedinput(self):
! inp = cStringIO.StringIO("begin 644 t1\n" + encodedtext)
! out = cStringIO.StringIO()
! try:
! uu.decode(inp, out)
! self.fail("No exception thrown")
! except uu.Error, e:
! self.assertEqual(str(e), "Truncated input file")
! def test_missingbegin(self):
! inp = cStringIO.StringIO("")
! out = cStringIO.StringIO()
! try:
! uu.decode(inp, out)
! self.fail("No exception thrown")
! except uu.Error, e:
! self.assertEqual(str(e), "No valid begin line found in input file")
! class UUStdIOTest(unittest.TestCase):
! def setUp(self):
! self.stdin = sys.stdin
! self.stdout = sys.stdout
! def tearDown(self):
! sys.stdin = self.stdin
! sys.stdout = self.stdout
! def test_encode(self):
! sys.stdin = cStringIO.StringIO(plaintext)
! sys.stdout = cStringIO.StringIO()
! uu.encode("-", "-", "t1", 0666)
! self.assertEqual(
! sys.stdout.getvalue(),
! encodedtextwrapped % (0666, "t1")
! )
!
! def test_decode(self):
! sys.stdin = cStringIO.StringIO(encodedtextwrapped % (0666, "t1"))
! sys.stdout = cStringIO.StringIO()
! uu.decode("-", "-")
! self.assertEqual(sys.stdout.getvalue(), plaintext)
!
! class UUFileTest(unittest.TestCase):
!
! def _kill(self, f):
! # close and remove file
! try:
! f.close()
! except (SystemExit, KeyboardInterrupt):
! raise
! except:
! pass
! try:
! os.unlink(f.name)
! except (SystemExit, KeyboardInterrupt):
! raise
! except:
! pass
!
! def setUp(self):
! self.tmpin = test_support.TESTFN + "i"
! self.tmpout = test_support.TESTFN + "o"
!
! def tearDown(self):
! del self.tmpin
! del self.tmpout
!
! def test_encode(self):
! try:
! fin = open(self.tmpin, 'wb')
! fin.write(plaintext)
! fin.close()
!
! fin = open(self.tmpin, 'rb')
! fout = open(self.tmpout, 'w')
! uu.encode(fin, fout, self.tmpin, mode=0644)
! fin.close()
! fout.close()
!
! fout = open(self.tmpout, 'r')
! s = fout.read()
! fout.close()
! self.assertEqual(s, encodedtextwrapped % (0644, self.tmpin))
! finally:
! self._kill(fin)
! self._kill(fout)
!
! def test_decode(self):
! try:
! f = open(self.tmpin, 'wb')
! f.write(encodedtextwrapped % (0644, self.tmpout))
! f.close()
!
! f = open(self.tmpin, 'rb')
! uu.decode(f)
! f.close()
!
! f = open(self.tmpout, 'r')
! s = f.read()
! f.close()
! self.assertEqual(s, plaintext)
! # XXX is there an xp way to verify the mode?
! finally:
! self._kill(f)
!
! def test_decodetwice(self):
! # Verify that decode() will refuse to overwrite an existing file
! try:
! f = cStringIO.StringIO(encodedtextwrapped % (0644, self.tmpout))
!
! f = open(self.tmpin, 'rb')
! uu.decode(f)
! f.close()
!
! f = open(self.tmpin, 'rb')
! self.assertRaises(uu.Error, uu.decode, f)
! f.close()
! finally:
! self._kill(f)
!
! def test_main():
! test_support.run_unittest(UUTest, UUStdIOTest, UUFileTest)
!
! if __name__=="__main__":
! test_main()