From: R David Murray Date: Wed, 11 Apr 2012 19:17:37 +0000 (-0400) Subject: #14508: make gprof2html script runnable under python3 X-Git-Tag: v3.3.0a3~254 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ea169801e14712b9685f369fd41940a11cefcbd0;p=python #14508: make gprof2html script runnable under python3 Not that I haven't tested it to make sure it works, just that it can run against an empty source file. Initial patch by Popa.Claudiu. Here we also add a test (which uses mock, which is why I didn't check it in on 3.2). --- ea169801e14712b9685f369fd41940a11cefcbd0 diff --cc Lib/test/test_tools.py index cfe13acc2d,cfe13acc2d..8ccabfbcfd --- a/Lib/test/test_tools.py +++ b/Lib/test/test_tools.py @@@ -8,6 -8,6 +8,7 @@@ import o import sys import imp import unittest ++from unittest import mock import sysconfig import tempfile from test import support @@@ -40,7 -40,7 +41,7 @@@ class TestSundryScripts(unittest.TestCa # added for a script it should be added to the whitelist below. # scripts that have independent tests. -- whitelist = ['reindent.py'] ++ whitelist = ['reindent.py', 'pdeps.py', 'gprof2html'] # scripts that can't be imported without running blacklist = ['make_ctype.py'] # scripts that use windows-only modules @@@ -99,6 -99,6 +100,28 @@@ class PdepsTests(unittest.TestCase) self.pdeps.inverse({'a': []}) ++class Gprof2htmlTests(unittest.TestCase): ++ ++ def setUp(self): ++ path = os.path.join(scriptsdir, 'gprof2html.py') ++ self.gprof = imp.load_source('gprof2html', path) ++ oldargv = sys.argv ++ def fixup(): ++ sys.argv = oldargv ++ self.addCleanup(fixup) ++ sys.argv = [] ++ ++ def test_gprof(self): ++ # Issue #14508: this used to fail with an NameError. ++ with mock.patch.object(self.gprof, 'webbrowser') as wmock, \ ++ tempfile.TemporaryDirectory() as tmpdir: ++ fn = os.path.join(tmpdir, 'abc') ++ open(fn, 'w').close() ++ sys.argv = ['gprof2html', fn] ++ self.gprof.main() ++ self.assertTrue(wmock.open.called) ++ ++ def test_main(): support.run_unittest(*[obj for obj in globals().values() if isinstance(obj, type)])