mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	 c35491ee3a
			
		
	
	
		c35491ee3a
		
	
	
	
	
		
			
			Closes SF Bug #592573 where inplace add mutated a UserString. Added unittests to verify the bug is cleared.
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env python
 | |
| import sys
 | |
| from test.test_support import verbose
 | |
| from test import string_tests
 | |
| # UserString is a wrapper around the native builtin string type.
 | |
| # UserString instances should behave similar to builtin string objects.
 | |
| # The test cases were in part derived from 'test_string.py'.
 | |
| from UserString import UserString
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     verbose = '-v' in sys.argv
 | |
| 
 | |
| tested_methods = {}
 | |
| 
 | |
| def test(methodname, input, output, *args):
 | |
|     global tested_methods
 | |
|     tested_methods[methodname] = 1
 | |
|     if verbose:
 | |
|         print '%r.%s(%s)' % (input, methodname, ", ".join(map(repr, args))),
 | |
|     u = UserString(input)
 | |
|     objects = [input, u, UserString(u)]
 | |
|     res = [""] * 3
 | |
|     for i in range(3):
 | |
|         object = objects[i]
 | |
|         try:
 | |
|             f = getattr(object, methodname)
 | |
|         except AttributeError:
 | |
|             f = None
 | |
|             res[i] = AttributeError
 | |
|         else:
 | |
|             try:
 | |
|                 res[i] = apply(f, args)
 | |
|             except:
 | |
|                 res[i] = sys.exc_type
 | |
|     if res[0] == res[1] == res[2] == output:
 | |
|         if verbose:
 | |
|             print 'yes'
 | |
|     else:
 | |
|         if verbose:
 | |
|             print 'no'
 | |
|         print (methodname, input, output, args, res[0], res[1], res[2])
 | |
| 
 | |
| string_tests.run_method_tests(test)
 | |
| string_tests.run_contains_tests(test)
 | |
| string_tests.run_inplace_tests(UserString)
 |