Revert "depot_tools: Make gclient_utils Python 3 compatible."

This reverts commit 602076dcf2.

Reason for revert:

It fails on input 0xe2 0x9c 0x94 which is a utf-8 heavy check mark. Problem is that CheckCallAndFilter is processing output byte by byte, so trying to decode only one of utf-8 bytes in sequence will always fail.

Original change's description:
> depot_tools: Make gclient_utils Python 3 compatible.
> 
> Bug: 984182
> Change-Id: Ifb93466dcb7541f46c31c9b298049c425dd150d6
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1715472
> Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
> Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>

TBR=tandrii@chromium.org,ehmaldonado@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 984182
Change-Id: Ieae421acc430a031621db3329223c1da85506e55
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1724730
Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
changes/30/1724730/2
Edward Lesmes 6 years ago committed by Commit Bot
parent c5656169e4
commit c0758331ea

@ -579,18 +579,16 @@ def CheckCallAndFilter(args, stdout=None, filter_fn=None,
if in_byte: if in_byte:
if call_filter_on_first_line: if call_filter_on_first_line:
filter_fn(None) filter_fn(None)
in_line = '' in_line = b''
while in_byte: while in_byte:
if isinstance(in_byte, bytes): output.write(in_byte)
in_byte = in_byte.decode('utf-8')
output.write(in_byte.encode('utf-8'))
if print_stdout: if print_stdout:
stdout.write(in_byte) stdout.write(in_byte)
if in_byte not in ['\r', '\n']: if in_byte not in ['\r', '\n']:
in_line += in_byte in_line += in_byte
else: else:
filter_fn(in_line) filter_fn(in_line)
in_line = '' in_line = b''
in_byte = kid.stdout.read(1) in_byte = kid.stdout.read(1)
# Flush the rest of buffered output. This is only an issue with # Flush the rest of buffered output. This is only an issue with
# stdout/stderr not ending with a \n. # stdout/stderr not ending with a \n.

@ -5,6 +5,7 @@
# found in the LICENSE file. # found in the LICENSE file.
import os import os
import StringIO
import sys import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
@ -12,12 +13,6 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from testing_support.super_mox import SuperMoxTestBase from testing_support.super_mox import SuperMoxTestBase
from testing_support import trial_dir from testing_support import trial_dir
from third_party import six
from third_party.six import StringIO
if six.PY3:
# pylint: disable=redefined-builtin
basestring = str
import gclient_utils import gclient_utils
import subprocess2 import subprocess2
@ -33,7 +28,7 @@ class GclientUtilBase(SuperMoxTestBase):
class CheckCallAndFilterTestCase(GclientUtilBase): class CheckCallAndFilterTestCase(GclientUtilBase):
class ProcessIdMock(object): class ProcessIdMock(object):
def __init__(self, test_string): def __init__(self, test_string):
self.stdout = StringIO(test_string) self.stdout = StringIO.StringIO(test_string)
self.pid = 9284 self.pid = 9284
# pylint: disable=no-self-use # pylint: disable=no-self-use
def wait(self): def wait(self):
@ -60,25 +55,25 @@ class CheckCallAndFilterTestCase(GclientUtilBase):
capture_list = [] capture_list = []
def FilterLines(line): def FilterLines(line):
line_list.append(line) line_list.append(line)
assert isinstance(line, basestring), type(line) assert isinstance(line, str), type(line)
match = compiled_pattern.search(line) match = compiled_pattern.search(line)
if match: if match:
capture_list.append(match.group(1)) capture_list.append(match.group(1))
gclient_utils.CheckCallAndFilterAndHeader( gclient_utils.CheckCallAndFilterAndHeader(
args, cwd=cwd, always=True, filter_fn=FilterLines) args, cwd=cwd, always=True, filter_fn=FilterLines)
self.assertEqual(line_list, ['ahah', 'accb', 'allo', 'addb', u'']) self.assertEquals(line_list, ['ahah', 'accb', 'allo', 'addb', ''])
self.assertEqual(capture_list, ['cc', 'dd']) self.assertEquals(capture_list, ['cc', 'dd'])
def testCheckCallAndFilter(self): def testCheckCallAndFilter(self):
args = ['boo', 'foo', 'bar'] args = ['boo', 'foo', 'bar']
test_string = u'ahah\naccb\nallo\naddb\n\n' test_string = 'ahah\naccb\nallo\naddb\n\n'
self._inner(args, test_string) self._inner(args, test_string)
self.checkstdout( self.checkstdout(
u'________ running \'boo foo bar\' in \'bleh\'\n' '________ running \'boo foo bar\' in \'bleh\'\n'
u'ahah\naccb\nallo\naddb\n\n' 'ahah\naccb\nallo\naddb\n\n'
u'________ running \'boo foo bar\' in \'bleh\'\n' '________ running \'boo foo bar\' in \'bleh\'\n'
u'ahah\naccb\nallo\naddb\n' 'ahah\naccb\nallo\naddb\n'
u'\n') '\n')
class SplitUrlRevisionTestCase(GclientUtilBase): class SplitUrlRevisionTestCase(GclientUtilBase):
@ -86,60 +81,60 @@ class SplitUrlRevisionTestCase(GclientUtilBase):
url = "ssh://test@example.com/test.git" url = "ssh://test@example.com/test.git"
rev = "ac345e52dc" rev = "ac345e52dc"
out_url, out_rev = gclient_utils.SplitUrlRevision(url) out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None) self.assertEquals(out_rev, None)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev) self.assertEquals(out_rev, rev)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
url = "ssh://example.com/test.git" url = "ssh://example.com/test.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url) out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None) self.assertEquals(out_rev, None)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev) self.assertEquals(out_rev, rev)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
url = "ssh://example.com/git/test.git" url = "ssh://example.com/git/test.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url) out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None) self.assertEquals(out_rev, None)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev) self.assertEquals(out_rev, rev)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
rev = "test-stable" rev = "test-stable"
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev) self.assertEquals(out_rev, rev)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
url = "ssh://user-name@example.com/~/test.git" url = "ssh://user-name@example.com/~/test.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url) out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None) self.assertEquals(out_rev, None)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev) self.assertEquals(out_rev, rev)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
url = "ssh://user-name@example.com/~username/test.git" url = "ssh://user-name@example.com/~username/test.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url) out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None) self.assertEquals(out_rev, None)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev) self.assertEquals(out_rev, rev)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
url = "git@github.com:dart-lang/spark.git" url = "git@github.com:dart-lang/spark.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url) out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None) self.assertEquals(out_rev, None)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev) self.assertEquals(out_rev, rev)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
def testSVNUrl(self): def testSVNUrl(self):
url = "svn://example.com/test" url = "svn://example.com/test"
rev = "ac345e52dc" rev = "ac345e52dc"
out_url, out_rev = gclient_utils.SplitUrlRevision(url) out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None) self.assertEquals(out_rev, None)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev) self.assertEquals(out_rev, rev)
self.assertEqual(out_url, url) self.assertEquals(out_url, url)
class GClientUtilsTest(trial_dir.TestCase): class GClientUtilsTest(trial_dir.TestCase):
@ -176,7 +171,7 @@ class GClientUtilsTest(trial_dir.TestCase):
['foo:', 'https://foo:'], ['foo:', 'https://foo:'],
] ]
for content, expected in values: for content, expected in values:
self.assertEqual( self.assertEquals(
expected, gclient_utils.UpgradeToHttps(content)) expected, gclient_utils.UpgradeToHttps(content))
def testParseCodereviewSettingsContent(self): def testParseCodereviewSettingsContent(self):
@ -196,7 +191,7 @@ class GClientUtilsTest(trial_dir.TestCase):
['VIEW_VC:http://r/s', {'VIEW_VC': 'https://r/s'}], ['VIEW_VC:http://r/s', {'VIEW_VC': 'https://r/s'}],
] ]
for content, expected in values: for content, expected in values:
self.assertEqual( self.assertEquals(
expected, gclient_utils.ParseCodereviewSettingsContent(content)) expected, gclient_utils.ParseCodereviewSettingsContent(content))

Loading…
Cancel
Save