diff --git a/git_common.py b/git_common.py index cd60bf66c..048353652 100644 --- a/git_common.py +++ b/git_common.py @@ -922,17 +922,18 @@ def tags(*args): def thaw(): took_action = False - for sha in run_stream('rev-list', 'HEAD'): - sha = sha.strip().decode('utf-8') - msg = run('show', '--format=%f%b', '-s', 'HEAD') - match = FREEZE_MATCHER.match(msg) - if not match: - if not took_action: - return 'Nothing to thaw.' - break - - run('reset', '--' + FREEZE_SECTIONS[match.group(1)], sha) - took_action = True + with run_stream('rev-list', 'HEAD') as stream: + for sha in stream: + sha = sha.strip().decode('utf-8') + msg = run('show', '--format=%f%b', '-s', 'HEAD') + match = FREEZE_MATCHER.match(msg) + if not match: + if not took_action: + return 'Nothing to thaw.' + break + + run('reset', '--' + FREEZE_SECTIONS[match.group(1)], sha) + took_action = True def topo_iter(branch_tree, top_down=True): diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py index 7081f4fb2..d7b708039 100755 --- a/tests/presubmit_unittest.py +++ b/tests/presubmit_unittest.py @@ -23,14 +23,9 @@ import threading import time import unittest -if sys.version_info.major == 2: - from cStringIO import StringIO - import mock - import urllib2 as urllib_request -else: - from io import StringIO - from unittest import mock - import urllib.request as urllib_request +from io import StringIO +from unittest import mock +import urllib.request as urllib_request _ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, _ROOT) @@ -52,8 +47,7 @@ import subprocess2 as subprocess # Shortcut. presubmit_canned_checks = presubmit.presubmit_canned_checks -RUNNING_PY_CHECKS_TEXT = ('Running Python ' + str(sys.version_info.major) + - ' presubmit upload checks ...\n') +RUNNING_PY_CHECKS_TEXT = ('Running Python 3 presubmit upload checks ...\n') # Access to a protected member XXX of a client class # pylint: disable=protected-access @@ -163,11 +157,6 @@ index fe3de7b..54ae6e1 100755 # limit set. self.maxDiff = None - # TODO: remove once py2 no longer supported - self.presubmit_text_prefix = ('USE_PYTHON3 = ' + - str(sys.version_info.major == 3) + '\n') - self.presubmit_text = self.presubmit_text_prefix + self.presubmit_text - class FakeChange(object): def __init__(self, obj): self._root = obj.fake_root_dir @@ -207,10 +196,7 @@ index fe3de7b..54ae6e1 100755 mock.patch('sys.stdout', StringIO()).start() mock.patch('tempfile.NamedTemporaryFile').start() mock.patch('threading.Timer').start() - if sys.version_info.major == 2: - mock.patch('urllib2.urlopen').start() - else: - mock.patch('urllib.request.urlopen').start() + mock.patch('urllib.request.urlopen').start() self.addCleanup(mock.patch.stopall) def checkstdout(self, value): @@ -515,7 +501,6 @@ class PresubmitUnittest(PresubmitTestsBase): # No error if no on-upload entry point self.assertFalse( executer.ExecPresubmitScript( - self.presubmit_text_prefix + ('def CheckChangeOnCommit(input_api, output_api):\n' ' return (output_api.PresubmitError("!!"))\n'), fake_presubmit)) @@ -524,13 +509,11 @@ class PresubmitUnittest(PresubmitTestsBase): # No error if no on-commit entry point self.assertFalse( executer.ExecPresubmitScript( - self.presubmit_text_prefix + ('def CheckChangeOnUpload(input_api, output_api):\n' ' return (output_api.PresubmitError("!!"))\n'), fake_presubmit)) self.assertFalse( executer.ExecPresubmitScript( - self.presubmit_text_prefix + ('def CheckChangeOnUpload(input_api, output_api):\n' ' if not input_api.change.BugsFromDescription():\n' ' return (output_api.PresubmitError("!!"))\n' @@ -539,7 +522,6 @@ class PresubmitUnittest(PresubmitTestsBase): self.assertFalse( executer.ExecPresubmitScript( - self.presubmit_text_prefix + 'def CheckChangeOnCommit(input_api, output_api):\n' ' results = []\n' ' results.extend(input_api.canned_checks.CheckChangeHasBugField(\n' @@ -564,7 +546,6 @@ class PresubmitUnittest(PresubmitTestsBase): # STATUS_PASS on success executer.ExecPresubmitScript( - self.presubmit_text_prefix + 'def CheckChangeOnCommit(input_api, output_api):\n' ' return [output_api.PresubmitResult("test")]\n', fake_presubmit) sink.report.assert_called_with('CheckChangeOnCommit', @@ -573,7 +554,6 @@ class PresubmitUnittest(PresubmitTestsBase): # STATUS_FAIL on fatal error sink.reset_mock() executer.ExecPresubmitScript( - self.presubmit_text_prefix + 'def CheckChangeOnCommit(input_api, output_api):\n' ' return [output_api.PresubmitError("error")]\n', fake_presubmit) sink.report.assert_called_with('CheckChangeOnCommit', @@ -591,14 +571,12 @@ class PresubmitUnittest(PresubmitTestsBase): self.assertEqual([], executer.ExecPresubmitScript( - self.presubmit_text_prefix + ('def CheckChangeOnUpload(input_api, output_api):\n' ' if len(input_api._named_temporary_files):\n' ' return (output_api.PresubmitError("!!"),)\n' ' return ()\n'), fake_presubmit)) result = executer.ExecPresubmitScript( - self.presubmit_text_prefix + ('def CheckChangeOnUpload(input_api, output_api):\n' ' with input_api.CreateTemporaryFile():\n' ' pass\n' @@ -624,7 +602,7 @@ class PresubmitUnittest(PresubmitTestsBase): executer = presubmit.PresubmitExecuter(change, False, None, presubmit.GerritAccessor()) - executer.ExecPresubmitScript(self.presubmit_text_prefix, fake_presubmit) + executer.ExecPresubmitScript('', fake_presubmit) # Check that the executer switched to the directory of the script and back. self.assertEqual(os.chdir.call_args_list, [ @@ -661,13 +639,7 @@ class PresubmitUnittest(PresubmitTestsBase): 0, presubmit.DoPostUploadExecuter( change=change, gerrit_obj=None, verbose=False)) - expected = (r'Running Python ' + str(sys.version_info.major) + - r' post upload checks \.\.\.\n') - if sys.version_info[0] == 2: - expected += ('Running .*PRESUBMIT.py under Python 2. Add USE_PYTHON3 = ' - 'True to prevent this.\n') - expected += ('Running .*PRESUBMIT.py under Python 2. Add USE_PYTHON3 = ' - 'True to prevent this.\n') + expected = (r'Running Python 3 post upload checks \.\.\.\n') self.assertRegexpMatches(sys.stdout.getvalue(), expected) def testDoPostUploadExecuterWarning(self): @@ -681,8 +653,7 @@ class PresubmitUnittest(PresubmitTestsBase): presubmit.DoPostUploadExecuter( change=change, gerrit_obj=None, verbose=False)) self.assertEqual( - 'Running Python ' + str(sys.version_info.major) + ' ' - 'post upload checks ...\n' + 'Running Python 3 post upload checks ...\n' '\n' '** Post Upload Hook Messages **\n' '??\n' @@ -699,17 +670,11 @@ class PresubmitUnittest(PresubmitTestsBase): presubmit.DoPostUploadExecuter( change=change, gerrit_obj=None, verbose=False)) - extra = '' - if sys.version_info[0] == 2: - extra = ('Running .*PRESUBMIT.py under Python 2. Add USE_PYTHON3 = True ' - 'to prevent this.\n') - expected = ('Running Python ' + str(sys.version_info.major) + ' ' - 'post upload checks \.\.\.\n' - '%s' + expected = ('Running Python 3 post upload checks \.\.\.\n' '\n' '\*\* Post Upload Hook Messages \*\*\n' '!!\n' - '\n' % extra) + '\n') self.assertRegexpMatches(sys.stdout.getvalue(), expected) def testDoPresubmitChecksNoWarningsOrErrors(self): @@ -748,8 +713,7 @@ class PresubmitUnittest(PresubmitTestsBase): fake_notify = 'This is a dry run' fake_notify_items = '["N"]' fake_notify_long_text = 'Notification long text...' - always_fail_presubmit_script = ('USE_PYTHON3 = ' + - str(sys.version_info.major == 3) + """\n + always_fail_presubmit_script = ("""\n def CheckChangeOnUpload(input_api, output_api): output_api.more_cc = ['me@example.com'] return [ @@ -904,8 +868,7 @@ def CheckChangeOnCommit(input_api, output_api): self.assertEqual(sys.stdout.getvalue().count(RUNNING_PY_CHECKS_TEXT), 1) def testDoDefaultPresubmitChecksAndFeedback(self): - always_fail_presubmit_script = ('USE_PYTHON3 = ' + - str(sys.version_info.major == 3) + """\n + always_fail_presubmit_script = ("""\n def CheckChangeOnUpload(input_api, output_api): return [output_api.PresubmitError("!!")] def CheckChangeOnCommit(input_api, output_api): @@ -930,11 +893,10 @@ def CheckChangeOnCommit(input_api, output_api): RUNNING_PY_CHECKS_TEXT + 'Warning, no PRESUBMIT.py found.\n' 'Running default presubmit script.\n' '** Presubmit ERRORS: 1 **\n!!\n\n' - 'There were Python %d presubmit errors.\n' + 'There were Python 3 presubmit errors.\n' 'Was the presubmit check useful? If not, run "git cl presubmit -v"\n' 'to figure out which PRESUBMIT.py was run, then run git blame\n' - 'on the file to figure out who to ask for help.\n' % - sys.version_info.major) + 'on the file to figure out who to ask for help.\n') self.assertEqual(sys.stdout.getvalue(), text) def ExampleChange(self, extra_lines=None): @@ -982,7 +944,6 @@ def CheckChangeOnCommit(input_api, output_api): os.path.isfile.side_effect = lambda f: 'PRESUBMIT.py' in f os.listdir.return_value = ['PRESUBMIT.py'] gclient_utils.FileRead.return_value = ( - 'USE_PYTHON3 = ' + str(sys.version_info.major == 3) + '\n' 'def PostUploadHook(gerrit, change, output_api):\n' ' return ()\n') scm.determine_scm.return_value = None @@ -1007,7 +968,6 @@ def CheckChangeOnCommit(input_api, output_api): @mock.patch('presubmit_support.ListRelevantPresubmitFiles') def testMainUnversionedChecksFail(self, *_mocks): gclient_utils.FileRead.return_value = ( - 'USE_PYTHON3 = ' + str(sys.version_info.major == 3) + '\n' 'def CheckChangeOnUpload(input_api, output_api):\n' ' return [output_api.PresubmitError("!!")]\n') scm.determine_scm.return_value = None @@ -1804,8 +1764,6 @@ class CannedChecksUnittest(PresubmitTestsBase): input_api.os_path = os.path input_api.re = presubmit.re input_api.gerrit = mock.MagicMock(presubmit.GerritAccessor) - if sys.version_info.major == 2: - input_api.urllib2 = mock.MagicMock(presubmit.urllib2) input_api.urllib_request = mock.MagicMock(presubmit.urllib_request) input_api.urllib_error = mock.MagicMock(presubmit.urllib_error) input_api.unittest = unittest