17db96d56Sopenharmony_ci"""Tests for the gprof2html script in the Tools directory."""
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ciimport os
47db96d56Sopenharmony_ciimport sys
57db96d56Sopenharmony_ciimport unittest
67db96d56Sopenharmony_cifrom unittest import mock
77db96d56Sopenharmony_ciimport tempfile
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_cifrom test.test_tools import skip_if_missing, import_tool
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ciskip_if_missing()
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ciclass Gprof2htmlTests(unittest.TestCase):
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci    def setUp(self):
167db96d56Sopenharmony_ci        self.gprof = import_tool('gprof2html')
177db96d56Sopenharmony_ci        oldargv = sys.argv
187db96d56Sopenharmony_ci        def fixup():
197db96d56Sopenharmony_ci            sys.argv = oldargv
207db96d56Sopenharmony_ci        self.addCleanup(fixup)
217db96d56Sopenharmony_ci        sys.argv = []
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ci    def test_gprof(self):
247db96d56Sopenharmony_ci        # Issue #14508: this used to fail with a NameError.
257db96d56Sopenharmony_ci        with mock.patch.object(self.gprof, 'webbrowser') as wmock, \
267db96d56Sopenharmony_ci                tempfile.TemporaryDirectory() as tmpdir:
277db96d56Sopenharmony_ci            fn = os.path.join(tmpdir, 'abc')
287db96d56Sopenharmony_ci            open(fn, 'wb').close()
297db96d56Sopenharmony_ci            sys.argv = ['gprof2html', fn]
307db96d56Sopenharmony_ci            self.gprof.main()
317db96d56Sopenharmony_ci        self.assertTrue(wmock.open.called)
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ciif __name__ == '__main__':
357db96d56Sopenharmony_ci    unittest.main()
36