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

Unified Diff: third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/factory.py

Issue 2719483003: Clean up webkitpy.layout_tests.port.factory. (Closed)
Patch Set: Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/factory.py
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/factory.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/factory.py
index 95d2454f0563cfe69dc3b63507292284845ea823..659324f98af79b1ac1fd17212c42af0d058304a2 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/factory.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/factory.py
@@ -35,6 +35,76 @@ import re
from webkitpy.common.webkit_finder import WebKitFinder
+class PortFactory(object):
+ PORT_CLASSES = (
+ 'android.AndroidPort',
+ 'linux.LinuxPort',
+ 'mac.MacPort',
+ 'win.WinPort',
+ 'mock_drt.MockDRTPort',
+ 'test.TestPort',
+ )
+
+ def __init__(self, host):
+ self._host = host
+
+ def _default_port(self):
+ platform = self._host.platform
+ if platform.is_linux() or platform.is_freebsd():
+ return 'linux'
+ elif platform.is_mac():
+ return 'mac'
+ elif platform.is_win():
+ return 'win'
+ raise NotImplementedError('unknown platform: %s' % platform)
+
+ def get(self, port_name=None, options=None, **kwargs):
+ """Returns an object implementing the Port interface.
+
+ If port_name is None, this routine attempts to guess at the most
+ appropriate port on this platform.
+ """
+ port_name = port_name or self._default_port()
+
+ _check_configuration_and_target(self._host.filesystem, options)
+
+ if 'browser_test' in port_name:
+ module_name, class_name = port_name.rsplit('.', 1)
+ module = __import__(module_name, globals(), locals(), [], -1)
+ port_class_name = module.get_port_class_name(class_name)
+ if port_class_name is not None:
+ cls = module.__dict__[port_class_name]
+ port_name = cls.determine_full_port_name(self._host, options, class_name)
+ return cls(self._host, port_name, options=options, **kwargs)
+ else:
+ for port_class in self.PORT_CLASSES:
+ module_name, class_name = port_class.rsplit('.', 1)
+ module = __import__(module_name, globals(), locals(), [], -1)
+ cls = module.__dict__[class_name]
+ if port_name.startswith(cls.port_name):
+ port_name = cls.determine_full_port_name(self._host, options, port_name)
+ return cls(self._host, port_name, options=options, **kwargs)
+ raise NotImplementedError('unsupported platform: "%s"' % port_name)
+
+ def all_port_names(self, platform=None):
+ """Returns a list of all valid, fully-specified, "real" port names.
+
+ This is the list of directories that are used as actual baseline_paths()
+ by real ports. This does not include any "fake" names like "test"
+ or "mock-mac", and it does not include any directories that are not
+ port names.
+
+ If platform is not specified, all known port names will be returned.
+ """
+ platform = platform or '*'
+ return fnmatch.filter(self._host.builders.all_port_names(), platform)
+
+ def get_from_builder_name(self, builder_name):
+ port_name = self._host.builders.port_name_for_builder_name(builder_name)
+ assert port_name, 'unrecognized builder name: "%s"' % builder_name
+ return self.get(port_name, options=_builder_options(builder_name))
+
+
def platform_options(use_globs=False):
return [
optparse.make_option('--android', action='store_const', dest='platform',
@@ -49,11 +119,11 @@ def platform_options(use_globs=False):
def configuration_options():
return [
- optparse.make_option('--debug', action='store_const', const='Debug', dest="configuration",
+ optparse.make_option('--debug', action='store_const', const='Debug', dest='configuration',
help='Set the configuration to Debug'),
- optparse.make_option("-t", "--target", dest="target",
- help="Specify the target build subdirectory under src/out/"),
- optparse.make_option('--release', action='store_const', const='Release', dest="configuration",
+ optparse.make_option('-t', '--target', dest='target',
+ help='Specify the target build subdirectory under src/out/'),
+ optparse.make_option('--release', action='store_const', const='Release', dest='configuration',
help='Set the configuration to Release'),
]
@@ -61,12 +131,13 @@ def configuration_options():
def _builder_options(builder_name):
return optparse.Values({
'builder_name': builder_name,
- 'configuration': "Debug" if re.search(r"[d|D](ebu|b)g", builder_name) else "Release",
+ 'configuration': 'Debug' if re.search(r'[d|D](ebu|b)g', builder_name) else 'Release',
'target': None,
})
def _check_configuration_and_target(host, options):
+ """Updates options.configuration based on options.target."""
if not options or not getattr(options, 'target', None):
return
@@ -89,10 +160,9 @@ def _check_configuration_and_target(host, options):
def _read_configuration_from_gn(fs, options):
- """Return the configuration to used based on args.gn, if possible."""
+ """Returns the configuration to used based on args.gn, if possible."""
- # We should really default to 'out' everywhere at this point, but
- # that's a separate cleanup CL.
+ # TODO(qyearsley): Default to 'out' everywhere.
build_directory = getattr(options, 'build_directory', None) or 'out'
target = options.target
@@ -110,78 +180,10 @@ def _read_configuration_from_gn(fs, options):
return 'Debug'
args = fs.read_text_file(path)
- for l in args.splitlines():
- if re.match(r'^\s*is_debug\s*=\s*false(\s*$|\s*#.*$)', l):
+ for line in args.splitlines():
+ if re.match(r'^\s*is_debug\s*=\s*false(\s*$|\s*#.*$)', line):
return 'Release'
- # if is_debug is set to anything other than false, or if it
+ # If is_debug is set to anything other than false, or if it
# does not exist at all, we should use the default value (True).
return 'Debug'
-
-
-class PortFactory(object):
- PORT_CLASSES = (
- 'android.AndroidPort',
- 'linux.LinuxPort',
- 'mac.MacPort',
- 'win.WinPort',
- 'mock_drt.MockDRTPort',
- 'test.TestPort',
- )
-
- def __init__(self, host):
- self._host = host
-
- def _default_port(self):
- platform = self._host.platform
- if platform.is_linux() or platform.is_freebsd():
- return 'linux'
- elif platform.is_mac():
- return 'mac'
- elif platform.is_win():
- return 'win'
- raise NotImplementedError('unknown platform: %s' % platform)
-
- def get(self, port_name=None, options=None, **kwargs):
- """Returns an object implementing the Port interface. If
- port_name is None, this routine attempts to guess at the most
- appropriate port on this platform.
- """
- port_name = port_name or self._default_port()
-
- _check_configuration_and_target(self._host.filesystem, options)
-
- if 'browser_test' in port_name:
- module_name, class_name = port_name.rsplit('.', 1)
- module = __import__(module_name, globals(), locals(), [], -1)
- port_class_name = module.get_port_class_name(class_name)
- if port_class_name is not None:
- cls = module.__dict__[port_class_name]
- port_name = cls.determine_full_port_name(self._host, options, class_name)
- return cls(self._host, port_name, options=options, **kwargs)
- else:
- for port_class in self.PORT_CLASSES:
- module_name, class_name = port_class.rsplit('.', 1)
- module = __import__(module_name, globals(), locals(), [], -1)
- cls = module.__dict__[class_name]
- if port_name.startswith(cls.port_name):
- port_name = cls.determine_full_port_name(self._host, options, port_name)
- return cls(self._host, port_name, options=options, **kwargs)
- raise NotImplementedError('unsupported platform: "%s"' % port_name)
-
- def all_port_names(self, platform=None):
- """Return a list of all valid, fully-specified, "real" port names.
-
- This is the list of directories that are used as actual baseline_paths()
- by real ports. This does not include any "fake" names like "test"
- or "mock-mac", and it does not include any directories that are not.
-
- If platform is not specified, we will glob-match all ports
- """
- platform = platform or '*'
- return fnmatch.filter(self._host.builders.all_port_names(), platform)
-
- def get_from_builder_name(self, builder_name):
- port_name = self._host.builders.port_name_for_builder_name(builder_name)
- assert port_name, "unrecognized builder name '%s'" % builder_name
- return self.get(port_name, _builder_options(builder_name))
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698