summaryrefslogtreecommitdiffstats
path: root/WebKitTools/Scripts/webkitpy/layout_tests
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2010-06-15 19:36:43 +0100
committerBen Murdoch <benm@google.com>2010-06-16 14:52:28 +0100
commit545e470e52f0ac6a3a072bf559c796b42c6066b6 (patch)
treec0c14763654d84d37577dde512c3d3b4699a9e86 /WebKitTools/Scripts/webkitpy/layout_tests
parent719298a66237d38ea5c05f1547123ad8aacbc237 (diff)
downloadexternal_webkit-545e470e52f0ac6a3a072bf559c796b42c6066b6.zip
external_webkit-545e470e52f0ac6a3a072bf559c796b42c6066b6.tar.gz
external_webkit-545e470e52f0ac6a3a072bf559c796b42c6066b6.tar.bz2
Merge webkit.org at r61121: Initial merge by git.
Change-Id: Icd6db395c62285be384d137164d95d7466c98760
Diffstat (limited to 'WebKitTools/Scripts/webkitpy/layout_tests')
-rw-r--r--WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py1
-rw-r--r--WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py28
-rw-r--r--WebKitTools/Scripts/webkitpy/layout_tests/port/base.py8
-rw-r--r--WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py7
-rw-r--r--WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_linux.py12
-rw-r--r--WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_mac.py9
-rw-r--r--WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_win.py9
-rw-r--r--WebKitTools/Scripts/webkitpy/layout_tests/port/websocket_server.py9
8 files changed, 46 insertions, 37 deletions
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py
index cee44ad..bb214f7 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py
@@ -77,6 +77,7 @@ class JSONLayoutResultsGenerator(json_results_generator.JSONResultsGenerator):
self._test_timings = dict(
(path_to_name(test_tuple.filename), test_tuple.test_run_time)
for test_tuple in test_timings)
+ self._svn_repositories = port.test_repository_paths()
self._generate_json_output()
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py
index 0993cbd..1cf1b95 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py
@@ -38,6 +38,8 @@ import time
import urllib2
import xml.dom.minidom
+from webkitpy.common.checkout import scm
+from webkitpy.common.system.executive import ScriptError
from webkitpy.layout_tests.layout_package import test_expectations
import webkitpy.thirdparty.simplejson as simplejson
@@ -46,6 +48,7 @@ _log = logging.getLogger("webkitpy.layout_tests.layout_package."
class JSONResultsGenerator(object):
+ """A JSON results generator for generic tests."""
MAX_NUMBER_OF_BUILD_RESULTS_TO_LOG = 750
# Min time (seconds) that will be added to the JSON.
@@ -60,8 +63,6 @@ class JSONResultsGenerator(object):
RESULTS = "results"
TIMES = "times"
BUILD_NUMBERS = "buildNumbers"
- WEBKIT_SVN = "webkitRevision"
- CHROME_SVN = "chromeRevision"
TIME = "secondsSinceEpoch"
TESTS = "tests"
@@ -102,7 +103,6 @@ class JSONResultsGenerator(object):
all_tests: List of all the tests that were run. This should not
include skipped tests.
"""
- self._port = port
self._builder_name = builder_name
self._build_name = build_name
self._build_number = build_number
@@ -114,6 +114,7 @@ class JSONResultsGenerator(object):
self._passed_tests = passed_tests
self._skipped_tests = skipped_tests
self._all_tests = all_tests
+ self._svn_repositories = port.test_repository_paths()
self._generate_json_output()
@@ -132,6 +133,7 @@ class JSONResultsGenerator(object):
Args:
in_directory: The directory where svn is to be run.
"""
+
if os.path.exists(os.path.join(in_directory, '.svn')):
# Note: Not thread safe: http://bugs.python.org/issue2320
output = subprocess.Popen(["svn", "info", "--xml"],
@@ -312,23 +314,11 @@ class JSONResultsGenerator(object):
self._insert_item_into_raw_list(results_for_builder,
self._build_number, self.BUILD_NUMBERS)
- # These next two branches test to see which source repos we can
- # pull revisions from.
- if hasattr(self._port, 'path_from_webkit_base'):
- path_to_webkit = self._port.path_from_webkit_base('WebCore')
+ # Include SVN revisions for the given repositories.
+ for (name, path) in self._svn_repositories:
self._insert_item_into_raw_list(results_for_builder,
- self._get_svn_revision(path_to_webkit),
- self.WEBKIT_SVN)
-
- if hasattr(self._port, 'path_from_chromium_base'):
- try:
- path_to_chrome = self._port.path_from_chromium_base()
- self._insert_item_into_raw_list(results_for_builder,
- self._get_svn_revision(path_to_chrome),
- self.CHROME_SVN)
- except AssertionError:
- # We're not in a Chromium checkout, that's ok.
- pass
+ self._get_svn_revision(path),
+ name + 'Revision')
self._insert_item_into_raw_list(results_for_builder,
int(time.time()),
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py
index 782c87c..e73579f 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py
@@ -537,6 +537,14 @@ class Port(object):
expectations, determining search paths, and logging information."""
raise NotImplementedError('Port.version')
+ def test_repository_paths(self):
+ """Returns a list of (repository_name, repository_path) tuples
+ of its depending code base. By default it returns a list that only
+ contains a ('webkit', <webkitRepossitoryPath>) tuple.
+ """
+ return [('webkit', self.layout_tests_dir())]
+
+
_WDIFF_DEL = '##WDIFF_DEL##'
_WDIFF_ADD = '##WDIFF_ADD##'
_WDIFF_END = '##WDIFF_END##'
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py
index db23eb8..e7f9ac8 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py
@@ -232,6 +232,13 @@ class ChromiumPort(base.Port):
raise ValueError('Unsupported test_platform_name: %s' %
test_platform_name)
+ def test_repository_paths(self):
+ # Note: for JSON file's backward-compatibility we use 'chrome' rather
+ # than 'chromium' here.
+ repos = super(ChromiumPort, self).test_repository_paths()
+ repos.append(('chrome', self.path_from_chromium_base()))
+ return repos
+
#
# PROTECTED METHODS
#
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_linux.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_linux.py
index 0818d51..4df43e0 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_linux.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_linux.py
@@ -81,15 +81,15 @@ class ChromiumLinuxPort(chromium.ChromiumPort):
#
def _build_path(self, *comps):
- if self._options.use_drt:
- base = os.path.join(self.path_from_webkit_base(), 'WebKit',
- 'chromium')
- else:
- base = self.path_from_chromium_base()
+ base = self.path_from_chromium_base()
if os.path.exists(os.path.join(base, 'sconsbuild')):
return os.path.join(base, 'sconsbuild', *comps)
- else:
+ if os.path.exists(os.path.join(base, 'out', *comps)) or not self._options.use_drt:
return os.path.join(base, 'out', *comps)
+ base = self.path_from_webkit_base()
+ if os.path.exists(os.path.join(base, 'sconsbuild')):
+ return os.path.join(base, 'sconsbuild', *comps)
+ return os.path.join(base, 'out', *comps)
def _check_apache_install(self):
result = chromium.check_file_exists(self._path_to_apache(),
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_mac.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_mac.py
index aa3ac8d..abd84ae 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_mac.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_mac.py
@@ -102,10 +102,11 @@ class ChromiumMacPort(chromium.ChromiumPort):
#
def _build_path(self, *comps):
- if self._options.use_drt:
- return self.path_from_webkit_base('WebKit', 'chromium',
- 'xcodebuild', *comps)
- return self.path_from_chromium_base('xcodebuild', *comps)
+ path = self.path_from_chromium_base('xcodebuild', *comps)
+ if os.path.exists(path) or not self._options.use_drt:
+ return path
+ return self.path_from_webkit_base('WebKit', 'chromium', 'xcodebuild',
+ *comps)
def _check_wdiff_install(self):
try:
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_win.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_win.py
index ec1c33c..8072bc0 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_win.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_win.py
@@ -117,13 +117,14 @@ class ChromiumWinPort(chromium.ChromiumPort):
#
def _build_path(self, *comps):
- if self._options.use_drt:
- return os.path.join(self.path_from_webkit_base(), 'WebKit',
- 'chromium', *comps)
p = self.path_from_chromium_base('webkit', *comps)
if os.path.exists(p):
return p
- return self.path_from_chromium_base('chrome', *comps)
+ p = self.path_from_chromium_base('chrome', *comps)
+ if os.path.exists(p) or not self._options.use_drt:
+ return p
+ return os.path.join(self.path_from_webkit_base(), 'WebKit', 'chromium',
+ *comps)
def _lighttpd_path(self, *comps):
return self.path_from_chromium_base('third_party', 'lighttpd', 'win',
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/websocket_server.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/websocket_server.py
index 22ae780..81bf39e 100644
--- a/WebKitTools/Scripts/webkitpy/layout_tests/port/websocket_server.py
+++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/websocket_server.py
@@ -207,12 +207,13 @@ class PyWebSocket(http_server.Lighttpd):
url = 'http'
url = url + '://127.0.0.1:%d/' % self._port
if not url_is_alive(url):
- fp = codecs.open(output_log, "utf-8")
- try:
+ if self._process.returncode == None:
+ # FIXME: We should use a non-static Executive for easier
+ # testing.
+ Executive().kill_process(self._process.pid)
+ with codecs.open(output_log, "r", "utf-8") as fp:
for line in fp:
_log.error(line)
- finally:
- fp.close()
raise PyWebSocketNotStarted(
'Failed to start %s server on port %s.' %
(self._server_name, self._port))