• Edward Lemur's avatar
    Reland "gclient_utils: buffer output as bytestrings in Annotated" · cb1eb489
    Edward Lemur authored
    This is a reland of 5d284fdf
    
    Always convert the input to bytes and write to sys.stdout (in Python2)
    and sys.stdout.buffer (in Python 3).
    
    Original change's description:
    > gclient_utils: buffer output as bytestrings in Annotated
    >
    > In Python 3 byestrings and normal strings can't be concatenated.
    > To fix this we buffer as bytestrings in the Annotated wrapper.
    > We can't decode to a string because the output might come byte-by-byte, so it doesn't work with Unicode characters like .
    >
    > Also had to update gclient_test.py, where double-wrapping stdout with Annotated caused made output not work and include_zero=True working caused other unintended side-effects.
    >
    > Example error from "fetch chromium":
    > Traceback (most recent call last):
    >   File "C:\Google\depot_tools\gclient_scm.py", line 1045, in _Clone
    >     self._Run(clone_cmd, options, cwd=self._root_dir, retry=True,
    >   File "C:\Google\depot_tools\gclient_scm.py", line 1370, in _Run
    >     gclient_utils.CheckCallAndFilter(cmd, env=env, **kwargs)
    >   File "C:\Google\depot_tools\gclient_utils.py", line 583, in CheckCallAndFilter
    >     show_header_if_necessary(needs_header, attempt)
    >   File "C:\Google\depot_tools\gclient_utils.py", line 533, in show_header_if_necessary
    >     stdout_write(header.encode())
    >   File "C:\Google\depot_tools\gclient_utils.py", line 391, in write
    >     obj[0] += out
    > TypeError: can only concatenate str (not "bytes") to str
    >
    > Bug: 984182
    > Change-Id: If7037d30e9faf524f2405258281f6e6cd0bcdcae
    > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1778745
    > Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
    > Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>
    > Auto-Submit: Raul Tambre <raul@tambre.ee>
    
    Bug: 984182
    Change-Id: Ifafb5e16a517c4c38dd4c9d5c6d4c3f994838bc9
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1845504Reviewed-by: 's avatarAnthony Polito <apolito@google.com>
    Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
    cb1eb489
gclient_test.py 41.9 KB