mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 d854f3b3cc
			
		
	
	
		d854f3b3cc
		
	
	
	
	
		
			
			The test function's signature should be
    test(methodname, input, output, *args)
but the output argument was omitted.  This caused all tests to fail,
because the expected output was passed as the initial argument to the
method call.  But because of the way the test works (it compares the
results for a regular string to the results for a UserString instance
with the same value, and it's OK if both raise the same exception) the
test never failed!
I've fixed this, and also cleaned up a few warts in the verbose
output.  Finally, I've made it possible to run the test stand-alone in
verbose mode by passing -v as a command line argument.
Now, the test will report failure related to zfill.  That's not my
fault, that's a legitimate problem: the string_tests.py file contains
a test for the zfill() method (just added) but this method is not
implemented.  The responsible party will surely fix this soon now.
		
	
			
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env python
 | |
| import sys
 | |
| from test_support import verbose
 | |
| 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)
 |