diff -r 5e025dc7d728 Lib/test/test_webbrowser.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/test_webbrowser.py Sun Aug 12 17:31:28 2012 +0300 @@ -0,0 +1,88 @@ +import webbrowser +import subprocess +import unittest +from unittest import mock + + +class PopenMock(mock.MagicMock): + + def poll(self): + return 0 + + def wait(self, seconds=None): + return 0 + + @property + def cmd_line(self): + return self.call_args[0][0] + + +@mock.patch('subprocess.Popen', new_callable=PopenMock) +class CommandTest(unittest.TestCase): + + def assert_unix_browser(self, browser_class, args, noraise_args=None, + tab_args=None, new_args=None): + URL = 'http://www.example.com/' + NAME = 'test' + browser = browser_class(name=NAME) + popen = subprocess.Popen + + browser.open(URL) + self.assertEqual(popen.cmd_line, args) + + if noraise_args is not None: + browser.open(URL, autoraise=False) + self.assertEqual(popen.cmd_line, noraise_args) + + if tab_args is not None: + browser.open_new_tab(URL) + self.assertEqual(popen.cmd_line, tab_args) + + if new_args is not None: + browser.open_new(URL) + self.assertEqual(popen.cmd_line, new_args) + + def test_generic(self, popen): + args = ['test', 'http://www.example.com/'] + self.assert_unix_browser(webbrowser.GenericBrowser, args) + + def test_background(self, popen): + args = ['test', 'http://www.example.com/'] + self.assert_unix_browser(webbrowser.BackgroundBrowser, args) + + def test_chrome(self, popen): + args = tab_args = ['test', 'http://www.example.com/'] + new_args = ['test', '--new-window', 'http://www.example.com/'] + self.assert_unix_browser(webbrowser.Chrome, args, None, tab_args, new_args) + + def test_mozilla(self, popen): + args = ['test', '-raise', '-remote', 'openURL(http://www.example.com/)'] + noraise_args = ['test', '-noraise', '-remote', 'openURL(http://www.example.com/)'] + tab_args = ['test', '-raise', '-remote', 'openURL(http://www.example.com/,new-tab)'] + new_args = ['test', '-raise', '-remote', 'openURL(http://www.example.com/,new-window)'] + self.assert_unix_browser(webbrowser.Mozilla, args, noraise_args, tab_args, new_args) + + def test_galeon(self, popen): + args = ['test', '-n', 'http://www.example.com/'] + noraise_args = ['test', '-noraise', '-n', 'http://www.example.com/'] + tab_args = ['test', '-w', 'http://www.example.com/'] + new_args = ['test', '-w', 'http://www.example.com/'] + self.assert_unix_browser(webbrowser.Galeon, args, noraise_args, tab_args, new_args) + + def test_opera(self, popen): + args = ['test', '-remote', 'openURL(http://www.example.com/)'] + noraise_args = ['test', '-noraise', '-remote', 'openURL(http://www.example.com/)'] + tab_args = ['test', '-remote', 'openURL(http://www.example.com/,new-page)'] + new_args =['test', '-remote', 'openURL(http://www.example.com/,new-window)'] + self.assert_unix_browser(webbrowser.Opera, args, noraise_args, tab_args, new_args) + + def test_elinks(self, popen): + args = ['test', '-remote', 'openURL(http://www.example.com/)'] + noraise_args = ['test', '-remote', 'openURL(http://www.example.com/)'] + tab_args = ['test', '-remote', 'openURL(http://www.example.com/,new-tab)'] + new_args = ['test', '-remote', 'openURL(http://www.example.com/,new-window)'] + self.assert_unix_browser(webbrowser.Elinks, args, noraise_args, tab_args, new_args) + + +if __name__ == '__main__': + unittest.main()