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 29import optparse 30 31from blinkpy.common import exit_codes 32from blinkpy.common.system.executive_mock import MockExecutive 33from blinkpy.web_tests.models import test_run_results 34from blinkpy.web_tests.port import browser_test 35from blinkpy.web_tests.port import browser_test_driver 36from blinkpy.web_tests.port import port_testcase 37 38 39class _BrowserTestTestCaseMixin(object): 40 41 def test_driver_name_option(self): 42 self.assertTrue(self.make_port()._path_to_driver().endswith(self.driver_name_endswith)) 43 44 def test_default_timeout_ms(self): 45 self.assertEqual(self.make_port(options=optparse.Values({'configuration': 'Release'})).default_timeout_ms(), 46 self.timeout_ms) 47 self.assertEqual(self.make_port(options=optparse.Values({'configuration': 'Debug'})).default_timeout_ms(), 48 3 * self.timeout_ms) 49 50 def test_driver_type(self): 51 self.assertTrue(isinstance(self.make_port(options=optparse.Values({'driver_name': 'browser_tests'}) 52 ).create_driver(1), browser_test_driver.BrowserTestDriver)) 53 54 def test_web_tests_dir(self): 55 self.assertTrue(self.make_port().web_tests_dir().endswith('chrome/test/data/printing/layout_tests')) 56 57 def test_virtual_test_suites(self): 58 # The browser_tests port do not use virtual test suites, so we are just testing the stub. 59 port = self.make_port() 60 self.assertEqual(port.virtual_test_suites(), []) 61 62 def test_path_to_apache_config_file(self): 63 pass 64 65 66class BrowserTestLinuxTest(_BrowserTestTestCaseMixin, port_testcase.PortTestCase): 67 port_name = 'linux' 68 port_maker = browser_test.BrowserTestLinuxPort 69 os_name = 'linux' 70 os_version = 'trusty' 71 driver_name_endswith = 'browser_tests' 72 timeout_ms = 10 * 1000 73 74 75class BrowserTestWinTest(_BrowserTestTestCaseMixin, port_testcase.PortTestCase): 76 port_name = 'win' 77 port_maker = browser_test.BrowserTestWinPort 78 os_name = 'win' 79 os_version = 'win7' 80 driver_name_endswith = 'browser_tests.exe' 81 timeout_ms = 20 * 1000 82 83 84class BrowserTestMacTest(_BrowserTestTestCaseMixin, port_testcase.PortTestCase): 85 os_name = 'mac' 86 os_version = 'mac10.11' 87 port_name = 'mac' 88 port_maker = browser_test.BrowserTestMacPort 89 driver_name_endswith = 'browser_tests' 90 timeout_ms = 20 * 1000 91 92 def test_driver_path(self): 93 test_port = self.make_port(options=optparse.Values({'driver_name': 'browser_tests'})) 94 self.assertNotIn('.app/Contents/MacOS', test_port._path_to_driver()) 95