| 
									
										
										
										
											2008-01-21 11:20:28 +00:00
										 |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2008-05-20 21:35:26 +00:00
										 |  |  | from test import support | 
					
						
							| 
									
										
										
										
											2010-10-22 06:28:01 +00:00
										 |  |  | from io import StringIO | 
					
						
							| 
									
										
										
										
											2008-01-21 11:20:28 +00:00
										 |  |  | import pstats | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AddCallersTestCase(unittest.TestCase): | 
					
						
							|  |  |  |     """Tests for pstats.add_callers helper.""" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_combine_results(self): | 
					
						
							| 
									
										
										
										
											2010-10-22 06:28:01 +00:00
										 |  |  |         # pstats.add_callers should combine the call results of both target | 
					
						
							|  |  |  |         # and source by adding the call time. See issue1269. | 
					
						
							| 
									
										
										
										
											2010-08-02 17:24:49 +00:00
										 |  |  |         # new format: used by the cProfile module | 
					
						
							| 
									
										
										
										
											2008-01-21 11:20:28 +00:00
										 |  |  |         target = {"a": (1, 2, 3, 4)} | 
					
						
							|  |  |  |         source = {"a": (1, 2, 3, 4), "b": (5, 6, 7, 8)} | 
					
						
							|  |  |  |         new_callers = pstats.add_callers(target, source) | 
					
						
							|  |  |  |         self.assertEqual(new_callers, {'a': (2, 4, 6, 8), 'b': (5, 6, 7, 8)}) | 
					
						
							| 
									
										
										
										
											2010-08-02 17:24:49 +00:00
										 |  |  |         # old format: used by the profile module | 
					
						
							|  |  |  |         target = {"a": 1} | 
					
						
							|  |  |  |         source = {"a": 1, "b": 5} | 
					
						
							|  |  |  |         new_callers = pstats.add_callers(target, source) | 
					
						
							|  |  |  |         self.assertEqual(new_callers, {'a': 2, 'b': 5}) | 
					
						
							| 
									
										
										
										
											2008-01-21 11:20:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-22 06:28:01 +00:00
										 |  |  | class StatsTestCase(unittest.TestCase): | 
					
						
							|  |  |  |     def setUp(self): | 
					
						
							|  |  |  |         stats_file = support.findfile('pstats.pck') | 
					
						
							|  |  |  |         self.stats = pstats.Stats(stats_file) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_add(self): | 
					
						
							|  |  |  |         stream = StringIO() | 
					
						
							|  |  |  |         stats = pstats.Stats(stream=stream) | 
					
						
							|  |  |  |         stats.add(self.stats, self.stats) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-21 11:20:28 +00:00
										 |  |  | def test_main(): | 
					
						
							| 
									
										
										
										
											2008-05-20 21:35:26 +00:00
										 |  |  |     support.run_unittest( | 
					
						
							| 
									
										
										
										
											2010-10-22 06:28:01 +00:00
										 |  |  |         AddCallersTestCase, | 
					
						
							|  |  |  |         StatsTestCase, | 
					
						
							| 
									
										
										
										
											2008-01-21 11:20:28 +00:00
										 |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     test_main() |