From 66e7363c10f5e83e4642c7c929f8f45bb660565b Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Mon, 21 Jan 2008 10:24:59 +0000 Subject: [PATCH] #1269: fix a bug in pstats.add_callers() and add a unit test file for pstats. --- Lib/pstats.py | 3 ++- Lib/test/test_pstats.py | 26 ++++++++++++++++++++++++++ Misc/NEWS | 3 +++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 Lib/test/test_pstats.py diff --git a/Lib/pstats.py b/Lib/pstats.py index bdbb27e048d..adaac5cee10 100644 --- a/Lib/pstats.py +++ b/Lib/pstats.py @@ -512,7 +512,8 @@ def add_callers(target, source): new_callers[func] = caller for func, caller in source.iteritems(): if func in new_callers: - new_callers[func] = caller + new_callers[func] + new_callers[func] = tuple([i[0] + i[1] for i in + zip(caller, new_callers[func])]) else: new_callers[func] = caller return new_callers diff --git a/Lib/test/test_pstats.py b/Lib/test/test_pstats.py new file mode 100644 index 00000000000..660316b19f0 --- /dev/null +++ b/Lib/test/test_pstats.py @@ -0,0 +1,26 @@ +import unittest +from test import test_support +import pstats + + + +class AddCallersTestCase(unittest.TestCase): + """Tests for pstats.add_callers helper.""" + + def test_combine_results(self): + """pstats.add_callers should combine the call results of both target + and source by adding the call time. See issue1269.""" + 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)}) + + +def test_main(): + test_support.run_unittest( + AddCallersTestCase + ) + + +if __name__ == "__main__": + test_main() diff --git a/Misc/NEWS b/Misc/NEWS index 98f4a22b523..e6084787e08 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -369,6 +369,9 @@ Core and builtins Library ------- +- #1269: fix a bug in pstats.add_callers() and add a unit test file for + pstats. + - #1669: don't allow shutil.rmtree() to be called on a symlink to a directory.