1c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# Copyright (C) 2014 Google Inc. All rights reserved. 2c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# 3c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# Redistribution and use in source and binary forms, with or without 4c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# modification, are permitted provided that the following conditions are 5c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# met: 6c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# 7c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# * Redistributions of source code must retain the above copyright 8c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# notice, this list of conditions and the following disclaimer. 9c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# * Redistributions in binary form must reproduce the above 10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# copyright notice, this list of conditions and the following disclaimer 11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# in the documentation and/or other materials provided with the 12c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# distribution. 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# * Neither the name of Google Inc. nor the names of its 14c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# contributors may be used to endorse or promote products derived from 15c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# this software without specific prior written permission. 16c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# 17c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 29e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)import unittest 30c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 31e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)from webkitpy.common.system.executive_mock import MockExecutive2 32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)from webkitpy.common.system.systemhost_mock import MockSystemHost 33c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)from webkitpy.tool.mocktool import MockOptions 34c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 35e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)from webkitpy.layout_tests.models import test_run_results 36c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)from webkitpy.layout_tests.port import browser_test 37c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)from webkitpy.layout_tests.port import port_testcase 38c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)from webkitpy.layout_tests.port import browser_test_driver 39c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 40c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass _BrowserTestTestCaseMixin(object): 427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci def test_check_sys_deps(self): 447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci port = self.make_port() 457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci port._executive = MockExecutive2(exit_code=0) 467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci self.assertEqual(port.check_sys_deps(needs_http=False), test_run_results.OK_EXIT_STATUS) 47c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 48c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) def test_driver_name_option(self): 497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci self.assertTrue(self.make_port()._path_to_driver().endswith(self.driver_name_endswith)) 50c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci def test_default_timeout_ms(self): 527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci self.assertEqual(self.make_port(options=MockOptions(configuration='Release')).default_timeout_ms(), 537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci self.timeout_ms) 547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci self.assertEqual(self.make_port(options=MockOptions(configuration='Debug')).default_timeout_ms(), 557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 3 * self.timeout_ms) 56c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 57c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) def test_driver_type(self): 58c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) self.assertTrue(isinstance(self.make_port(options=MockOptions(driver_name='browser_tests')).create_driver(1), browser_test_driver.BrowserTestDriver)) 59c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci def test_layout_tests_dir(self): 617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci self.assertTrue(self.make_port().layout_tests_dir().endswith('chrome/test/data/printing/layout_tests')) 627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci def test_virtual_test_suites(self): 647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci # The browser_tests port do not use virtual test suites, so we are just testing the stub. 65e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) port = self.make_port() 667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci self.assertEqual(port.virtual_test_suites(), []) 67e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass BrowserTestLinuxTest(_BrowserTestTestCaseMixin, port_testcase.PortTestCase): 707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci port_name = 'linux' 717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci port_maker = browser_test.BrowserTestLinuxPort 727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci driver_name_endswith = 'browser_tests' 737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci timeout_ms = 10 * 1000 74e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 75c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass BrowserTestWinTest(_BrowserTestTestCaseMixin, port_testcase.PortTestCase): 77c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) port_name = 'win' 78c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) port_maker = browser_test.BrowserTestWinPort 79c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) os_name = 'win' 80c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) os_version = 'xp' 817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci driver_name_endswith = 'browser_tests.exe' 827242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci timeout_ms = 20 * 1000 83c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 84e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 857242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass BrowserTestMacTest(_BrowserTestTestCaseMixin, port_testcase.PortTestCase): 86c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) os_name = 'mac' 87c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) os_version = 'snowleopard' 88c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) port_name = 'mac' 89c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) port_maker = browser_test.BrowserTestMacPort 907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci driver_name_endswith = 'browser_tests' 917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci timeout_ms = 20 * 1000 92c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 93c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) def test_driver_path(self): 94c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) test_port = self.make_port(options=MockOptions(driver_name='browser_tests')) 95c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) self.assertFalse('.app/Contents/MacOS' in test_port._path_to_driver()) 96