diff options
| author | Antoine Pitrou <solipsis@pitrou.net> | 2009-05-30 21:43:48 (GMT) |
|---|---|---|
| committer | Antoine Pitrou <solipsis@pitrou.net> | 2009-05-30 21:43:48 (GMT) |
| commit | 6987d541160ae69f896d0344f47230cbb12914e4 (patch) | |
| tree | 28d9a025e4912f35c5edde16f89deb49d5d32f2e /Lib/test/test_profile.py | |
| parent | 7e9d75a91d0127bbe2deb9f03f23895a9d77d19d (diff) | |
| download | cpython-6987d541160ae69f896d0344f47230cbb12914e4.zip cpython-6987d541160ae69f896d0344f47230cbb12914e4.tar.gz cpython-6987d541160ae69f896d0344f47230cbb12914e4.tar.bz2 | |
Merged revisions 73064-73065 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r73064 | antoine.pitrou | 2009-05-30 23:27:00 +0200 (sam., 30 mai 2009) | 4 lines
Issue #5330: C functions called with keyword arguments were not reported by
the various profiling modules (profile, cProfile). Patch by Hagen Fürstenau.
........
r73065 | antoine.pitrou | 2009-05-30 23:39:25 +0200 (sam., 30 mai 2009) | 3 lines
The test for #5330 wasn't correct.
........
Diffstat (limited to 'Lib/test/test_profile.py')
| -rwxr-xr-x | Lib/test/test_profile.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/test/test_profile.py b/Lib/test/test_profile.py index 0bd2530..0016d51 100755 --- a/Lib/test/test_profile.py +++ b/Lib/test/test_profile.py @@ -16,6 +16,7 @@ class ProfileTest(unittest.TestCase): profilerclass = profile.Profile methodnames = ['print_stats', 'print_callers', 'print_callees'] expected_output = {} + expected_list_sort_output = ':0(sort)' @classmethod def do_profiling(cls): @@ -40,6 +41,25 @@ class ProfileTest(unittest.TestCase): "Stats.%s output for %s doesn't fit expectation!" % (method, self.profilerclass.__name__)) + def test_calling_conventions(self): + # Issue #5330: profile and cProfile wouldn't report C functions called + # with keyword arguments. We test all calling conventions. + stmts = [ + "[].sort()", + "[].sort(reverse=True)", + "[].sort(*(None, None, True))", + "[].sort(**dict(reverse=True))", + ] + for stmt in stmts: + s = StringIO() + prof = self.profilerclass(timer, 0.001) + prof.runctx(stmt, globals(), locals()) + stats = pstats.Stats(prof, stream=s) + stats.print_stats() + res = s.getvalue() + self.assertTrue(self.expected_list_sort_output in res, + "Profiling {0!r} didn't report list.sort:\n{1}".format(stmt, res)) + def regenerate_expected_output(filename, cls): filename = filename.rstrip('co') |
