1 # Copyright (C) 2010 Google Inc. All rights reserved. 2 # 3 # Redistribution and use in source and binary forms, with or without 4 # modification, are permitted provided that the following conditions are 5 # met: 6 # 7 # * Redistributions of source code must retain the above copyright 8 # notice, this list of conditions and the following disclaimer. 9 # * Redistributions in binary form must reproduce the above 10 # copyright notice, this list of conditions and the following disclaimer 11 # in the documentation and/or other materials provided with the 12 # distribution. 13 # * Neither the name of Google Inc. nor the names of its 14 # contributors may be used to endorse or promote products derived from 15 # this software without specific prior written permission. 16 # 17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 29 import os 30 import sys 31 import unittest 32 33 from webkitpy.common.system import outputcapture 34 from webkitpy.tool import mocktool 35 36 from webkitpy.layout_tests.port import chromium_win 37 from webkitpy.layout_tests.port import port_testcase 38 39 40 class ChromiumWinTest(port_testcase.PortTestCase): 41 class RegisterCygwinOption(object): 42 def __init__(self): 43 self.register_cygwin = True 44 self.results_directory = '/' 45 46 def setUp(self): 47 self.orig_platform = sys.platform 48 49 def tearDown(self): 50 sys.platform = self.orig_platform 51 self._port = None 52 53 def port_maker(self, platform): 54 if platform not in ('cygwin', 'win32'): 55 return None 56 return chromium_win.ChromiumWinPort 57 58 def _mock_path_from_chromium_base(self, *comps): 59 return self._port._filesystem.join("/chromium/src", *comps) 60 61 def test_setup_environ_for_server(self): 62 port = self.make_port() 63 if not port: 64 return 65 66 port._executive = mocktool.MockExecutive(should_log=True) 67 self._port = port 68 port.path_from_chromium_base = self._mock_path_from_chromium_base 69 output = outputcapture.OutputCapture() 70 orig_environ = os.environ.copy() 71 env = output.assert_outputs(self, port.setup_environ_for_server) 72 self.assertEqual(orig_environ["PATH"], os.environ["PATH"]) 73 self.assertNotEqual(env["PATH"], os.environ["PATH"]) 74 75 def test_setup_environ_for_server_register_cygwin(self): 76 port = self.make_port(options=ChromiumWinTest.RegisterCygwinOption()) 77 if not port: 78 return 79 80 port._executive = mocktool.MockExecutive(should_log=True) 81 port.path_from_chromium_base = self._mock_path_from_chromium_base 82 self._port = port 83 setup_mount = self._mock_path_from_chromium_base("third_party", 84 "cygwin", 85 "setup_mount.bat") 86 expected_stderr = "MOCK run_command: %s\n" % [setup_mount] 87 output = outputcapture.OutputCapture() 88 output.assert_outputs(self, port.setup_environ_for_server, 89 expected_stderr=expected_stderr) 90 91 def assert_name(self, port_name, windows_version, expected): 92 port = chromium_win.ChromiumWinPort(port_name=port_name, 93 windows_version=windows_version) 94 self.assertEquals(expected, port.name()) 95 96 def test_versions(self): 97 port = chromium_win.ChromiumWinPort() 98 self.assertTrue(port.name() in ('chromium-win-xp', 'chromium-win-vista', 'chromium-win-win7')) 99 100 self.assert_name(None, (5, 1), 'chromium-win-xp') 101 self.assert_name('chromium-win', (5, 1), 'chromium-win-xp') 102 self.assert_name('chromium-win-xp', (5, 1), 'chromium-win-xp') 103 self.assert_name('chromium-win-xp', (6, 0), 'chromium-win-xp') 104 self.assert_name('chromium-win-xp', (6, 1), 'chromium-win-xp') 105 106 self.assert_name(None, (6, 0), 'chromium-win-vista') 107 self.assert_name('chromium-win', (6, 0), 'chromium-win-vista') 108 self.assert_name('chromium-win-vista', (5, 1), 'chromium-win-vista') 109 self.assert_name('chromium-win-vista', (6, 0), 'chromium-win-vista') 110 self.assert_name('chromium-win-vista', (6, 1), 'chromium-win-vista') 111 112 self.assert_name(None, (6, 1), 'chromium-win-win7') 113 self.assert_name('chromium-win', (6, 1), 'chromium-win-win7') 114 self.assert_name('chromium-win-win7', (5, 1), 'chromium-win-win7') 115 self.assert_name('chromium-win-win7', (6, 0), 'chromium-win-win7') 116 self.assert_name('chromium-win-win7', (6, 1), 'chromium-win-win7') 117 118 self.assertRaises(KeyError, self.assert_name, None, (4, 0), 'chromium-win-xp') 119 self.assertRaises(KeyError, self.assert_name, None, (5, 0), 'chromium-win-xp') 120 self.assertRaises(KeyError, self.assert_name, None, (5, 2), 'chromium-win-xp') 121 self.assertRaises(KeyError, self.assert_name, None, (7, 1), 'chromium-win-xp') 122 123 def test_baseline_path(self): 124 port = chromium_win.ChromiumWinPort(port_name='chromium-win-xp') 125 self.assertEquals(port.baseline_path(), port._webkit_baseline_path('chromium-win-xp')) 126 127 port = chromium_win.ChromiumWinPort(port_name='chromium-win-vista') 128 self.assertEquals(port.baseline_path(), port._webkit_baseline_path('chromium-win-vista')) 129 130 port = chromium_win.ChromiumWinPort(port_name='chromium-win-win7') 131 self.assertEquals(port.baseline_path(), port._webkit_baseline_path('chromium-win')) 132 133 134 135 if __name__ == '__main__': 136 unittest.main() 137