Diff
Modified: trunk/Tools/ChangeLog (252467 => 252468)
--- trunk/Tools/ChangeLog 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/ChangeLog 2019-11-15 00:16:57 UTC (rev 252468)
@@ -1,3 +1,30 @@
+2019-11-14 Jonathan Bedard <[email protected]>
+
+ Python 3: Add support in webkitpy.style
+ https://bugs.webkit.org/show_bug.cgi?id=203762
+
+ Reviewed by Stephanie Lewis.
+
+ * Scripts/check-webkit-style: Remove Python 2 version check.
+ * Scripts/test-webkitpy-python3: Add webkitpy.style.
+ * Scripts/webkitpy/style/checker.py: Use explicit imports.
+ * Scripts/webkitpy/style/checker_unittest.py:
+ (GlobalVariablesTest.test_max_reports_per_category): Use keys() over iterkeys.
+ * Scripts/webkitpy/style/checkers/contributors.py: Use explicit imports.
+ * Scripts/webkitpy/style/checkers/test_expectations.py:
+ (TestExpectationsChecker._should_log_linter_warning): Use compatible iteritems.
+ * Scripts/webkitpy/style/error_handlers_unittest.py: Use explicit imports.
+ * Scripts/webkitpy/style/filter.py:
+ (FilterConfiguration._get_path_specific_lower): Return list instead of iterator.
+ (FilterConfiguration._filter_from_path): Avoid confusion with filter builtin.
+ * Scripts/webkitpy/style/filter_unittest.py: Use explicit imports.
+ * Scripts/webkitpy/style/main.py:
+ (CheckWebKitStyle._engage_awesome_stderr_hacks): No reason to apply encoding to stderr
+ in Python 3.
+ * Scripts/webkitpy/style/main_unittest.py: Use explicit imports.
+ * Scripts/webkitpy/style/patchreader.py:
+ (PatchReader.check): Ensure that the provided patch is a string, use items over iteritems.
+
2019-11-14 Megan Gardner <[email protected]>
Fix build error from r252449
Modified: trunk/Tools/Scripts/check-webkit-style (252467 => 252468)
--- trunk/Tools/Scripts/check-webkit-style 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/check-webkit-style 2019-11-15 00:16:57 UTC (rev 252468)
@@ -39,8 +39,6 @@
import sys
-import webkitpy.common.version_check
-
from webkitpy.style.main import CheckWebKitStyle
Modified: trunk/Tools/Scripts/test-webkitpy-python3 (252467 => 252468)
--- trunk/Tools/Scripts/test-webkitpy-python3 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/test-webkitpy-python3 2019-11-15 00:16:57 UTC (rev 252468)
@@ -39,7 +39,7 @@
'webkitpy.layout_tests.models',
'webkitpy.port',
'webkitpy.results',
- 'webkitpy.style.checkers',
+ 'webkitpy.style',
'webkitpy.xcode',
]
SLOW_TESTS = [
Modified: trunk/Tools/Scripts/webkitpy/style/checker.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/checker.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/checker.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -35,35 +35,35 @@
import os.path
import re
-from checkers.common import categories as CommonCategories
-from checkers.common import CarriageReturnChecker
-from checkers.contributors import ContributorsChecker
-from checkers.changelog import ChangeLogChecker
-from checkers.cpp import CppChecker
-from checkers.cmake import CMakeChecker
-from checkers.featuredefines import FeatureDefinesChecker
-from checkers.js import JSChecker
-from checkers.jsonchecker import JSONChecker
-from checkers.jsonchecker import JSONContributorsChecker
-from checkers.jsonchecker import JSONFeaturesChecker
-from checkers.jsonchecker import JSONCSSPropertiesChecker
-from checkers.jstest import JSTestChecker
-from checkers.messagesin import MessagesInChecker
-from checkers.png import PNGChecker
-from checkers.python import PythonChecker, Python3Checker
-from checkers.sdkvariant import SDKVariantChecker
-from checkers.test_expectations import TestExpectationsChecker
-from checkers.text import TextChecker
-from checkers.watchlist import WatchListChecker
-from checkers.xcodeproj import XcodeProjectFileChecker
-from checkers.xml import XMLChecker
-from error_handlers import DefaultStyleErrorHandler
-from filter import FilterConfiguration
-from optparser import ArgumentParser
-from optparser import DefaultCommandOptionValues
from webkitpy.common.host import Host
from webkitpy.common.system.logutils import configure_logging as _configure_logging
from webkitpy.port.config import apple_additions
+from webkitpy.style.checkers.common import categories as CommonCategories
+from webkitpy.style.checkers.common import CarriageReturnChecker
+from webkitpy.style.checkers.contributors import ContributorsChecker
+from webkitpy.style.checkers.changelog import ChangeLogChecker
+from webkitpy.style.checkers.cpp import CppChecker
+from webkitpy.style.checkers.cmake import CMakeChecker
+from webkitpy.style.checkers.featuredefines import FeatureDefinesChecker
+from webkitpy.style.checkers.js import JSChecker
+from webkitpy.style.checkers.jsonchecker import JSONChecker
+from webkitpy.style.checkers.jsonchecker import JSONContributorsChecker
+from webkitpy.style.checkers.jsonchecker import JSONFeaturesChecker
+from webkitpy.style.checkers.jsonchecker import JSONCSSPropertiesChecker
+from webkitpy.style.checkers.jstest import JSTestChecker
+from webkitpy.style.checkers.messagesin import MessagesInChecker
+from webkitpy.style.checkers.png import PNGChecker
+from webkitpy.style.checkers.python import PythonChecker, Python3Checker
+from webkitpy.style.checkers.sdkvariant import SDKVariantChecker
+from webkitpy.style.checkers.test_expectations import TestExpectationsChecker
+from webkitpy.style.checkers.text import TextChecker
+from webkitpy.style.checkers.watchlist import WatchListChecker
+from webkitpy.style.checkers.xcodeproj import XcodeProjectFileChecker
+from webkitpy.style.checkers.xml import XMLChecker
+from webkitpy.style.error_handlers import DefaultStyleErrorHandler
+from webkitpy.style.filter import FilterConfiguration
+from webkitpy.style.optparser import ArgumentParser
+from webkitpy.style.optparser import DefaultCommandOptionValues
_log = logging.getLogger(__name__)
Modified: trunk/Tools/Scripts/webkitpy/style/checker_unittest.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/checker_unittest.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/checker_unittest.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -37,33 +37,32 @@
import os
import unittest
-import checker as style
-from webkitpy.common.system.logtesting import LogTesting, TestLogStream
-from checker import _BASE_FILTER_RULES
-from checker import _MAX_REPORTS_PER_CATEGORY
-from checker import _PATH_RULES_SPECIFIER as PATH_RULES_SPECIFIER
-from checker import _all_categories
-from checker import check_webkit_style_configuration
-from checker import check_webkit_style_parser
-from checker import configure_logging
-from checker import CheckerDispatcher
-from checker import ProcessorBase
-from checker import StyleProcessor
-from checker import StyleProcessorConfiguration
-from checkers.changelog import ChangeLogChecker
-from checkers.cpp import CppChecker
-from checkers.js import JSChecker
-from checkers.jsonchecker import JSONChecker
-from checkers.python import PythonChecker
-from checkers.text import TextChecker
-from checkers.xml import XMLChecker
-from error_handlers import DefaultStyleErrorHandler
-from filter import validate_filter_rules
-from filter import FilterConfiguration
-from optparser import ArgumentParser
-from optparser import CommandOptionValues
-from webkitpy.common.system.logtesting import LoggingTestCase
+from webkitpy.common.system.logtesting import LogTesting, TestLogStream, LoggingTestCase
+from webkitpy.style import checker as style
+from webkitpy.style.checker import _BASE_FILTER_RULES
+from webkitpy.style.checker import _MAX_REPORTS_PER_CATEGORY
+from webkitpy.style.checker import _PATH_RULES_SPECIFIER as PATH_RULES_SPECIFIER
+from webkitpy.style.checker import _all_categories
+from webkitpy.style.checker import check_webkit_style_configuration
+from webkitpy.style.checker import check_webkit_style_parser
+from webkitpy.style.checker import configure_logging
+from webkitpy.style.checker import CheckerDispatcher
+from webkitpy.style.checker import ProcessorBase
+from webkitpy.style.checker import StyleProcessor
+from webkitpy.style.checker import StyleProcessorConfiguration
+from webkitpy.style.checkers.changelog import ChangeLogChecker
+from webkitpy.style.checkers.cpp import CppChecker
+from webkitpy.style.checkers.js import JSChecker
+from webkitpy.style.checkers.jsonchecker import JSONChecker
+from webkitpy.style.checkers.python import PythonChecker
+from webkitpy.style.checkers.text import TextChecker
+from webkitpy.style.checkers.xml import XMLChecker
+from webkitpy.style.error_handlers import DefaultStyleErrorHandler
+from webkitpy.style.optparser import CommandOptionValues
from webkitpy.style.filereader import TextFileReader
+from webkitpy.style.filter import validate_filter_rules
+from webkitpy.style.filter import FilterConfiguration
+from webkitpy.style.optparser import ArgumentParser
class ConfigureLoggingTestBase(unittest.TestCase):
@@ -262,7 +261,7 @@
def test_max_reports_per_category(self):
"""Check that _MAX_REPORTS_PER_CATEGORY is valid."""
all_categories = self._all_categories()
- for category in _MAX_REPORTS_PER_CATEGORY.iterkeys():
+ for category in _MAX_REPORTS_PER_CATEGORY.keys():
self.assertIn(category, all_categories,
'Key "%s" is not a category' % category)
Modified: trunk/Tools/Scripts/webkitpy/style/checkers/contributors.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/checkers/contributors.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/checkers/contributors.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -25,7 +25,6 @@
import difflib
import json
import re
-from sets import Set
from webkitpy.style.checkers.jsonchecker import JSONChecker
from webkitpy.common.config.committers import CommitterList
from webkitpy.common.system.filesystem import FileSystem
Modified: trunk/Tools/Scripts/webkitpy/style/checkers/test_expectations.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/checkers/test_expectations.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/checkers/test_expectations.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -35,6 +35,7 @@
import sys
from webkitpy.common.host import Host
+from webkitpy.common.iteration_compatibility import iteritems
from webkitpy.layout_tests.models import test_expectations
from webkitpy.style.checkers.common import TabChecker
from webkitpy.style.error_handlers import DefaultStyleErrorHandler
@@ -106,7 +107,7 @@
if abs_filename in files and files[abs_filename] and warning.line_number in files[abs_filename]:
return True
- for file, lines in warning.related_files.iteritems():
+ for file, lines in iteritems(warning.related_files):
abs_filename = host.filesystem.join(cwd, file)
if abs_filename in files:
# Case 2, a file associated with the warning is in our patch
Modified: trunk/Tools/Scripts/webkitpy/style/error_handlers_unittest.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/error_handlers_unittest.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/error_handlers_unittest.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -25,10 +25,10 @@
import unittest
-from checker import StyleProcessorConfiguration
-from error_handlers import DefaultStyleErrorHandler
-from filter import FilterConfiguration
from webkitpy.common.system.logtesting import LoggingTestCase
+from webkitpy.style.checker import StyleProcessorConfiguration
+from webkitpy.style.error_handlers import DefaultStyleErrorHandler
+from webkitpy.style.filter import FilterConfiguration
class DefaultStyleErrorHandlerTest(LoggingTestCase):
Modified: trunk/Tools/Scripts/webkitpy/style/filter.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/filter.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/filter.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -197,7 +197,7 @@
if self._path_specific_lower is None:
self._path_specific_lower = []
for (sub_paths, path_rules) in self._path_specific:
- sub_paths = map(str.lower, sub_paths)
+ sub_paths = list(map(str.lower, sub_paths))
self._path_specific_lower.append((sub_paths, path_rules))
return self._path_specific_lower
@@ -238,8 +238,7 @@
"""Return the CategoryFilter associated to a path."""
if path not in self._path_to_filter:
path_rules = self._path_rules_from_path(path)
- filter = self._filter_from_path_rules(path_rules)
- self._path_to_filter[path] = filter
+ self._path_to_filter[path] = self._filter_from_path_rules(path_rules)
return self._path_to_filter[path]
Modified: trunk/Tools/Scripts/webkitpy/style/filter_unittest.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/filter_unittest.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/filter_unittest.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -24,9 +24,9 @@
import unittest
-from filter import _CategoryFilter as CategoryFilter
-from filter import validate_filter_rules
-from filter import FilterConfiguration
+from webkitpy.style.filter import _CategoryFilter as CategoryFilter
+from webkitpy.style.filter import validate_filter_rules
+from webkitpy.style.filter import FilterConfiguration
# On Testing __eq__() and __ne__():
#
Modified: trunk/Tools/Scripts/webkitpy/style/main.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/main.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/main.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -102,6 +102,10 @@
class CheckWebKitStyle(object):
def _engage_awesome_stderr_hacks(self):
+ # Python 3 strings are unicode, we don't need to encode stderr
+ if sys.version_info > (3, 0):
+ return sys.stderr
+
# Change stderr to write with replacement characters so we don't die
# if we try to print something containing non-ASCII characters.
stderr = codecs.StreamReaderWriter(sys.stderr,
Modified: trunk/Tools/Scripts/webkitpy/style/main_unittest.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/main_unittest.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/main_unittest.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -26,7 +26,6 @@
import webkitpy.style.checker as checker
-from main import change_directory
from webkitpy.common.host import Host
from webkitpy.common.system.filesystem_mock import MockFileSystem
from webkitpy.common.system.outputcapture import OutputCapture, OutputCaptureScope
@@ -33,6 +32,7 @@
from webkitpy.common.system.logtesting import LogTesting
from webkitpy.style.checker import StyleProcessor
from webkitpy.style.filereader import TextFileReader
+from webkitpy.style.main import change_directory
class ChangeDirectoryTest(unittest.TestCase):
Modified: trunk/Tools/Scripts/webkitpy/style/patchreader.py (252467 => 252468)
--- trunk/Tools/Scripts/webkitpy/style/patchreader.py 2019-11-14 22:45:15 UTC (rev 252467)
+++ trunk/Tools/Scripts/webkitpy/style/patchreader.py 2019-11-15 00:16:57 UTC (rev 252468)
@@ -35,6 +35,7 @@
from webkitpy.common.system.executive import Executive
from webkitpy.common.system.filesystem import FileSystem
from webkitpy.common.checkout.scm.detection import SCMDetector
+from webkitpy.common.unicode_compatibility import decode_for
_log = logging.getLogger(__name__)
@@ -55,12 +56,13 @@
def check(self, patch_string, fs=None):
"""Check style in the given patch."""
fs = fs or FileSystem()
+ patch_string = decode_for(patch_string, str)
patch_files = DiffParser(patch_string.splitlines()).files
# If the user uses git, checking subversion config file only once is enough.
call_only_once = True
- for path, diff_file in patch_files.iteritems():
+ for path, diff_file in patch_files.items():
line_numbers = diff_file.added_or_modified_line_numbers()
_log.debug('Found %s new or modified lines in: %s' % (len(line_numbers), path))