[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198
dpranke at chromium.org
dpranke at chromium.org
Sun Feb 20 23:18:19 UTC 2011
The following commit has been merged in the webkit-1.3 branch:
commit b806f3d05d4d50cec15fd4f0dabc8ce4623c4ebd
Author: dpranke at chromium.org <dpranke at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Jan 19 20:28:45 2011 +0000
2011-01-19 Dirk Pranke <dpranke at chromium.org>
Reviewed by Tony Chang.
Change more modules in the layout-tests code to use the
filesystem wrapper for cleaner unit testing.
This patch also adds the glob() wrapper to the filesystem
abstraction.
https://bugs.webkit.org/show_bug.cgi?id=52604
* Scripts/webkitpy/layout_tests/port/test_files.py:
* Scripts/webkitpy/layout_tests/port/test_files_unittest.py:
* Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
* Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
* Scripts/webkitpy/common/system/filesystem.py:
* Scripts/webkitpy/common/system/filesystem_mock.py:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76150 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index b8ffa8d..80133e0 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,22 @@
+2011-01-19 Dirk Pranke <dpranke at chromium.org>
+
+ Reviewed by Tony Chang.
+
+ Change more modules in the layout-tests code to use the
+ filesystem wrapper for cleaner unit testing.
+
+ This patch also adds the glob() wrapper to the filesystem
+ abstraction.
+
+ https://bugs.webkit.org/show_bug.cgi?id=52604
+
+ * Scripts/webkitpy/layout_tests/port/test_files.py:
+ * Scripts/webkitpy/layout_tests/port/test_files_unittest.py:
+ * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
+ * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
+ * Scripts/webkitpy/common/system/filesystem.py:
+ * Scripts/webkitpy/common/system/filesystem_mock.py:
+
2011-01-19 Levi Weintraub <leviw at chromium.org>
Unreviewed.
diff --git a/Tools/Scripts/webkitpy/common/system/filesystem.py b/Tools/Scripts/webkitpy/common/system/filesystem.py
index 53e9796..d45d4c1 100644
--- a/Tools/Scripts/webkitpy/common/system/filesystem.py
+++ b/Tools/Scripts/webkitpy/common/system/filesystem.py
@@ -33,6 +33,7 @@ from __future__ import with_statement
import codecs
import errno
import exceptions
+import glob
import os
import shutil
import tempfile
@@ -45,6 +46,7 @@ class FileSystem(object):
or relative."""
def basename(self, path):
+ """Wraps os.path.basename()."""
return os.path.basename(path)
def copyfile(self, source, destination):
@@ -53,6 +55,7 @@ class FileSystem(object):
shutil.copyfile(source, destination)
def dirname(self, path):
+ """Wraps os.path.dirname()."""
return os.path.dirname(path)
def exists(self, path):
@@ -65,6 +68,10 @@ class FileSystem(object):
for (path_to_file, _, filenames) in os.walk(path)
for filename in filenames]
+ def glob(self, path):
+ """Wraps glob.glob()."""
+ return glob.glob(path)
+
def isfile(self, path):
"""Return whether the path refers to a file."""
return os.path.isfile(path)
@@ -125,6 +132,7 @@ class FileSystem(object):
shutil.move(src, dest)
def normpath(self, path):
+ """Wraps os.path.normpath()."""
return os.path.normpath(path)
def open_binary_tempfile(self, suffix):
@@ -188,7 +196,7 @@ class FileSystem(object):
return f.read()
def splitext(self, path):
- """Return (dirname, basename + ext)."""
+ """Return (dirname + os.sep + basename, '.' + ext)"""
return os.path.splitext(path)
def write_binary_file(self, path, contents):
diff --git a/Tools/Scripts/webkitpy/common/system/filesystem_mock.py b/Tools/Scripts/webkitpy/common/system/filesystem_mock.py
index 10acc3b..fd2438d 100644
--- a/Tools/Scripts/webkitpy/common/system/filesystem_mock.py
+++ b/Tools/Scripts/webkitpy/common/system/filesystem_mock.py
@@ -76,6 +76,14 @@ class MockFileSystem(object):
path += '/'
return [file for file in self.files if file.startswith(path)]
+ def glob(self, path):
+ # FIXME: This only handles a wildcard '*' at the end of the path.
+ # Maybe it should handle more?
+ if path[-1] == '*':
+ return [f for f in self.files if f.startswith(path[:-1])]
+ else:
+ return [f for f in self.files if f == path]
+
def isfile(self, path):
return path in self.files and self.files[path] is not None
diff --git a/Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py b/Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
index 2bb2d02..4d6b5f6 100644
--- a/Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
+++ b/Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py
@@ -86,6 +86,7 @@ def _process_output(port, options, test_input, test_types, test_args,
Returns: a TestResult object
"""
failures = []
+ fs = port._filesystem
if test_output.crash:
failures.append(test_failures.FailureCrash())
@@ -96,11 +97,10 @@ def _process_output(port, options, test_input, test_types, test_args,
if test_output.crash:
_log.debug("%s Stacktrace for %s:\n%s" % (worker_name, test_name,
test_output.error))
- filename = os.path.join(options.results_directory, test_name)
- filename = os.path.splitext(filename)[0] + "-stack.txt"
- port.maybe_make_directory(os.path.split(filename)[0])
- with codecs.open(filename, "wb", "utf-8") as file:
- file.write(test_output.error)
+ filename = fs.join(options.results_directory, test_name)
+ filename = fs.splitext(filename)[0] + "-stack.txt"
+ fs.maybe_make_directory(fs.dirname(filename))
+ fs.write_text_file(filename, test_output.error)
elif test_output.error:
_log.debug("%s %s output stderr lines:\n%s" % (worker_name, test_name,
test_output.error))
@@ -385,7 +385,7 @@ class TestShellThread(WatchableThread):
# Append tests we're running to the existing tests_run.txt file.
# This is created in run_webkit_tests.py:_PrepareListsAndPrintOutput.
- tests_run_filename = os.path.join(self._options.results_directory,
+ tests_run_filename = self._port._filesystem.join(self._options.results_directory,
"tests_run.txt")
tests_run_file = codecs.open(tests_run_filename, "a", "utf-8")
diff --git a/Tools/Scripts/webkitpy/layout_tests/port/test_files.py b/Tools/Scripts/webkitpy/layout_tests/port/test_files.py
index 2c0a7b6..2901a9f 100644
--- a/Tools/Scripts/webkitpy/layout_tests/port/test_files.py
+++ b/Tools/Scripts/webkitpy/layout_tests/port/test_files.py
@@ -58,6 +58,7 @@ def find(port, paths):
paths: a list of command line paths relative to the layout_tests_dir()
to limit the search to. glob patterns are ok.
"""
+ fs = port._filesystem
gather_start_time = time.time()
paths_to_walk = set()
# if paths is empty, provide a pre-defined list.
@@ -65,9 +66,9 @@ def find(port, paths):
_log.debug("Gathering tests from: %s relative to %s" % (paths, port.layout_tests_dir()))
for path in paths:
# If there's an * in the name, assume it's a glob pattern.
- path = os.path.join(port.layout_tests_dir(), path)
+ path = fs.join(port.layout_tests_dir(), path)
if path.find('*') > -1:
- filenames = glob.glob(path)
+ filenames = fs.glob(path)
paths_to_walk.update(filenames)
else:
paths_to_walk.add(path)
@@ -78,8 +79,8 @@ def find(port, paths):
# Now walk all the paths passed in on the command line and get filenames
test_files = set()
for path in paths_to_walk:
- if os.path.isfile(path) and _is_test_file(path):
- test_files.add(os.path.normpath(path))
+ if fs.isfile(path) and _is_test_file(fs, path):
+ test_files.add(fs.normpath(path))
continue
for root, dirs, files in os.walk(path):
@@ -95,9 +96,9 @@ def find(port, paths):
dirs.remove(directory)
for filename in files:
- if _is_test_file(filename):
- filename = os.path.join(root, filename)
- filename = os.path.normpath(filename)
+ if _is_test_file(fs, filename):
+ filename = fs.join(root, filename)
+ filename = fs.normpath(filename)
test_files.add(filename)
gather_time = time.time() - gather_start_time
@@ -106,10 +107,10 @@ def find(port, paths):
return test_files
-def _has_supported_extension(filename):
+def _has_supported_extension(fs, filename):
"""Return true if filename is one of the file extensions we want to run a
test on."""
- extension = os.path.splitext(filename)[1]
+ extension = fs.splitext(filename)[1]
return extension in _supported_file_extensions
@@ -122,7 +123,7 @@ def _is_reference_html_file(filename):
return False
-def _is_test_file(filename):
+def _is_test_file(fs, filename):
"""Return true if the filename points to a test file."""
- return (_has_supported_extension(filename) and
+ return (_has_supported_extension(fs, filename) and
not _is_reference_html_file(filename))
diff --git a/Tools/Scripts/webkitpy/layout_tests/port/test_files_unittest.py b/Tools/Scripts/webkitpy/layout_tests/port/test_files_unittest.py
index 83525c8..5697391 100644
--- a/Tools/Scripts/webkitpy/layout_tests/port/test_files_unittest.py
+++ b/Tools/Scripts/webkitpy/layout_tests/port/test_files_unittest.py
@@ -64,11 +64,13 @@ class TestFilesTest(unittest.TestCase):
self.assertEqual(tests, set([]))
def test_is_test_file(self):
- self.assertTrue(test_files._is_test_file('foo.html'))
- self.assertTrue(test_files._is_test_file('foo.shtml'))
- self.assertFalse(test_files._is_test_file('foo.png'))
- self.assertFalse(test_files._is_test_file('foo-expected.html'))
- self.assertFalse(test_files._is_test_file('foo-expected-mismatch.html'))
+ port = base.Port()
+ fs = port._filesystem
+ self.assertTrue(test_files._is_test_file(fs, 'foo.html'))
+ self.assertTrue(test_files._is_test_file(fs, 'foo.shtml'))
+ self.assertFalse(test_files._is_test_file(fs, 'foo.png'))
+ self.assertFalse(test_files._is_test_file(fs, 'foo-expected.html'))
+ self.assertFalse(test_files._is_test_file(fs, 'foo-expected-mismatch.html'))
if __name__ == '__main__':
diff --git a/Tools/Scripts/webkitpy/layout_tests/test_types/test_type_base.py b/Tools/Scripts/webkitpy/layout_tests/test_types/test_type_base.py
index 4b96b3a..ad65016 100644
--- a/Tools/Scripts/webkitpy/layout_tests/test_types/test_type_base.py
+++ b/Tools/Scripts/webkitpy/layout_tests/test_types/test_type_base.py
@@ -32,13 +32,9 @@
Also defines the TestArguments "struct" to pass them additional arguments.
"""
-from __future__ import with_statement
-
-import codecs
import cgi
import errno
import logging
-import os.path
_log = logging.getLogger("webkitpy.layout_tests.test_types.test_type_base")
@@ -86,9 +82,10 @@ class TestTypeBase(object):
def _make_output_directory(self, filename):
"""Creates the output directory (if needed) for a given test
filename."""
- output_filename = os.path.join(self._root_output_dir,
+ fs = self._port._filesystem
+ output_filename = fs.join(self._root_output_dir,
self._port.relative_test_filename(filename))
- self._port.maybe_make_directory(os.path.split(output_filename)[0])
+ fs.maybe_make_directory(fs.dirname(output_filename))
def _save_baseline_data(self, filename, data, modifier, encoding,
generate_new_baseline=True):
@@ -106,21 +103,22 @@ class TestTypeBase(object):
baseline, or update the existing one
"""
+ port = self._port
+ fs = self._port._filesystem
if generate_new_baseline:
- relative_dir = os.path.dirname(
- self._port.relative_test_filename(filename))
- baseline_path = self._port.baseline_path()
- output_dir = os.path.join(baseline_path, relative_dir)
- output_file = os.path.basename(os.path.splitext(filename)[0] +
+ relative_dir = fs.dirname(port.relative_test_filename(filename))
+ baseline_path = port.baseline_path()
+ output_dir = fs.join(baseline_path, relative_dir)
+ output_file = fs.basename(fs.splitext(filename)[0] +
self.FILENAME_SUFFIX_EXPECTED + modifier)
- self._port.maybe_make_directory(output_dir)
- output_path = os.path.join(output_dir, output_file)
+ fs.maybe_make_directory(output_dir)
+ output_path = fs.join(output_dir, output_file)
_log.debug('writing new baseline result "%s"' % (output_path))
else:
- output_path = self._port.expected_filename(filename, modifier)
+ output_path = port.expected_filename(filename, modifier)
_log.debug('resetting baseline result "%s"' % output_path)
- self._port.update_baseline(output_path, data, encoding)
+ port.update_baseline(output_path, data, encoding)
def output_filename(self, filename, modifier):
"""Returns a filename inside the output dir that contains modifier.
@@ -136,9 +134,10 @@ class TestTypeBase(object):
Return:
The absolute windows path to the output filename
"""
- output_filename = os.path.join(self._root_output_dir,
+ fs = self._port._filesystem
+ output_filename = fs.join(self._root_output_dir,
self._port.relative_test_filename(filename))
- return os.path.splitext(output_filename)[0] + modifier
+ return fs.splitext(output_filename)[0] + modifier
def compare_output(self, port, filename, test_args, actual_test_output,
expected_test_output):
@@ -165,11 +164,11 @@ class TestTypeBase(object):
def _write_into_file_at_path(self, file_path, contents, encoding):
"""This method assumes that byte_array is already encoded
into the right format."""
- open_mode = 'w'
+ fs = self._port._filesystem
if encoding is None:
- open_mode = 'w+b'
- with codecs.open(file_path, open_mode, encoding=encoding) as file:
- file.write(contents)
+ fs.write_binary_file(file_path, contents)
+ return
+ fs.write_text_file(file_path, contents)
def write_output_files(self, filename, file_type,
output, expected, encoding,
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list