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