Commit c0758331 authored by Edward Lesmes's avatar Edward Lesmes Committed by Commit Bot

Revert "depot_tools: Make gclient_utils Python 3 compatible."

This reverts commit 602076dc.

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/+/1724730Reviewed-by: 's avatarEdward Lesmes <ehmaldonado@chromium.org>
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
parent c5656169
......@@ -579,18 +579,16 @@ def CheckCallAndFilter(args, stdout=None, filter_fn=None,
if in_byte:
if call_filter_on_first_line:
filter_fn(None)
in_line = ''
in_line = b''
while in_byte:
if isinstance(in_byte, bytes):
in_byte = in_byte.decode('utf-8')
output.write(in_byte.encode('utf-8'))
output.write(in_byte)
if print_stdout:
stdout.write(in_byte)
if in_byte not in ['\r', '\n']:
in_line += in_byte
else:
filter_fn(in_line)
in_line = ''
in_line = b''
in_byte = kid.stdout.read(1)
# Flush the rest of buffered output. This is only an issue with
# stdout/stderr not ending with a \n.
......
......@@ -5,6 +5,7 @@
# found in the LICENSE file.
import os
import StringIO
import sys
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 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 subprocess2
......@@ -33,7 +28,7 @@ class GclientUtilBase(SuperMoxTestBase):
class CheckCallAndFilterTestCase(GclientUtilBase):
class ProcessIdMock(object):
def __init__(self, test_string):
self.stdout = StringIO(test_string)
self.stdout = StringIO.StringIO(test_string)
self.pid = 9284
# pylint: disable=no-self-use
def wait(self):
......@@ -60,25 +55,25 @@ class CheckCallAndFilterTestCase(GclientUtilBase):
capture_list = []
def FilterLines(line):
line_list.append(line)
assert isinstance(line, basestring), type(line)
assert isinstance(line, str), type(line)
match = compiled_pattern.search(line)
if match:
capture_list.append(match.group(1))
gclient_utils.CheckCallAndFilterAndHeader(
args, cwd=cwd, always=True, filter_fn=FilterLines)
self.assertEqual(line_list, ['ahah', 'accb', 'allo', 'addb', u'✔'])
self.assertEqual(capture_list, ['cc', 'dd'])
self.assertEquals(line_list, ['ahah', 'accb', 'allo', 'addb', '✔'])
self.assertEquals(capture_list, ['cc', 'dd'])
def testCheckCallAndFilter(self):
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.checkstdout(
u'________ running \'boo foo bar\' in \'bleh\'\n'
u'ahah\naccb\nallo\naddb\n\n'
u'________ running \'boo foo bar\' in \'bleh\'\n'
u'ahah\naccb\nallo\naddb\n✔'
u'\n')
'________ running \'boo foo bar\' in \'bleh\'\n'
'ahah\naccb\nallo\naddb\n\n'
'________ running \'boo foo bar\' in \'bleh\'\n'
'ahah\naccb\nallo\naddb\n✔'
'\n')
class SplitUrlRevisionTestCase(GclientUtilBase):
......@@ -86,60 +81,60 @@ class SplitUrlRevisionTestCase(GclientUtilBase):
url = "ssh://test@example.com/test.git"
rev = "ac345e52dc"
out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, None)
self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, rev)
self.assertEquals(out_url, url)
url = "ssh://example.com/test.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, None)
self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, rev)
self.assertEquals(out_url, url)
url = "ssh://example.com/git/test.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, None)
self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, rev)
self.assertEquals(out_url, url)
rev = "test-stable"
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, rev)
self.assertEquals(out_url, url)
url = "ssh://user-name@example.com/~/test.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, None)
self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, rev)
self.assertEquals(out_url, url)
url = "ssh://user-name@example.com/~username/test.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, None)
self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, rev)
self.assertEquals(out_url, url)
url = "git@github.com:dart-lang/spark.git"
out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, None)
self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, rev)
self.assertEquals(out_url, url)
def testSVNUrl(self):
url = "svn://example.com/test"
rev = "ac345e52dc"
out_url, out_rev = gclient_utils.SplitUrlRevision(url)
self.assertEqual(out_rev, None)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, None)
self.assertEquals(out_url, url)
out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev))
self.assertEqual(out_rev, rev)
self.assertEqual(out_url, url)
self.assertEquals(out_rev, rev)
self.assertEquals(out_url, url)
class GClientUtilsTest(trial_dir.TestCase):
......@@ -176,7 +171,7 @@ class GClientUtilsTest(trial_dir.TestCase):
['foo:', 'https://foo:'],
]
for content, expected in values:
self.assertEqual(
self.assertEquals(
expected, gclient_utils.UpgradeToHttps(content))
def testParseCodereviewSettingsContent(self):
......@@ -196,7 +191,7 @@ class GClientUtilsTest(trial_dir.TestCase):
['VIEW_VC:http://r/s', {'VIEW_VC': 'https://r/s'}],
]
for content, expected in values:
self.assertEqual(
self.assertEquals(
expected, gclient_utils.ParseCodereviewSettingsContent(content))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment