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 21:57:59 2012 +0300 @@ -0,0 +1,118 @@ +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 + + +@mock.patch('subprocess.Popen', new_callable=PopenMock) +class CommandTest(unittest.TestCase): + + URL = 'http://www.example.com/' + NAME = 'test' + + @property + def cmd_line(self): + return subprocess.Popen.call_args[0][0] + + def process_args(func): + def wrapper(self, browser_class, browser_args, *args, **kwargs): + # create an instance of the browser, insert the test url + # and the test browser name + browser = browser_class(name=self.NAME) + browser_args = [self.NAME] + \ + [arg.format(url=self.URL) for arg in browser_args] + func(self, browser, browser_args, *args, **kwargs) + return wrapper + + @process_args + def check_open(self, browser, args, autoraise=True): + browser.open(self.URL, autoraise=autoraise) + self.assertEqual(self.cmd_line, args) + + @process_args + def check_open_new(self, browser, args): + browser.open_new(self.URL) + self.assertEqual(self.cmd_line, args) + + @process_args + def check_open_new_tab(self, browser, args): + browser.open_new_tab(self.URL) + self.assertEqual(self.cmd_line, args) + + def test_generic(self, popen): + args = ['{url}'] + self.check_open(webbrowser.GenericBrowser, args) + + def test_background(self, popen): + args = ['{url}'] + self.check_open(webbrowser.BackgroundBrowser, args) + + def test_chrome(self, popen): + args = ['{url}'] + self.check_open(webbrowser.Chrome, args) + self.check_open(webbrowser.Chrome, args, autoraise=False) + self.check_open_new_tab(webbrowser.Chrome, args) + + new_args = ['--new-window', '{url}'] + self.check_open_new(webbrowser.Chrome, new_args) + + def test_mozilla(self, popen): + args = ['-raise', '-remote', 'openURL({url})'] + self.check_open(webbrowser.Mozilla, args) + + noraise_args = ['-noraise', '-remote', 'openURL({url})'] + self.check_open(webbrowser.Mozilla, noraise_args, autoraise=False) + + tab_args = ['-raise', '-remote', 'openURL({url},new-tab)'] + self.check_open_new_tab(webbrowser.Mozilla, tab_args) + + new_args = ['-raise', '-remote', 'openURL({url},new-window)'] + self.check_open_new(webbrowser.Mozilla, new_args) + + def test_galeon(self, popen): + args = ['-n', '{url}'] + self.check_open(webbrowser.Galeon, args) + + noraise_args = ['-noraise', '-n', '{url}'] + self.check_open(webbrowser.Galeon, noraise_args, autoraise=False) + + tab_args = ['-w', '{url}'] + self.check_open_new_tab(webbrowser.Galeon, tab_args) + self.check_open_new(webbrowser.Galeon, tab_args) + + def test_opera(self, popen): + args = ['-remote', 'openURL({url})'] + self.check_open(webbrowser.Opera, args) + + noraise_args = ['-noraise', '-remote', 'openURL({url})'] + self.check_open(webbrowser.Opera, noraise_args, autoraise=False) + + tab_args = ['-remote', 'openURL({url},new-page)'] + self.check_open_new_tab(webbrowser.Opera, tab_args) + + new_args = ['-remote', 'openURL({url},new-window)'] + self.check_open_new(webbrowser.Opera, new_args) + + def test_elinks(self, popen): + args = ['-remote', 'openURL({url})'] + self.check_open(webbrowser.Elinks, args) + self.check_open(webbrowser.Elinks, args, autoraise=False) + + tab_args = ['-remote', 'openURL({url},new-tab)'] + self.check_open_new_tab(webbrowser.Elinks, tab_args) + + new_args = ['-remote', 'openURL({url},new-window)'] + self.check_open_new(webbrowser.Elinks, new_args) + + +if __name__ == '__main__': + unittest.main()