mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +00:00 
			
		
		
		
	 48dacc69a2
			
		
	
	
		48dacc69a2
		
	
	
	
	
		
			
			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!
		
			
				
	
	
		
			124 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| 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')
 |