Nix upstreaming - Adding build files and supporting scripts
[WebKit-https.git] / Tools / Scripts / webkitpy / port / nix_unittest.py
1 # Copyright (C) 2012, 2013 Nokia Corporation and/or its subsidiary(-ies).
2 #
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions
5 # are met:
6 # 1. Redistributions of source code must retain the above copyright
7 #    notice, this list of conditions and the following disclaimer.
8 # 2. Redistributions in binary form must reproduce the above copyright
9 #    notice, this list of conditions and the following disclaimer in the
10 #    documentation and/or other materials provided with the distribution.
11 #
12 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
13 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
16 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
17 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
18 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
19 # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
20 # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
24 import unittest2 as unittest
25 import os
26 from copy import deepcopy
27
28 from webkitpy.common.system.executive_mock import MockExecutive, MockExecutive2
29 from webkitpy.common.system.outputcapture import OutputCapture
30 from webkitpy.common.system.systemhost_mock import MockSystemHost
31 from webkitpy.port import port_testcase
32 from webkitpy.port.nix import NixPort
33 from webkitpy.tool.mocktool import MockOptions
34
35
36 class NixPortTest(port_testcase.PortTestCase):
37     port_name = 'nix'
38     port_maker = NixPort
39     search_paths_cases = [
40             {'search_paths': ['nix', 'wk2'], 'os_name':'linux'}]
41     expectation_files_cases = [
42         {'search_paths': ['', 'nix', 'wk2'], 'os_name':'linux'}]
43
44     def _assert_search_path(self, search_paths, os_name):
45         host = MockSystemHost(os_name=os_name)
46         port = self.make_port(port_name=self.port_name, host=host, options=MockOptions(webkit_test_runner=True))
47         absolute_search_paths = map(port._webkit_baseline_path, search_paths)
48
49         unittest.TestCase.assertEqual(self, port.baseline_search_path(), absolute_search_paths)
50
51     def _assert_expectations_files(self, search_paths, os_name):
52         host = MockSystemHost(os_name=os_name)
53         port = self.make_port(port_name=self.port_name, host=host, options=MockOptions(webkit_test_runner=True))
54         unittest.TestCase.assertEqual(self, port.expectations_files(), search_paths)
55
56     def test_baseline_search_path(self):
57         for case in self.search_paths_cases:
58             self._assert_search_path(**case)
59
60     def test_expectations_files(self):
61         for case in self.expectation_files_cases:
62             expectations_case = deepcopy(case)
63             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'])
64             self._assert_expectations_files(**expectations_case)
65
66     def test_default_timeout_ms(self):
67         unittest.TestCase.assertEqual(self, self.make_port(options=MockOptions(configuration='Release')).default_timeout_ms(), 80000)
68         unittest.TestCase.assertEqual(self, self.make_port(options=MockOptions(configuration='Debug')).default_timeout_ms(), 80000)