diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Tools/Scripts/webkitpy/port/qt_unittest.py | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Tools/Scripts/webkitpy/port/qt_unittest.py')
-rw-r--r-- | Tools/Scripts/webkitpy/port/qt_unittest.py | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/Tools/Scripts/webkitpy/port/qt_unittest.py b/Tools/Scripts/webkitpy/port/qt_unittest.py new file mode 100644 index 000000000..2338f673b --- /dev/null +++ b/Tools/Scripts/webkitpy/port/qt_unittest.py @@ -0,0 +1,126 @@ +# Copyright (C) 2010 Google Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import unittest2 as unittest +import os +from copy import deepcopy + +from webkitpy.common.system.executive_mock import MockExecutive, MockExecutive2 +from webkitpy.common.system.outputcapture import OutputCapture +from webkitpy.common.system.systemhost_mock import MockSystemHost +from webkitpy.port import port_testcase +from webkitpy.port.qt import QtPort +from webkitpy.tool.mocktool import MockOptions + + +class QtPortTest(port_testcase.PortTestCase): + port_name = 'qt-mac' + port_maker = QtPort + search_paths_cases = [ + {'search_paths':['qt-mac-wk2', 'qt-wk2', 'qt-5.0', 'qt-mac', 'qt'], 'os_name':'mac', 'use_webkit2':True, 'qt_version':'5.0'}, + {'search_paths':['qt-wk2', 'qt-5.0', 'qt-win', 'qt'], 'os_name':'win', 'use_webkit2':True, 'qt_version':'5.0'}, + {'search_paths':['qt-wk2', 'qt-5.0', 'qt-linux', 'qt'], 'os_name':'linux', 'use_webkit2':True, 'qt_version':'5.0'}, + + {'search_paths':['qt-wk1', 'qt-5.0', 'qt-mac', 'qt'], 'os_name':'mac', 'use_webkit2':False, 'qt_version':'5.0'}, + {'search_paths':['qt-wk1', 'qt-5.0', 'qt-win', 'qt'], 'os_name':'win', 'use_webkit2':False, 'qt_version':'5.0'}, + {'search_paths':['qt-wk1', 'qt-5.0', 'qt-linux', 'qt'], 'os_name':'linux', 'use_webkit2':False, 'qt_version':'5.0'}, + {'search_paths':['qt-wk1', 'qt-5.1', 'qt-linux', 'qt'], 'os_name':'linux', 'use_webkit2':False, 'qt_version':'5.1'}, + ] + + def _assert_search_path(self, search_paths, os_name, use_webkit2=False, qt_version='5.0'): + # FIXME: Port constructors should not "parse" the port name, but + # rather be passed components (directly or via setters). Once + # we fix that, this method will need a re-write. + host = MockSystemHost(os_name=os_name) + host.executive = MockExecutive2(self._qt_version(qt_version)) + port_name = 'qt-' + os_name + port = self.make_port(host=host, qt_version=qt_version, port_name=port_name, + options=MockOptions(webkit_test_runner=use_webkit2, platform='qt')) + absolute_search_paths = map(port._webkit_baseline_path, search_paths) + self.assertEqual(port.baseline_search_path(), absolute_search_paths) + + def _assert_expectations_files(self, search_paths, os_name, use_webkit2=False, qt_version='5.0'): + # FIXME: Port constructors should not "parse" the port name, but + # rather be passed components (directly or via setters). Once + # we fix that, this method will need a re-write. + host = MockSystemHost(os_name=os_name) + host.executive = MockExecutive2(self._qt_version(qt_version)) + port_name = 'qt-' + os_name + port = self.make_port(host=host, qt_version=qt_version, port_name=port_name, + options=MockOptions(webkit_test_runner=use_webkit2, platform='qt')) + self.assertEqual(port.expectations_files(), search_paths) + + def _qt_version(self, qt_version): + if qt_version in '5.0': + return 'QMake version 2.01a\nUsing Qt version 5.0.0 in /usr/local/Trolltech/Qt-5.0.0/lib' + if qt_version in '5.1': + return 'QMake version 3.0\nUsing Qt version 5.1.1 in /usr/local/Qt-5.1/lib' + + def test_baseline_search_path(self): + for case in self.search_paths_cases: + self._assert_search_path(**case) + + def test_expectations_files(self): + for case in self.search_paths_cases: + expectations_case = deepcopy(case) + if expectations_case['use_webkit2']: + expectations_case['search_paths'].append("wk2") + expectations_case['search_paths'].append('') + expectations_case['search_paths'].reverse() + expectations_case['search_paths'] = map(lambda path: '/mock-checkout/LayoutTests/TestExpectations' if not path else '/mock-checkout/LayoutTests/platform/%s/TestExpectations' % (path), expectations_case['search_paths']) + self._assert_expectations_files(**expectations_case) + + def test_show_results_html_file(self): + port = self.make_port() + port._executive = MockExecutive(should_log=True) + expected_logs = "MOCK run_command: ['Tools/Scripts/run-launcher', '--release', '--qt', 'file://test.html'], cwd=/mock-checkout\n" + OutputCapture().assert_outputs(self, port.show_results_html_file, ["test.html"], expected_logs=expected_logs) + + def test_setup_environ_for_server(self): + port = self.make_port() + env = port.setup_environ_for_server(port.driver_name()) + self.assertEqual(env['QTWEBKIT_PLUGIN_PATH'], '/mock-build/lib/plugins') + + def test_operating_system(self): + self.assertEqual('linux', self.make_port(port_name='qt-linux', os_name='linux').operating_system()) + self.assertEqual('mac', self.make_port(os_name='mac').operating_system()) + self.assertEqual('win', self.make_port(port_name='qt-win', os_name='win').operating_system()) + + def test_check_sys_deps(self): + port = self.make_port() + + # Success + os.environ['WEBKIT_TESTFONTS'] = '/tmp/foo' + port._executive = MockExecutive2(exit_code=0) + self.assertTrue(port.check_sys_deps(needs_http=False)) + + # Failure + del os.environ['WEBKIT_TESTFONTS'] + port._executive = MockExecutive2(exit_code=1, + output='testing output failure') + self.assertFalse(port.check_sys_deps(needs_http=False)) |