1 # Copyright (C) 2014 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 unittest 30 31 from webkitpy.common.system.executive_mock import MockExecutive2 32 from webkitpy.common.system.systemhost_mock import MockSystemHost 33 from webkitpy.tool.mocktool import MockOptions 34 35 from webkitpy.layout_tests.models import test_run_results 36 from webkitpy.layout_tests.port import browser_test 37 from webkitpy.layout_tests.port import port_testcase 38 from webkitpy.layout_tests.port import browser_test_driver 39 40 41 class _BrowserTestTestCaseMixin(object): 42 43 def test_check_sys_deps(self): 44 port = self.make_port() 45 port._executive = MockExecutive2(exit_code=0) 46 self.assertEqual(port.check_sys_deps(needs_http=False), test_run_results.OK_EXIT_STATUS) 47 48 def test_driver_name_option(self): 49 self.assertTrue(self.make_port()._path_to_driver().endswith(self.driver_name_endswith)) 50 51 def test_default_timeout_ms(self): 52 self.assertEqual(self.make_port(options=MockOptions(configuration='Release')).default_timeout_ms(), 53 self.timeout_ms) 54 self.assertEqual(self.make_port(options=MockOptions(configuration='Debug')).default_timeout_ms(), 55 3 * self.timeout_ms) 56 57 def test_driver_type(self): 58 self.assertTrue(isinstance(self.make_port(options=MockOptions(driver_name='browser_tests')).create_driver(1), browser_test_driver.BrowserTestDriver)) 59 60 def test_layout_tests_dir(self): 61 self.assertTrue(self.make_port().layout_tests_dir().endswith('chrome/test/data/printing/layout_tests')) 62 63 def test_virtual_test_suites(self): 64 # The browser_tests port do not use virtual test suites, so we are just testing the stub. 65 port = self.make_port() 66 self.assertEqual(port.virtual_test_suites(), []) 67 68 69 class BrowserTestLinuxTest(_BrowserTestTestCaseMixin, port_testcase.PortTestCase): 70 port_name = 'linux' 71 port_maker = browser_test.BrowserTestLinuxPort 72 driver_name_endswith = 'browser_tests' 73 timeout_ms = 10 * 1000 74 75 76 class BrowserTestWinTest(_BrowserTestTestCaseMixin, port_testcase.PortTestCase): 77 port_name = 'win' 78 port_maker = browser_test.BrowserTestWinPort 79 os_name = 'win' 80 os_version = 'xp' 81 driver_name_endswith = 'browser_tests.exe' 82 timeout_ms = 20 * 1000 83 84 85 class BrowserTestMacTest(_BrowserTestTestCaseMixin, port_testcase.PortTestCase): 86 os_name = 'mac' 87 os_version = 'snowleopard' 88 port_name = 'mac' 89 port_maker = browser_test.BrowserTestMacPort 90 driver_name_endswith = 'browser_tests' 91 timeout_ms = 20 * 1000 92 93 def test_driver_path(self): 94 test_port = self.make_port(options=MockOptions(driver_name='browser_tests')) 95 self.assertFalse('.app/Contents/MacOS' in test_port._path_to_driver()) 96