]> granicus.if.org Git - python/commitdiff
#14508: make gprof2html script runnable under python3
authorR David Murray <rdmurray@bitdance.com>
Wed, 11 Apr 2012 19:17:37 +0000 (15:17 -0400)
committerR David Murray <rdmurray@bitdance.com>
Wed, 11 Apr 2012 19:17:37 +0000 (15:17 -0400)
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).

1  2 
Lib/test/test_tools.py

index cfe13acc2df9bc008c36cf8eae6badea2bbe065a,cfe13acc2df9bc008c36cf8eae6badea2bbe065a..8ccabfbcfd8f5757c90070b7b9dd2e151191c722
@@@ -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)])