Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Side by Side Diff: Tools/Scripts/webkitpy/layout_tests/port/browser_test.py

Issue 378113003: Modifications to layout test framework so that it can work with browser_tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Refactored browser_test.py by removing all the platform specific ports and created a class that cre… Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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 Google name 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 from webkitpy.layout_tests.port import base
30 from webkitpy.layout_tests.port import linux
31 from webkitpy.layout_tests.port import mac
32 from webkitpy.layout_tests.port import win
33 from webkitpy.layout_tests.port import browser_test_driver
34
35
36 class BrowserTestPortOverrides(base.Port):
37 """Set of overrides that every browser test platform port should have."""
38 def create_driver(self, worker_number, no_timeout=False):
39 return self._driver_class()(self, worker_number, pixel_tests=self.get_op tion('pixel_tests'), no_timeout=no_timeout)
Dirk Pranke 2014/07/10 23:37:13 I don't think you need to override create_driver()
ivandavid 2014/07/16 21:29:01 Done.
40
41 def _driver_class(self):
42 return browser_test_driver.BrowserTestDriver
43
44 def layout_tests_dir(self):
45 """Overriden function from the base port class. Redirects everything
46 to src/chrome/test/data/printing/layout_tests.
47 """
48 return self.path_from_chromium_base('chrome', 'test', 'data', 'printing' , 'layout_tests', 'tests')
49
50 def default_results_directory(self):
51 """Overriden function from base port class. Uses
52 src/chrome/test/data/printing/layout_tests/results to store test results .
53 """
54 return self.path_from_chromium_base('chrome', 'test', 'data', 'printing' , 'layout_tests', 'results')
Dirk Pranke 2014/07/10 23:37:13 this is probably not the best place to write the r
ivandavid 2014/07/16 21:29:00 Done.
ivandavid 2014/07/16 21:29:01 Actually, I think we can just keep everything in a
55
56
57 class BrowserTestPort(object):
ivandavid 2014/07/10 22:39:09 I decided to to make a class that creates the port
Dirk Pranke 2014/07/10 23:37:13 Unfortunately, while our coding style allows for m
ivandavid 2014/07/16 21:29:00 OK. I changed it, I don't think I exercised much f
ivandavid 2014/07/16 21:29:01 Done.
58 """Created by factory.py, this class creates platform specific ports given
59 a port name. For example, if run_webkit_tests.py is launched with the
60 options '--platform browser_tests_linux' this class will create a class
61 that inherits from linux.LinuxPort and BrowserTestPortOverrides.
62 """
63 port_name = 'browser_test'
64
65 def __init__(self, host, port_name, **kwargs):
66 super(BrowserTestPort, self).__init__(host, port_name, **kwargs)
67
68 def __new__(cls, host, port_name, **kwargs):
69 if 'linux' in port_name:
70 cls = type('BrowserTestLinuxPort',
71 (cls, linux.LinuxPort, BrowserTestPortOverrides,),
72 {})
73 elif 'mac' in port_name:
74 cls = type('BrowserTestMacPort',
75 (cls, mac.MacPort, BrowserTestPortOverrides,),
76 {})
77 elif 'win' in port_name:
78 cls = type('BrowserTestWinPort',
79 (cls, win.WinPort, BrowserTestPortOverrides,),
80 {})
81 return super(BrowserTestPort, cls).__new__(cls,
82 host,
83 port_name,
84 **kwargs)
85
86 @classmethod
87 def determine_full_port_name(cls, host, options, port_name):
88 """Returns the port name for the correct platform, given a port_name.
89 The port_name passed into this function is the port name from
90 the option '--platform.' port_name must always begin with
91 'browser_test' and end with '_*' where * is a platform, such as
92 'linux', 'mac', etc.
93 """
94 if 'linux' in port_name:
95 index = port_name.find('linux')
96 name_string = 'linux'
97 if index != -1:
98 name_string = port_name[index:]
99 return linux.LinuxPort.determine_full_port_name(host,
100 options,
101 name_string)
102 elif 'mac' in port_name:
103 index = port_name.find('mac')
104 name_string = 'mac'
105 if index != -1:
106 name_string = port_name[index:]
107 return mac.MacPort.determine_full_port_name(host,
108 options,
109 name_string)
110 elif 'win' in port_name:
111 index = port_name.find('win')
112 name_string = 'win'
113 if index != -1:
114 name_string = port_name[index:]
115 return win.WinPort.determine_full_port_name(host,
116 options,
117 name_string)
118 else:
119 return None
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698