Changeset 253128 in webkit
- Timestamp:
- Dec 4, 2019 4:10:42 PM (4 years ago)
- Location:
- trunk/Tools
- Files:
-
- 40 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r253117 r253128 1 2019-12-04 Jonathan Bedard <jbedard@apple.com> 2 3 Python 3: Add support in webkitpy.tool 4 https://bugs.webkit.org/show_bug.cgi?id=204838 5 6 Reviewed by Stephanie Lewis. 7 8 * Scripts/test-webkitpy-python3: Add webkitpy.tool. 9 * Scripts/webkit-patch: Remove version check. 10 * Scripts/webkitpy/common/net/bugzilla/bug.py: 11 (Bug.reviewed_patches): Convert filter to list. 12 (Bug.commit_queued_patches): Ditto. 13 * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py: 14 (MockBugzillaQueries.fetch_bug_ids_from_commit_queue): Convert map to list. 15 (MockBugzillaQueries.fetch_attachment_ids_from_review_queue): Ditto. 16 (MockBugzillaQueries.fetch_bug_ids_from_pending_commit_list): Ditto. 17 (MockBugzilla.post_comment_to_bug): Sort cc list before printing. 18 * Scripts/webkitpy/common/net/statusserver.py: 19 (StatusServer.set_api_key): Convert filter to list. 20 * Scripts/webkitpy/common/net/web.py: 21 (Web.get_binary): Use Python 2/3 compatible urlopen. 22 (Web.request): Use Python 2/3 compatible Request. 23 * Scripts/webkitpy/common/prettypatch.py: 24 (PrettyPatch.pretty_diff_file): Encode diff before printing. 25 * Scripts/webkitpy/common/system/executive_mock.py: 26 (MockExecutive.run_and_throw_if_fail): Sort environment before printing. 27 (MockExecutive.run_command): Convert input to string before printing. 28 * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py: 29 (FailingTestCommitQueue.test_results): Convert map to list. 30 (MockSimpleTestPlanCommitQueue.test_results): Ditto. 31 * Scripts/webkitpy/tool/bot/feeders.py: 32 (CommitQueueFeeder.feed): Use Python 2/3 compatible sort. 33 (CommitQueueFeeder._patch_cmp): Deleted. 34 * Scripts/webkitpy/tool/bot/flakytestreporter.py: 35 (FlakyTestReporter._lookup_bug_for_flaky_test): Convert filter to list. 36 * Scripts/webkitpy/tool/bot/irc_command.py: 37 (Whois.execute): Convert map to list. 38 * Scripts/webkitpy/tool/bot/retrylogic_unittest.py: 39 (JSCEarlyWarningSystemTest._create_task): Convert map to list. 40 * Scripts/webkitpy/tool/bot/sheriff.py: 41 * Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py: Use sorted lists 42 Instead of sets. 43 * Scripts/webkitpy/tool/commands/download.py: 44 (AbstractPatchSequencingCommand.__init__): Use Python 2/3 compatible sort. 45 * Scripts/webkitpy/tool/commands/download_unittest.py: Sort environment. 46 * Scripts/webkitpy/tool/commands/earlywarningsystem.py: 47 (AbstractEarlyWarningSystem.load_ews_classes): str.translate differs between Python 2 48 and Python 3. 49 * Scripts/webkitpy/tool/commands/newcommitbot.py: 50 (NewCommitBot._summarize_commit_log): Convert filter to list. 51 * Scripts/webkitpy/tool/commands/queues.py: 52 (AbstractQueue.should_continue_work_queue): Handle case where iterations is a MagicMock. 53 (AbstractQueue._log_from_script_error_for_upload): Explicitly use BytesIO 54 * Scripts/webkitpy/tool/commands/queues_unittest.py: Use explicit import paths. 55 * Scripts/webkitpy/tool/commands/rebaseline_unittest.py: Sort lists before comparing them. 56 * Scripts/webkitpy/tool/commands/stepsequence.py: 57 (StepSequence.options): Use Python 2/3 compatible sort. 58 * Scripts/webkitpy/tool/commands/suggestnominations.py: 59 (AbstractCommitLogCommand.__init__): Use Python 2/3 compatible sort. 60 (SuggestNominations._print_nominations): Ditto. 61 (SuggestNominations._print_counts): Ditto. 62 (SuggestNominations._print_nominations.nomination_cmp): Deleted. 63 (SuggestNominations._print_counts.counter_cmp): Deleted. 64 * Scripts/webkitpy/tool/mocktool_unittest.py: Use explicit import paths. 65 * Scripts/webkitpy/tool/multicommandtool.py: 66 (HelpCommand._help_epilog): Convert filter to list, use Python 2/3 compatible sort. 67 (MultiCommandTool._find_all_commands): Use Python 2/3 compatible sort. 68 * Scripts/webkitpy/tool/servers/gardeningserver.py: 69 (GardeningHTTPServer): Use Python 2/3 compatible HTTPServers. 70 * Scripts/webkitpy/tool/servers/rebaselineserver.py: 71 (get_test_baselines.AllPlatformsPort.baseline_search_path): Use list instead of utterable keys. 72 (RebaselineHTTPServer): Use Python 2/3 compatible HTTPServers. 73 (RebaselineHTTPServer.__init__): Ditto. 74 * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py: 75 (GetActualResultFilesTest.test): Use assertEqual instead of assertItemsEqual. 76 * Scripts/webkitpy/tool/servers/reflectionhandler.py: 77 (ReflectionHandler): Use Python 2/3 compatible HTTPServers. 78 * Scripts/webkitpy/tool/steps/applywatchlist.py: 79 (ApplyWatchList.run): Sort cc_emails before printing. 80 * Scripts/webkitpy/tool/steps/applywatchlist_unittest.py: Print sorted list instead 81 of set. 82 * Scripts/webkitpy/tool/steps/confirmdiff.py: 83 (ConfirmDiff._show_pretty_diff): Use Python 2/3 compatible pathname2url. 84 * Scripts/webkitpy/tool/steps/haslanded.py: 85 (HasLanded.convert_to_svn): Use Python 2/3 compatible StringIO. 86 (HasLanded.strip_change_log): Ditto. 87 * Scripts/webkitpy/tool/steps/preparechangelog.py: 88 (PrepareChangeLog._resolve_existing_entry): Convert zip object to list. 89 * Scripts/webkitpy/tool/steps/promptforbugortitle.py: Use Python 2/3 compatible urlparse. 90 * Scripts/webkitpy/tool/steps/steps_unittest.py: Sort environment. 91 * Scripts/webkitpy/w3c/test_exporter.py: Use Python 2/3 compatible HTTPError. 92 * Scripts/webkitpy/w3c/wpt_github.py: 93 (WPTGitHub.remove_label): Use Python 2/3 compatible urllib.quote. 94 (WPTGitHub.is_pr_merged): Use Python 2/3 compatible HTTPError. 95 (WPTGitHub.merge_pr): Ditto. 96 (JSONResponse.__init__): 97 1 98 2019-12-04 Jonathan Bedard <jbedard@apple.com> 2 99 -
trunk/Tools/Scripts/test-webkitpy-python3
r252560 r253128 42 42 'webkitpy.layout_tests.views', 43 43 'webkitpy.port', 44 'webkitpy.tool', 44 45 'webkitpy.results', 45 46 'webkitpy.style', -
trunk/Tools/Scripts/webkit-patch
r117049 r253128 38 38 import sys 39 39 import codecs 40 41 import webkitpy.common.version_check42 40 43 41 from webkitpy.common.system.logutils import configure_logging -
trunk/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
r251112 r253128 111 111 # Checking reviewer() ensures that it was both reviewed and has a valid 112 112 # reviewer. 113 return filter(lambda patch: patch.reviewer(), patches)113 return list(filter(lambda patch: patch.reviewer(), patches)) 114 114 115 115 def commit_queued_patches(self, include_invalid=False): … … 120 120 # Checking committer() ensures that it was both commit-queue+'d and has 121 121 # a valid committer. 122 return filter(lambda patch: patch.committer(), patches)122 return list(filter(lambda patch: patch.committer(), patches)) 123 123 124 124 def comments(self): -
trunk/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py
r251112 r253128 324 324 lambda bug: bug.commit_queued_patches(), 325 325 self._all_bugs()) 326 return map(lambda bug: bug.id(), bugs_with_commit_queued_patches)326 return list(map(lambda bug: bug.id(), bugs_with_commit_queued_patches)) 327 327 328 328 def fetch_attachment_ids_from_review_queue(self, since=None, only_security_bugs=False): … … 334 334 if only_security_bugs: 335 335 unreviewed_patches = filter(lambda patch: patch.bug().is_security_sensitive(), unreviewed_patches) 336 return map(lambda patch: patch.id(), unreviewed_patches)336 return list(map(lambda patch: patch.id(), unreviewed_patches)) 337 337 338 338 def fetch_patches_from_commit_queue(self): … … 343 343 bugs_with_reviewed_patches = filter(lambda bug: bug.reviewed_patches(), 344 344 self._all_bugs()) 345 bug_ids = map(lambda bug: bug.id(), bugs_with_reviewed_patches)345 bug_ids = list(map(lambda bug: bug.id(), bugs_with_reviewed_patches)) 346 346 # NOTE: This manual hack here is to allow testing logging in 347 347 # test_assign_to_committer the real pending-commit query on bugzilla … … 471 471 def post_comment_to_bug(self, bug_id, comment_text, cc=None, see_also=None): 472 472 _log.info("MOCK bug comment: bug_id=%s, cc=%s, see_also=%s\n--- Begin comment ---\n%s\n--- End comment ---\n" % ( 473 bug_id, cc, see_also, comment_text))473 bug_id, sorted(cc or []) or None, see_also, comment_text)) 474 474 475 475 def add_attachment_to_bug(self, bug_id, file_or_string, description, filename=None, comment_text=None, mimetype=None): -
trunk/Tools/Scripts/webkitpy/common/net/statusserver.py
r251374 r253128 71 71 def set_api_key(self, api_key): 72 72 self._api_key = str(api_key) 73 new_headers = filter(lambda header: header[0] != self._AUTHORIZATION_HEADER_NAME, self._browser.addheaders)73 new_headers = list(filter(lambda header: header[0] != self._AUTHORIZATION_HEADER_NAME, self._browser.addheaders)) 74 74 if api_key: 75 75 new_headers.append(self._authorization_header_name_and_value_pair()) -
trunk/Tools/Scripts/webkitpy/common/net/web.py
r226009 r253128 27 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 28 29 import urllib229 import sys 30 30 31 31 from webkitpy.common.net.networktransaction import NetworkTransaction 32 33 if sys.version_info > (3, 0): 34 from urllib.request import build_opener, Request, urlopen, HTTPHandler 35 else: 36 from urllib2 import urlopen, build_opener, Request, HTTPHandler 32 37 33 38 34 39 class Web(object): 35 40 def get_binary(self, url, convert_404_to_None=False): 36 return NetworkTransaction(convert_404_to_None=convert_404_to_None).run(lambda: url lib2.urlopen(url).read())41 return NetworkTransaction(convert_404_to_None=convert_404_to_None).run(lambda: urlopen(url).read()) 37 42 38 43 def request(self, method, url, data, headers=None): 39 opener = urllib2.build_opener(urllib2.HTTPHandler)40 request = urllib2.Request(url=url, data=data)44 opener = build_opener(HTTPHandler) 45 request = Request(url=url, data=data) 41 46 request.get_method = lambda: method 42 47 -
trunk/Tools/Scripts/webkitpy/common/prettypatch.py
r225733 r253128 32 32 import tempfile 33 33 from webkitpy.common.system.executive import ScriptError 34 from webkitpy.common.unicode_compatibility import encode_if_necessary 34 35 35 36 _log = logging.getLogger(__name__) … … 50 51 # Diffs can contain multiple text files of different encodings 51 52 # so we always deal with them as byte arrays, not unicode strings. 52 assert(isinstance(diff, str))53 pretty_diff = self.pretty_diff(diff)53 diff = encode_if_necessary(diff) 54 pretty_diff = encode_if_necessary(self.pretty_diff(diff)) 54 55 diff_file = tempfile.NamedTemporaryFile(suffix=".html") 55 56 diff_file.write(pretty_diff) -
trunk/Tools/Scripts/webkitpy/common/system/executive_mock.py
r252738 r253128 30 30 import os 31 31 32 from webkitpy.common.unicode_compatibility import BytesIO, encode_if_necessary, unicode32 from webkitpy.common.unicode_compatibility import BytesIO, decode_for, encode_if_necessary, unicode 33 33 from webkitpy.common.system.executive import ScriptError 34 34 … … 100 100 env_string = "" 101 101 if env: 102 env_string = ", env=%s" % env 102 for key in sorted(env.keys()): 103 if len(env_string): 104 env_string += ", " 105 env_string += "'{}': '{}'".format(key, env[key]) 106 env_string = ", env={" + env_string + "}" 103 107 _log.info("MOCK run_and_throw_if_fail: %s, cwd=%s%s" % (args, cwd, env_string)) 104 108 if self._should_throw_when_run.intersection(args): … … 127 131 env_string = "" 128 132 if env: 129 env_string = ", env=%s" % env 133 for key in sorted(env.keys()): 134 if len(env_string): 135 env_string += ", " 136 env_string += "'{}': '{}'".format(key, env[key]) 137 env_string = ", env={" + env_string + "}" 130 138 input_string = "" 131 139 if input: 132 input_string = ", input=%s" % input140 input_string = ", input=%s" % decode_for(input, str) 133 141 _log.info("MOCK run_command: %s, cwd=%s%s%s" % (args, cwd, env_string, input_string)) 134 142 output = "MOCK output of child process" -
trunk/Tools/Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py
r252943 r253128 113 113 failures_for_run = self._test_failure_plan[self._test_run_counter] 114 114 assert(isinstance(failures_for_run, list)) 115 results = LayoutTestResults(test_results= map(self._mock_test_result, failures_for_run), did_exceed_test_failure_limit=(len(failures_for_run) >= 10))115 results = LayoutTestResults(test_results=list(map(self._mock_test_result, failures_for_run)), did_exceed_test_failure_limit=(len(failures_for_run) >= 10)) 116 116 return results 117 117 … … 148 148 def test_results(self): 149 149 assert(isinstance(self._current_test_results, list)) 150 return LayoutTestResults(test_results= map(self._mock_test_result, self._current_test_results), did_exceed_test_failure_limit=(len(self._current_test_results) >= 10))150 return LayoutTestResults(test_results=list(map(self._mock_test_result, self._current_test_results)), did_exceed_test_failure_limit=(len(self._current_test_results) >= 10)) 151 151 152 152 def did_run_clean_tests(self): … … 160 160 161 161 162 _lots_of_failing_tests = map(lambda num: "test-%s.html" % num, range(0, 100))162 _lots_of_failing_tests = list(map(lambda num: "test-%s.html" % num, range(0, 100))) 163 163 164 164 -
trunk/Tools/Scripts/webkitpy/tool/bot/feeders.py
r232979 r253128 55 55 patches = self._validate_patches() 56 56 patches = self._patches_with_acceptable_review_flag(patches) 57 patches = sorted(patches, self._patch_cmp)57 patches = sorted(patches, key=lambda patch: patch.attach_date() or 0) 58 58 59 59 high_priority_item_ids = [patch.id() for patch in patches if patch.is_rollout()] … … 75 75 all_patches = sum([self._patches_for_bug(bug_id) for bug_id in bug_ids], []) 76 76 return self.committer_validator.patches_after_rejecting_invalid_commiters_and_reviewers(all_patches) 77 78 def _patch_cmp(self, a, b):79 return cmp(a.attach_date(), b.attach_date())80 77 81 78 -
trunk/Tools/Scripts/webkitpy/tool/bot/flakytestreporter.py
r170637 r253128 74 74 # Match any bugs which are from known bots or the email this bot is using. 75 75 allowed_emails = self._bot_emails | set([self._bugzilla_email]) 76 bugs = filter(lambda bug: bug.reporter_email() in allowed_emails, bugs)76 bugs = list(filter(lambda bug: bug.reporter_email() in allowed_emails, bugs)) 77 77 if not bugs: 78 78 return None -
trunk/Tools/Scripts/webkitpy/tool/bot/irc_command.py
r238618 r253128 36 36 from webkitpy.common.net.web import Web 37 37 from webkitpy.common.system.executive import ScriptError 38 from webkitpy.common.unicode_compatibility import unicode 38 39 from webkitpy.tool.bot.queueengine import TerminateQueue 39 40 from webkitpy.tool.grammar import join_with_separators … … 283 284 return unicode("%s: %s hasn't told me their nick. Boo hoo :-(") % (nick, contributor) 284 285 return unicode("%s: %s is %s. Why do you ask?") % (nick, search_string, self._full_record_and_nick(contributor)) 285 contributor_nicks = map(self._full_record_and_nick, contributors)286 contributor_nicks = list(map(self._full_record_and_nick, contributors)) 286 287 contributors_string = join_with_separators(contributor_nicks, only_two_separator=" or ", last_separator=', or ') 287 288 return unicode("%s: I'm not sure who you mean? %s could be '%s'.") % (nick, contributors_string, search_string) -
trunk/Tools/Scripts/webkitpy/tool/bot/retrylogic_unittest.py
r224547 r253128 86 86 tool = MockTool(log_executive=True) 87 87 patch = tool.bugs.fetch_attachment(10000) 88 patches_passed_all_tests = map(self._results_indicate_all_passed, [second_test_results, first_test_results])88 patches_passed_all_tests = list(map(self._results_indicate_all_passed, [second_test_results, first_test_results])) 89 89 return MockPatchAnalysisTask(queue, patch, patches_passed_all_tests) 90 90 -
trunk/Tools/Scripts/webkitpy/tool/bot/sheriff.py
r148180 r253128 30 30 from webkitpy.common.system.executive import ScriptError 31 31 from webkitpy.tool.grammar import join_with_separators 32 33 from functools import reduce 32 34 33 35 -
trunk/Tools/Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py
r249067 r253128 44 44 def test_args_parsing_with_bug(self): 45 45 expected_logs = """MockWatchList: determine_cc_and_messages 46 MOCK bug comment: bug_id=50002, cc= set(['eric@webkit.org', 'levin@chromium.org', 'abarth@webkit.org']), see_also=None46 MOCK bug comment: bug_id=50002, cc=['abarth@webkit.org', 'eric@webkit.org', 'levin@chromium.org'], see_also=None 47 47 --- Begin comment --- 48 48 Message1. … … 50 50 Message2. 51 51 --- End comment ---\n 52 Result of watchlist: cc " eric@webkit.org, levin@chromium.org, abarth@webkit.org" messages "Message1.52 Result of watchlist: cc "abarth@webkit.org, eric@webkit.org, levin@chromium.org" messages "Message1. 53 53 54 54 Message2." -
trunk/Tools/Scripts/webkitpy/tool/commands/download.py
r233219 r253128 196 196 self._prepare_sequence = StepSequence(self.prepare_steps) 197 197 self._main_sequence = StepSequence(self.main_steps) 198 options = sorted(set(self._prepare_sequence.options() + self._main_sequence.options()) )198 options = sorted(set(self._prepare_sequence.options() + self._main_sequence.options()), key=lambda option: option.dest) 199 199 AbstractPatchProcessingCommand.__init__(self, options) 200 200 -
trunk/Tools/Scripts/webkitpy/tool/commands/download_unittest.py
r223796 r253128 163 163 Was that diff correct? 164 164 Building WebKit 165 MOCK run_and_throw_if_fail: ['mock-build-webkit', 'ARCHS=MOCK ARCH'], cwd=/mock-checkout, env={' TERM': 'dumb', 'MOCK_ENVIRON_COPY': '1'}165 MOCK run_and_throw_if_fail: ['mock-build-webkit', 'ARCHS=MOCK ARCH'], cwd=/mock-checkout, env={'MOCK_ENVIRON_COPY': '1', 'TERM': 'dumb'} 166 166 Running Python unit tests 167 167 MOCK run_and_throw_if_fail: ['mock-test-webkitpy'], cwd=/mock-checkout -
trunk/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py
r233288 r253128 32 32 import os 33 33 from optparse import make_option 34 import sys 34 35 35 36 from webkitpy.common.config.committers import CommitterList … … 37 38 from webkitpy.common.system.filesystem import FileSystem 38 39 from webkitpy.common.system.executive import ScriptError 40 from webkitpy.common.unicode_compatibility import encode_for 39 41 from webkitpy.tool.bot.earlywarningsystemtask import EarlyWarningSystemTask, EarlyWarningSystemTaskDelegate 40 42 from webkitpy.tool.bot.bindingstestresultsreader import BindingsTestResultsReader … … 175 177 176 178 classes = [] 177 for name, config in ewses.iteritems(): 178 classes.append(type(name.encode('utf-8').translate(None, ' -'), (cls,), { 179 for name, config in ewses.items(): 180 if sys.version_info > (3, 0): 181 translated = encode_for(name, str).translate(' -') 182 else: 183 translated = encode_for(name, str).translate(None, ' -') 184 185 classes.append(type(translated, (cls,), { 179 186 'name': config.get('name', config['port'] + '-ews'), 180 187 'port_name': config['port'], -
trunk/Tools/Scripts/webkitpy/tool/commands/newcommitbot.py
r211134 r253128 159 159 lines[0] = '%s rolled out %s in %s' % (author, rollout.group('revisions'), linkified_revision) 160 160 161 return ' '.join( filter(lambda line: len(line), lines)[0:4])161 return ' '.join(list(filter(lambda line: len(line), lines))[0:4]) 162 162 163 163 def handle_unexpected_error(self, failure_map, message): -
trunk/Tools/Scripts/webkitpy/tool/commands/queues.py
r233288 r253128 37 37 38 38 from optparse import make_option 39 from StringIO import StringIO40 39 41 40 from webkitpy.common.config.committervalidator import CommitterValidator … … 43 42 from webkitpy.common.net.bugzilla import Bugzilla, Attachment 44 43 from webkitpy.common.system.executive import ScriptError 44 from webkitpy.common.unicode_compatibility import BytesIO 45 45 from webkitpy.tool.bot.botinfo import BotInfo 46 46 from webkitpy.tool.bot.commitqueuetask import CommitQueueTask, CommitQueueTaskDelegate … … 136 136 def should_continue_work_queue(self): 137 137 self._iteration_count += 1 138 if not isinstance(self._options.iterations, int): 139 return True 138 140 return not self._options.iterations or self._iteration_count <= self._options.iterations 139 141 … … 164 166 # to status_server, because ClientForm (part of mechanize) 165 167 # wants a file-like object with pre-encoded data. 166 return StringIO(output.encode("utf-8"))168 return BytesIO(output.encode("utf-8")) 167 169 168 170 @classmethod -
trunk/Tools/Scripts/webkitpy/tool/commands/queues_unittest.py
r244923 r253128 29 29 30 30 import os 31 import StringIO32 31 33 32 from webkitpy.common.checkout.scm import CheckoutNeedsUpdate … … 36 35 from webkitpy.common.net.bugzilla import Attachment 37 36 from webkitpy.common.system.outputcapture import OutputCapture 37 from webkitpy.common.unicode_compatibility import StringIO 38 38 from webkitpy.layout_tests.models import test_results 39 39 from webkitpy.layout_tests.models import test_failures -
trunk/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py
r226715 r253128 109 109 self.command._rebaseline_test_and_update_expectations(self.options) 110 110 111 self.assertItemsEqual(self.tool.web.urls_fetched, 112 [self.WEB_PREFIX + '/userscripts/another-test-actual.png', 113 self.WEB_PREFIX + '/userscripts/another-test-actual.wav', 114 self.WEB_PREFIX + '/userscripts/another-test-actual.txt']) 111 self.assertEquals( 112 sorted(self.tool.web.urls_fetched), [ 113 self.WEB_PREFIX + '/userscripts/another-test-actual.png', 114 self.WEB_PREFIX + '/userscripts/another-test-actual.txt', 115 self.WEB_PREFIX + '/userscripts/another-test-actual.wav', 116 ]) 115 117 new_expectations = self._read(self.lion_expectations_path) 116 118 self.assertMultiLineEqual(new_expectations, """Bug(B) [ Mac Linux XP Debug ] fast/dom/Window/window-postmessage-clone-really-deep-array.html [ Pass ] … … 125 127 self.command._rebaseline_test_and_update_expectations(self.options) 126 128 127 self.assertItemsEqual(self.tool.web.urls_fetched, 128 [self.WEB_PREFIX + '/userscripts/another-test-actual.png', 129 self.WEB_PREFIX + '/userscripts/another-test-actual.wav', 130 self.WEB_PREFIX + '/userscripts/another-test-actual.txt']) 129 self.assertEquals( 130 sorted(self.tool.web.urls_fetched), [ 131 self.WEB_PREFIX + '/userscripts/another-test-actual.png', 132 self.WEB_PREFIX + '/userscripts/another-test-actual.txt', 133 self.WEB_PREFIX + '/userscripts/another-test-actual.wav', 134 ]) 131 135 new_expectations = self._read(self.lion_expectations_path) 132 136 self.assertMultiLineEqual(new_expectations, "Bug(x) [ Mac ] userscripts/another-test.html [ ImageOnlyFailure ]\nbug(z) [ Linux ] userscripts/another-test.html [ ImageOnlyFailure ]\n") … … 139 143 self.command._rebaseline_test_and_update_expectations(self.options) 140 144 141 self.assertItemsEqual(self.tool.web.urls_fetched, 142 [self.WEB_PREFIX + '/userscripts/another-test-actual.png', 143 self.WEB_PREFIX + '/userscripts/another-test-actual.wav', 144 self.WEB_PREFIX + '/userscripts/another-test-actual.txt']) 145 self.assertEquals( 146 sorted(self.tool.web.urls_fetched), [ 147 self.WEB_PREFIX + '/userscripts/another-test-actual.png', 148 self.WEB_PREFIX + '/userscripts/another-test-actual.txt', 149 self.WEB_PREFIX + '/userscripts/another-test-actual.wav', 150 ]) 145 151 146 152 new_expectations = self._read(self.lion_expectations_path) … … 149 155 def test_rebaseline_test(self): 150 156 self.command._rebaseline_test("Apple Lion Release WK1 (Tests)", "userscripts/another-test.html", None, "txt", self.WEB_PREFIX) 151 self.assert ItemsEqual(self.tool.web.urls_fetched, [self.WEB_PREFIX + '/userscripts/another-test-actual.txt'])157 self.assertEquals(self.tool.web.urls_fetched, [self.WEB_PREFIX + '/userscripts/another-test-actual.txt']) 152 158 153 159 def test_rebaseline_test_with_results_directory(self): … … 155 161 self.options.results_directory = '/tmp' 156 162 self.command._rebaseline_test_and_update_expectations(self.options) 157 self.assert ItemsEqual(self.tool.web.urls_fetched, ['file:///tmp/userscripts/another-test-actual.txt'])163 self.assertEquals(self.tool.web.urls_fetched, ['file:///tmp/userscripts/another-test-actual.txt']) 158 164 159 165 def test_rebaseline_test_and_print_scm_changes(self): … … 185 191 self.command._rebaseline_test("Apple Lion Release WK1 (Tests)", "userscripts/another-test.html", ["mac-lion-wk2"], "txt", self.WEB_PREFIX) 186 192 187 self.assert ItemsEqual(self.tool.web.urls_fetched, [self.WEB_PREFIX + '/userscripts/another-test-actual.txt'])193 self.assertEquals(self.tool.web.urls_fetched, [self.WEB_PREFIX + '/userscripts/another-test-actual.txt']) 188 194 self.assertMultiLineEqual(self._read("platform/mac-lion-wk2/userscripts/another-test-expected.txt"), "original lion result") 189 195 self.assertMultiLineEqual(self._read("platform/mac-lion-wk1/userscripts/another-test-expected.txt"), self.MOCK_WEB_RESULT) … … 296 302 builders._exact_matches = old_exact_matches 297 303 298 calls = filter(lambda x: x[0] not in ['perl', '/usr/bin/xcrun', '/usr/bin/ulimit'], self.tool.executive.calls)304 calls = list(filter(lambda x: x[0] not in ['perl', '/usr/bin/xcrun', '/usr/bin/ulimit'], self.tool.executive.calls)) 299 305 self.assertEqual(calls, 300 306 [[['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--builder', 'MOCK builder', '--test', 'mock/path/to/test.html', '--verbose']]]) … … 318 324 319 325 # FIXME: change this to use the test- ports. 320 calls = filter(lambda x: x[0] not in ['perl', '/usr/bin/xcrun', '/usr/bin/ulimit'], self.tool.executive.calls)326 calls = list(filter(lambda x: x[0] not in ['perl', '/usr/bin/xcrun', '/usr/bin/ulimit'], self.tool.executive.calls)) 321 327 self.assertEqual(len(calls), 1) 322 328 self.assertEqual(len(calls[0]), 22) -
trunk/Tools/Scripts/webkitpy/tool/commands/stepsequence.py
r232222 r253128 60 60 collected_options = collected_options + step.options() 61 61 # Remove duplicates. 62 collected_options = sorted(set(collected_options) )62 collected_options = sorted(set(collected_options), key=lambda option: option.dest) 63 63 return collected_options 64 64 -
trunk/Tools/Scripts/webkitpy/tool/commands/suggestnominations.py
r225733 r253128 60 60 make_option("--max-commit-age", action="store", dest="max_commit_age", type="int", default=9, help="Specify maximum commit age to consider (in months)."), 61 61 ] 62 options = sorted(options, cmp=lambda a, b: cmp(a._long_opts, b._long_opts))62 options = sorted(options, key=lambda option: option.dest) 63 63 super(AbstractCommitLogCommand, self).__init__(options=options) 64 64 # FIXME: This should probably be on the tool somewhere. … … 244 244 245 245 def _print_nominations(self, nominations, counters_by_email): 246 def nomination_cmp(a_nomination, b_nomination): 247 roles_result = cmp(a_nomination['roles'], b_nomination['roles']) 248 if roles_result: 249 return -roles_result 250 count_result = cmp(a_nomination['patch_count'], b_nomination['patch_count']) 251 if count_result: 252 return -count_result 253 return cmp(a_nomination['author_name'], b_nomination['author_name']) 254 255 for nomination in sorted(nominations, nomination_cmp): 246 nominations = sorted(nominations, key=lambda a: a['roles']) 247 nominations = sorted(nominations, key=lambda a: a['patch_count']) 248 nominations = sorted(nominations, key=lambda a: a['author_name']) 249 250 for nomination in nominations: 256 251 # This is a little bit of a hack, but its convienent to just pass the nomination dictionary to the formating operator. 257 252 nomination['roles_string'] = grammar.join_with_separators(nomination['roles']).upper() … … 263 258 264 259 def _print_counts(self, counters_by_email): 265 def counter_cmp(a_tuple, b_tuple): 266 # split the tuples 267 # the second element is the "counter" structure 268 _, a_counter = a_tuple 269 _, b_counter = b_tuple 270 271 count_result = cmp(a_counter['count'], b_counter['count']) 272 if count_result: 273 return -count_result 274 return cmp(a_counter['latest_name'].lower(), b_counter['latest_name'].lower()) 275 276 for author_email, counter in sorted(counters_by_email.items(), counter_cmp): 260 counters = sorted(counters_by_email.items(), key=lambda counter: counter[1]['count']) 261 counters = sorted(counters, key=lambda counter: counter[1]['latest_name']) 262 263 for author_email, counter in counters: 277 264 if author_email != counter['latest_email']: 278 265 continue -
trunk/Tools/Scripts/webkitpy/tool/mocktool_unittest.py
r174136 r253128 29 29 import unittest 30 30 31 from mocktool import MockOptions31 from webkitpy.tool.mocktool import MockOptions 32 32 33 33 -
trunk/Tools/Scripts/webkitpy/tool/multicommandtool.py
r225733 r253128 180 180 else: 181 181 epilog = "Common %prog commands:\n" 182 relevant_commands = filter(self._tool.should_show_in_main_help, self._tool.commands)182 relevant_commands = list(filter(self._tool.should_show_in_main_help, self._tool.commands)) 183 183 longest_name_length = max(map(lambda command: len(command.name), relevant_commands)) 184 relevant_commands .sort(lambda a, b: cmp(a.name, b.name))184 relevant_commands = sorted(relevant_commands, key=lambda command: command.name) 185 185 command_help_texts = map(lambda command: " %s %s\n" % (command.name.ljust(longest_name_length), command.help_text), relevant_commands) 186 186 epilog += "%s\n" % "".join(command_help_texts) … … 233 233 commands = set() 234 234 cls._add_all_subclasses(Command, commands) 235 return sorted(commands )235 return sorted(commands, key=lambda typ: typ.__name__) 236 236 237 237 def name(self): -
trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py
r225724 r253128 24 24 25 25 from __future__ import print_function 26 import BaseHTTPServer 27 import SocketServer 26 28 27 import logging 29 28 import json … … 31 30 import sys 32 31 import urllib 32 33 if sys.version_info > (3, 0): 34 from http.server import HTTPServer 35 from socketserver import ThreadingMixIn 36 else: 37 from BaseHTTPServer import HTTPServer 38 from SocketServer import ThreadingMixIn 33 39 34 40 from webkitpy.common.memoized import memoized … … 40 46 41 47 42 class GardeningHTTPServer( SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):48 class GardeningHTTPServer(ThreadingMixIn, HTTPServer): 43 49 def __init__(self, httpd_port, config): 44 50 server_name = '' -
trunk/Tools/Scripts/webkitpy/tool/servers/rebaselineserver.py
r239989 r253128 30 30 import os 31 31 import os.path 32 import BaseHTTPServer32 import sys 33 33 34 34 from webkitpy.common.system.executive import ScriptError 35 35 from webkitpy.port.base import Port 36 36 from webkitpy.tool.servers.reflectionhandler import ReflectionHandler 37 38 if sys.version_info > (3, 0): 39 from http.server import HTTPServer 40 else: 41 from BaseHTTPServer import HTTPServer 37 42 38 43 … … 170 175 171 176 def baseline_search_path(self, **kwargs): 172 return self._platforms_by_directory.keys()177 return list(self._platforms_by_directory.keys()) 173 178 174 179 def platform_from_directory(self, directory): … … 199 204 200 205 201 class RebaselineHTTPServer( BaseHTTPServer.HTTPServer):206 class RebaselineHTTPServer(HTTPServer): 202 207 def __init__(self, httpd_port, config): 203 208 server_name = "" 204 BaseHTTPServer.HTTPServer.__init__(self, (server_name, httpd_port), RebaselineHTTPRequestHandler)209 HTTPServer.__init__(self, (server_name, httpd_port), RebaselineHTTPRequestHandler) 205 210 self.test_config = config['test_config'] 206 211 self.results_json = config['results_json'] -
trunk/Tools/Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py
r174136 r253128 235 235 'fast/text-notactual.txt', 236 236 )) 237 self.assert ItemsEqual(237 self.assertEqual( 238 238 ('text-actual.txt',), 239 239 rebaselineserver._get_actual_result_files( -
trunk/Tools/Scripts/webkitpy/tool/servers/reflectionhandler.py
r135936 r253128 27 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 28 29 import BaseHTTPServer30 31 29 import cgi 32 30 import codecs … … 37 35 import os.path 38 36 import shutil 37 import sys 39 38 import threading 40 39 import time 41 import urlparse42 40 import wsgiref.handlers 43 import BaseHTTPServer 41 42 if sys.version_info > (3, 0): 43 from http.server import BaseHTTPRequestHandler 44 45 else: 46 from BaseHTTPServer import BaseHTTPRequestHandler 44 47 45 48 46 class ReflectionHandler(BaseHTTP Server.BaseHTTPRequestHandler):49 class ReflectionHandler(BaseHTTPRequestHandler): 47 50 STATIC_FILE_EXTENSIONS = ['.js', '.css', '.html'] 48 51 # Subclasses should override. -
trunk/Tools/Scripts/webkitpy/tool/steps/applywatchlist.py
r249067 r253128 66 66 else: 67 67 _log.info('No bug was updated because no id was given.') 68 _log.info('Result of watchlist: cc "{}" messages "{}"'.format(', '.join( cc_emails), comment_text))68 _log.info('Result of watchlist: cc "{}" messages "{}"'.format(', '.join(sorted(cc_emails)), comment_text)) -
trunk/Tools/Scripts/webkitpy/tool/steps/applywatchlist_unittest.py
r249067 r253128 43 43 } 44 44 expected_logs = """MockWatchList: determine_cc_and_messages 45 MOCK bug comment: bug_id=50001, cc= set(['levin@chromium.org']), see_also=None45 MOCK bug comment: bug_id=50001, cc=['levin@chromium.org'], see_also=None 46 46 --- Begin comment --- 47 47 Message2. -
trunk/Tools/Scripts/webkitpy/tool/steps/confirmdiff.py
r225733 r253128 27 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 28 29 import urllib29 import sys 30 30 31 31 from webkitpy.tool.steps.abstractstep import AbstractStep … … 35 35 from webkitpy.common.system.executive import ScriptError 36 36 37 if sys.version_info > (3, 0): 38 from urllib.request import pathname2url 39 else: 40 from urllib import pathname2url 37 41 38 42 _log = logutils.get_logger(__file__) … … 54 58 self._tool.scm().checkout_root) 55 59 pretty_diff_file = pretty_patch.pretty_diff_file(diff) 56 url = "file://%s" % urllib.pathname2url(pretty_diff_file.name)60 url = "file://%s" % pathname2url(pretty_diff_file.name) 57 61 self._tool.user.open_url(url) 58 62 # We return the pretty_diff_file here because we need to keep the -
trunk/Tools/Scripts/webkitpy/tool/steps/haslanded.py
r225733 r253128 27 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 28 29 import cStringIO as StringIO30 29 import logging 31 30 import sys … … 36 35 from webkitpy.common.system.executive import Executive, ScriptError 37 36 from webkitpy.common.checkout import diff_parser 37 from webkitpy.common.unicode_compatibility import StringIO 38 38 39 39 from webkitpy.tool.steps import confirmdiff … … 46 46 @classmethod 47 47 def convert_to_svn(cls, diff): 48 lines = StringIO .StringIO(diff).readlines()48 lines = StringIO(diff).readlines() 49 49 convert = diff_parser.get_diff_converter(lines) 50 50 return "".join(convert(x) for x in lines) … … 54 54 output = [] 55 55 skipping = False 56 for line in StringIO .StringIO(diff).readlines():56 for line in StringIO(diff).readlines(): 57 57 indexline = re.match("^Index: ([^\\n]*/)?([^/\\n]*)$", line) 58 58 if skipping and indexline: -
trunk/Tools/Scripts/webkitpy/tool/steps/preparechangelog.py
r225733 r253128 66 66 with self._tool.filesystem.open_text_file_for_reading(changelog_path) as changelog_file: 67 67 entries_gen = ChangeLog.parse_entries_from_file(changelog_file) 68 entries = zip(entries_gen, range(2))68 entries = list(zip(entries_gen, range(2))) 69 69 70 70 if not len(entries): -
trunk/Tools/Scripts/webkitpy/tool/steps/promptforbugortitle.py
r246566 r253128 27 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 28 29 import re 30 import sys 31 29 32 from webkitpy.tool.steps.abstractstep import AbstractStep 30 33 from webkitpy.tool.steps.options import Options 31 from urlparse import urlparse 32 import re 34 35 if sys.version_info > (3, 0): 36 from urllib.parse import urlparse 37 else: 38 from urlparse import urlparse 39 33 40 34 41 class PromptForBugOrTitle(AbstractStep): -
trunk/Tools/Scripts/webkitpy/tool/steps/steps_unittest.py
r224547 r253128 189 189 step = steps.Build(tool, mock_options) 190 190 expected_logs = """Building WebKit 191 MOCK run_and_throw_if_fail: ['Tools/Scripts/build-jsc', '--debug', 'ARCHS=True'], cwd=/mock-checkout, env={' TERM': 'dumb', 'MOCK_ENVIRON_COPY': '1'}191 MOCK run_and_throw_if_fail: ['Tools/Scripts/build-jsc', '--debug', 'ARCHS=True'], cwd=/mock-checkout, env={'MOCK_ENVIRON_COPY': '1', 'TERM': 'dumb'} 192 192 """ 193 193 OutputCapture().assert_outputs(self, step.run, [{}], expected_logs=expected_logs) … … 205 205 step = steps.Build(tool, mock_options) 206 206 expected_logs = """Building WebKit 207 MOCK run_and_throw_if_fail: ['Tools/Scripts/build-jsc', '--release', 'ARCHS=True'], cwd=/mock-checkout, env={' TERM': 'dumb', 'MOCK_ENVIRON_COPY': '1'}207 MOCK run_and_throw_if_fail: ['Tools/Scripts/build-jsc', '--release', 'ARCHS=True'], cwd=/mock-checkout, env={'MOCK_ENVIRON_COPY': '1', 'TERM': 'dumb'} 208 208 """ 209 209 OutputCapture().assert_outputs(self, step.run, [{}], expected_logs=expected_logs) -
trunk/Tools/Scripts/webkitpy/w3c/test_exporter.py
r245287 r253128 30 30 import time 31 31 import json 32 from urllib2 import HTTPError 32 import sys 33 33 34 34 from webkitpy.common.checkout.scm.git import Git … … 40 40 from webkitpy.w3c.common import WPT_GH_ORG, WPT_GH_REPO_NAME, WPT_GH_URL, WPTPaths 41 41 from webkitpy.common.memoized import memoized 42 43 if sys.version_info > (3, 0): 44 from urllib.error import HTTPError 45 else: 46 from urllib2 import HTTPError 42 47 43 48 _log = logging.getLogger(__name__) -
trunk/Tools/Scripts/webkitpy/w3c/wpt_github.py
r226009 r253128 31 31 import logging 32 32 import re 33 import urllib233 import sys 34 34 from collections import namedtuple 35 35 36 36 from webkitpy.common.memoized import memoized 37 37 from webkitpy.w3c.common import WPT_GH_ORG, WPT_GH_REPO_NAME, EXPORT_PR_LABEL 38 39 if sys.version_info > (3, 0): 40 from urllib.error import HTTPError 41 from urllib.parse import quote 42 else: 43 from urllib2 import HTTPError, quote 38 44 39 45 _log = logging.getLogger(__name__) … … 193 199 WPT_GH_REPO_NAME, 194 200 number, 195 urllib2.quote(label),201 quote(label), 196 202 ) 197 203 response = self.request(path, method='DELETE') … … 286 292 else: 287 293 raise GitHubError(204, response.status_code, 'check if PR %d is merged' % pr_number) 288 except urllib2.HTTPError as e:294 except HTTPError as e: 289 295 if e.code == 404: 290 296 return False … … 311 317 try: 312 318 response = self.request(path, method='PUT', body=body) 313 except urllib2.HTTPError as e:319 except HTTPError as e: 314 320 if e.code == 405: 315 321 raise MergeError(pr_number) … … 386 392 387 393 Args: 388 raw_response: a response object returned by open methods in urllib2 .394 raw_response: a response object returned by open methods in urllib2/urllib. 389 395 """ 390 396 self._raw_response = raw_response
Note: See TracChangeset
for help on using the changeset viewer.