mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Addition of -b command line option to unittest for buffering stdout and stderr during test runs.
This commit is contained in:
		
							parent
							
								
									51f2f16ee3
								
							
						
					
					
						commit
						5637f04a94
					
				
					 5 changed files with 217 additions and 14 deletions
				
			
		|  | @ -68,12 +68,12 @@ class TestProgram(object): | |||
|     USAGE = USAGE_FROM_MODULE | ||||
| 
 | ||||
|     # defaults for testing | ||||
|     failfast = catchbreak = None | ||||
|     failfast = catchbreak = buffer = None | ||||
| 
 | ||||
|     def __init__(self, module='__main__', defaultTest=None, | ||||
|                  argv=None, testRunner=None, | ||||
|                  testLoader=loader.defaultTestLoader, exit=True, | ||||
|                  verbosity=1, failfast=None, catchbreak=None): | ||||
|                  verbosity=1, failfast=None, catchbreak=None, buffer=None): | ||||
|         if isinstance(module, basestring): | ||||
|             self.module = __import__(module) | ||||
|             for part in module.split('.')[1:]: | ||||
|  | @ -87,6 +87,7 @@ def __init__(self, module='__main__', defaultTest=None, | |||
|         self.failfast = failfast | ||||
|         self.catchbreak = catchbreak | ||||
|         self.verbosity = verbosity | ||||
|         self.buffer = buffer | ||||
|         self.defaultTest = defaultTest | ||||
|         self.testRunner = testRunner | ||||
|         self.testLoader = testLoader | ||||
|  | @ -111,9 +112,9 @@ def parseArgs(self, argv): | |||
|             return | ||||
| 
 | ||||
|         import getopt | ||||
|         long_opts = ['help', 'verbose', 'quiet', 'failfast', 'catch'] | ||||
|         long_opts = ['help', 'verbose', 'quiet', 'failfast', 'catch', 'buffer'] | ||||
|         try: | ||||
|             options, args = getopt.getopt(argv[1:], 'hHvqfc', long_opts) | ||||
|             options, args = getopt.getopt(argv[1:], 'hHvqfcb', long_opts) | ||||
|             for opt, value in options: | ||||
|                 if opt in ('-h','-H','--help'): | ||||
|                     self.usageExit() | ||||
|  | @ -129,6 +130,10 @@ def parseArgs(self, argv): | |||
|                     if self.catchbreak is None: | ||||
|                         self.catchbreak = True | ||||
|                     # Should this raise an exception if -c is not valid? | ||||
|                 if opt in ('-b','--buffer'): | ||||
|                     if self.buffer is None: | ||||
|                         self.buffer = True | ||||
|                     # Should this raise an exception if -b is not valid? | ||||
|             if len(args) == 0 and self.defaultTest is None: | ||||
|                 # createTests will load tests from self.module | ||||
|                 self.testNames = None | ||||
|  | @ -164,6 +169,10 @@ def _do_discovery(self, argv, Loader=loader.TestLoader): | |||
|             parser.add_option('-c', '--catch', dest='catchbreak', default=False, | ||||
|                               help='Catch ctrl-C and display results so far', | ||||
|                               action='store_true') | ||||
|         if self.buffer != False: | ||||
|             parser.add_option('-b', '--buffer', dest='buffer', default=False, | ||||
|                               help='Buffer stdout and stderr during tests', | ||||
|                               action='store_true') | ||||
|         parser.add_option('-s', '--start-directory', dest='start', default='.', | ||||
|                           help="Directory to start discovery ('.' default)") | ||||
|         parser.add_option('-p', '--pattern', dest='pattern', default='test*.py', | ||||
|  | @ -184,6 +193,8 @@ def _do_discovery(self, argv, Loader=loader.TestLoader): | |||
|             self.failfast = options.failfast | ||||
|         if self.catchbreak is None: | ||||
|             self.catchbreak = options.catchbreak | ||||
|         if self.buffer is None: | ||||
|             self.buffer = options.buffer | ||||
| 
 | ||||
|         if options.verbose: | ||||
|             self.verbosity = 2 | ||||
|  | @ -203,9 +214,10 @@ def runTests(self): | |||
|         if isinstance(self.testRunner, (type, types.ClassType)): | ||||
|             try: | ||||
|                 testRunner = self.testRunner(verbosity=self.verbosity, | ||||
|                                              failfast=self.failfast) | ||||
|                                              failfast=self.failfast, | ||||
|                                              buffer=self.buffer) | ||||
|             except TypeError: | ||||
|                 # didn't accept the verbosity or failfast arguments | ||||
|                 # didn't accept the verbosity, buffer or failfast arguments | ||||
|                 testRunner = self.testRunner() | ||||
|         else: | ||||
|             # it is assumed to be a TestRunner instance | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Michael Foord
						Michael Foord