mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
	
	
		
			63 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# helper module for test_runner.Test_TextTestRunner.test_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"""
							 | 
						||
| 
								 | 
							
								This module has a number of tests that raise different kinds of warnings.
							 | 
						||
| 
								 | 
							
								When the tests are run, the warnings are caught and their messages are printed
							 | 
						||
| 
								 | 
							
								to stdout.  This module also accepts an arg that is then passed to
							 | 
						||
| 
								 | 
							
								unittest.main to affect the behavior of warnings.
							 | 
						||
| 
								 | 
							
								Test_TextTestRunner.test_warnings executes this script with different
							 | 
						||
| 
								 | 
							
								combinations of warnings args and -W flags and check that the output is correct.
							 | 
						||
| 
								 | 
							
								See #10535.
							 | 
						||
| 
								 | 
							
								"""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import sys
							 | 
						||
| 
								 | 
							
								import unittest
							 | 
						||
| 
								 | 
							
								import warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def warnfun():
							 | 
						||
| 
								 | 
							
								    warnings.warn('rw', RuntimeWarning)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestWarnings(unittest.TestCase):
							 | 
						||
| 
								 | 
							
								    def test_other_unittest(self):
							 | 
						||
| 
								 | 
							
								        self.assertAlmostEqual(2+2, 4)
							 | 
						||
| 
								 | 
							
								        self.assertNotAlmostEqual(4+4, 2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # these warnings are normally silenced, but they are printed in unittest
							 | 
						||
| 
								 | 
							
								    def test_deprecation(self):
							 | 
						||
| 
								 | 
							
								        warnings.warn('dw', DeprecationWarning)
							 | 
						||
| 
								 | 
							
								        warnings.warn('dw', DeprecationWarning)
							 | 
						||
| 
								 | 
							
								        warnings.warn('dw', DeprecationWarning)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_import(self):
							 | 
						||
| 
								 | 
							
								        warnings.warn('iw', ImportWarning)
							 | 
						||
| 
								 | 
							
								        warnings.warn('iw', ImportWarning)
							 | 
						||
| 
								 | 
							
								        warnings.warn('iw', ImportWarning)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # user warnings should always be printed
							 | 
						||
| 
								 | 
							
								    def test_warning(self):
							 | 
						||
| 
								 | 
							
								        warnings.warn('uw')
							 | 
						||
| 
								 | 
							
								        warnings.warn('uw')
							 | 
						||
| 
								 | 
							
								        warnings.warn('uw')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # these warnings come from the same place; they will be printed
							 | 
						||
| 
								 | 
							
								    # only once by default or three times if the 'always' filter is used
							 | 
						||
| 
								 | 
							
								    def test_function(self):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        warnfun()
							 | 
						||
| 
								 | 
							
								        warnfun()
							 | 
						||
| 
								 | 
							
								        warnfun()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == '__main__':
							 | 
						||
| 
								 | 
							
								    with warnings.catch_warnings(record=True) as ws:
							 | 
						||
| 
								 | 
							
								        # if an arg is provided pass it to unittest.main as 'warnings'
							 | 
						||
| 
								 | 
							
								        if len(sys.argv) == 2:
							 | 
						||
| 
								 | 
							
								            unittest.main(exit=False, warnings=sys.argv.pop())
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								            unittest.main(exit=False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # print all the warning messages collected
							 | 
						||
| 
								 | 
							
								    for w in ws:
							 | 
						||
| 
								 | 
							
								        print(w.message)
							 |